@igo2/geo 1.13.4 → 1.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +4 -1
- package/esm2020/lib/catalog/shared/catalog.abstract.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2020/lib/draw/draw/draw-popup.component.mjs +562 -32
- package/esm2020/lib/draw/draw/draw.component.mjs +360 -130
- package/esm2020/lib/draw/draw/draw.module.mjs +12 -4
- package/esm2020/lib/draw/shared/draw-style.service.mjs +2 -2
- package/esm2020/lib/draw/shared/draw.enum.mjs +14 -1
- package/esm2020/lib/draw/shared/draw.interface.mjs +1 -1
- package/esm2020/lib/draw/shared/draw.utils.mjs +19 -1
- package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +43 -16
- package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +21 -8
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +12 -2
- package/esm2020/lib/geometry/shared/controls/draw.mjs +53 -10
- package/esm2020/lib/import-export/shared/export.service.mjs +2 -2
- package/esm2020/lib/import-export/shared/import.interface.mjs +1 -1
- package/esm2020/lib/import-export/shared/import.service.mjs +26 -6
- package/esm2020/lib/layer/shared/layers/layer.interface.mjs +1 -1
- package/esm2020/lib/map/shared/hover-feature.directive.mjs +2 -2
- package/esm2020/lib/map/shared/map.utils.mjs +4 -1
- package/esm2020/lib/map/shared/mapOffline.directive.mjs +7 -7
- package/esm2020/lib/offline/geoDB/configFileToGeoDB.service.mjs +33 -4
- package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +1 -1
- package/esm2020/lib/offline/geoDB/geoDB.service.mjs +12 -12
- package/esm2020/lib/print/shared/geopdf.mjs +58 -0
- package/esm2020/lib/print/shared/index.mjs +2 -1
- package/esm2020/lib/print/shared/print.interface.mjs +1 -1
- package/esm2020/lib/print/shared/print.service.mjs +118 -64
- package/esm2020/lib/query/shared/query.service.mjs +7 -4
- package/esm2020/lib/search/search-bar/search-bar.component.mjs +30 -28
- package/esm2020/lib/search/search-results/search-results.component.mjs +22 -13
- package/esm2020/lib/search/shared/search.utils.mjs +2 -1
- package/esm2020/lib/search/shared/sources/icherche.mjs +70 -58
- package/esm2020/lib/search/shared/sources/index.mjs +1 -3
- package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +20 -9
- package/fesm2015/igo2-geo.mjs +1505 -529
- package/fesm2015/igo2-geo.mjs.map +1 -1
- package/fesm2020/igo2-geo.mjs +1456 -525
- package/fesm2020/igo2-geo.mjs.map +1 -1
- package/lib/catalog/shared/catalog.abstract.d.ts +1 -0
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +1 -0
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +1 -0
- package/lib/draw/draw/draw-popup.component.d.ts +52 -5
- package/lib/draw/draw/draw.component.d.ts +34 -4
- package/lib/draw/draw/draw.module.d.ts +3 -1
- package/lib/draw/shared/draw.enum.d.ts +11 -0
- package/lib/draw/shared/draw.interface.d.ts +4 -0
- package/lib/draw/shared/draw.utils.d.ts +2 -0
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +3 -1
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +2 -1
- package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +7 -1
- package/lib/geometry/shared/controls/draw.d.ts +18 -0
- package/lib/import-export/shared/import.interface.d.ts +2 -1
- package/lib/import-export/shared/import.service.d.ts +7 -0
- package/lib/layer/shared/layers/layer.interface.d.ts +4 -0
- package/lib/map/shared/map.utils.d.ts +1 -0
- package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +1 -0
- package/lib/offline/geoDB/geoDB.interface.d.ts +1 -0
- package/lib/offline/geoDB/geoDB.service.d.ts +3 -3
- package/lib/print/shared/geopdf.d.ts +1 -0
- package/lib/print/shared/index.d.ts +1 -0
- package/lib/print/shared/print.interface.d.ts +5 -0
- package/lib/print/shared/print.service.d.ts +17 -8
- package/lib/search/search-bar/search-bar.component.d.ts +8 -8
- package/lib/search/search-results/search-results.component.d.ts +4 -1
- package/lib/search/shared/sources/index.d.ts +0 -2
- package/lib/workspace/shared/edition-workspace.service.d.ts +4 -0
- package/package.json +4 -4
- package/esm2020/lib/search/shared/sources/cadastre.mjs +0 -126
- package/esm2020/lib/search/shared/sources/cadastre.providers.mjs +0 -23
- package/lib/search/shared/sources/cadastre.d.ts +0 -33
- package/lib/search/shared/sources/cadastre.providers.d.ts +0 -18
|
@@ -1,61 +1,591 @@
|
|
|
1
1
|
import { Component, Inject, Input } from '@angular/core';
|
|
2
2
|
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
+
import { CoordinatesUnit, GeometryType, LabelType } from '../shared/draw.enum';
|
|
4
|
+
import { transform } from 'ol/proj';
|
|
5
|
+
import { roundCoordTo } from '../../map/shared';
|
|
6
|
+
import OlFeature from 'ol/Feature';
|
|
7
|
+
import { measureOlGeometryLength, measureOlGeometryArea, metersToUnit, squareMetersToUnit } from '../../measure/shared/measure.utils';
|
|
8
|
+
import { MeasureLengthUnit, MeasureLengthUnitAbbreviation, MeasureAreaUnit, MeasureAreaUnitAbbreviation, } from '../../measure/shared/measure.enum';
|
|
9
|
+
import { fromCircle } from 'ol/geom/Polygon';
|
|
10
|
+
import { getLength } from 'ol/sphere';
|
|
11
|
+
import Circle from 'ol/geom/Circle';
|
|
12
|
+
import { DDtoDMS } from '../shared/draw.utils';
|
|
3
13
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@
|
|
5
|
-
import * as i2 from "@angular/material/
|
|
6
|
-
import * as i3 from "@angular/
|
|
7
|
-
import * as i4 from "@angular/material/
|
|
8
|
-
import * as i5 from "@
|
|
14
|
+
import * as i1 from "@igo2/core";
|
|
15
|
+
import * as i2 from "@angular/material/dialog";
|
|
16
|
+
import * as i3 from "@angular/common";
|
|
17
|
+
import * as i4 from "@angular/material/button";
|
|
18
|
+
import * as i5 from "@angular/material/button-toggle";
|
|
19
|
+
import * as i6 from "@angular/material/form-field";
|
|
20
|
+
import * as i7 from "@angular/material/input";
|
|
21
|
+
import * as i8 from "@angular/material/select";
|
|
22
|
+
import * as i9 from "@angular/material/core";
|
|
23
|
+
import * as i10 from "@angular/material/radio";
|
|
24
|
+
import * as i11 from "@angular/material/checkbox";
|
|
25
|
+
import * as i12 from "@ngx-translate/core";
|
|
26
|
+
function DrawPopupComponent_div_12_mat_radio_group_5_mat_radio_button_1_Template(rf, ctx) { if (rf & 1) {
|
|
27
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
28
|
+
i0.ɵɵelementStart(0, "mat-radio-button", 11);
|
|
29
|
+
i0.ɵɵlistener("change", function DrawPopupComponent_div_12_mat_radio_group_5_mat_radio_button_1_Template_mat_radio_button_change_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r9.onLabelTypeChange($event.value)); });
|
|
30
|
+
i0.ɵɵtext(1);
|
|
31
|
+
i0.ɵɵelementEnd();
|
|
32
|
+
} if (rf & 2) {
|
|
33
|
+
const option_r8 = ctx.$implicit;
|
|
34
|
+
const ctx_r7 = i0.ɵɵnextContext(3);
|
|
35
|
+
i0.ɵɵproperty("value", option_r8.value)("disabled", ctx_r7.optionAvailable(option_r8.value))("checked", option_r8.checked);
|
|
36
|
+
i0.ɵɵadvance(1);
|
|
37
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r7.getProperLengthLabel(option_r8.value), " ");
|
|
38
|
+
} }
|
|
39
|
+
function DrawPopupComponent_div_12_mat_radio_group_5_Template(rf, ctx) { if (rf & 1) {
|
|
40
|
+
i0.ɵɵelementStart(0, "mat-radio-group", 5);
|
|
41
|
+
i0.ɵɵtemplate(1, DrawPopupComponent_div_12_mat_radio_group_5_mat_radio_button_1_Template, 2, 4, "mat-radio-button", 10);
|
|
42
|
+
i0.ɵɵelementEnd();
|
|
43
|
+
} if (rf & 2) {
|
|
44
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
45
|
+
i0.ɵɵadvance(1);
|
|
46
|
+
i0.ɵɵproperty("ngForOf", ctx_r2.arrayBuiltInType);
|
|
47
|
+
} }
|
|
48
|
+
function DrawPopupComponent_div_12_ng_container_6_mat_checkbox_1_Template(rf, ctx) { if (rf & 1) {
|
|
49
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
50
|
+
i0.ɵɵelementStart(0, "mat-checkbox", 13);
|
|
51
|
+
i0.ɵɵlistener("change", function DrawPopupComponent_div_12_ng_container_6_mat_checkbox_1_Template_mat_checkbox_change_0_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r13.onLabelTypeChange($event.source.value, $event.checked)); });
|
|
52
|
+
i0.ɵɵtext(1);
|
|
53
|
+
i0.ɵɵelementEnd();
|
|
54
|
+
} if (rf & 2) {
|
|
55
|
+
const option_r12 = ctx.$implicit;
|
|
56
|
+
const ctx_r11 = i0.ɵɵnextContext(3);
|
|
57
|
+
i0.ɵɵproperty("value", option_r12.value)("disabled", ctx_r11.optionAvailable(option_r12.value))("checked", option_r12.checked);
|
|
58
|
+
i0.ɵɵadvance(1);
|
|
59
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r11.getProperLengthLabel(option_r12.value), " ");
|
|
60
|
+
} }
|
|
61
|
+
function DrawPopupComponent_div_12_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
62
|
+
i0.ɵɵelementContainerStart(0, 5);
|
|
63
|
+
i0.ɵɵtemplate(1, DrawPopupComponent_div_12_ng_container_6_mat_checkbox_1_Template, 2, 4, "mat-checkbox", 12);
|
|
64
|
+
i0.ɵɵelementContainerEnd();
|
|
65
|
+
} if (rf & 2) {
|
|
66
|
+
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
67
|
+
i0.ɵɵadvance(1);
|
|
68
|
+
i0.ɵɵproperty("ngForOf", ctx_r3.arrayBuiltInType);
|
|
69
|
+
} }
|
|
70
|
+
function DrawPopupComponent_div_12_div_7_mat_option_6_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
+
i0.ɵɵelementStart(0, "mat-option", 3);
|
|
72
|
+
i0.ɵɵtext(1);
|
|
73
|
+
i0.ɵɵelementEnd();
|
|
74
|
+
} if (rf & 2) {
|
|
75
|
+
const unit_r17 = ctx.$implicit;
|
|
76
|
+
i0.ɵɵproperty("value", unit_r17);
|
|
77
|
+
i0.ɵɵadvance(1);
|
|
78
|
+
i0.ɵɵtextInterpolate1(" ", unit_r17, " ");
|
|
79
|
+
} }
|
|
80
|
+
function DrawPopupComponent_div_12_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
81
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
82
|
+
i0.ɵɵelementStart(0, "div")(1, "mat-form-field", 14);
|
|
83
|
+
i0.ɵɵelement(2, "input", 15, 16);
|
|
84
|
+
i0.ɵɵelementEnd();
|
|
85
|
+
i0.ɵɵelementStart(4, "mat-form-field", 17)(5, "mat-select", 18);
|
|
86
|
+
i0.ɵɵlistener("selectionChange", function DrawPopupComponent_div_12_div_7_Template_mat_select_selectionChange_5_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r18.onChangeCoordinateUnit($event.value)); });
|
|
87
|
+
i0.ɵɵtemplate(6, DrawPopupComponent_div_12_div_7_mat_option_6_Template, 2, 2, "mat-option", 19);
|
|
88
|
+
i0.ɵɵelementEnd()()();
|
|
89
|
+
} if (rf & 2) {
|
|
90
|
+
const ctx_r4 = i0.ɵɵnextContext(2);
|
|
91
|
+
i0.ɵɵadvance(2);
|
|
92
|
+
i0.ɵɵpropertyInterpolate("value", ctx_r4.currentCoordinates);
|
|
93
|
+
i0.ɵɵadvance(3);
|
|
94
|
+
i0.ɵɵproperty("value", ctx_r4.coordinatesMeasureUnit);
|
|
95
|
+
i0.ɵɵadvance(1);
|
|
96
|
+
i0.ɵɵproperty("ngForOf", ctx_r4.allCoordinatesUnits);
|
|
97
|
+
} }
|
|
98
|
+
function DrawPopupComponent_div_12_div_8_mat_option_6_Template(rf, ctx) { if (rf & 1) {
|
|
99
|
+
i0.ɵɵelementStart(0, "mat-option", 3);
|
|
100
|
+
i0.ɵɵtext(1);
|
|
101
|
+
i0.ɵɵelementEnd();
|
|
102
|
+
} if (rf & 2) {
|
|
103
|
+
const unit_r22 = ctx.$implicit;
|
|
104
|
+
const ctx_r21 = i0.ɵɵnextContext(3);
|
|
105
|
+
i0.ɵɵproperty("value", unit_r22);
|
|
106
|
+
i0.ɵɵadvance(1);
|
|
107
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r21.getLengthUnitEnum(unit_r22), " ");
|
|
108
|
+
} }
|
|
109
|
+
function DrawPopupComponent_div_12_div_8_Template(rf, ctx) { if (rf & 1) {
|
|
110
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
111
|
+
i0.ɵɵelementStart(0, "div")(1, "mat-form-field", 14);
|
|
112
|
+
i0.ɵɵelement(2, "input", 20, 16);
|
|
113
|
+
i0.ɵɵelementEnd();
|
|
114
|
+
i0.ɵɵelementStart(4, "mat-form-field", 17)(5, "mat-select", 18);
|
|
115
|
+
i0.ɵɵlistener("selectionChange", function DrawPopupComponent_div_12_div_8_Template_mat_select_selectionChange_5_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.onChangeLengthUnit($event.value)); });
|
|
116
|
+
i0.ɵɵtemplate(6, DrawPopupComponent_div_12_div_8_mat_option_6_Template, 2, 2, "mat-option", 19);
|
|
117
|
+
i0.ɵɵelementEnd()()();
|
|
118
|
+
} if (rf & 2) {
|
|
119
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
120
|
+
i0.ɵɵadvance(2);
|
|
121
|
+
i0.ɵɵpropertyInterpolate("placeholder", ctx_r5.lengthLabelT);
|
|
122
|
+
i0.ɵɵpropertyInterpolate("value", ctx_r5.currentLength);
|
|
123
|
+
i0.ɵɵadvance(3);
|
|
124
|
+
i0.ɵɵproperty("value", ctx_r5.lengthMeasureUnit);
|
|
125
|
+
i0.ɵɵadvance(1);
|
|
126
|
+
i0.ɵɵproperty("ngForOf", ctx_r5.allLengthUnits);
|
|
127
|
+
} }
|
|
128
|
+
function DrawPopupComponent_div_12_div_9_mat_option_7_Template(rf, ctx) { if (rf & 1) {
|
|
129
|
+
i0.ɵɵelementStart(0, "mat-option", 3);
|
|
130
|
+
i0.ɵɵtext(1);
|
|
131
|
+
i0.ɵɵelementEnd();
|
|
132
|
+
} if (rf & 2) {
|
|
133
|
+
const unit_r27 = ctx.$implicit;
|
|
134
|
+
const ctx_r26 = i0.ɵɵnextContext(3);
|
|
135
|
+
i0.ɵɵproperty("value", unit_r27);
|
|
136
|
+
i0.ɵɵadvance(1);
|
|
137
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r26.getAreaUnitEnum(unit_r27), " ");
|
|
138
|
+
} }
|
|
139
|
+
function DrawPopupComponent_div_12_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
140
|
+
const _r29 = i0.ɵɵgetCurrentView();
|
|
141
|
+
i0.ɵɵelementStart(0, "div")(1, "mat-form-field", 14);
|
|
142
|
+
i0.ɵɵelement(2, "input", 20, 16);
|
|
143
|
+
i0.ɵɵpipe(4, "translate");
|
|
144
|
+
i0.ɵɵelementEnd();
|
|
145
|
+
i0.ɵɵelementStart(5, "mat-form-field", 17)(6, "mat-select", 18);
|
|
146
|
+
i0.ɵɵlistener("selectionChange", function DrawPopupComponent_div_12_div_9_Template_mat_select_selectionChange_6_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r28.onChangeAreaUnit($event.value)); });
|
|
147
|
+
i0.ɵɵtemplate(7, DrawPopupComponent_div_12_div_9_mat_option_7_Template, 2, 2, "mat-option", 19);
|
|
148
|
+
i0.ɵɵelementEnd()()();
|
|
149
|
+
} if (rf & 2) {
|
|
150
|
+
const ctx_r6 = i0.ɵɵnextContext(2);
|
|
151
|
+
i0.ɵɵadvance(2);
|
|
152
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(4, 4, "igo.geo.draw.labelType.Area"));
|
|
153
|
+
i0.ɵɵpropertyInterpolate("value", ctx_r6.currentArea);
|
|
154
|
+
i0.ɵɵadvance(4);
|
|
155
|
+
i0.ɵɵproperty("value", ctx_r6.areaMeasureUnit);
|
|
156
|
+
i0.ɵɵadvance(1);
|
|
157
|
+
i0.ɵɵproperty("ngForOf", ctx_r6.allAreaUnits);
|
|
158
|
+
} }
|
|
159
|
+
function DrawPopupComponent_div_12_Template(rf, ctx) { if (rf & 1) {
|
|
160
|
+
const _r31 = i0.ɵɵgetCurrentView();
|
|
161
|
+
i0.ɵɵelementStart(0, "div")(1, "div")(2, "p", 5);
|
|
162
|
+
i0.ɵɵtext(3);
|
|
163
|
+
i0.ɵɵpipe(4, "translate");
|
|
164
|
+
i0.ɵɵelementEnd();
|
|
165
|
+
i0.ɵɵtemplate(5, DrawPopupComponent_div_12_mat_radio_group_5_Template, 2, 1, "mat-radio-group", 6);
|
|
166
|
+
i0.ɵɵtemplate(6, DrawPopupComponent_div_12_ng_container_6_Template, 2, 1, "ng-container", 6);
|
|
167
|
+
i0.ɵɵtemplate(7, DrawPopupComponent_div_12_div_7_Template, 7, 3, "div", 4);
|
|
168
|
+
i0.ɵɵtemplate(8, DrawPopupComponent_div_12_div_8_Template, 7, 4, "div", 4);
|
|
169
|
+
i0.ɵɵtemplate(9, DrawPopupComponent_div_12_div_9_Template, 8, 6, "div", 4);
|
|
170
|
+
i0.ɵɵelementEnd();
|
|
171
|
+
i0.ɵɵelementStart(10, "div", 7)(11, "button", 8);
|
|
172
|
+
i0.ɵɵlistener("click", function DrawPopupComponent_div_12_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r31); const ctx_r30 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r30.cancelDrawing()); });
|
|
173
|
+
i0.ɵɵtext(12);
|
|
174
|
+
i0.ɵɵpipe(13, "translate");
|
|
175
|
+
i0.ɵɵelementEnd();
|
|
176
|
+
i0.ɵɵelementStart(14, "button", 9);
|
|
177
|
+
i0.ɵɵlistener("click", function DrawPopupComponent_div_12_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r31); const ctx_r32 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r32.confirm()); });
|
|
178
|
+
i0.ɵɵtext(15);
|
|
179
|
+
i0.ɵɵelementEnd()()();
|
|
180
|
+
} if (rf & 2) {
|
|
181
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
182
|
+
i0.ɵɵadvance(3);
|
|
183
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 8, "igo.geo.draw.builtInInstructions"));
|
|
184
|
+
i0.ɵɵadvance(2);
|
|
185
|
+
i0.ɵɵproperty("ngIf", ctx_r0.olGeometryType !== "Polygon");
|
|
186
|
+
i0.ɵɵadvance(1);
|
|
187
|
+
i0.ɵɵproperty("ngIf", ctx_r0.olGeometryType === "Polygon");
|
|
188
|
+
i0.ɵɵadvance(1);
|
|
189
|
+
i0.ɵɵproperty("ngIf", ctx_r0.labelFlag === ctx_r0.labelType.Coordinates);
|
|
190
|
+
i0.ɵɵadvance(1);
|
|
191
|
+
i0.ɵɵproperty("ngIf", ctx_r0.labelFlag === ctx_r0.labelType.Length || ctx_r0.polygonCheck === 2);
|
|
192
|
+
i0.ɵɵadvance(1);
|
|
193
|
+
i0.ɵɵproperty("ngIf", ctx_r0.labelFlag === ctx_r0.labelType.Area || ctx_r0.polygonCheck === 2);
|
|
194
|
+
i0.ɵɵadvance(3);
|
|
195
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(13, 10, "igo.geo.draw.cancel"), " ");
|
|
196
|
+
i0.ɵɵadvance(3);
|
|
197
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r0.noLabelButton(), " ");
|
|
198
|
+
} }
|
|
199
|
+
function DrawPopupComponent_div_13_Template(rf, ctx) { if (rf & 1) {
|
|
200
|
+
const _r36 = i0.ɵɵgetCurrentView();
|
|
201
|
+
i0.ɵɵelementStart(0, "div")(1, "div")(2, "p", 5);
|
|
202
|
+
i0.ɵɵtext(3);
|
|
203
|
+
i0.ɵɵpipe(4, "translate");
|
|
204
|
+
i0.ɵɵelementEnd();
|
|
205
|
+
i0.ɵɵelementStart(5, "mat-form-field", 21)(6, "input", 22, 16);
|
|
206
|
+
i0.ɵɵlistener("select", function DrawPopupComponent_div_13_Template_input_select_6_listener() { return true; })("input", function DrawPopupComponent_div_13_Template_input_input_6_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r35.getLabelLength($event.target.value)); });
|
|
207
|
+
i0.ɵɵpipe(8, "translate");
|
|
208
|
+
i0.ɵɵelementEnd()()();
|
|
209
|
+
i0.ɵɵelementStart(9, "div", 7)(10, "button", 8);
|
|
210
|
+
i0.ɵɵlistener("click", function DrawPopupComponent_div_13_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r36); const ctx_r37 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r37.cancelDrawing()); });
|
|
211
|
+
i0.ɵɵtext(11);
|
|
212
|
+
i0.ɵɵpipe(12, "translate");
|
|
213
|
+
i0.ɵɵelementEnd();
|
|
214
|
+
i0.ɵɵelementStart(13, "button", 9);
|
|
215
|
+
i0.ɵɵlistener("click", function DrawPopupComponent_div_13_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r36); const _r33 = i0.ɵɵreference(7); const ctx_r38 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r38.confirm(_r33.value)); });
|
|
216
|
+
i0.ɵɵtext(14);
|
|
217
|
+
i0.ɵɵelementEnd()()();
|
|
218
|
+
} if (rf & 2) {
|
|
219
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
220
|
+
i0.ɵɵadvance(3);
|
|
221
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 5, "igo.geo.draw.dialogInstruction"));
|
|
222
|
+
i0.ɵɵadvance(3);
|
|
223
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(8, 7, "igo.geo.draw.dialogTitle"));
|
|
224
|
+
i0.ɵɵpropertyInterpolate("value", ctx_r1.currentLabel);
|
|
225
|
+
i0.ɵɵadvance(5);
|
|
226
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(12, 9, "igo.geo.draw.cancel"), " ");
|
|
227
|
+
i0.ɵɵadvance(3);
|
|
228
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.noLabelButton(), " ");
|
|
229
|
+
} }
|
|
9
230
|
export class DrawPopupComponent {
|
|
10
|
-
constructor(dialogRef, data) {
|
|
231
|
+
constructor(languageService, dialogRef, data) {
|
|
232
|
+
this.languageService = languageService;
|
|
11
233
|
this.dialogRef = dialogRef;
|
|
12
234
|
this.data = data;
|
|
13
235
|
this.confirmFlag = false;
|
|
236
|
+
this.labelFlag = LabelType.Custom;
|
|
237
|
+
this.geometryType = GeometryType;
|
|
238
|
+
this.labelType = LabelType;
|
|
239
|
+
this.arrayBuiltInType = [];
|
|
240
|
+
this.olGeometryType = undefined;
|
|
241
|
+
this.polygonCheck = 0; // Count for polygon label types checkboxes
|
|
242
|
+
this.currentLabel = this.data.olGeometry.get('draw');
|
|
243
|
+
this.labelLength = this.currentLabel ? this.currentLabel.length : 0;
|
|
244
|
+
let olGeometry;
|
|
245
|
+
const projection = this.data.map.ol.getView().getProjection();
|
|
246
|
+
if (this.data.olGeometry instanceof OlFeature) {
|
|
247
|
+
if (this.data.olGeometry.get('rad')) {
|
|
248
|
+
const longitudeLatitude = [this.data.olGeometry.get('longitude'), this.data.olGeometry.get('latitude')];
|
|
249
|
+
this.olGeometryType = GeometryType.Circle;
|
|
250
|
+
olGeometry = new Circle(longitudeLatitude, this.data.olGeometry.get('rad'));
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
this.olGeometryType = this.data.olGeometry.getGeometry().getType();
|
|
254
|
+
olGeometry = this.data.olGeometry.get('geometry');
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
this.olGeometryType = this.data.olGeometry.getType();
|
|
259
|
+
olGeometry = this.data.olGeometry;
|
|
260
|
+
}
|
|
261
|
+
if (this.olGeometryType === GeometryType.Point || this.olGeometryType === GeometryType.Circle) {
|
|
262
|
+
if (this.data.olGeometry instanceof OlFeature) {
|
|
263
|
+
let longitude = this.data.olGeometry.get('longitude');
|
|
264
|
+
let latitude = this.data.olGeometry.get('latitude');
|
|
265
|
+
this.longlatDD = roundCoordTo([longitude, latitude], 5);
|
|
266
|
+
this.coordinatesInDD = '(' + latitude + ', '
|
|
267
|
+
+ longitude + ')';
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
let point4326 = transform(this.data.olGeometry.getFlatCoordinates(), projection, 'EPSG:4326');
|
|
271
|
+
this.longlatDD = roundCoordTo([point4326[0], point4326[1]], 5);
|
|
272
|
+
this.coordinatesInDD =
|
|
273
|
+
'(' + this.longlatDD[1] + ', ' + this.longlatDD[0] + ')';
|
|
274
|
+
}
|
|
275
|
+
this.currentCoordinates = this.coordinatesInDD;
|
|
276
|
+
}
|
|
277
|
+
if (this.olGeometryType === GeometryType.LineString) {
|
|
278
|
+
this.lengthInMeters = measureOlGeometryLength(olGeometry, projection.getCode()).toFixed(2);
|
|
279
|
+
this.currentLength = this.lengthInMeters;
|
|
280
|
+
}
|
|
281
|
+
else if (this.olGeometryType === GeometryType.Polygon) {
|
|
282
|
+
this.lengthInMeters = measureOlGeometryLength(olGeometry, projection.getCode()).toFixed(2);
|
|
283
|
+
this.currentLength = this.lengthInMeters;
|
|
284
|
+
this.areaInMetersSquare = measureOlGeometryArea(olGeometry, projection.getCode()).toFixed(2);
|
|
285
|
+
this.currentArea = this.areaInMetersSquare;
|
|
286
|
+
}
|
|
287
|
+
else if (this.olGeometryType === GeometryType.Circle) {
|
|
288
|
+
let circularPolygon = fromCircle(olGeometry, 10000);
|
|
289
|
+
const radius = this.getRadius(circularPolygon);
|
|
290
|
+
this.lengthInMeters = radius.toFixed(2);
|
|
291
|
+
this.currentLength = this.lengthInMeters;
|
|
292
|
+
this.areaInMetersSquare = measureOlGeometryArea(circularPolygon, projection.getCode()).toFixed(2);
|
|
293
|
+
this.currentArea = this.areaInMetersSquare;
|
|
294
|
+
}
|
|
295
|
+
if (data.olGeometry.get('labelType') === LabelType.Coordinates) {
|
|
296
|
+
this.onLabelTypeChange(LabelType.Predefined);
|
|
297
|
+
this.onLabelTypeChange(LabelType.Coordinates, true);
|
|
298
|
+
this.coordinatesMeasureUnit = data.olGeometry.get('measureUnit');
|
|
299
|
+
}
|
|
300
|
+
else if (data.olGeometry.get('labelType') === LabelType.Length) {
|
|
301
|
+
this.onLabelTypeChange(LabelType.Predefined);
|
|
302
|
+
this.onLabelTypeChange(LabelType.Length, true);
|
|
303
|
+
this.lengthMeasureUnit = data.olGeometry.get('measureUnit');
|
|
304
|
+
}
|
|
305
|
+
else if (data.olGeometry.get('labelType') === LabelType.Area) {
|
|
306
|
+
this.onLabelTypeChange(LabelType.Predefined);
|
|
307
|
+
this.onLabelTypeChange(LabelType.Area, true);
|
|
308
|
+
this.areaMeasureUnit = data.olGeometry.get('measureUnit');
|
|
309
|
+
}
|
|
310
|
+
else if (data.olGeometry.get('labelType')?.length === 2) {
|
|
311
|
+
this.onLabelTypeChange(LabelType.Predefined);
|
|
312
|
+
this.onLabelTypeChange(LabelType.Length, true);
|
|
313
|
+
this.onLabelTypeChange(LabelType.Area, true);
|
|
314
|
+
this.lengthMeasureUnit = data.olGeometry.get('measureUnit')[0];
|
|
315
|
+
this.areaMeasureUnit = data.olGeometry.get('measureUnit')[1];
|
|
316
|
+
}
|
|
317
|
+
this.buildArrayType();
|
|
14
318
|
}
|
|
319
|
+
/**
|
|
320
|
+
* HTML Interactions
|
|
321
|
+
*/
|
|
15
322
|
cancelDrawing() {
|
|
16
323
|
this.dialogRef.close();
|
|
17
324
|
}
|
|
18
|
-
confirm(
|
|
325
|
+
confirm(input) {
|
|
19
326
|
this.confirmFlag = true;
|
|
20
|
-
this.
|
|
327
|
+
if (this.labelFlag === LabelType.Predefined) {
|
|
328
|
+
this.dialogRef.close();
|
|
329
|
+
}
|
|
330
|
+
else if (this.labelFlag === LabelType.Custom) {
|
|
331
|
+
this.dialogRef.close({
|
|
332
|
+
label: input
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
else if (this.labelFlag === LabelType.Coordinates) {
|
|
336
|
+
this.dialogRef.close({
|
|
337
|
+
label: this.currentCoordinates,
|
|
338
|
+
measureUnit: this.coordinatesMeasureUnit
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
else if (this.olGeometryType === GeometryType.Polygon) {
|
|
342
|
+
if (this.polygonCheck === 2) {
|
|
343
|
+
this.labelFlag = [LabelType.Length, LabelType.Area];
|
|
344
|
+
this.dialogRef.close({
|
|
345
|
+
label: 'P: ' + this.currentLength + ' ' + MeasureLengthUnitAbbreviation[MeasureLengthUnit.Meters] + '\n'
|
|
346
|
+
+ this.languageService.translate.instant('igo.geo.draw.labelType.A') + this.currentArea + ' ' +
|
|
347
|
+
MeasureAreaUnitAbbreviation[MeasureAreaUnit.SquareMeters], measureUnit: [this.lengthMeasureUnit, this.areaMeasureUnit]
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
this.labelFlag === LabelType.Length ?
|
|
352
|
+
this.dialogRef.close({
|
|
353
|
+
label: 'P: ' + this.currentLength + ' ' + MeasureLengthUnitAbbreviation[this.lengthMeasureUnit],
|
|
354
|
+
measureUnit: this.lengthMeasureUnit
|
|
355
|
+
}) :
|
|
356
|
+
this.dialogRef.close({
|
|
357
|
+
label: this.currentArea + ' ' + MeasureAreaUnitAbbreviation[this.areaMeasureUnit],
|
|
358
|
+
measureUnit: this.areaMeasureUnit
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
else if (this.labelFlag === LabelType.Length) {
|
|
363
|
+
if (this.olGeometryType === GeometryType.Circle) {
|
|
364
|
+
this.dialogRef.close({
|
|
365
|
+
label: 'R: ' + this.currentLength + ' ' + MeasureLengthUnitAbbreviation[this.lengthMeasureUnit],
|
|
366
|
+
measureUnit: this.lengthMeasureUnit
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
else if (this.olGeometryType === GeometryType.LineString) {
|
|
370
|
+
this.dialogRef.close({
|
|
371
|
+
label: this.currentLength + ' ' + MeasureLengthUnitAbbreviation[this.lengthMeasureUnit],
|
|
372
|
+
measureUnit: this.lengthMeasureUnit
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
else if (this.labelFlag === LabelType.Area) {
|
|
377
|
+
this.dialogRef.close({
|
|
378
|
+
label: this.currentArea + ' ' + MeasureAreaUnitAbbreviation[this.areaMeasureUnit],
|
|
379
|
+
measureUnit: this.areaMeasureUnit
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
onLabelTypeChange(labelType, checked) {
|
|
384
|
+
if (labelType !== LabelType.Predefined &&
|
|
385
|
+
labelType !== LabelType.Custom &&
|
|
386
|
+
this.olGeometryType === GeometryType.Polygon) {
|
|
387
|
+
this.arrayBuiltInType.find(type => type.value === labelType) ?
|
|
388
|
+
this.arrayBuiltInType.find(type => type.value === labelType).checked = checked : this.labelFlag = undefined;
|
|
389
|
+
checked ? this.labelFlag = labelType : this.labelFlag = this.arrayBuiltInType.find(type => type.checked)?.value;
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
this.labelFlag = labelType;
|
|
393
|
+
}
|
|
394
|
+
if (labelType === LabelType.Predefined) {
|
|
395
|
+
if (this.olGeometryType === GeometryType.Point) {
|
|
396
|
+
this.labelFlag = LabelType.Coordinates;
|
|
397
|
+
this.currentCoordinates = this.coordinatesInDD;
|
|
398
|
+
this.coordinatesMeasureUnit = CoordinatesUnit.DecimalDegree;
|
|
399
|
+
}
|
|
400
|
+
else if (this.olGeometryType === GeometryType.LineString) {
|
|
401
|
+
this.labelFlag = LabelType.Length;
|
|
402
|
+
this.currentLength = this.lengthInMeters;
|
|
403
|
+
this.lengthMeasureUnit = MeasureLengthUnit.Meters;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
else if (labelType === LabelType.Area) {
|
|
407
|
+
this.currentArea = this.areaInMetersSquare;
|
|
408
|
+
this.areaMeasureUnit = MeasureAreaUnit.SquareMeters;
|
|
409
|
+
}
|
|
410
|
+
else if (labelType === LabelType.Length) {
|
|
411
|
+
this.currentLength = this.lengthInMeters;
|
|
412
|
+
this.lengthMeasureUnit = MeasureLengthUnit.Meters;
|
|
413
|
+
}
|
|
414
|
+
else if (this.labelFlag === LabelType.Coordinates) {
|
|
415
|
+
this.currentCoordinates = this.coordinatesInDD;
|
|
416
|
+
this.coordinatesMeasureUnit = CoordinatesUnit.DecimalDegree;
|
|
417
|
+
}
|
|
418
|
+
const labeltypes = [this.labelType.Length, this.labelType.Area];
|
|
419
|
+
if (this.olGeometryType === GeometryType.Polygon &&
|
|
420
|
+
labeltypes.includes(labelType)) {
|
|
421
|
+
checked ? this.polygonCheck += 1 : this.polygonCheck -= 1;
|
|
422
|
+
;
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
this.polygonCheck = 0;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
onChangeLengthUnit(lengthUnit) {
|
|
429
|
+
this.lengthMeasureUnit = lengthUnit;
|
|
430
|
+
this.currentLength = metersToUnit(Number(this.lengthInMeters), lengthUnit).toFixed(2);
|
|
431
|
+
}
|
|
432
|
+
onChangeAreaUnit(areaUnit) {
|
|
433
|
+
this.areaMeasureUnit = areaUnit;
|
|
434
|
+
this.currentArea = squareMetersToUnit(Number(this.areaInMetersSquare), areaUnit).toFixed(2);
|
|
435
|
+
}
|
|
436
|
+
onChangeCoordinateUnit(coordinatesUnit) {
|
|
437
|
+
this.coordinatesMeasureUnit = coordinatesUnit;
|
|
438
|
+
let coordinates = DDtoDMS(this.longlatDD, coordinatesUnit);
|
|
439
|
+
this.currentCoordinates = '(' + coordinates[1] + ', ' + coordinates[0] + ')';
|
|
440
|
+
}
|
|
441
|
+
buildArrayType() {
|
|
442
|
+
for (const labelType of Object.values(LabelType)) {
|
|
443
|
+
if (labelType !== LabelType.Custom && labelType !== LabelType.Predefined) {
|
|
444
|
+
this.arrayBuiltInType.push({
|
|
445
|
+
value: labelType,
|
|
446
|
+
checked: this.selectOptions(labelType) ||
|
|
447
|
+
this.labelFlag === labelType ||
|
|
448
|
+
(this.polygonCheck === 2 && labelType !== LabelType.Coordinates)
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
noLabelButton() {
|
|
454
|
+
if (this.labelFlag === LabelType.Predefined || (this.labelFlag === LabelType.Custom && this.labelLength === 0)) {
|
|
455
|
+
return this.languageService.translate.instant('igo.geo.draw.noLabel');
|
|
456
|
+
}
|
|
457
|
+
return 'OK';
|
|
458
|
+
}
|
|
459
|
+
get customOrPredefined() {
|
|
460
|
+
if (this.labelFlag === LabelType.Custom) {
|
|
461
|
+
return LabelType.Custom;
|
|
462
|
+
}
|
|
463
|
+
return LabelType.Predefined;
|
|
464
|
+
}
|
|
465
|
+
optionAvailable(currentOption) {
|
|
466
|
+
switch (this.olGeometryType) {
|
|
467
|
+
case GeometryType.Point:
|
|
468
|
+
if (currentOption === LabelType.Coordinates) {
|
|
469
|
+
return false;
|
|
470
|
+
}
|
|
471
|
+
return true;
|
|
472
|
+
case GeometryType.LineString:
|
|
473
|
+
if (currentOption === LabelType.Length) {
|
|
474
|
+
return false;
|
|
475
|
+
}
|
|
476
|
+
return true;
|
|
477
|
+
case GeometryType.Polygon:
|
|
478
|
+
if (currentOption === LabelType.Coordinates) {
|
|
479
|
+
return true;
|
|
480
|
+
}
|
|
481
|
+
return false;
|
|
482
|
+
default:
|
|
483
|
+
return false;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
get allLengthUnits() {
|
|
487
|
+
return Object.values(MeasureLengthUnit);
|
|
488
|
+
}
|
|
489
|
+
getLengthUnitEnum(lengthUnit) {
|
|
490
|
+
return MeasureLengthUnitAbbreviation[lengthUnit];
|
|
491
|
+
}
|
|
492
|
+
get allAreaUnits() {
|
|
493
|
+
return Object.values(MeasureAreaUnit);
|
|
494
|
+
}
|
|
495
|
+
get allCoordinatesUnits() {
|
|
496
|
+
return Object.values(CoordinatesUnit);
|
|
497
|
+
}
|
|
498
|
+
getAreaUnitEnum(areaUnit) {
|
|
499
|
+
return MeasureAreaUnitAbbreviation[areaUnit];
|
|
500
|
+
}
|
|
501
|
+
getRadius(olGeometry) {
|
|
502
|
+
const length = getLength(olGeometry);
|
|
503
|
+
return Number(length / (2 * Math.PI));
|
|
504
|
+
}
|
|
505
|
+
get lengthLabelT() {
|
|
506
|
+
if (this.olGeometryType === GeometryType.Polygon) {
|
|
507
|
+
return this.languageService.translate.instant('igo.geo.measure.perimeter');
|
|
508
|
+
}
|
|
509
|
+
if (this.olGeometryType === GeometryType.Circle) {
|
|
510
|
+
return this.languageService.translate.instant('igo.geo.search.coordinates.radius');
|
|
511
|
+
}
|
|
512
|
+
return this.languageService.translate.instant('igo.geo.draw.labelType.Length');
|
|
513
|
+
}
|
|
514
|
+
getLabelLength(event) {
|
|
515
|
+
this.labelLength = event.length;
|
|
516
|
+
}
|
|
517
|
+
selectOptions(option) {
|
|
518
|
+
if (this.olGeometryType === GeometryType.Point) {
|
|
519
|
+
return option === LabelType.Coordinates;
|
|
520
|
+
}
|
|
521
|
+
else if (this.olGeometryType === GeometryType.LineString) {
|
|
522
|
+
return option === LabelType.Length;
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
getProperLengthLabel(option) {
|
|
526
|
+
if (option === LabelType.Length) {
|
|
527
|
+
if (this.olGeometryType === GeometryType.Polygon) {
|
|
528
|
+
return this.languageService.translate.instant('igo.geo.measure.perimeter');
|
|
529
|
+
}
|
|
530
|
+
if (this.olGeometryType === GeometryType.Circle) {
|
|
531
|
+
return this.languageService.translate.instant('igo.geo.search.coordinates.radius');
|
|
532
|
+
}
|
|
533
|
+
return this.languageService.translate.instant('igo.geo.draw.labelType.Length');
|
|
534
|
+
}
|
|
535
|
+
return this.languageService.translate.instant('igo.geo.draw.labelType.' + option);
|
|
21
536
|
}
|
|
22
537
|
}
|
|
23
|
-
DrawPopupComponent.ɵfac = function DrawPopupComponent_Factory(t) { return new (t || DrawPopupComponent)(i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
|
|
24
|
-
DrawPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawPopupComponent, selectors: [["igo-draw-popup-component"]], inputs: { confirmFlag: "confirmFlag" }, decls: 14, vars:
|
|
25
|
-
|
|
26
|
-
i0.ɵɵelementStart(0, "div", 0)(1, "p", 1);
|
|
538
|
+
DrawPopupComponent.ɵfac = function DrawPopupComponent_Factory(t) { return new (t || DrawPopupComponent)(i0.ɵɵdirectiveInject(i1.LanguageService), i0.ɵɵdirectiveInject(i2.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
|
|
539
|
+
DrawPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawPopupComponent, selectors: [["igo-draw-popup-component"]], inputs: { confirmFlag: "confirmFlag", labelFlag: "labelFlag", coordinatesMeasureUnit: "coordinatesMeasureUnit", lengthMeasureUnit: "lengthMeasureUnit", areaMeasureUnit: "areaMeasureUnit" }, decls: 14, vars: 14, consts: [["mat-dialog-title", ""], [1, "geometry-type-toggle", "mat-typography"], [3, "value", "change"], [3, "value"], [4, "ngIf"], [1, "mat-typography"], ["class", "mat-typography", 4, "ngIf"], ["mat-dialog-actions", ""], ["mat-raised-button", "", 3, "click"], ["mat-raised-button", "", "color", "primary", 3, "click"], [3, "value", "disabled", "checked", "change", 4, "ngFor", "ngForOf"], [3, "value", "disabled", "checked", "change"], ["class", "mat-typography", 3, "value", "disabled", "checked", "change", 4, "ngFor", "ngForOf"], [1, "mat-typography", 3, "value", "disabled", "checked", "change"], [1, "readOnly-Input"], ["matInput", "", "placeholder", "(Latitude, Longitude)", "readonly", "", 3, "value"], ["input", ""], [1, "unit-field"], [3, "value", "selectionChange"], [3, "value", 4, "ngFor", "ngForOf"], ["matInput", "", "readonly", "", 3, "placeholder", "value"], [1, "input"], ["matInput", "", "cdkFocusInitial", "", 3, "placeholder", "value", "select", "input"]], template: function DrawPopupComponent_Template(rf, ctx) { if (rf & 1) {
|
|
540
|
+
i0.ɵɵelementStart(0, "div")(1, "h2", 0);
|
|
27
541
|
i0.ɵɵtext(2);
|
|
28
542
|
i0.ɵɵpipe(3, "translate");
|
|
29
|
-
i0.ɵɵelementEnd();
|
|
30
|
-
i0.ɵɵelementStart(4, "mat-form-field", 2);
|
|
31
|
-
i0.ɵɵelement(5, "input", 3, 4);
|
|
32
|
-
i0.ɵɵpipe(7, "translate");
|
|
33
543
|
i0.ɵɵelementEnd()();
|
|
34
|
-
i0.ɵɵelementStart(
|
|
35
|
-
i0.ɵɵlistener("
|
|
544
|
+
i0.ɵɵelementStart(4, "div", 1)(5, "mat-button-toggle-group", 2);
|
|
545
|
+
i0.ɵɵlistener("change", function DrawPopupComponent_Template_mat_button_toggle_group_change_5_listener($event) { return ctx.onLabelTypeChange($event.value); });
|
|
546
|
+
i0.ɵɵelementStart(6, "mat-button-toggle", 3);
|
|
547
|
+
i0.ɵɵtext(7);
|
|
548
|
+
i0.ɵɵpipe(8, "translate");
|
|
549
|
+
i0.ɵɵelementEnd();
|
|
550
|
+
i0.ɵɵelementStart(9, "mat-button-toggle", 3);
|
|
36
551
|
i0.ɵɵtext(10);
|
|
37
552
|
i0.ɵɵpipe(11, "translate");
|
|
38
|
-
i0.ɵɵelementEnd();
|
|
39
|
-
i0.ɵɵ
|
|
40
|
-
i0.ɵɵ
|
|
41
|
-
i0.ɵɵtext(13, "OK ");
|
|
42
|
-
i0.ɵɵelementEnd()();
|
|
553
|
+
i0.ɵɵelementEnd()()();
|
|
554
|
+
i0.ɵɵtemplate(12, DrawPopupComponent_div_12_Template, 16, 12, "div", 4);
|
|
555
|
+
i0.ɵɵtemplate(13, DrawPopupComponent_div_13_Template, 15, 11, "div", 4);
|
|
43
556
|
} if (rf & 2) {
|
|
44
557
|
i0.ɵɵadvance(2);
|
|
45
|
-
i0.ɵɵ
|
|
558
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 8, "igo.geo.draw.popupTitle"), " ");
|
|
46
559
|
i0.ɵɵadvance(3);
|
|
47
|
-
i0.ɵɵ
|
|
48
|
-
i0.ɵɵ
|
|
49
|
-
i0.ɵɵ
|
|
50
|
-
i0.ɵɵ
|
|
51
|
-
|
|
560
|
+
i0.ɵɵproperty("value", ctx.customOrPredefined);
|
|
561
|
+
i0.ɵɵadvance(1);
|
|
562
|
+
i0.ɵɵproperty("value", ctx.labelType.Custom);
|
|
563
|
+
i0.ɵɵadvance(1);
|
|
564
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 10, "igo.geo.draw.labelType.custom"), " ");
|
|
565
|
+
i0.ɵɵadvance(2);
|
|
566
|
+
i0.ɵɵproperty("value", ctx.labelType.Predefined);
|
|
567
|
+
i0.ɵɵadvance(1);
|
|
568
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(11, 12, "igo.geo.draw.labelType.predefined"), " ");
|
|
569
|
+
i0.ɵɵadvance(2);
|
|
570
|
+
i0.ɵɵproperty("ngIf", ctx.labelFlag !== ctx.labelType.Custom);
|
|
571
|
+
i0.ɵɵadvance(1);
|
|
572
|
+
i0.ɵɵproperty("ngIf", ctx.labelFlag === ctx.labelType.Custom);
|
|
573
|
+
} }, dependencies: [i3.NgForOf, i3.NgIf, i4.MatButton, i5.MatButtonToggleGroup, i5.MatButtonToggle, i6.MatFormField, i7.MatInput, i8.MatSelect, i9.MatOption, i2.MatDialogTitle, i2.MatDialogActions, i10.MatRadioGroup, i10.MatRadioButton, i11.MatCheckbox, i12.TranslatePipe], styles: [".mat-radio-button[_ngcontent-%COMP%] ~ .mat-radio-button[_ngcontent-%COMP%]{margin-left:16px}.readOnly-Input[_ngcontent-%COMP%]{width:200px!important}.unit-field[_ngcontent-%COMP%]{width:50px;margin-left:10px;margin-top:10px}.mat-form-field[_ngcontent-%COMP%]{position:-webkit-sticky!important;position:sticky!important}.coordinatesInputView[_ngcontent-%COMP%]{top:5em!important} .mat-form-field-wrapper{margin-bottom:-1.25em;margin-top:.25em}.geometry-type-toggle[_ngcontent-%COMP%], .mat-dialog-actions[_ngcontent-%COMP%]{display:flex!important;justify-content:center}.input[_ngcontent-%COMP%]{width:auto!important}.mat-button-toggle-group[_ngcontent-%COMP%], .mat-button-toggle[_ngcontent-%COMP%]{width:100%}mat-checkbox[_ngcontent-%COMP%]{margin-right:10px}"] });
|
|
52
574
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrawPopupComponent, [{
|
|
53
575
|
type: Component,
|
|
54
|
-
args: [{ selector: 'igo-draw-popup-component', template: "<div mat-dialog-
|
|
55
|
-
}], function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
576
|
+
args: [{ selector: 'igo-draw-popup-component', template: "<div>\n <h2 mat-dialog-title>\n {{ 'igo.geo.draw.popupTitle' | translate }}\n </h2>\n</div>\n\n\n<div class=\"geometry-type-toggle mat-typography\">\n <mat-button-toggle-group\n (change)=\"onLabelTypeChange($event.value)\" [value]=\"customOrPredefined\">\n <mat-button-toggle [value]=\"labelType.Custom\" >\n {{ 'igo.geo.draw.labelType.custom' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"labelType.Predefined\">\n {{ 'igo.geo.draw.labelType.predefined' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n\n<div *ngIf=\"labelFlag !== labelType.Custom\">\n <div>\n <p class=\"mat-typography\">{{ 'igo.geo.draw.builtInInstructions' | translate }}</p>\n <mat-radio-group *ngIf=\"olGeometryType !== 'Polygon'\" class=\"mat-typography\">\n <mat-radio-button *ngFor=\"let option of arrayBuiltInType\" [value]=\"option.value\" [disabled]=\"optionAvailable(option.value)\" \n (change)=\"onLabelTypeChange($event.value)\" [checked]=\"option.checked\">\n {{getProperLengthLabel(option.value)}}\n </mat-radio-button>\n </mat-radio-group>\n <ng-container class=\"mat-typography\" *ngIf=\"olGeometryType === 'Polygon'\">\n <mat-checkbox\n *ngFor=\"let option of arrayBuiltInType\"\n class=\"mat-typography\"\n [value]=\"option.value\"\n [disabled]=\"optionAvailable(option.value)\"\n (change)=\"onLabelTypeChange($event.source.value, $event.checked)\"\n [checked]=\"option.checked\">\n {{getProperLengthLabel(option.value)}}\n </mat-checkbox>\n </ng-container>\n <div *ngIf=\"labelFlag === labelType.Coordinates\">\n <mat-form-field class=\"readOnly-Input\">\n <input\n #input\n matInput\n placeholder=\"(Latitude, Longitude)\"\n value=\"{{currentCoordinates}}\" readonly>\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select [value]=\"coordinatesMeasureUnit\" (selectionChange)=\"onChangeCoordinateUnit($event.value)\">\n <mat-option *ngFor=\"let unit of allCoordinatesUnits\" [value]=\"unit\">\n {{unit}}\n </mat-option>\n </mat-select> \n </mat-form-field>\n </div>\n <div *ngIf=\"labelFlag === labelType.Length || polygonCheck === 2\">\n <mat-form-field class=\"readOnly-Input\">\n <input\n #input\n matInput\n placeholder={{lengthLabelT}}\n value=\"{{currentLength}}\" readonly>\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select [value]=\"lengthMeasureUnit\" (selectionChange)=\"onChangeLengthUnit($event.value)\">\n <mat-option *ngFor=\"let unit of allLengthUnits\" [value]=\"unit\">\n {{getLengthUnitEnum(unit)}}\n </mat-option>\n </mat-select> \n </mat-form-field>\n </div>\n <div *ngIf=\"labelFlag === labelType.Area || polygonCheck === 2\">\n <mat-form-field class=\"readOnly-Input\">\n <input\n #input\n matInput\n placeholder=\"{{ 'igo.geo.draw.labelType.Area' | translate }}\"\n value=\"{{currentArea}}\" readonly>\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select [value]=\"areaMeasureUnit\" (selectionChange)=\"onChangeAreaUnit($event.value)\">\n <mat-option *ngFor=\"let unit of allAreaUnits\" [value]=\"unit\">\n {{getAreaUnitEnum(unit)}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n\n\n <div mat-dialog-actions>\n <button mat-raised-button (click)=\"cancelDrawing()\" >\n {{'igo.geo.draw.cancel' | translate}}\n </button>\n <button \n mat-raised-button \n color=\"primary\" \n (click)=\"confirm()\"> \n {{noLabelButton()}} \n </button>\n </div>\n</div>\n\n<div *ngIf=\"labelFlag === labelType.Custom\">\n <div>\n <p class=\"mat-typography\">{{ 'igo.geo.draw.dialogInstruction' | translate }}</p>\n <mat-form-field class=\"input\">\n <input\n #input\n matInput\n (select)=\"true\"\n (input)=\"getLabelLength($event.target.value)\"\n placeholder=\"{{'igo.geo.draw.dialogTitle' | translate}}\"\n value=\"{{ currentLabel }}\"\n cdkFocusInitial/>\n </mat-form-field>\n </div>\n \n <div mat-dialog-actions>\n <button mat-raised-button (click)=\"cancelDrawing()\" >\n {{'igo.geo.draw.cancel' | translate}}\n </button>\n <button \n mat-raised-button \n color=\"primary\" \n (click)=\"confirm(input.value)\">\n {{noLabelButton()}}\n </button>\n </div>\n</div>\n", styles: [".mat-radio-button~.mat-radio-button{margin-left:16px}.readOnly-Input{width:200px!important}.unit-field{width:50px;margin-left:10px;margin-top:10px}.mat-form-field{position:-webkit-sticky!important;position:sticky!important}.coordinatesInputView{top:5em!important}::ng-deep .mat-form-field-wrapper{margin-bottom:-1.25em;margin-top:.25em}.geometry-type-toggle,.mat-dialog-actions{display:flex!important;justify-content:center}.input{width:auto!important}.mat-button-toggle-group,.mat-button-toggle{width:100%}mat-checkbox{margin-right:10px}\n"] }]
|
|
577
|
+
}], function () { return [{ type: i1.LanguageService }, { type: i2.MatDialogRef }, { type: undefined, decorators: [{
|
|
56
578
|
type: Inject,
|
|
57
579
|
args: [MAT_DIALOG_DATA]
|
|
58
580
|
}] }]; }, { confirmFlag: [{
|
|
59
581
|
type: Input
|
|
582
|
+
}], labelFlag: [{
|
|
583
|
+
type: Input
|
|
584
|
+
}], coordinatesMeasureUnit: [{
|
|
585
|
+
type: Input
|
|
586
|
+
}], lengthMeasureUnit: [{
|
|
587
|
+
type: Input
|
|
588
|
+
}], areaMeasureUnit: [{
|
|
589
|
+
type: Input
|
|
60
590
|
}] }); })();
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1wb3B1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQU96RSxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQ1MsU0FBMkMsRUFDbEIsSUFBOEI7UUFEdkQsY0FBUyxHQUFULFNBQVMsQ0FBa0M7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBMEI7UUFKdkQsZ0JBQVcsR0FBWSxLQUFLLENBQUM7SUFJNEIsQ0FBQztJQUVuRSxhQUFhO1FBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsT0FBTyxDQUFDLFdBQW1CO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7O29GQWRVLGtCQUFrQiw4REFLbkIsZUFBZTtxRUFMZCxrQkFBa0I7O1FDUi9CLDhCQUF3QixXQUFBO1FBQ0ksWUFBa0Q7O1FBQUEsaUJBQUk7UUFDaEYseUNBQTJDO1FBQ3pDLDhCQUlpQzs7UUFDbkMsaUJBQWlCLEVBQUE7UUFFbkIsOEJBQXdCLGdCQUFBO1FBR3BCLCtGQUFTLG1CQUFlLElBQUM7UUFBQyxhQUM1Qjs7UUFBQSxpQkFBUztRQUNULGtDQUdpQztRQUEvQixzSkFBUyxlQUFBLHNCQUFvQixDQUFBLElBQUM7UUFBQyxvQkFDakM7UUFBQSxpQkFBUyxFQUFBOztRQWxCaUIsZUFBa0Q7UUFBbEQsNEVBQWtEO1FBS3hFLGVBQXdEO1FBQXhELHlGQUF3RDtRQUN4RCx3REFBNkI7UUFNTCxlQUM1QjtRQUQ0Qiw0RUFDNUI7O3VGRE5XLGtCQUFrQjtjQUw5QixTQUFTOzJCQUNFLDBCQUEwQjs7c0JBU2pDLE1BQU07dUJBQUMsZUFBZTt3QkFKaEIsV0FBVztrQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tZHJhdy1wb3B1cC1jb21wb25lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJhdy1wb3B1cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RyYXctcG9wdXAuY29tcG9uZW50LnNjc3MnXVxuICB9KVxuZXhwb3J0IGNsYXNzIERyYXdQb3B1cENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNvbmZpcm1GbGFnOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERyYXdQb3B1cENvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiB7IGN1cnJlbnRMYWJlbDogc3RyaW5nIH0pe31cblxuICBjYW5jZWxEcmF3aW5nKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cblxuICBjb25maXJtKGxhYmVsU3RyaW5nOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbmZpcm1GbGFnID0gdHJ1ZTtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShsYWJlbFN0cmluZyk7XG4gIH1cbn1cbiIsIjxkaXYgbWF0LWRpYWxvZy1jb250ZW50PlxuICA8cCBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCI+e3sgJ2lnby5nZW8uZHJhdy5kaWFsb2dJbnN0cnVjdGlvbicgfCB0cmFuc2xhdGUgfX08L3A+XG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImV4YW1wbGUtZnVsbC13aWR0aFwiPlxuICAgIDxpbnB1dFxuICAgICAgI2lucHV0XG4gICAgICBtYXRJbnB1dFxuICAgICAgcGxhY2Vob2xkZXI9XCJ7eydpZ28uZ2VvLmRyYXcuZGlhbG9nVGl0bGUnIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgdmFsdWU9XCJ7e2RhdGEuY3VycmVudExhYmVsfX1cIi8+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbjxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zPlxuICA8YnV0dG9uIFxuICAgIG1hdC1yYWlzZWQtYnV0dG9uIFxuICAgIChjbGljayk9XCJjYW5jZWxEcmF3aW5nKClcIj57eydpZ28uZ2VvLmRyYXcuY2FuY2VsJyB8IHRyYW5zbGF0ZX19XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIFxuICAgIG1hdC1yYWlzZWQtYnV0dG9uIFxuICAgIGNvbG9yPVwicHJpbWFyeVwiIFxuICAgIChjbGljayk9XCJjb25maXJtKGlucHV0LnZhbHVlKVwiPk9LXG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|
|
591
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kcmF3L2RyYXcvZHJhdy1wb3B1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3BDLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGtCQUFrQixFQUNuQixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsNkJBQTZCLEVBQzdCLGVBQWUsRUFDZiwyQkFBMkIsR0FDNUIsTUFBTSxtQ0FBbUMsQ0FBQztBQUUzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLE1BQU0sTUFBTSxnQkFBZ0IsQ0FBQztBQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNBekMsNENBQ3NFO0lBQXRFLHlOQUFVLGVBQUEsc0NBQStCLENBQUEsSUFBQztJQUN4QyxZQUNGO0lBQUEsaUJBQW1COzs7O0lBSHVDLHVDQUFzQixxREFBQSw4QkFBQTtJQUU5RSxlQUNGO0lBREUsNkVBQ0Y7OztJQUpGLDBDQUE2RTtJQUMzRSx1SEFHbUI7SUFDckIsaUJBQWtCOzs7SUFKcUIsZUFBbUI7SUFBbkIsaURBQW1COzs7O0lBTXhELHdDQU02QjtJQUQzQiwrTUFBVSxlQUFBLDhEQUFzRCxDQUFBLElBQUM7SUFFakUsWUFDRjtJQUFBLGlCQUFlOzs7O0lBTGIsd0NBQXNCLHVEQUFBLCtCQUFBO0lBSXRCLGVBQ0Y7SUFERSwrRUFDRjs7O0lBVEYsZ0NBQTBFO0lBQ3hFLDRHQVFlO0lBQ2pCLDBCQUFlOzs7SUFSUSxlQUFtQjtJQUFuQixpREFBbUI7OztJQW1CcEMscUNBQW9FO0lBQ2xFLFlBQ0Y7SUFBQSxpQkFBYTs7O0lBRndDLGdDQUFjO0lBQ2pFLGVBQ0Y7SUFERSx5Q0FDRjs7OztJQVpOLDJCQUFpRCx5QkFBQTtJQUU3QyxnQ0FJMEM7SUFDNUMsaUJBQWlCO0lBQ2pCLDBDQUFtQyxxQkFBQTtJQUNZLHVNQUFtQixlQUFBLDRDQUFvQyxDQUFBLElBQUM7SUFDbkcsK0ZBRWE7SUFDZixpQkFBYSxFQUFBLEVBQUE7OztJQVBYLGVBQThCO0lBQTlCLDREQUE4QjtJQUdwQixlQUFnQztJQUFoQyxxREFBZ0M7SUFDYixlQUFzQjtJQUF0QixvREFBc0I7OztJQWdCbkQscUNBQStEO0lBQzdELFlBQ0Y7SUFBQSxpQkFBYTs7OztJQUZtQyxnQ0FBYztJQUM1RCxlQUNGO0lBREUsb0VBQ0Y7Ozs7SUFaTiwyQkFBa0UseUJBQUE7SUFFOUQsZ0NBSXFDO0lBQ3ZDLGlCQUFpQjtJQUNqQiwwQ0FBbUMscUJBQUE7SUFDTyx1TUFBbUIsZUFBQSx3Q0FBZ0MsQ0FBQSxJQUFDO0lBQzFGLCtGQUVhO0lBQ2YsaUJBQWEsRUFBQSxFQUFBOzs7SUFSWCxlQUE0QjtJQUE1Qiw0REFBNEI7SUFDNUIsdURBQXlCO0lBR2YsZUFBMkI7SUFBM0IsZ0RBQTJCO0lBQ1IsZUFBaUI7SUFBakIsK0NBQWlCOzs7SUFnQjlDLHFDQUE2RDtJQUMzRCxZQUNGO0lBQUEsaUJBQWE7Ozs7SUFGaUMsZ0NBQWM7SUFDMUQsZUFDRjtJQURFLGtFQUNGOzs7O0lBWk4sMkJBQWdFLHlCQUFBO0lBRTVELGdDQUltQzs7SUFDckMsaUJBQWlCO0lBQ2pCLDBDQUFtQyxxQkFBQTtJQUNLLHVNQUFtQixlQUFBLHNDQUE4QixDQUFBLElBQUM7SUFDdEYsK0ZBRWE7SUFDZixpQkFBYSxFQUFBLEVBQUE7OztJQVJYLGVBQTZEO0lBQTdELDRGQUE2RDtJQUM3RCxxREFBdUI7SUFHYixlQUF5QjtJQUF6Qiw4Q0FBeUI7SUFDTixlQUFlO0lBQWYsNkNBQWU7Ozs7SUE5RHRELDJCQUE0QyxVQUFBLFdBQUE7SUFFZCxZQUFvRDs7SUFBQSxpQkFBSTtJQUNsRixrR0FLa0I7SUFDbEIsNEZBVWU7SUFDZiwwRUFlTTtJQUNOLDBFQWVNO0lBQ04sMEVBZU07SUFDUixpQkFBTTtJQUdOLCtCQUF3QixpQkFBQTtJQUNJLG1LQUFTLGVBQUEsdUJBQWUsQ0FBQSxJQUFDO0lBQ2pELGFBQ0Y7O0lBQUEsaUJBQVM7SUFDVCxrQ0FHc0I7SUFBcEIsbUtBQVMsZUFBQSxpQkFBUyxDQUFBLElBQUM7SUFDbkIsYUFDRjtJQUFBLGlCQUFTLEVBQUEsRUFBQTs7O0lBOUVpQixlQUFvRDtJQUFwRCw4RUFBb0Q7SUFDNUQsZUFBa0M7SUFBbEMsMERBQWtDO0lBTWQsZUFBa0M7SUFBbEMsMERBQWtDO0lBV2xFLGVBQXlDO0lBQXpDLHdFQUF5QztJQWdCekMsZUFBMEQ7SUFBMUQsZ0dBQTBEO0lBZ0IxRCxlQUF3RDtJQUF4RCw4RkFBd0Q7SUFxQjVELGVBQ0Y7SUFERSw4RUFDRjtJQUtFLGVBQ0Y7SUFERSx1REFDRjs7OztJQUlKLDJCQUE0QyxVQUFBLFdBQUE7SUFFZCxZQUFrRDs7SUFBQSxpQkFBSTtJQUNoRiwwQ0FBOEIsb0JBQUE7SUFJMUIsdUdBQVUsSUFBSSxJQUFDLDBKQUNOLGVBQUEsMkNBQW1DLENBQUEsSUFEN0I7O0lBSGpCLGlCQU9tQixFQUFBLEVBQUE7SUFJdkIsOEJBQXdCLGlCQUFBO0lBQ0ksbUtBQVMsZUFBQSx1QkFBZSxDQUFBLElBQUM7SUFDakQsYUFDRjs7SUFBQSxpQkFBUztJQUNULGtDQUdpQztJQUEvQixtTUFBUyxlQUFBLDJCQUFvQixDQUFBLElBQUM7SUFDOUIsYUFDRjtJQUFBLGlCQUFTLEVBQUEsRUFBQTs7O0lBdEJpQixlQUFrRDtJQUFsRCw0RUFBa0Q7SUFPeEUsZUFBd0Q7SUFBeEQseUZBQXdEO0lBQ3hELHNEQUEwQjtJQU81QixlQUNGO0lBREUsNkVBQ0Y7SUFLRSxlQUNGO0lBREUsdURBQ0Y7O0FEaEdKLE1BQU0sT0FBTyxrQkFBa0I7SUEyQjdCLFlBQ1UsZUFBZ0MsRUFDakMsU0FBMkMsRUFDbEIsSUFBc0M7UUFGOUQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQWtDO1FBQ2xCLFNBQUksR0FBSixJQUFJLENBQWtDO1FBN0IvRCxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixjQUFTLEdBQXVDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFLbkUsaUJBQVksR0FBRyxZQUFZLENBQUM7UUFDNUIsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN0QixxQkFBZ0IsR0FBVSxFQUFFLENBQUM7UUFPN0IsbUJBQWMsR0FBaUIsU0FBUyxDQUFDO1FBU3pDLGlCQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsMkNBQTJDO1FBT2hFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLFVBQVUsQ0FBQztRQUVmLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUU5RCxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxZQUFZLFNBQVMsRUFBRTtZQUM1QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBQztnQkFDbEMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDeEcsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO2dCQUMxQyxVQUFVLEdBQUcsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDN0U7aUJBQ0c7Z0JBQ0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbkUsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNuRDtTQUNGO2FBQ0c7WUFDRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JELFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUNuQztRQUVELElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxZQUFZLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssWUFBWSxDQUFDLE1BQU0sRUFBQztZQUM1RixJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxZQUFZLFNBQVMsRUFBQztnQkFDM0MsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsR0FBRyxRQUFRLEdBQUcsSUFBSTtzQkFDMUMsU0FBUyxHQUFHLEdBQUcsQ0FBQzthQUNuQjtpQkFDSTtnQkFDSCxJQUFJLFNBQVMsR0FBRyxTQUFTLENBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLEVBQ3pDLFVBQVUsRUFDVixXQUFXLENBQ1osQ0FBQztnQkFDRixJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLGVBQWU7b0JBQ2xCLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQzthQUM1RDtZQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQ2hEO1FBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFlBQVksQ0FBQyxVQUFVLEVBQUM7WUFDbEQsSUFBSSxDQUFDLGNBQWMsR0FBRyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUMxQzthQUNJLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxZQUFZLENBQUMsT0FBTyxFQUFDO1lBQ3BELElBQUksQ0FBQyxjQUFjLEdBQUcsdUJBQXVCLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDekMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLHFCQUFxQixDQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUYsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7U0FDNUM7YUFDSSxJQUFHLElBQUksQ0FBQyxjQUFjLEtBQUssWUFBWSxDQUFDLE1BQU0sRUFBQztZQUNsRCxJQUFJLGVBQWUsR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUN6QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcscUJBQXFCLENBQUMsZUFBZSxFQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztTQUM1QztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssU0FBUyxDQUFDLFdBQVcsRUFBRTtZQUM5RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNsRTthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUNoRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUM3RDthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssU0FBUyxDQUFDLElBQUksRUFBRTtZQUM5RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDM0Q7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5RDtRQUNELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUg7O09BRUc7SUFFSCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQWM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBRyxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxVQUFVLEVBQUM7WUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN4QjthQUNJLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsTUFBTSxFQUFDO1lBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO2dCQUNuQixLQUFLLEVBQUUsS0FBSzthQUNiLENBQUMsQ0FBQztTQUNKO2FBQ0ksSUFBRyxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxXQUFXLEVBQUM7WUFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7Z0JBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCO2dCQUM5QixXQUFXLEVBQUUsSUFBSSxDQUFDLHNCQUFzQjthQUN6QyxDQUFDLENBQUM7U0FDSjthQUNJLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxZQUFZLENBQUMsT0FBTyxFQUFFO1lBQ3JELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxDQUFDLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7b0JBQ25CLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLEdBQUcsNkJBQTZCLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSTswQkFDdEcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHO3dCQUM3RiwyQkFBMkIsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUM7aUJBQ3ZILENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQzt3QkFDbkIsS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsR0FBRyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7d0JBQy9GLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCO3FCQUNwQyxDQUFDLENBQUMsQ0FBQztvQkFDSixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQzt3QkFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLDJCQUEyQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7d0JBQ2pGLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZTtxQkFDbEMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjthQUNJLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsTUFBTSxFQUFDO1lBQzNDLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxZQUFZLENBQUMsTUFBTSxFQUFDO2dCQUM5QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztvQkFDbkIsS0FBSyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsR0FBRyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7b0JBQy9GLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCO2lCQUNwQyxDQUFDLENBQUM7YUFDSjtpQkFDSSxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssWUFBWSxDQUFDLFVBQVUsRUFBRTtnQkFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7b0JBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsR0FBRyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7b0JBQ3ZGLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCO2lCQUNwQyxDQUFDLENBQUM7YUFDSjtTQUNGO2FBQ0ksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUM7WUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7Z0JBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsR0FBRywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO2dCQUNqRixXQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWU7YUFDbEMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBb0IsRUFBRSxPQUFpQjtRQUN2RCxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsVUFBVTtZQUNwQyxTQUFTLEtBQUssU0FBUyxDQUFDLE1BQU07WUFDOUIsSUFBSSxDQUFDLGNBQWMsS0FBSyxZQUFZLENBQUMsT0FBTyxFQUFFO1lBQzVDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQzlHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUM7U0FDbkg7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1NBQzVCO1FBRUQsSUFBSSxTQUFTLEtBQUssU0FBUyxDQUFDLFVBQVUsRUFBQztZQUNyQyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssWUFBWSxDQUFDLEtBQUssRUFBRTtnQkFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUM7YUFDN0Q7aUJBQ0ksSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFlBQVksQ0FBQyxVQUFVLEVBQUM7Z0JBQ3ZELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDO2FBQ25EO1NBQ0Y7YUFDSSxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFDO1lBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQzNDLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQztTQUNyRDthQUNJLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxNQUFNLEVBQUM7WUFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7U0FDbkQ7YUFDSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLFdBQVcsRUFBQztZQUNoRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUMvQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsZUFBZSxDQUFDLGFBQWEsQ0FBQztTQUM3RDtRQUVELE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRSxJQUNFLElBQUksQ0FBQyxjQUFjLEtBQUssWUFBWSxDQUFDLE9BQU87WUFDNUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNoQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQztZQUFBLENBQUM7U0FDNUQ7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLFVBQTZCO1FBQzlDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQXlCO1FBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsc0JBQXNCLENBQUMsZUFBZ0M7UUFDckQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGVBQWUsQ0FBQztRQUM5QyxJQUFJLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUMvRSxDQUFDO0lBRUQsY0FBYztRQUNaLEtBQUssTUFBTSxTQUFTLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBQztZQUMvQyxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsTUFBTSxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsVUFBVSxFQUFDO2dCQUN2RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO29CQUN6QixLQUFLLEVBQUUsU0FBUztvQkFDaEIsT0FBTyxFQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO3dCQUM3QixJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVM7d0JBQzVCLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxDQUFDLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxXQUFXLENBQUM7aUJBQ25FLENBQUMsQ0FBQzthQUNKO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssQ0FBQyxDQUFDLEVBQUM7WUFDN0csT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztTQUN2RTtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsTUFBTSxFQUFDO1lBQ3RDLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQztTQUN6QjtRQUNELE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQztJQUM5QixDQUFDO0lBRUQsZUFBZSxDQUFDLGFBQXdCO1FBQ3RDLFFBQU8sSUFBSSxDQUFDLGNBQWMsRUFBQztZQUN6QixLQUFLLFlBQVksQ0FBQyxLQUFLO2dCQUNyQixJQUFJLGFBQWEsS0FBSyxTQUFTLENBQUMsV0FBVyxFQUFDO29CQUMxQyxPQUFPLEtBQUssQ0FBQztpQkFDZDtnQkFDRCxPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssWUFBWSxDQUFDLFVBQVU7Z0JBQzFCLElBQUksYUFBYSxLQUFLLFNBQVMsQ0FBQyxNQUFNLEVBQUM7b0JBQ3JDLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxZQUFZLENBQUMsT0FBTztnQkFDdkIsSUFBSSxhQUFhLEtBQUssU0FBUyxDQUFDLFdBQVcsRUFBQztvQkFDMUMsT0FBTyxJQUFJLENBQUM7aUJBQ2I7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZjtnQkFDRSxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNILENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFVBQTZCO1FBQzdDLE9BQU8sNkJBQTZCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxlQUFlLENBQUMsUUFBeUI7UUFDdkMsT0FBTywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sU0FBUyxDQUFDLFVBQVU7UUFDMUIsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFlBQVksQ0FBQyxPQUFPLEVBQUM7WUFDL0MsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FBQztTQUM1RTtRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxZQUFZLENBQUMsTUFBTSxFQUFDO1lBQzlDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7U0FDcEY7UUFDRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBTTtRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFNO1FBQ2xCLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxZQUFZLENBQUMsS0FBSyxFQUFDO1lBQzdDLE9BQU8sTUFBTSxLQUFLLFNBQVMsQ0FBQyxXQUFXLENBQUM7U0FDekM7YUFDSSxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssWUFBWSxDQUFDLFVBQVUsRUFBQztZQUN2RCxPQUFPLE1BQU0sS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQU07UUFDekIsSUFBSSxNQUFNLEtBQUssU0FBUyxDQUFDLE1BQU0sRUFBQztZQUM5QixJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssWUFBWSxDQUFDLE9BQU8sRUFBQztnQkFDL0MsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FBQzthQUM1RTtZQUNELElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxZQUFZLENBQUMsTUFBTSxFQUFDO2dCQUM5QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO2FBQ3BGO1lBQ0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsK0JBQStCLENBQUMsQ0FBQztTQUNoRjtRQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQ3BGLENBQUM7O29GQWpXVSxrQkFBa0Isd0dBOEJuQixlQUFlO3FFQTlCZCxrQkFBa0I7UUMvQi9CLDJCQUFLLFlBQUE7UUFFRCxZQUNGOztRQUFBLGlCQUFLLEVBQUE7UUFJUCw4QkFBaUQsaUNBQUE7UUFFN0Msd0hBQVUsbUNBQStCLElBQUM7UUFDMUMsNENBQStDO1FBQzdDLFlBQ0Y7O1FBQUEsaUJBQW9CO1FBQ3BCLDRDQUFrRDtRQUNoRCxhQUNGOztRQUFBLGlCQUFvQixFQUFBLEVBQUE7UUFJeEIsdUVBa0ZNO1FBRU4sdUVBMEJNOztRQS9IRixlQUNGO1FBREUsZ0ZBQ0Y7UUFNNkMsZUFBNEI7UUFBNUIsOENBQTRCO1FBQ3BELGVBQTBCO1FBQTFCLDRDQUEwQjtRQUMzQyxlQUNGO1FBREUsdUZBQ0Y7UUFDbUIsZUFBOEI7UUFBOUIsZ0RBQThCO1FBQy9DLGVBQ0Y7UUFERSw0RkFDRjtRQUlFLGVBQW9DO1FBQXBDLDZEQUFvQztRQW9GcEMsZUFBb0M7UUFBcEMsNkRBQW9DOzt1RkR4RTdCLGtCQUFrQjtjQUw5QixTQUFTOzJCQUNFLDBCQUEwQjs7c0JBa0NqQyxNQUFNO3VCQUFDLGVBQWU7d0JBN0JoQixXQUFXO2tCQUFuQixLQUFLO1lBQ0csU0FBUztrQkFBakIsS0FBSztZQUNHLHNCQUFzQjtrQkFBOUIsS0FBSztZQUNHLGlCQUFpQjtrQkFBekIsS0FBSztZQUNHLGVBQWU7a0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQ29vcmRpbmF0ZXNVbml0LCBHZW9tZXRyeVR5cGUsIExhYmVsVHlwZSB9IGZyb20gJy4uL3NoYXJlZC9kcmF3LmVudW0nO1xuaW1wb3J0IHsgdHJhbnNmb3JtIH0gZnJvbSAnb2wvcHJvaic7XG5pbXBvcnQgeyBJZ29NYXAsIHJvdW5kQ29vcmRUbyB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQnO1xuaW1wb3J0IE9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcbmltcG9ydCB7XG4gIG1lYXN1cmVPbEdlb21ldHJ5TGVuZ3RoLFxuICBtZWFzdXJlT2xHZW9tZXRyeUFyZWEsXG4gIG1ldGVyc1RvVW5pdCxcbiAgc3F1YXJlTWV0ZXJzVG9Vbml0XG59IGZyb20gJy4uLy4uL21lYXN1cmUvc2hhcmVkL21lYXN1cmUudXRpbHMnO1xuaW1wb3J0IHtcbiAgTWVhc3VyZUxlbmd0aFVuaXQsXG4gIE1lYXN1cmVMZW5ndGhVbml0QWJicmV2aWF0aW9uLFxuICBNZWFzdXJlQXJlYVVuaXQsXG4gIE1lYXN1cmVBcmVhVW5pdEFiYnJldmlhdGlvbixcbn0gZnJvbSAnLi4vLi4vbWVhc3VyZS9zaGFyZWQvbWVhc3VyZS5lbnVtJztcblxuaW1wb3J0IHtmcm9tQ2lyY2xlfSBmcm9tICdvbC9nZW9tL1BvbHlnb24nO1xuaW1wb3J0IHsgZ2V0TGVuZ3RoIH0gZnJvbSAnb2wvc3BoZXJlJztcbmltcG9ydCBDaXJjbGUgZnJvbSAnb2wvZ2VvbS9DaXJjbGUnO1xuaW1wb3J0IHsgRER0b0RNUyB9IGZyb20gJy4uL3NoYXJlZC9kcmF3LnV0aWxzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tZHJhdy1wb3B1cC1jb21wb25lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJhdy1wb3B1cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RyYXctcG9wdXAuY29tcG9uZW50LnNjc3MnXVxuICB9KVxuZXhwb3J0IGNsYXNzIERyYXdQb3B1cENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNvbmZpcm1GbGFnOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxhYmVsRmxhZzogTGFiZWxUeXBlIHwgW0xhYmVsVHlwZSwgTGFiZWxUeXBlXSA9IExhYmVsVHlwZS5DdXN0b207XG4gIEBJbnB1dCgpIGNvb3JkaW5hdGVzTWVhc3VyZVVuaXQ6IENvb3JkaW5hdGVzVW5pdDtcbiAgQElucHV0KCkgbGVuZ3RoTWVhc3VyZVVuaXQ6IE1lYXN1cmVMZW5ndGhVbml0O1xuICBASW5wdXQoKSBhcmVhTWVhc3VyZVVuaXQ6IE1lYXN1cmVBcmVhVW5pdDtcblxuICBwdWJsaWMgZ2VvbWV0cnlUeXBlID0gR2VvbWV0cnlUeXBlO1xuICBwdWJsaWMgbGFiZWxUeXBlID0gTGFiZWxUeXBlO1xuICBwdWJsaWMgYXJyYXlCdWlsdEluVHlwZTogYW55W10gPSBbXTtcblxuICBwdWJsaWMgY3VycmVudExhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBjdXJyZW50Q29vcmRpbmF0ZXM6IHN0cmluZztcbiAgcHVibGljIGN1cnJlbnRBcmVhOiBzdHJpbmc7XG4gIHB1YmxpYyBjdXJyZW50TGVuZ3RoOiBzdHJpbmc7XG5cbiAgcHVibGljIG9sR2VvbWV0cnlUeXBlOiBHZW9tZXRyeVR5cGUgPSB1bmRlZmluZWQ7XG4gIHB1YmxpYyBsZW5ndGhJbk1ldGVyczogc3RyaW5nO1xuICBwdWJsaWMgYXJlYUluTWV0ZXJzU3F1YXJlOiBzdHJpbmc7XG4gIHB1YmxpYyBjb29yZGluYXRlc0luREQ6IHN0cmluZztcbiAgcHVibGljIGN1cnJlbnRDb29yZGluYXRlc1VuaXQ6IHN0cmluZztcblxuICBwcml2YXRlIGxvbmdsYXRERDogW251bWJlciwgbnVtYmVyXTtcbiAgcHJpdmF0ZSBsYWJlbExlbmd0aDogbnVtYmVyO1xuXG4gIHB1YmxpYyBwb2x5Z29uQ2hlY2sgPSAwOyAvLyBDb3VudCBmb3IgcG9seWdvbiBsYWJlbCB0eXBlcyBjaGVja2JveGVzXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RHJhd1BvcHVwQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IHsgb2xHZW9tZXRyeTogYW55LCBtYXA6IElnb01hcCB9XG4gICAgKSB7XG4gICAgICB0aGlzLmN1cnJlbnRMYWJlbCA9IHRoaXMuZGF0YS5vbEdlb21ldHJ5LmdldCgnZHJhdycpO1xuICAgICAgdGhpcy5sYWJlbExlbmd0aCA9IHRoaXMuY3VycmVudExhYmVsID8gdGhpcy5jdXJyZW50TGFiZWwubGVuZ3RoOiAwO1xuICAgICAgbGV0IG9sR2VvbWV0cnk7XG5cbiAgICAgIGNvbnN0IHByb2plY3Rpb24gPSB0aGlzLmRhdGEubWFwLm9sLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCk7XG5cbiAgICAgIGlmKHRoaXMuZGF0YS5vbEdlb21ldHJ5IGluc3RhbmNlb2YgT2xGZWF0dXJlKSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGEub2xHZW9tZXRyeS5nZXQoJ3JhZCcpKXtcbiAgICAgICAgICBjb25zdCBsb25naXR1ZGVMYXRpdHVkZSA9IFt0aGlzLmRhdGEub2xHZW9tZXRyeS5nZXQoJ2xvbmdpdHVkZScpLCB0aGlzLmRhdGEub2xHZW9tZXRyeS5nZXQoJ2xhdGl0dWRlJyldO1xuICAgICAgICAgIHRoaXMub2xHZW9tZXRyeVR5cGUgPSBHZW9tZXRyeVR5cGUuQ2lyY2xlO1xuICAgICAgICAgIG9sR2VvbWV0cnkgPSBuZXcgQ2lyY2xlKGxvbmdpdHVkZUxhdGl0dWRlLCB0aGlzLmRhdGEub2xHZW9tZXRyeS5nZXQoJ3JhZCcpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNle1xuICAgICAgICAgIHRoaXMub2xHZW9tZXRyeVR5cGUgPSB0aGlzLmRhdGEub2xHZW9tZXRyeS5nZXRHZW9tZXRyeSgpLmdldFR5cGUoKTtcbiAgICAgICAgICBvbEdlb21ldHJ5ID0gdGhpcy5kYXRhLm9sR2VvbWV0cnkuZ2V0KCdnZW9tZXRyeScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNle1xuICAgICAgICB0aGlzLm9sR2VvbWV0cnlUeXBlID0gdGhpcy5kYXRhLm9sR2VvbWV0cnkuZ2V0VHlwZSgpO1xuICAgICAgICBvbEdlb21ldHJ5ID0gdGhpcy5kYXRhLm9sR2VvbWV0cnk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuUG9pbnQgfHwgdGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLkNpcmNsZSl7XG4gICAgICAgIGlmKHRoaXMuZGF0YS5vbEdlb21ldHJ5IGluc3RhbmNlb2YgT2xGZWF0dXJlKXtcbiAgICAgICAgICBsZXQgbG9uZ2l0dWRlID0gdGhpcy5kYXRhLm9sR2VvbWV0cnkuZ2V0KCdsb25naXR1ZGUnKTtcbiAgICAgICAgICBsZXQgbGF0aXR1ZGUgPSB0aGlzLmRhdGEub2xHZW9tZXRyeS5nZXQoJ2xhdGl0dWRlJyk7XG4gICAgICAgICAgdGhpcy5sb25nbGF0REQgPSByb3VuZENvb3JkVG8oW2xvbmdpdHVkZSwgbGF0aXR1ZGVdLCA1KTtcbiAgICAgICAgICB0aGlzLmNvb3JkaW5hdGVzSW5ERCA9ICcoJyArIGxhdGl0dWRlICsgJywgJ1xuICAgICAgICAgICsgbG9uZ2l0dWRlICsgJyknO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGxldCBwb2ludDQzMjYgPSB0cmFuc2Zvcm0oXG4gICAgICAgICAgICB0aGlzLmRhdGEub2xHZW9tZXRyeS5nZXRGbGF0Q29vcmRpbmF0ZXMoKSxcbiAgICAgICAgICAgIHByb2plY3Rpb24sXG4gICAgICAgICAgICAnRVBTRzo0MzI2J1xuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5sb25nbGF0REQgPSByb3VuZENvb3JkVG8oW3BvaW50NDMyNlswXSwgcG9pbnQ0MzI2WzFdXSwgNSk7XG4gICAgICAgICAgdGhpcy5jb29yZGluYXRlc0luREQgPVxuICAgICAgICAgICAgJygnICsgdGhpcy5sb25nbGF0RERbMV0gKyAnLCAnICsgdGhpcy5sb25nbGF0RERbMF0gKyAnKSc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50Q29vcmRpbmF0ZXMgPSB0aGlzLmNvb3JkaW5hdGVzSW5ERDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuTGluZVN0cmluZyl7XG4gICAgICAgIHRoaXMubGVuZ3RoSW5NZXRlcnMgPSBtZWFzdXJlT2xHZW9tZXRyeUxlbmd0aChvbEdlb21ldHJ5LCBwcm9qZWN0aW9uLmdldENvZGUoKSkudG9GaXhlZCgyKTtcbiAgICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoID0gdGhpcy5sZW5ndGhJbk1ldGVycztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5Qb2x5Z29uKXtcbiAgICAgICAgdGhpcy5sZW5ndGhJbk1ldGVycyA9IG1lYXN1cmVPbEdlb21ldHJ5TGVuZ3RoKG9sR2VvbWV0cnksIHByb2plY3Rpb24uZ2V0Q29kZSgpKS50b0ZpeGVkKDIpO1xuICAgICAgICB0aGlzLmN1cnJlbnRMZW5ndGggPSB0aGlzLmxlbmd0aEluTWV0ZXJzO1xuICAgICAgICB0aGlzLmFyZWFJbk1ldGVyc1NxdWFyZSA9IG1lYXN1cmVPbEdlb21ldHJ5QXJlYShvbEdlb21ldHJ5LHByb2plY3Rpb24uZ2V0Q29kZSgpKS50b0ZpeGVkKDIpO1xuICAgICAgICB0aGlzLmN1cnJlbnRBcmVhID0gdGhpcy5hcmVhSW5NZXRlcnNTcXVhcmU7XG4gICAgICB9XG4gICAgICBlbHNlIGlmKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5DaXJjbGUpe1xuICAgICAgICBsZXQgY2lyY3VsYXJQb2x5Z29uID0gZnJvbUNpcmNsZShvbEdlb21ldHJ5LCAxMDAwMCk7XG4gICAgICAgIGNvbnN0IHJhZGl1cyA9IHRoaXMuZ2V0UmFkaXVzKGNpcmN1bGFyUG9seWdvbik7XG4gICAgICAgIHRoaXMubGVuZ3RoSW5NZXRlcnMgPSByYWRpdXMudG9GaXhlZCgyKTtcbiAgICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoID0gdGhpcy5sZW5ndGhJbk1ldGVycztcbiAgICAgICAgdGhpcy5hcmVhSW5NZXRlcnNTcXVhcmUgPSBtZWFzdXJlT2xHZW9tZXRyeUFyZWEoY2lyY3VsYXJQb2x5Z29uLHByb2plY3Rpb24uZ2V0Q29kZSgpKS50b0ZpeGVkKDIpO1xuICAgICAgICB0aGlzLmN1cnJlbnRBcmVhID0gdGhpcy5hcmVhSW5NZXRlcnNTcXVhcmU7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLm9sR2VvbWV0cnkuZ2V0KCdsYWJlbFR5cGUnKSA9PT0gTGFiZWxUeXBlLkNvb3JkaW5hdGVzKSB7XG4gICAgICAgIHRoaXMub25MYWJlbFR5cGVDaGFuZ2UoTGFiZWxUeXBlLlByZWRlZmluZWQpO1xuICAgICAgICB0aGlzLm9uTGFiZWxUeXBlQ2hhbmdlKExhYmVsVHlwZS5Db29yZGluYXRlcywgdHJ1ZSk7XG4gICAgICAgIHRoaXMuY29vcmRpbmF0ZXNNZWFzdXJlVW5pdCA9IGRhdGEub2xHZW9tZXRyeS5nZXQoJ21lYXN1cmVVbml0Jyk7XG4gICAgICB9IGVsc2UgaWYgKGRhdGEub2xHZW9tZXRyeS5nZXQoJ2xhYmVsVHlwZScpID09PSBMYWJlbFR5cGUuTGVuZ3RoKSB7XG4gICAgICAgIHRoaXMub25MYWJlbFR5cGVDaGFuZ2UoTGFiZWxUeXBlLlByZWRlZmluZWQpO1xuICAgICAgICB0aGlzLm9uTGFiZWxUeXBlQ2hhbmdlKExhYmVsVHlwZS5MZW5ndGgsIHRydWUpO1xuICAgICAgICB0aGlzLmxlbmd0aE1lYXN1cmVVbml0ID0gZGF0YS5vbEdlb21ldHJ5LmdldCgnbWVhc3VyZVVuaXQnKTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YS5vbEdlb21ldHJ5LmdldCgnbGFiZWxUeXBlJykgPT09IExhYmVsVHlwZS5BcmVhKSB7XG4gICAgICAgIHRoaXMub25MYWJlbFR5cGVDaGFuZ2UoTGFiZWxUeXBlLlByZWRlZmluZWQpO1xuICAgICAgICB0aGlzLm9uTGFiZWxUeXBlQ2hhbmdlKExhYmVsVHlwZS5BcmVhLCB0cnVlKTtcbiAgICAgICAgdGhpcy5hcmVhTWVhc3VyZVVuaXQgPSBkYXRhLm9sR2VvbWV0cnkuZ2V0KCdtZWFzdXJlVW5pdCcpO1xuICAgICAgfSBlbHNlIGlmIChkYXRhLm9sR2VvbWV0cnkuZ2V0KCdsYWJlbFR5cGUnKT8ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIHRoaXMub25MYWJlbFR5cGVDaGFuZ2UoTGFiZWxUeXBlLlByZWRlZmluZWQpO1xuICAgICAgICB0aGlzLm9uTGFiZWxUeXBlQ2hhbmdlKExhYmVsVHlwZS5MZW5ndGgsIHRydWUpO1xuICAgICAgICB0aGlzLm9uTGFiZWxUeXBlQ2hhbmdlKExhYmVsVHlwZS5BcmVhLCB0cnVlKTtcbiAgICAgICAgdGhpcy5sZW5ndGhNZWFzdXJlVW5pdCA9IGRhdGEub2xHZW9tZXRyeS5nZXQoJ21lYXN1cmVVbml0JylbMF07XG4gICAgICAgIHRoaXMuYXJlYU1lYXN1cmVVbml0ID0gZGF0YS5vbEdlb21ldHJ5LmdldCgnbWVhc3VyZVVuaXQnKVsxXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnVpbGRBcnJheVR5cGUoKTtcbiAgICB9XG5cbiAgLyoqXG4gICAqIEhUTUwgSW50ZXJhY3Rpb25zXG4gICAqL1xuXG4gIGNhbmNlbERyYXdpbmcoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxuXG4gIGNvbmZpcm0oaW5wdXQ/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbmZpcm1GbGFnID0gdHJ1ZTtcbiAgICBpZih0aGlzLmxhYmVsRmxhZyA9PT0gTGFiZWxUeXBlLlByZWRlZmluZWQpe1xuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5sYWJlbEZsYWcgPT09IExhYmVsVHlwZS5DdXN0b20pe1xuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICBsYWJlbDogaW5wdXRcbiAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIGlmKHRoaXMubGFiZWxGbGFnID09PSBMYWJlbFR5cGUuQ29vcmRpbmF0ZXMpe1xuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICBsYWJlbDogdGhpcy5jdXJyZW50Q29vcmRpbmF0ZXMsXG4gICAgICAgIG1lYXN1cmVVbml0OiB0aGlzLmNvb3JkaW5hdGVzTWVhc3VyZVVuaXRcbiAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuUG9seWdvbikge1xuICAgICAgaWYgKHRoaXMucG9seWdvbkNoZWNrID09PSAyKSB7XG4gICAgICAgIHRoaXMubGFiZWxGbGFnID0gW0xhYmVsVHlwZS5MZW5ndGgsIExhYmVsVHlwZS5BcmVhXTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgIGxhYmVsOiAnUDogJyArIHRoaXMuY3VycmVudExlbmd0aCArICcgJyArIE1lYXN1cmVMZW5ndGhVbml0QWJicmV2aWF0aW9uW01lYXN1cmVMZW5ndGhVbml0Lk1ldGVyc10gKyAnXFxuJ1xuICAgICAgICAgICsgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUuQScpICsgdGhpcy5jdXJyZW50QXJlYSArICcgJyArXG4gICAgICAgICAgTWVhc3VyZUFyZWFVbml0QWJicmV2aWF0aW9uW01lYXN1cmVBcmVhVW5pdC5TcXVhcmVNZXRlcnNdLCBtZWFzdXJlVW5pdDogW3RoaXMubGVuZ3RoTWVhc3VyZVVuaXQsIHRoaXMuYXJlYU1lYXN1cmVVbml0XVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubGFiZWxGbGFnID09PSBMYWJlbFR5cGUuTGVuZ3RoID9cbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgIGxhYmVsOiAnUDogJyArIHRoaXMuY3VycmVudExlbmd0aCArICcgJyArIE1lYXN1cmVMZW5ndGhVbml0QWJicmV2aWF0aW9uW3RoaXMubGVuZ3RoTWVhc3VyZVVuaXRdLFxuICAgICAgICAgIG1lYXN1cmVVbml0OiB0aGlzLmxlbmd0aE1lYXN1cmVVbml0XG4gICAgICAgIH0pIDpcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgIGxhYmVsOiB0aGlzLmN1cnJlbnRBcmVhICsgJyAnICsgTWVhc3VyZUFyZWFVbml0QWJicmV2aWF0aW9uW3RoaXMuYXJlYU1lYXN1cmVVbml0XSxcbiAgICAgICAgICBtZWFzdXJlVW5pdDogdGhpcy5hcmVhTWVhc3VyZVVuaXRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMubGFiZWxGbGFnID09PSBMYWJlbFR5cGUuTGVuZ3RoKXtcbiAgICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuQ2lyY2xlKXtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgIGxhYmVsOiAnUjogJyArIHRoaXMuY3VycmVudExlbmd0aCArICcgJyArIE1lYXN1cmVMZW5ndGhVbml0QWJicmV2aWF0aW9uW3RoaXMubGVuZ3RoTWVhc3VyZVVuaXRdLFxuICAgICAgICAgIG1lYXN1cmVVbml0OiB0aGlzLmxlbmd0aE1lYXN1cmVVbml0XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLkxpbmVTdHJpbmcpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgIGxhYmVsOiB0aGlzLmN1cnJlbnRMZW5ndGggKyAnICcgKyBNZWFzdXJlTGVuZ3RoVW5pdEFiYnJldmlhdGlvblt0aGlzLmxlbmd0aE1lYXN1cmVVbml0XSxcbiAgICAgICAgICBtZWFzdXJlVW5pdDogdGhpcy5sZW5ndGhNZWFzdXJlVW5pdFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5sYWJlbEZsYWcgPT09IExhYmVsVHlwZS5BcmVhKXtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgbGFiZWw6IHRoaXMuY3VycmVudEFyZWEgKyAnICcgKyBNZWFzdXJlQXJlYVVuaXRBYmJyZXZpYXRpb25bdGhpcy5hcmVhTWVhc3VyZVVuaXRdLFxuICAgICAgICBtZWFzdXJlVW5pdDogdGhpcy5hcmVhTWVhc3VyZVVuaXRcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uTGFiZWxUeXBlQ2hhbmdlKGxhYmVsVHlwZTogTGFiZWxUeXBlLCBjaGVja2VkPzogYm9vbGVhbil7XG4gICAgaWYgKGxhYmVsVHlwZSAhPT0gTGFiZWxUeXBlLlByZWRlZmluZWQgJiZcbiAgICAgIGxhYmVsVHlwZSAhPT0gTGFiZWxUeXBlLkN1c3RvbSAmJlxuICAgICAgdGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLlBvbHlnb24pIHtcbiAgICAgICAgdGhpcy5hcnJheUJ1aWx0SW5UeXBlLmZpbmQodHlwZSA9PiB0eXBlLnZhbHVlID09PSBsYWJlbFR5cGUpID9cbiAgICAgICAgICB0aGlzLmFycmF5QnVpbHRJblR5cGUuZmluZCh0eXBlID0+IHR5cGUudmFsdWUgPT09IGxhYmVsVHlwZSkuY2hlY2tlZCA9IGNoZWNrZWQgOiB0aGlzLmxhYmVsRmxhZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgY2hlY2tlZCA/IHRoaXMubGFiZWxGbGFnID0gbGFiZWxUeXBlIDogdGhpcy5sYWJlbEZsYWcgPSB0aGlzLmFycmF5QnVpbHRJblR5cGUuZmluZCh0eXBlID0+IHR5cGUuY2hlY2tlZCk/LnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxhYmVsRmxhZyA9IGxhYmVsVHlwZTtcbiAgICB9XG5cbiAgICBpZiAobGFiZWxUeXBlID09PSBMYWJlbFR5cGUuUHJlZGVmaW5lZCl7XG4gICAgICBpZiAodGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLlBvaW50ICl7XG4gICAgICAgIHRoaXMubGFiZWxGbGFnID0gTGFiZWxUeXBlLkNvb3JkaW5hdGVzO1xuICAgICAgICB0aGlzLmN1cnJlbnRDb29yZGluYXRlcyA9IHRoaXMuY29vcmRpbmF0ZXNJbkREO1xuICAgICAgICB0aGlzLmNvb3JkaW5hdGVzTWVhc3VyZVVuaXQgPSBDb29yZGluYXRlc1VuaXQuRGVjaW1hbERlZ3JlZTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5MaW5lU3RyaW5nKXtcbiAgICAgICAgdGhpcy5sYWJlbEZsYWcgPSBMYWJlbFR5cGUuTGVuZ3RoO1xuICAgICAgICB0aGlzLmN1cnJlbnRMZW5ndGggPSB0aGlzLmxlbmd0aEluTWV0ZXJzO1xuICAgICAgICB0aGlzLmxlbmd0aE1lYXN1cmVVbml0ID0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChsYWJlbFR5cGUgPT09IExhYmVsVHlwZS5BcmVhKXtcbiAgICAgIHRoaXMuY3VycmVudEFyZWEgPSB0aGlzLmFyZWFJbk1ldGVyc1NxdWFyZTtcbiAgICAgIHRoaXMuYXJlYU1lYXN1cmVVbml0ID0gTWVhc3VyZUFyZWFVbml0LlNxdWFyZU1ldGVycztcbiAgICB9XG4gICAgZWxzZSBpZiAobGFiZWxUeXBlID09PSBMYWJlbFR5cGUuTGVuZ3RoKXtcbiAgICAgIHRoaXMuY3VycmVudExlbmd0aCA9IHRoaXMubGVuZ3RoSW5NZXRlcnM7XG4gICAgICB0aGlzLmxlbmd0aE1lYXN1cmVVbml0ID0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLmxhYmVsRmxhZyA9PT0gTGFiZWxUeXBlLkNvb3JkaW5hdGVzKXtcbiAgICAgIHRoaXMuY3VycmVudENvb3JkaW5hdGVzID0gdGhpcy5jb29yZGluYXRlc0luREQ7XG4gICAgICB0aGlzLmNvb3JkaW5hdGVzTWVhc3VyZVVuaXQgPSBDb29yZGluYXRlc1VuaXQuRGVjaW1hbERlZ3JlZTtcbiAgICB9XG5cbiAgICBjb25zdCBsYWJlbHR5cGVzID0gW3RoaXMubGFiZWxUeXBlLkxlbmd0aCwgdGhpcy5sYWJlbFR5cGUuQXJlYV07XG4gICAgaWYgKFxuICAgICAgdGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLlBvbHlnb24gJiZcbiAgICAgIGxhYmVsdHlwZXMuaW5jbHVkZXMobGFiZWxUeXBlKSkge1xuICAgICAgY2hlY2tlZCA/IHRoaXMucG9seWdvbkNoZWNrICs9IDEgOiB0aGlzLnBvbHlnb25DaGVjayAtPSAxOztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb2x5Z29uQ2hlY2sgPSAwO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hhbmdlTGVuZ3RoVW5pdChsZW5ndGhVbml0OiBNZWFzdXJlTGVuZ3RoVW5pdCl7XG4gICAgdGhpcy5sZW5ndGhNZWFzdXJlVW5pdCA9IGxlbmd0aFVuaXQ7XG4gICAgdGhpcy5jdXJyZW50TGVuZ3RoID0gbWV0ZXJzVG9Vbml0KE51bWJlcih0aGlzLmxlbmd0aEluTWV0ZXJzKSwgbGVuZ3RoVW5pdCkudG9GaXhlZCgyKTtcbiAgfVxuXG4gIG9uQ2hhbmdlQXJlYVVuaXQoYXJlYVVuaXQ6IE1lYXN1cmVBcmVhVW5pdCl7XG4gICAgdGhpcy5hcmVhTWVhc3VyZVVuaXQgPSBhcmVhVW5pdDtcbiAgICB0aGlzLmN1cnJlbnRBcmVhID0gc3F1YXJlTWV0ZXJzVG9Vbml0KE51bWJlcih0aGlzLmFyZWFJbk1ldGVyc1NxdWFyZSksIGFyZWFVbml0KS50b0ZpeGVkKDIpO1xuICB9XG5cbiAgb25DaGFuZ2VDb29yZGluYXRlVW5pdChjb29yZGluYXRlc1VuaXQ6IENvb3JkaW5hdGVzVW5pdCl7XG4gICAgdGhpcy5jb29yZGluYXRlc01lYXN1cmVVbml0ID0gY29vcmRpbmF0ZXNVbml0O1xuICAgIGxldCBjb29yZGluYXRlcyA9IEREdG9ETVModGhpcy5sb25nbGF0REQsIGNvb3JkaW5hdGVzVW5pdCk7XG4gICAgdGhpcy5jdXJyZW50Q29vcmRpbmF0ZXMgPSAnKCcgKyBjb29yZGluYXRlc1sxXSArICcsICcgKyBjb29yZGluYXRlc1swXSArICcpJztcbiAgfVxuXG4gIGJ1aWxkQXJyYXlUeXBlKCkge1xuICAgIGZvciAoY29uc3QgbGFiZWxUeXBlIG9mIE9iamVjdC52YWx1ZXMoTGFiZWxUeXBlKSl7XG4gICAgICBpZiAobGFiZWxUeXBlICE9PSBMYWJlbFR5cGUuQ3VzdG9tICYmIGxhYmVsVHlwZSAhPT0gTGFiZWxUeXBlLlByZWRlZmluZWQpe1xuICAgICAgICB0aGlzLmFycmF5QnVpbHRJblR5cGUucHVzaCh7XG4gICAgICAgICAgdmFsdWU6IGxhYmVsVHlwZSxcbiAgICAgICAgICBjaGVja2VkOlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RPcHRpb25zKGxhYmVsVHlwZSkgfHxcbiAgICAgICAgICAgIHRoaXMubGFiZWxGbGFnID09PSBsYWJlbFR5cGUgfHxcbiAgICAgICAgICAgICh0aGlzLnBvbHlnb25DaGVjayA9PT0gMiAmJiBsYWJlbFR5cGUgIT09IExhYmVsVHlwZS5Db29yZGluYXRlcylcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbm9MYWJlbEJ1dHRvbigpe1xuICAgIGlmICh0aGlzLmxhYmVsRmxhZyA9PT0gTGFiZWxUeXBlLlByZWRlZmluZWQgfHwgKHRoaXMubGFiZWxGbGFnID09PSBMYWJlbFR5cGUuQ3VzdG9tICYmIHRoaXMubGFiZWxMZW5ndGggPT09IDApKXtcbiAgICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kcmF3Lm5vTGFiZWwnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJ09LJztcbiAgfVxuXG4gIGdldCBjdXN0b21PclByZWRlZmluZWQoKXtcbiAgICBpZiAodGhpcy5sYWJlbEZsYWcgPT09IExhYmVsVHlwZS5DdXN0b20pe1xuICAgICAgcmV0dXJuIExhYmVsVHlwZS5DdXN0b207XG4gICAgfVxuICAgIHJldHVybiBMYWJlbFR5cGUuUHJlZGVmaW5lZDtcbiAgfVxuXG4gIG9wdGlvbkF2YWlsYWJsZShjdXJyZW50T3B0aW9uOiBMYWJlbFR5cGUpe1xuICAgIHN3aXRjaCh0aGlzLm9sR2VvbWV0cnlUeXBlKXtcbiAgICAgIGNhc2UgR2VvbWV0cnlUeXBlLlBvaW50OlxuICAgICAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gTGFiZWxUeXBlLkNvb3JkaW5hdGVzKXtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIEdlb21ldHJ5VHlwZS5MaW5lU3RyaW5nOlxuICAgICAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gTGFiZWxUeXBlLkxlbmd0aCl7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSBHZW9tZXRyeVR5cGUuUG9seWdvbjpcbiAgICAgICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IExhYmVsVHlwZS5Db29yZGluYXRlcyl7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBhbGxMZW5ndGhVbml0cygpOiBzdHJpbmdbXXtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhNZWFzdXJlTGVuZ3RoVW5pdCk7XG4gIH1cblxuICBnZXRMZW5ndGhVbml0RW51bShsZW5ndGhVbml0OiBNZWFzdXJlTGVuZ3RoVW5pdCl7XG4gICAgcmV0dXJuIE1lYXN1cmVMZW5ndGhVbml0QWJicmV2aWF0aW9uW2xlbmd0aFVuaXRdO1xuICB9XG5cbiAgZ2V0IGFsbEFyZWFVbml0cygpOiBzdHJpbmdbXXtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhNZWFzdXJlQXJlYVVuaXQpO1xuICB9XG5cbiAgZ2V0IGFsbENvb3JkaW5hdGVzVW5pdHMoKTogc3RyaW5nW117XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoQ29vcmRpbmF0ZXNVbml0KTtcbiAgfVxuXG4gIGdldEFyZWFVbml0RW51bShhcmVhVW5pdDogTWVhc3VyZUFyZWFVbml0KXtcbiAgICByZXR1cm4gTWVhc3VyZUFyZWFVbml0QWJicmV2aWF0aW9uW2FyZWFVbml0XTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmFkaXVzKG9sR2VvbWV0cnkpOiBudW1iZXJ7XG4gICAgY29uc3QgbGVuZ3RoID0gZ2V0TGVuZ3RoKG9sR2VvbWV0cnkpO1xuICAgIHJldHVybiBOdW1iZXIobGVuZ3RoIC8gKDIgKiBNYXRoLlBJKSk7XG4gIH1cblxuICBnZXQgbGVuZ3RoTGFiZWxUKCl7XG4gICAgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5Qb2x5Z29uKXtcbiAgICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5tZWFzdXJlLnBlcmltZXRlcicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbEdlb21ldHJ5VHlwZSA9PT0gR2VvbWV0cnlUeXBlLkNpcmNsZSl7XG4gICAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uc2VhcmNoLmNvb3JkaW5hdGVzLnJhZGl1cycpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUuTGVuZ3RoJyk7XG4gIH1cblxuICBnZXRMYWJlbExlbmd0aChldmVudD8pe1xuICAgIHRoaXMubGFiZWxMZW5ndGggPSBldmVudC5sZW5ndGg7XG4gIH1cblxuICBzZWxlY3RPcHRpb25zKG9wdGlvbil7XG4gICAgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5Qb2ludCl7XG4gICAgICByZXR1cm4gb3B0aW9uID09PSBMYWJlbFR5cGUuQ29vcmRpbmF0ZXM7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5MaW5lU3RyaW5nKXtcbiAgICAgIHJldHVybiBvcHRpb24gPT09IExhYmVsVHlwZS5MZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJvcGVyTGVuZ3RoTGFiZWwob3B0aW9uKXtcbiAgICBpZiAob3B0aW9uID09PSBMYWJlbFR5cGUuTGVuZ3RoKXtcbiAgICAgIGlmICh0aGlzLm9sR2VvbWV0cnlUeXBlID09PSBHZW9tZXRyeVR5cGUuUG9seWdvbil7XG4gICAgICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5tZWFzdXJlLnBlcmltZXRlcicpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub2xHZW9tZXRyeVR5cGUgPT09IEdlb21ldHJ5VHlwZS5DaXJjbGUpe1xuICAgICAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uc2VhcmNoLmNvb3JkaW5hdGVzLnJhZGl1cycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRyYXcubGFiZWxUeXBlLkxlbmd0aCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUuJyArIG9wdGlvbik7XG4gIH1cblxuXG59XG4iLCI8ZGl2PlxuICA8aDIgbWF0LWRpYWxvZy10aXRsZT5cbiAgICB7eyAnaWdvLmdlby5kcmF3LnBvcHVwVGl0bGUnIHwgdHJhbnNsYXRlIH19XG4gIDwvaDI+XG48L2Rpdj5cblxuXG48ZGl2IGNsYXNzPVwiZ2VvbWV0cnktdHlwZS10b2dnbGUgbWF0LXR5cG9ncmFwaHlcIj5cbiAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwXG4gICAgKGNoYW5nZSk9XCJvbkxhYmVsVHlwZUNoYW5nZSgkZXZlbnQudmFsdWUpXCIgW3ZhbHVlXT1cImN1c3RvbU9yUHJlZGVmaW5lZFwiPlxuICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBbdmFsdWVdPVwibGFiZWxUeXBlLkN1c3RvbVwiID5cbiAgICAgIHt7ICdpZ28uZ2VvLmRyYXcubGFiZWxUeXBlLmN1c3RvbScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBbdmFsdWVdPVwibGFiZWxUeXBlLlByZWRlZmluZWRcIj5cbiAgICAgIHt7ICdpZ28uZ2VvLmRyYXcubGFiZWxUeXBlLnByZWRlZmluZWQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwibGFiZWxGbGFnICE9PSBsYWJlbFR5cGUuQ3VzdG9tXCI+XG4gIDxkaXY+XG4gICAgPHAgY2xhc3M9XCJtYXQtdHlwb2dyYXBoeVwiPnt7ICdpZ28uZ2VvLmRyYXcuYnVpbHRJbkluc3RydWN0aW9ucycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgPG1hdC1yYWRpby1ncm91cCAqbmdJZj1cIm9sR2VvbWV0cnlUeXBlICE9PSAnUG9seWdvbidcIiBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCI+XG4gICAgICA8bWF0LXJhZGlvLWJ1dHRvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGFycmF5QnVpbHRJblR5cGVcIiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCIgW2Rpc2FibGVkXT1cIm9wdGlvbkF2YWlsYWJsZShvcHRpb24udmFsdWUpXCIgXG4gICAgICAoY2hhbmdlKT1cIm9uTGFiZWxUeXBlQ2hhbmdlKCRldmVudC52YWx1ZSlcIiBbY2hlY2tlZF09XCJvcHRpb24uY2hlY2tlZFwiPlxuICAgICAgICB7e2dldFByb3Blckxlbmd0aExhYmVsKG9wdGlvbi52YWx1ZSl9fVxuICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuICAgIDxuZy1jb250YWluZXIgY2xhc3M9XCJtYXQtdHlwb2dyYXBoeVwiICpuZ0lmPVwib2xHZW9tZXRyeVR5cGUgPT09ICdQb2x5Z29uJ1wiPlxuICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGFycmF5QnVpbHRJblR5cGVcIlxuICAgICAgICBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCJcbiAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb25BdmFpbGFibGUob3B0aW9uLnZhbHVlKVwiXG4gICAgICAgIChjaGFuZ2UpPVwib25MYWJlbFR5cGVDaGFuZ2UoJGV2ZW50LnNvdXJjZS52YWx1ZSwgJGV2ZW50LmNoZWNrZWQpXCJcbiAgICAgICAgW2NoZWNrZWRdPVwib3B0aW9uLmNoZWNrZWRcIj5cbiAgICAgICAge3tnZXRQcm9wZXJMZW5ndGhMYWJlbChvcHRpb24udmFsdWUpfX1cbiAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgKm5nSWY9XCJsYWJlbEZsYWcgPT09IGxhYmVsVHlwZS5Db29yZGluYXRlc1wiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicmVhZE9ubHktSW5wdXRcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgI2lucHV0XG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIihMYXRpdHVkZSwgTG9uZ2l0dWRlKVwiXG4gICAgICAgICAgdmFsdWU9XCJ7e2N1cnJlbnRDb29yZGluYXRlc319XCIgcmVhZG9ubHk+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidW5pdC1maWVsZFwiPlxuICAgICAgICA8bWF0LXNlbGVjdCBbdmFsdWVdPVwiY29vcmRpbmF0ZXNNZWFzdXJlVW5pdFwiIChzZWxlY3Rpb25DaGFuZ2UpPVwib25DaGFuZ2VDb29yZGluYXRlVW5pdCgkZXZlbnQudmFsdWUpXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHVuaXQgb2YgYWxsQ29vcmRpbmF0ZXNVbml0c1wiIFt2YWx1ZV09XCJ1bml0XCI+XG4gICAgICAgICAgICB7e3VuaXR9fVxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PiAgXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJsYWJlbEZsYWcgPT09IGxhYmVsVHlwZS5MZW5ndGggfHwgcG9seWdvbkNoZWNrID09PSAyXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJyZWFkT25seS1JbnB1dFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt7bGVuZ3RoTGFiZWxUfX1cbiAgICAgICAgICB2YWx1ZT1cInt7Y3VycmVudExlbmd0aH19XCIgcmVhZG9ubHk+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidW5pdC1maWVsZFwiPlxuICAgICAgICA8bWF0LXNlbGVjdCBbdmFsdWVdPVwibGVuZ3RoTWVhc3VyZVVuaXRcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQ2hhbmdlTGVuZ3RoVW5pdCgkZXZlbnQudmFsdWUpXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHVuaXQgb2YgYWxsTGVuZ3RoVW5pdHNcIiBbdmFsdWVdPVwidW5pdFwiPlxuICAgICAgICAgICAge3tnZXRMZW5ndGhVbml0RW51bSh1bml0KX19XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+ICBcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImxhYmVsRmxhZyA9PT0gbGFiZWxUeXBlLkFyZWEgfHwgcG9seWdvbkNoZWNrID09PSAyXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJyZWFkT25seS1JbnB1dFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2lnby5nZW8uZHJhdy5sYWJlbFR5cGUuQXJlYScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIHZhbHVlPVwie3tjdXJyZW50QXJlYX19XCIgcmVhZG9ubHk+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidW5pdC1maWVsZFwiPlxuICAgICAgICA8bWF0LXNlbGVjdCBbdmFsdWVdPVwiYXJlYU1lYXN1cmVVbml0XCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkNoYW5nZUFyZWFVbml0KCRldmVudC52YWx1ZSlcIj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdW5pdCBvZiBhbGxBcmVhVW5pdHNcIiBbdmFsdWVdPVwidW5pdFwiPlxuICAgICAgICAgICAge3tnZXRBcmVhVW5pdEVudW0odW5pdCl9fVxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cblxuICA8ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJjYW5jZWxEcmF3aW5nKClcIiA+XG4gICAgICB7eydpZ28uZ2VvLmRyYXcuY2FuY2VsJyB8IHRyYW5zbGF0ZX19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBcbiAgICAgIG1hdC1yYWlzZWQtYnV0dG9uIFxuICAgICAgY29sb3I9XCJwcmltYXJ5XCIgXG4gICAgICAoY2xpY2spPVwiY29uZmlybSgpXCI+IFxuICAgICAge3tub0xhYmVsQnV0dG9uKCl9fSBcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImxhYmVsRmxhZyA9PT0gbGFiZWxUeXBlLkN1c3RvbVwiPlxuICA8ZGl2PlxuICAgIDxwIGNsYXNzPVwibWF0LXR5cG9ncmFwaHlcIj57eyAnaWdvLmdlby5kcmF3LmRpYWxvZ0luc3RydWN0aW9uJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJpbnB1dFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICAoc2VsZWN0KT1cInRydWVcIlxuICAgICAgICAoaW5wdXQpPVwiZ2V0TGFiZWxMZW5ndGgoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7J2lnby5nZW8uZHJhdy5kaWFsb2dUaXRsZScgfCB0cmFuc2xhdGV9fVwiXG4gICAgICAgIHZhbHVlPVwie3sgY3VycmVudExhYmVsIH19XCJcbiAgICAgICAgY2RrRm9jdXNJbml0aWFsLz5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cbiAgXG4gIDxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImNhbmNlbERyYXdpbmcoKVwiID5cbiAgICAgIHt7J2lnby5nZW8uZHJhdy5jYW5jZWwnIHwgdHJhbnNsYXRlfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIFxuICAgICAgbWF0LXJhaXNlZC1idXR0b24gXG4gICAgICBjb2xvcj1cInByaW1hcnlcIiBcbiAgICAgIChjbGljayk9XCJjb25maXJtKGlucHV0LnZhbHVlKVwiPlxuICAgICAge3tub0xhYmVsQnV0dG9uKCl9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|