@kepler.gl/constants 3.3.0-alpha.0 → 3.3.0-alpha.10

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.
Files changed (46) hide show
  1. package/dist/annotation.d.ts +23 -0
  2. package/dist/cjs/annotation.js +45 -0
  3. package/dist/cjs/color-palettes.js +461 -0
  4. package/dist/cjs/colors-by-theme.js +519 -0
  5. package/dist/cjs/dataset.js +176 -0
  6. package/dist/cjs/default-settings.js +1740 -0
  7. package/dist/cjs/gpu-parameters.js +125 -0
  8. package/dist/{index.js → cjs/index.js} +13 -1
  9. package/dist/cjs/keyevent.js +26 -0
  10. package/dist/cjs/layers.js +609 -0
  11. package/dist/{plot.js → cjs/plot.js} +1 -1
  12. package/dist/cjs/time.js +194 -0
  13. package/dist/cjs/tooltip.js +221 -0
  14. package/dist/cjs/user-feedbacks.js +15 -0
  15. package/dist/cjs/user-guides.js +19 -0
  16. package/dist/dataset.d.ts +70 -1
  17. package/dist/default-settings.d.ts +106 -2
  18. package/dist/esm/annotation.js +38 -0
  19. package/dist/esm/color-palettes.js +453 -0
  20. package/dist/esm/colors-by-theme.js +513 -0
  21. package/dist/esm/dataset.js +169 -0
  22. package/dist/esm/default-settings.js +1734 -0
  23. package/dist/esm/gpu-parameters.js +119 -0
  24. package/dist/esm/index.js +18 -0
  25. package/dist/esm/keyevent.js +19 -0
  26. package/dist/esm/layers.js +602 -0
  27. package/dist/esm/plot.js +9 -0
  28. package/dist/esm/time.js +190 -0
  29. package/dist/esm/tooltip.js +215 -0
  30. package/dist/esm/user-feedbacks.js +9 -0
  31. package/dist/esm/user-guides.js +13 -0
  32. package/dist/index.d.ts +1 -0
  33. package/dist/layers.d.ts +7 -0
  34. package/package.json +25 -16
  35. package/dist/color-palettes.js +0 -462
  36. package/dist/colors-by-theme.js +0 -519
  37. package/dist/dataset.js +0 -63
  38. package/dist/default-settings.js +0 -1495
  39. package/dist/gpu-parameters.js +0 -125
  40. package/dist/keyevent.js +0 -26
  41. package/dist/layers.js +0 -549
  42. package/dist/time.js +0 -194
  43. package/dist/tooltip.js +0 -221
  44. package/dist/user-feedbacks.js +0 -15
  45. package/dist/user-guides.js +0 -19
  46. package/umd/keplergl.min.js +0 -58
@@ -0,0 +1,1740 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.LAYER_BLENDINGS = exports.KEPLER_UNFOLDED_BUCKET = exports.KEPLER_GL_WEBSITE = exports.KEPLER_GL_VERSION = exports.KEPLER_GL_NAME = exports.INIT_FILTER_ITEMS_IN_DROPDOWN = exports.ICON_FIELDS = exports.HIGHLIGH_COLOR_3D = exports.GLOBE_SUPPORTED_LAYERS = exports.GLOBE_MIN_ZOOM = exports.GLOBE_MAX_ZOOM = exports.GLOBE_MAX_LATITUDE = exports.GEOJSON_FIELDS = exports.GEOCODER_LAYER_ID = exports.GEOCODER_ICON_SIZE = exports.GEOCODER_ICON_COLOR = exports.GEOCODER_GEO_OFFSET = exports.GEOCODER_DATASET_NAME = exports.GEOARROW_METADATA_KEY = exports.GEOARROW_EXTENSIONS = exports.FourByThreeRatioOption = exports.FPS = exports.FILTER_VIEW_TYPES = exports.FILTER_TYPES = exports.FIELD_TYPE_DISPLAY = exports.FIELD_OPTS = exports.FIELD_COLORS = exports.EXPORT_VIDEO_ID = exports.EXPORT_MAP_ID = exports.EXPORT_MAP_FORMAT_OPTIONS = exports.EXPORT_MAP_FORMATS = exports.EXPORT_IMG_RESOLUTION_OPTIONS = exports.EXPORT_IMG_RATIO_OPTIONS = exports.EXPORT_IMG_RATIOS = exports.EXPORT_IMAGE_ID = exports.EXPORT_HTML_MAP_MODE_OPTIONS = exports.EXPORT_HTML_MAP_MODES = exports.EXPORT_DATA_TYPE_OPTIONS = exports.EXPORT_DATA_TYPE = exports.EXPORT_DATA_ID = exports.EMPTY_MAPBOX_STYLE = exports.EFFECT_DESCRIPTIONS = exports.EDITOR_MODES = exports.EDITOR_LAYER_PICKING_RADIUS = exports.EDITOR_LAYER_ID = exports.EDITOR_DRAW_MODES = exports.DISTANCE_FOG_TYPE = exports.DIMENSIONS = exports.DELETE_DATA_ID = exports.DEFAULT_UUID_COUNT = exports.DEFAULT_TOOLTIP_FIELDS = exports.DEFAULT_TIME_FORMAT = exports.DEFAULT_TIMEZONE = exports.DEFAULT_SHADOW_INTENSITY = exports.DEFAULT_SHADOW_COLOR = exports.DEFAULT_POST_PROCESSING_EFFECT_TYPE = exports.DEFAULT_PICKING_RADIUS = exports.DEFAULT_NO_BASEMAP_STYLE = exports.DEFAULT_NOTIFICATION_TYPES = exports.DEFAULT_NOTIFICATION_TOPICS = exports.DEFAULT_NOTIFICATION_MESSAGE = exports.DEFAULT_MAP_STYLES = exports.DEFAULT_MAPLIBRE_STYLES = exports.DEFAULT_MAPBOX_STYLES = exports.DEFAULT_MAPBOX_SATELITE_STYLES = exports.DEFAULT_MAPBOX_API_URL = exports.DEFAULT_LIGHT_INTENSITY = exports.DEFAULT_LIGHT_COLOR = exports.DEFAULT_LIGHT_AND_SHADOW_PROPS = exports.DEFAULT_LAYER_GROUPS = exports.DEFAULT_LAYER_COLOR_PALETTE_STEPS = exports.DEFAULT_LAYER_COLOR_PALETTE = exports.DEFAULT_LAYER_COLOR = exports.DEFAULT_GLOBE_CONFIG = exports.DEFAULT_FILTER_VIEW_TYPE = exports.DEFAULT_FEATURE_FLAGS = exports.DEFAULT_BLDG_COLOR = exports.DEFAULT_BASE_MAP_STYLE = exports.DEFAULT_BACKGROUND_COLOR = exports.DEFAULT_AGGREGATION = exports.DATA_TABLE_ID = exports.DATASET_FORMATS = exports.CustomRatioOption = exports.CUSTOM_SCENEGRAPH_MODEL_ID = exports.CHANNEL_SCALE_SUPPORTED_FIELDS = exports.CHANNEL_SCALES = exports.BASE_SPEED = exports.BASE_MAP_COLOR_MODES = exports.BASE_MAP_BACKGROUND_LAYER_IDS = exports.BASEMAP_ICON_PREFIX = exports.BACKGROUND_LAYER_GROUP_SLUG = exports.BACKGROUND_LAYER_GROUP = exports.ANIMATION_WINDOW = exports.ALTITUDE_FIELDS = exports.ALL_FIELD_TYPES = exports.AGGREGATION_TYPE_OPTIONS = exports.AGGREGATION_TYPES = exports.ADD_MAP_STYLE_ID = exports.ADD_DATA_ID = exports.ACTION_PREFIX = void 0;
8
+ exports.dataTestIds = exports.TwoXResolutionOption = exports.TRIP_POINT_FIELDS = exports.TRIP_LAYER_SCENEGRAPH_MODELS = exports.TRIP_ARC_FIELDS = exports.TRANSITION_DURATION = exports.THROTTLE_NOTIFICATION_TIME = exports.THREE_D_BUILDING_LAYER_GROUP_SLUG = exports.THEME = exports.TEXT_OUTLINE_MULTIPLIER = exports.TABLE_OPTION_LIST = exports.TABLE_OPTION = exports.SixteenByNineRatioOption = exports.ScreenRatioOption = exports.SYNC_TIMELINE_MODES = exports.SURFACE_FOG_TYPE = exports.SPEED_CONTROL_STEP = exports.SPEED_CONTROL_RANGE = exports.SORT_ORDER = exports.SIDEBAR_PANELS = exports.SHARE_MAP_ID = exports.SCALE_TYPE_NAMES = exports.SCALE_TYPES = exports.SCALE_FUNC = exports.SAVE_MAP_ID = exports.Resolution2560x1440Option = exports.Resolution1920x1440Option = exports.Resolution1920x1080Option = exports.Resolution1600x900Option = exports.Resolution1600x1200Option = exports.Resolution1280x960Option = exports.Resolution1280x720Option = exports.Resolution1024x768Option = exports.RESOLUTIONS = exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = exports.POSTPROCESSING_EFFECTS = exports.PLOT_TYPES = exports.PANEL_VIEW_TOGGLES = exports.PANELS = exports.OneXResolutionOption = exports.OVERWRITE_MAP_ID = exports.OVERLAY_BLENDINGS = exports.NO_VALUE_COLOR = exports.NO_MAP_ID = exports.NO_BASEMAP_ICON = exports.MapViewMode = exports.MapSplitMode = exports.MISSING_VALUE_COLOR = exports.MAX_GPU_FILTERS = exports.MAX_DEFAULT_TOOLTIPS = exports.MAP_THUMBNAIL_DIMENSION = exports.MAP_LIB_OPTIONS = exports.MAP_INFO_CHARACTER = exports.MAP_CONTROLS = exports.MAPBOX_MAX_PITCH = exports.LOADING_METHODS = exports.LOADERS_CDN_VERSION = exports.LOADERS_CDN_URL = exports.LIGHT_AND_SHADOW_EFFECT_TIME_MODES = exports.LIGHT_AND_SHADOW_EFFECT = void 0;
9
+ exports.getHTMLMapModeTileUrl = getHTMLMapModeTileUrl;
10
+ exports.ordinalFieldScaleFunctions = exports.ordinalFieldAggrScaleFunctions = exports.notSupportedScaleOpts = exports.notSupportAggrOpts = exports.linearFieldScaleFunctions = exports.linearFieldAggrScaleFunctions = exports.getLoaderOptions = void 0;
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _keymirror = _interopRequireDefault(require("keymirror"));
15
+ var _d3Scale = require("d3-scale");
16
+ var _tooltip = require("./tooltip");
17
+ var _FIELD_TYPE_DISPLAY, _FIELD_OPTS; // SPDX-License-Identifier: MIT
18
+ // Copyright contributors to the kepler.gl project
19
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
21
+ var ACTION_PREFIX = exports.ACTION_PREFIX = '@@kepler.gl/';
22
+ var KEPLER_UNFOLDED_BUCKET = exports.KEPLER_UNFOLDED_BUCKET = 'https://studio-public-data.foursquare.com/statics/keplergl';
23
+ var BASEMAP_ICON_PREFIX = exports.BASEMAP_ICON_PREFIX = "geodude";
24
+ var DEFAULT_MAPBOX_API_URL = exports.DEFAULT_MAPBOX_API_URL = 'https://api.mapbox.com';
25
+ var TRANSITION_DURATION = exports.TRANSITION_DURATION = 0;
26
+
27
+ // Modal Ids
28
+ /**
29
+ * Modal id: data table
30
+ * @constant
31
+ * @type {string}
32
+ * @public
33
+ */
34
+ var DATA_TABLE_ID = exports.DATA_TABLE_ID = 'dataTable';
35
+ /**
36
+ * Modal id: delete dataset confirm dialog
37
+ * @constant
38
+ * @type {string}
39
+ * @public
40
+ */
41
+ var DELETE_DATA_ID = exports.DELETE_DATA_ID = 'deleteData';
42
+ /**
43
+ * Modal id: add data modal
44
+ * @constant
45
+ * @type {string}
46
+ * @public
47
+ */
48
+ var ADD_DATA_ID = exports.ADD_DATA_ID = 'addData';
49
+ /**
50
+ * Modal id: export image modal
51
+ * @constant
52
+ * @type {string}
53
+ * @public
54
+ */
55
+ var EXPORT_IMAGE_ID = exports.EXPORT_IMAGE_ID = 'exportImage';
56
+ /**
57
+ * Modal id: export data modal
58
+ * @constant
59
+ * @type {string}
60
+ * @public
61
+ */
62
+ var EXPORT_DATA_ID = exports.EXPORT_DATA_ID = 'exportData';
63
+ /**
64
+ * Modal id: add custom map style modal
65
+ * @constant
66
+ * @type {string}
67
+ * @public
68
+ */
69
+ var ADD_MAP_STYLE_ID = exports.ADD_MAP_STYLE_ID = 'addMapStyle';
70
+ /**
71
+ * Modal id: export map modal
72
+ * @constant
73
+ * @type {string}
74
+ * @public
75
+ */
76
+ var EXPORT_MAP_ID = exports.EXPORT_MAP_ID = 'exportMap';
77
+ /**
78
+ * Modal id: export video modal
79
+ * @constant
80
+ * @type {string}
81
+ * @public
82
+ */
83
+ var EXPORT_VIDEO_ID = exports.EXPORT_VIDEO_ID = 'exportVideo';
84
+ /**
85
+ * Modal id: save map modal
86
+ * @constant
87
+ * @type {string}
88
+ * @public
89
+ */
90
+ var SAVE_MAP_ID = exports.SAVE_MAP_ID = 'saveMap';
91
+ /**
92
+ * Modal id: confirm to overwrite saved map
93
+ * @constant
94
+ * @type {string}
95
+ * @public
96
+ */
97
+ var OVERWRITE_MAP_ID = exports.OVERWRITE_MAP_ID = 'overwriteMap';
98
+ /**
99
+ * Modal id: share map url modal
100
+ * @constant
101
+ * @type {string}
102
+ * @public
103
+ */
104
+ var SHARE_MAP_ID = exports.SHARE_MAP_ID = 'shareMap';
105
+ var KEPLER_GL_NAME = exports.KEPLER_GL_NAME = 'kepler.gl';
106
+
107
+ // __PACKAGE_VERSION__ is automatically injected by Babel/Esbuild during the build process
108
+ // Since we are injecting this during the build process with babel
109
+ // while developing VERSION is not defined, we capture the exception and return
110
+ // an empty string which will allow us to retrieve the latest umd version
111
+ var KEPLER_GL_VERSION = exports.KEPLER_GL_VERSION = "3.3.0-alpha.10";
112
+ var KEPLER_GL_WEBSITE = exports.KEPLER_GL_WEBSITE = 'http://kepler.gl/';
113
+ var DIMENSIONS = exports.DIMENSIONS = {
114
+ sidePanel: {
115
+ width: 300,
116
+ margin: {
117
+ top: 12,
118
+ left: 12,
119
+ bottom: 12,
120
+ right: 20
121
+ },
122
+ headerHeight: 96
123
+ },
124
+ mapControl: {
125
+ width: 184,
126
+ padding: 12,
127
+ mapLegend: {
128
+ pinned: {
129
+ bottom: 22,
130
+ right: 12
131
+ }
132
+ }
133
+ }
134
+ };
135
+
136
+ /**
137
+ * Theme name that can be passed to `KeplerGl` `prop.theme`.
138
+ * Available themes are `THEME.light` and `THEME.dark`. Default theme is `THEME.dark`
139
+ * @constant
140
+ * @type {object}
141
+ * @public
142
+ * @example
143
+ * ```js
144
+ * const Map = () => <KeplerGl theme={THEME.light} id="map"/>
145
+ * ```
146
+ */
147
+ var THEME = exports.THEME = (0, _keymirror["default"])({
148
+ light: null,
149
+ dark: null,
150
+ base: null
151
+ });
152
+ var SIDEBAR_PANELS = exports.SIDEBAR_PANELS = [{
153
+ id: 'layer',
154
+ label: 'sidebar.panels.layer',
155
+ onClick: null
156
+ }, {
157
+ id: 'filter',
158
+ label: 'sidebar.panels.filter',
159
+ onClick: null
160
+ }, {
161
+ id: 'interaction',
162
+ label: 'sidebar.panels.interaction',
163
+ onClick: null
164
+ }, {
165
+ id: 'map',
166
+ label: 'sidebar.panels.basemap',
167
+ onClick: null
168
+ }];
169
+ var PANEL_VIEW_TOGGLES = exports.PANEL_VIEW_TOGGLES = (0, _keymirror["default"])({
170
+ list: null,
171
+ byDataset: null
172
+ });
173
+
174
+ // backward compatibility
175
+ var PANELS = exports.PANELS = SIDEBAR_PANELS;
176
+
177
+ // MAP STYLES
178
+
179
+ var DEFAULT_BLDG_COLOR = exports.DEFAULT_BLDG_COLOR = '#D1CEC7';
180
+ var DEFAULT_BACKGROUND_COLOR = exports.DEFAULT_BACKGROUND_COLOR = '#000000';
181
+
182
+ // assists in identifying basemap background layers when auto-determining the backgroundColor
183
+ var BASE_MAP_BACKGROUND_LAYER_IDS = exports.BASE_MAP_BACKGROUND_LAYER_IDS = ['background', 'bg', 'land', 'water'];
184
+ var BACKGROUND_LAYER_GROUP_SLUG = exports.BACKGROUND_LAYER_GROUP_SLUG = 'Background';
185
+ var THREE_D_BUILDING_LAYER_GROUP_SLUG = exports.THREE_D_BUILDING_LAYER_GROUP_SLUG = '3d building';
186
+ var BACKGROUND_LAYER_GROUP = exports.BACKGROUND_LAYER_GROUP = {
187
+ slug: BACKGROUND_LAYER_GROUP_SLUG,
188
+ filter: function filter() {
189
+ return false;
190
+ },
191
+ defaultVisibility: false,
192
+ isVisibilityToggleAvailable: false,
193
+ isMoveToTopAvailable: false,
194
+ isColorPickerAvailable: true
195
+ };
196
+ var DEFAULT_LAYER_GROUPS = exports.DEFAULT_LAYER_GROUPS = [{
197
+ slug: 'label',
198
+ filter: function filter(_ref) {
199
+ var id = _ref.id,
200
+ type = _ref.type;
201
+ return id.match(/(?=(label|place-|poi-))/) || (type === null || type === void 0 ? void 0 : type.match(/(?=(symbol))/));
202
+ },
203
+ defaultVisibility: true,
204
+ isVisibilityToggleAvailable: true,
205
+ isMoveToTopAvailable: true,
206
+ isColorPickerAvailable: false
207
+ }, {
208
+ slug: 'road',
209
+ filter: function filter(_ref2) {
210
+ var id = _ref2.id;
211
+ return id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/);
212
+ },
213
+ defaultVisibility: true,
214
+ isVisibilityToggleAvailable: true,
215
+ isMoveToTopAvailable: true,
216
+ isColorPickerAvailable: false
217
+ }, {
218
+ slug: 'border',
219
+ filter: function filter(_ref3) {
220
+ var id = _ref3.id;
221
+ return id.match(/border|boundaries|boundary/);
222
+ },
223
+ defaultVisibility: false,
224
+ isVisibilityToggleAvailable: true,
225
+ isMoveToTopAvailable: true,
226
+ isColorPickerAvailable: false
227
+ }, {
228
+ slug: 'building',
229
+ filter: function filter(_ref4) {
230
+ var id = _ref4.id;
231
+ return id.match(/building/);
232
+ },
233
+ defaultVisibility: true,
234
+ isVisibilityToggleAvailable: true,
235
+ isMoveToTopAvailable: true,
236
+ isColorPickerAvailable: false
237
+ }, {
238
+ slug: 'water',
239
+ filter: function filter(_ref5) {
240
+ var id = _ref5.id;
241
+ return id.match(/(?=(water|stream|ferry))/);
242
+ },
243
+ defaultVisibility: true,
244
+ isVisibilityToggleAvailable: true,
245
+ isMoveToTopAvailable: true,
246
+ isColorPickerAvailable: false
247
+ }, {
248
+ slug: 'land',
249
+ filter: function filter(_ref6) {
250
+ var id = _ref6.id;
251
+ return id.match(/(?=(parks|landcover|industrial|sand|hillshade))/);
252
+ },
253
+ defaultVisibility: true,
254
+ isVisibilityToggleAvailable: true,
255
+ isMoveToTopAvailable: true,
256
+ isColorPickerAvailable: false
257
+ }, {
258
+ slug: THREE_D_BUILDING_LAYER_GROUP_SLUG,
259
+ filter: function filter() {
260
+ return false;
261
+ },
262
+ defaultVisibility: false,
263
+ isVisibilityToggleAvailable: true,
264
+ isMoveToTopAvailable: true,
265
+ isColorPickerAvailable: true
266
+ }];
267
+ var BASE_MAP_COLOR_MODES = exports.BASE_MAP_COLOR_MODES = (0, _keymirror["default"])({
268
+ NONE: null,
269
+ DARK: null,
270
+ LIGHT: null
271
+ });
272
+ var NO_MAP_ID = exports.NO_MAP_ID = 'no_map';
273
+
274
+ // Fallback style to use when styles are being fetched, or when
275
+ // a style fails to fetch
276
+ var EMPTY_MAPBOX_STYLE = exports.EMPTY_MAPBOX_STYLE = {
277
+ version: 8,
278
+ sources: {},
279
+ layers: []
280
+ };
281
+ var MAP_LIB_OPTIONS = exports.MAP_LIB_OPTIONS = {
282
+ MAPBOX: 'mapbox',
283
+ MAPLIBRE: 'maplibre'
284
+ };
285
+
286
+ /** Mapbox GL JS does not support pitch above 60 degrees */
287
+ var MAPBOX_MAX_PITCH = exports.MAPBOX_MAX_PITCH = 60;
288
+ var NO_BASEMAP_ICON = exports.NO_BASEMAP_ICON = "".concat(BASEMAP_ICON_PREFIX, "/NO_BASEMAP.png");
289
+ var DEFAULT_BASE_MAP_STYLE = exports.DEFAULT_BASE_MAP_STYLE = 'dark-matter';
290
+ var DEFAULT_NO_BASEMAP_STYLE = exports.DEFAULT_NO_BASEMAP_STYLE = {
291
+ id: NO_MAP_ID,
292
+ label: 'No Basemap',
293
+ url: '',
294
+ icon: NO_BASEMAP_ICON,
295
+ layerGroups: [BACKGROUND_LAYER_GROUP],
296
+ colorMode: BASE_MAP_COLOR_MODES.NONE,
297
+ style: EMPTY_MAPBOX_STYLE
298
+ };
299
+ var DEFAULT_MAPBOX_STYLES = exports.DEFAULT_MAPBOX_STYLES = [{
300
+ id: 'dark',
301
+ label: 'Dark',
302
+ url: 'mapbox://styles/uberdata/cjoqbbf6l9k302sl96tyvka09',
303
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_DARK_V2.png"),
304
+ layerGroups: DEFAULT_LAYER_GROUPS,
305
+ colorMode: BASE_MAP_COLOR_MODES.DARK,
306
+ complimentaryStyleId: 'light'
307
+ }, {
308
+ id: 'light',
309
+ label: 'Light',
310
+ url: 'mapbox://styles/uberdata/cjoqb9j339k1f2sl9t5ic5bn4',
311
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_LIGHT_V2.png"),
312
+ layerGroups: DEFAULT_LAYER_GROUPS,
313
+ colorMode: BASE_MAP_COLOR_MODES.LIGHT,
314
+ complimentaryStyleId: 'dark'
315
+ }, {
316
+ id: 'muted',
317
+ label: 'Muted Light',
318
+ url: 'mapbox://styles/uberdata/cjfyl03kp1tul2smf5v2tbdd4',
319
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_MUTED_LIGHT.png"),
320
+ layerGroups: DEFAULT_LAYER_GROUPS,
321
+ colorMode: BASE_MAP_COLOR_MODES.LIGHT,
322
+ complimentaryStyleId: 'muted_night'
323
+ }, {
324
+ id: 'muted_night',
325
+ label: 'Muted Night',
326
+ url: 'mapbox://styles/uberdata/cjfxhlikmaj1b2soyzevnywgs',
327
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_MUTED_NIGHT.png"),
328
+ layerGroups: DEFAULT_LAYER_GROUPS,
329
+ colorMode: BASE_MAP_COLOR_MODES.DARK,
330
+ complimentaryStyleId: 'muted'
331
+ }];
332
+ var DEFAULT_MAPBOX_SATELITE_STYLES = exports.DEFAULT_MAPBOX_SATELITE_STYLES = [{
333
+ id: 'satellite',
334
+ label: 'Satellite with streets',
335
+ url: "mapbox://styles/mapbox/satellite-streets-v11",
336
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_SATELLITE.png"),
337
+ layerGroups: DEFAULT_LAYER_GROUPS,
338
+ colorMode: BASE_MAP_COLOR_MODES.NONE
339
+ }];
340
+ var DEFAULT_MAPLIBRE_STYLES = exports.DEFAULT_MAPLIBRE_STYLES = [{
341
+ id: 'dark-matter',
342
+ label: 'DarkMatter',
343
+ url: 'https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json',
344
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/DARKMATTER.png"),
345
+ layerGroups: DEFAULT_LAYER_GROUPS,
346
+ colorMode: BASE_MAP_COLOR_MODES.DARK,
347
+ complimentaryStyleId: 'positron'
348
+ }, {
349
+ id: 'positron',
350
+ label: 'Positron',
351
+ url: 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json',
352
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/POSITRON.png"),
353
+ layerGroups: DEFAULT_LAYER_GROUPS,
354
+ colorMode: BASE_MAP_COLOR_MODES.LIGHT,
355
+ complimentaryStyleId: 'dark-matter'
356
+ }, {
357
+ id: 'voyager',
358
+ label: 'Voyager',
359
+ url: 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',
360
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/VOYAGER.png"),
361
+ layerGroups: DEFAULT_LAYER_GROUPS,
362
+ colorMode: BASE_MAP_COLOR_MODES.LIGHT,
363
+ complimentaryStyleId: 'dark-matter'
364
+ }];
365
+ var DEFAULT_MAP_STYLES = exports.DEFAULT_MAP_STYLES = [DEFAULT_NO_BASEMAP_STYLE].concat(DEFAULT_MAPLIBRE_STYLES, DEFAULT_MAPBOX_SATELITE_STYLES, DEFAULT_MAPBOX_STYLES);
366
+ var GEOJSON_FIELDS = exports.GEOJSON_FIELDS = {
367
+ geojson: ['_geojson', 'all_points', 'geojson']
368
+ };
369
+ var ICON_FIELDS = exports.ICON_FIELDS = {
370
+ icon: ['icon']
371
+ };
372
+ var TRIP_POINT_FIELDS = exports.TRIP_POINT_FIELDS = [['lat', 'lng'], ['lat', 'lon'], ['lat', 'long'], ['latitude', 'longitude']];
373
+ var ALTITUDE_FIELDS = exports.ALTITUDE_FIELDS = ['alt', 'altitude'];
374
+ var TRIP_ARC_FIELDS = exports.TRIP_ARC_FIELDS = {
375
+ lat0: 'begintrip',
376
+ lng0: 'begintrip',
377
+ lat1: 'dropoff',
378
+ lng1: 'dropoff'
379
+ };
380
+ var FILTER_TYPES = exports.FILTER_TYPES = (0, _keymirror["default"])({
381
+ range: null,
382
+ select: null,
383
+ input: null,
384
+ timeRange: null,
385
+ multiSelect: null,
386
+ polygon: null
387
+ });
388
+ var FILTER_VIEW_TYPES = exports.FILTER_VIEW_TYPES = (0, _keymirror["default"])({
389
+ side: null,
390
+ enlarged: null,
391
+ minified: null
392
+ });
393
+ var DEFAULT_FILTER_VIEW_TYPE = exports.DEFAULT_FILTER_VIEW_TYPE = FILTER_VIEW_TYPES.side;
394
+ var SCALE_TYPES = exports.SCALE_TYPES = (0, _keymirror["default"])({
395
+ ordinal: null,
396
+ quantile: null,
397
+ quantize: null,
398
+ linear: null,
399
+ sqrt: null,
400
+ log: null,
401
+ threshold: null,
402
+ custom: null,
403
+ customOrdinal: null,
404
+ // ordinal domain to linear range
405
+ point: null
406
+ });
407
+ var SCALE_TYPE_NAMES = exports.SCALE_TYPE_NAMES = {
408
+ ordinal: 'Ordinal',
409
+ quantile: 'Quantile',
410
+ quantize: 'Quantize',
411
+ linear: 'Linear',
412
+ sqrt: 'Sqrt',
413
+ log: 'Log',
414
+ threshold: 'Threshold',
415
+ custom: 'Custom Breaks',
416
+ customOrdinal: 'Custom Ordinal',
417
+ point: 'Point'
418
+ };
419
+ var SCALE_FUNC = exports.SCALE_FUNC = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, SCALE_TYPES.linear, _d3Scale.scaleLinear), SCALE_TYPES.quantize, _d3Scale.scaleQuantize), SCALE_TYPES.quantile, _d3Scale.scaleQuantile), SCALE_TYPES.ordinal, _d3Scale.scaleOrdinal), SCALE_TYPES.sqrt, _d3Scale.scaleSqrt), SCALE_TYPES.log, _d3Scale.scaleLog), SCALE_TYPES.point, _d3Scale.scalePoint), SCALE_TYPES.threshold, _d3Scale.scaleThreshold), SCALE_TYPES.custom, _d3Scale.scaleThreshold), SCALE_TYPES.customOrdinal, _d3Scale.scaleOrdinal);
420
+ var ALL_FIELD_TYPES = exports.ALL_FIELD_TYPES = (0, _keymirror["default"])({
421
+ "boolean": null,
422
+ date: null,
423
+ geojson: null,
424
+ integer: null,
425
+ real: null,
426
+ string: null,
427
+ timestamp: null,
428
+ point: null,
429
+ array: null,
430
+ object: null,
431
+ geoarrow: null,
432
+ h3: null
433
+ });
434
+
435
+ // Data Table
436
+ var SORT_ORDER = exports.SORT_ORDER = (0, _keymirror["default"])({
437
+ ASCENDING: null,
438
+ DESCENDING: null,
439
+ UNSORT: null
440
+ });
441
+ var TABLE_OPTION = exports.TABLE_OPTION = (0, _keymirror["default"])({
442
+ SORT_ASC: null,
443
+ SORT_DES: null,
444
+ UNSORT: null,
445
+ PIN: null,
446
+ UNPIN: null,
447
+ COPY: null,
448
+ FORMAT_COLUMN: null
449
+ });
450
+ var TABLE_OPTION_LIST = exports.TABLE_OPTION_LIST = [{
451
+ value: TABLE_OPTION.SORT_ASC,
452
+ display: 'Sort Ascending',
453
+ icon: 'ArrowUp',
454
+ condition: function condition(props) {
455
+ return props.sortTableColumn && props.sortMode !== SORT_ORDER.ASCENDING;
456
+ }
457
+ }, {
458
+ value: TABLE_OPTION.SORT_DES,
459
+ display: 'Sort Descending',
460
+ icon: 'ArrowDown',
461
+ condition: function condition(props) {
462
+ return props.sortTableColumn && props.sortMode !== SORT_ORDER.DESCENDING;
463
+ }
464
+ }, {
465
+ value: TABLE_OPTION.UNSORT,
466
+ display: 'Unsort Column',
467
+ icon: 'Cancel',
468
+ condition: function condition(props) {
469
+ return props.isSorted;
470
+ }
471
+ }, {
472
+ value: TABLE_OPTION.PIN,
473
+ display: 'Pin Column',
474
+ icon: 'Pin',
475
+ condition: function condition(props) {
476
+ return !props.isPinned;
477
+ }
478
+ }, {
479
+ value: TABLE_OPTION.UNPIN,
480
+ display: 'Unpin Column',
481
+ icon: 'Cancel',
482
+ condition: function condition(props) {
483
+ return props.isPinned;
484
+ }
485
+ }, {
486
+ value: TABLE_OPTION.COPY,
487
+ display: 'Copy Column',
488
+ icon: 'Clipboard'
489
+ }, {
490
+ value: TABLE_OPTION.FORMAT_COLUMN,
491
+ display: 'Format Column',
492
+ icon: 'Hash',
493
+ condition: function condition(props) {
494
+ return props.setDisplayFormat;
495
+ }
496
+ }];
497
+ var YELLOW = '248, 194, 28';
498
+ var PINK = '242, 152, 163';
499
+ var PURPLE = '160, 106, 206';
500
+ var BLUE = '140, 210, 205';
501
+ var BLUE2 = '106, 160, 206';
502
+ var BLUE3 = '0, 172, 237';
503
+ var GREEN = '106, 160, 56';
504
+ var GREEN2 = '74, 165, 150';
505
+ var RED = '237, 88, 106';
506
+ var ORANGE = '231, 110, 58';
507
+ var FIELD_TYPE_DISPLAY = exports.FIELD_TYPE_DISPLAY = (_FIELD_TYPE_DISPLAY = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_FIELD_TYPE_DISPLAY, ALL_FIELD_TYPES["boolean"], {
508
+ label: 'bool',
509
+ color: PINK
510
+ }), ALL_FIELD_TYPES.date, {
511
+ label: 'date',
512
+ color: PURPLE
513
+ }), ALL_FIELD_TYPES.geojson, {
514
+ label: 'geo',
515
+ color: BLUE2
516
+ }), ALL_FIELD_TYPES.geoarrow, {
517
+ label: 'geo',
518
+ color: BLUE2
519
+ }), ALL_FIELD_TYPES.integer, {
520
+ label: 'int',
521
+ color: YELLOW
522
+ }), ALL_FIELD_TYPES.real, {
523
+ label: 'float',
524
+ color: YELLOW
525
+ }), ALL_FIELD_TYPES.string, {
526
+ label: 'string',
527
+ color: BLUE
528
+ }), ALL_FIELD_TYPES.timestamp, {
529
+ label: 'time',
530
+ color: GREEN
531
+ }), ALL_FIELD_TYPES.point, {
532
+ label: 'point',
533
+ color: BLUE3
534
+ }), ALL_FIELD_TYPES.array, {
535
+ label: 'array',
536
+ color: ORANGE
537
+ }), (0, _defineProperty2["default"])((0, _defineProperty2["default"])(_FIELD_TYPE_DISPLAY, ALL_FIELD_TYPES.object, {
538
+ label: 'object',
539
+ color: GREEN2
540
+ }), ALL_FIELD_TYPES.h3, {
541
+ label: 'h3',
542
+ color: BLUE
543
+ }));
544
+ var FIELD_COLORS = exports.FIELD_COLORS = {
545
+ "default": RED
546
+ };
547
+ var HIGHLIGH_COLOR_3D = exports.HIGHLIGH_COLOR_3D = [255, 255, 255, 60];
548
+ var CHANNEL_SCALES = exports.CHANNEL_SCALES = (0, _keymirror["default"])({
549
+ color: null,
550
+ radius: null,
551
+ size: null,
552
+ colorAggr: null,
553
+ sizeAggr: null,
554
+ angle: null
555
+ });
556
+ var AGGREGATION_TYPES = exports.AGGREGATION_TYPES = {
557
+ // default
558
+ count: 'count',
559
+ // linear
560
+ average: 'average',
561
+ maximum: 'maximum',
562
+ minimum: 'minimum',
563
+ median: 'median',
564
+ stdev: 'stdev',
565
+ sum: 'sum',
566
+ variance: 'variance',
567
+ // ordinal
568
+ mode: 'mode',
569
+ countUnique: 'countUnique'
570
+ };
571
+ var AGGREGATION_TYPE_OPTIONS = exports.AGGREGATION_TYPE_OPTIONS = Object.entries(AGGREGATION_TYPES).map(function (_ref7) {
572
+ var _ref8 = (0, _slicedToArray2["default"])(_ref7, 2),
573
+ key = _ref8[0],
574
+ value = _ref8[1];
575
+ return {
576
+ id: key,
577
+ label: key === 'stdev' ? 'Std Deviation' : key === 'countUnique' ? 'Count Unique' : typeof value === 'string' ? value.charAt(0).toUpperCase() + value.slice(1) : value
578
+ };
579
+ });
580
+ var linearFieldScaleFunctions = exports.linearFieldScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom]), CHANNEL_SCALES.radius, [SCALE_TYPES.sqrt]), CHANNEL_SCALES.size, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), CHANNEL_SCALES.angle, [SCALE_TYPES.linear]);
581
+ var DEFAULT_AGGREGATION_COLOR_SCALES = [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom];
582
+ var linearFieldAggrScaleFunctions = exports.linearFieldAggrScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, [AGGREGATION_TYPES.average, AGGREGATION_TYPES.maximum, AGGREGATION_TYPES.minimum, AGGREGATION_TYPES.median, AGGREGATION_TYPES.stdev, AGGREGATION_TYPES.sum, AGGREGATION_TYPES.variance, AGGREGATION_TYPES.count].reduce(function (prev, cur) {
583
+ prev[cur] = DEFAULT_AGGREGATION_COLOR_SCALES;
584
+ return prev;
585
+ }, {})), CHANNEL_SCALES.sizeAggr, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, AGGREGATION_TYPES.average, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.maximum, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.minimum, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.median, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.stdev, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.sum, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.variance, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]));
586
+ var ordinalFieldScaleFunctions = exports.ordinalFieldScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, [SCALE_TYPES.ordinal, SCALE_TYPES.customOrdinal]), CHANNEL_SCALES.radius, [SCALE_TYPES.point]), CHANNEL_SCALES.size, [SCALE_TYPES.point]);
587
+ var ordinalFieldAggrScaleFunctions = exports.ordinalFieldAggrScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, AGGREGATION_TYPES.mode, [SCALE_TYPES.ordinal]), AGGREGATION_TYPES.countUnique, [SCALE_TYPES.quantize, SCALE_TYPES.quantile])), CHANNEL_SCALES.sizeAggr, {});
588
+ var notSupportedScaleOpts = exports.notSupportedScaleOpts = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, []), CHANNEL_SCALES.radius, []), CHANNEL_SCALES.size, []);
589
+ var notSupportAggrOpts = exports.notSupportAggrOpts = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, {}), CHANNEL_SCALES.sizeAggr, {});
590
+
591
+ /**
592
+ * Default aggregation are based on ocunt
593
+ */
594
+ var DEFAULT_AGGREGATION = exports.DEFAULT_AGGREGATION = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, (0, _defineProperty2["default"])({}, AGGREGATION_TYPES.count, DEFAULT_AGGREGATION_COLOR_SCALES)), CHANNEL_SCALES.sizeAggr, (0, _defineProperty2["default"])({}, AGGREGATION_TYPES.count, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]));
595
+
596
+ /**
597
+ * Define what type of scale operation is allowed on each type of fields
598
+ */
599
+ var FIELD_OPTS = exports.FIELD_OPTS = (_FIELD_OPTS = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_FIELD_OPTS, ALL_FIELD_TYPES.string, {
600
+ type: 'categorical',
601
+ scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
602
+ format: {
603
+ legend: function legend(d) {
604
+ return d;
605
+ },
606
+ tooltip: []
607
+ }
608
+ }), ALL_FIELD_TYPES.real, {
609
+ type: 'numerical',
610
+ scale: _objectSpread(_objectSpread({}, linearFieldScaleFunctions), linearFieldAggrScaleFunctions),
611
+ format: {
612
+ legend: function legend(d) {
613
+ return d;
614
+ },
615
+ tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DECIMAL, _tooltip.TOOLTIP_FORMAT_TYPES.PERCENTAGE]
616
+ }
617
+ }), ALL_FIELD_TYPES.timestamp, {
618
+ type: 'time',
619
+ scale: _objectSpread(_objectSpread({}, linearFieldScaleFunctions), notSupportAggrOpts),
620
+ format: {
621
+ legend: function legend(d) {
622
+ return d;
623
+ },
624
+ tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE_TIME]
625
+ }
626
+ }), ALL_FIELD_TYPES.integer, {
627
+ type: 'numerical',
628
+ scale: _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, linearFieldScaleFunctions), {}, (0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, [].concat((0, _toConsumableArray2["default"])(linearFieldScaleFunctions[CHANNEL_SCALES.color]), [SCALE_TYPES.customOrdinal])))), linearFieldAggrScaleFunctions),
629
+ format: {
630
+ legend: function legend(d) {
631
+ return d;
632
+ },
633
+ tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DECIMAL, _tooltip.TOOLTIP_FORMAT_TYPES.PERCENTAGE]
634
+ }
635
+ }), ALL_FIELD_TYPES["boolean"], {
636
+ type: 'boolean',
637
+ scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
638
+ format: {
639
+ legend: function legend(d) {
640
+ return d;
641
+ },
642
+ tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.BOOLEAN]
643
+ }
644
+ }), ALL_FIELD_TYPES.date, {
645
+ type: 'time',
646
+ scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
647
+ format: {
648
+ legend: function legend(d) {
649
+ return d;
650
+ },
651
+ tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE]
652
+ }
653
+ }), ALL_FIELD_TYPES.geojson, {
654
+ type: 'geometry',
655
+ scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
656
+ format: {
657
+ legend: function legend() {
658
+ return '...';
659
+ },
660
+ tooltip: []
661
+ }
662
+ }), ALL_FIELD_TYPES.geoarrow, {
663
+ type: 'geometry',
664
+ scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
665
+ format: {
666
+ legend: function legend() {
667
+ return '...';
668
+ },
669
+ tooltip: []
670
+ }
671
+ }), ALL_FIELD_TYPES.object, {
672
+ type: 'numerical',
673
+ scale: {},
674
+ format: {
675
+ legend: function legend() {
676
+ return '...';
677
+ },
678
+ tooltip: []
679
+ }
680
+ }), ALL_FIELD_TYPES.array, {
681
+ type: 'numerical',
682
+ scale: {},
683
+ format: {
684
+ legend: function legend() {
685
+ return '...';
686
+ },
687
+ tooltip: []
688
+ }
689
+ }), (0, _defineProperty2["default"])(_FIELD_OPTS, ALL_FIELD_TYPES.h3, {
690
+ type: 'h3',
691
+ scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
692
+ format: {
693
+ legend: function legend() {
694
+ return '...';
695
+ },
696
+ tooltip: []
697
+ }
698
+ }));
699
+ var CHANNEL_SCALE_SUPPORTED_FIELDS = exports.CHANNEL_SCALE_SUPPORTED_FIELDS = Object.keys(CHANNEL_SCALES).reduce(function (accu, key) {
700
+ return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, key, Object.keys(FIELD_OPTS).filter(function (ft) {
701
+ return FIELD_OPTS[ft].scale[key] && Object.keys(FIELD_OPTS[ft].scale[key]).length;
702
+ })));
703
+ }, {});
704
+ var DEFAULT_LAYER_COLOR = exports.DEFAULT_LAYER_COLOR = {
705
+ tripArc: '#9226C6',
706
+ begintrip_lat: '#1E96BE',
707
+ dropoff_lat: '#FF991F',
708
+ request_lat: '#52A353'
709
+ };
710
+ var DEFAULT_LAYER_COLOR_PALETTE = exports.DEFAULT_LAYER_COLOR_PALETTE = 'Global Warming';
711
+ var DEFAULT_LAYER_COLOR_PALETTE_STEPS = exports.DEFAULT_LAYER_COLOR_PALETTE_STEPS = 6;
712
+
713
+ // let user pass in default tooltip fields
714
+ var DEFAULT_TOOLTIP_FIELDS = exports.DEFAULT_TOOLTIP_FIELDS = [];
715
+ var NO_VALUE_COLOR = exports.NO_VALUE_COLOR = [0, 0, 0, 0];
716
+ /** Visible gray used when a color field has no value and missing features should stay on the map. */
717
+ var MISSING_VALUE_COLOR = exports.MISSING_VALUE_COLOR = [128, 128, 128, 255];
718
+ var DEFAULT_PICKING_RADIUS = exports.DEFAULT_PICKING_RADIUS = 3;
719
+ var OVERLAY_BLENDINGS = exports.OVERLAY_BLENDINGS = {
720
+ normal: {
721
+ label: 'overlayBlending.normal',
722
+ value: 'normal'
723
+ },
724
+ screen: {
725
+ label: 'overlayBlending.screen',
726
+ value: 'screen'
727
+ },
728
+ darken: {
729
+ label: 'overlayBlending.darken',
730
+ value: 'darken'
731
+ }
732
+ };
733
+ var LAYER_BLENDINGS = exports.LAYER_BLENDINGS = {
734
+ additive: {
735
+ label: 'layerBlending.additive',
736
+ blendFunc: ['SRC_ALPHA', 'DST_ALPHA'],
737
+ blendEquation: 'FUNC_ADD'
738
+ },
739
+ normal: {
740
+ // reference to
741
+ // https://limnu.com/webgl-blending-youre-probably-wrong/
742
+ label: 'layerBlending.normal',
743
+ blendFunc: ['SRC_ALPHA', 'ONE_MINUS_SRC_ALPHA', 'ONE', 'ONE_MINUS_SRC_ALPHA'],
744
+ blendEquation: ['FUNC_ADD', 'FUNC_ADD']
745
+ },
746
+ subtractive: {
747
+ label: 'layerBlending.subtractive',
748
+ blendFunc: ['ONE', 'ONE_MINUS_DST_COLOR', 'SRC_ALPHA', 'DST_ALPHA'],
749
+ blendEquation: ['FUNC_SUBTRACT', 'FUNC_ADD']
750
+ }
751
+ };
752
+ var MAX_DEFAULT_TOOLTIPS = exports.MAX_DEFAULT_TOOLTIPS = 5;
753
+ var RESOLUTIONS = exports.RESOLUTIONS = (0, _keymirror["default"])({
754
+ ONE_X: null,
755
+ TWO_X: null
756
+ });
757
+ var EXPORT_IMG_RATIOS = exports.EXPORT_IMG_RATIOS = (0, _keymirror["default"])({
758
+ SCREEN: null,
759
+ FOUR_BY_THREE: null,
760
+ SIXTEEN_BY_NINE: null,
761
+ CUSTOM: null
762
+ });
763
+ var ScreenRatioOption = exports.ScreenRatioOption = {
764
+ id: EXPORT_IMG_RATIOS.SCREEN,
765
+ label: 'modal.exportImage.ratioOriginalScreen',
766
+ getSize: function getSize(screenW, screenH) {
767
+ return {
768
+ width: screenW,
769
+ height: screenH
770
+ };
771
+ }
772
+ };
773
+ var CustomRatioOption = exports.CustomRatioOption = {
774
+ id: EXPORT_IMG_RATIOS.CUSTOM,
775
+ hidden: true,
776
+ label: 'modal.exportImage.ratioCustom',
777
+ getSize: function getSize(mapW, mapH) {
778
+ return {
779
+ width: mapW,
780
+ height: mapH
781
+ };
782
+ }
783
+ };
784
+ var FourByThreeRatioOption = exports.FourByThreeRatioOption = {
785
+ id: EXPORT_IMG_RATIOS.FOUR_BY_THREE,
786
+ label: 'modal.exportImage.ratio4_3',
787
+ getSize: function getSize(screenW) {
788
+ return {
789
+ width: screenW,
790
+ height: Math.round(screenW * 0.75)
791
+ };
792
+ }
793
+ };
794
+ var SixteenByNineRatioOption = exports.SixteenByNineRatioOption = {
795
+ id: EXPORT_IMG_RATIOS.SIXTEEN_BY_NINE,
796
+ label: 'modal.exportImage.ratio16_9',
797
+ getSize: function getSize(screenW) {
798
+ return {
799
+ width: screenW,
800
+ height: Math.round(screenW * 0.5625)
801
+ };
802
+ }
803
+ };
804
+ var EXPORT_IMG_RATIO_OPTIONS = exports.EXPORT_IMG_RATIO_OPTIONS = [ScreenRatioOption, FourByThreeRatioOption, SixteenByNineRatioOption, CustomRatioOption];
805
+ var OneXResolutionOption = exports.OneXResolutionOption = {
806
+ id: RESOLUTIONS.ONE_X,
807
+ label: '1x',
808
+ available: true,
809
+ scale: 1,
810
+ getSize: function getSize(screenW, screenH) {
811
+ return {
812
+ width: screenW,
813
+ height: screenH
814
+ };
815
+ }
816
+ };
817
+ var TwoXResolutionOption = exports.TwoXResolutionOption = {
818
+ id: RESOLUTIONS.TWO_X,
819
+ label: '2x',
820
+ available: true,
821
+ scale: 2,
822
+ getSize: function getSize(screenW, screenH) {
823
+ return {
824
+ width: screenW * 2,
825
+ height: screenH * 2
826
+ };
827
+ }
828
+ };
829
+
830
+ // Fixed dimension options
831
+ var Resolution1920x1080Option = exports.Resolution1920x1080Option = {
832
+ id: '1920x1080',
833
+ label: '1920 × 1080 (16:9)',
834
+ available: true,
835
+ getSize: function getSize() {
836
+ return {
837
+ width: 1920,
838
+ height: 1080
839
+ };
840
+ }
841
+ };
842
+ var Resolution1280x720Option = exports.Resolution1280x720Option = {
843
+ id: '1280x720',
844
+ label: '1280 × 720 (16:9)',
845
+ available: true,
846
+ getSize: function getSize() {
847
+ return {
848
+ width: 1280,
849
+ height: 720
850
+ };
851
+ }
852
+ };
853
+ var Resolution2560x1440Option = exports.Resolution2560x1440Option = {
854
+ id: '2560x1440',
855
+ label: '2560 × 1440 (16:9)',
856
+ available: true,
857
+ getSize: function getSize() {
858
+ return {
859
+ width: 2560,
860
+ height: 1440
861
+ };
862
+ }
863
+ };
864
+ var Resolution1600x900Option = exports.Resolution1600x900Option = {
865
+ id: '1600x900',
866
+ label: '1600 × 900 (16:9)',
867
+ available: true,
868
+ getSize: function getSize() {
869
+ return {
870
+ width: 1600,
871
+ height: 900
872
+ };
873
+ }
874
+ };
875
+ var Resolution1024x768Option = exports.Resolution1024x768Option = {
876
+ id: '1024x768',
877
+ label: '1024 × 768 (4:3)',
878
+ available: true,
879
+ getSize: function getSize() {
880
+ return {
881
+ width: 1024,
882
+ height: 768
883
+ };
884
+ }
885
+ };
886
+ var Resolution1280x960Option = exports.Resolution1280x960Option = {
887
+ id: '1280x960',
888
+ label: '1280 × 960 (4:3)',
889
+ available: true,
890
+ getSize: function getSize() {
891
+ return {
892
+ width: 1280,
893
+ height: 960
894
+ };
895
+ }
896
+ };
897
+ var Resolution1600x1200Option = exports.Resolution1600x1200Option = {
898
+ id: '1600x1200',
899
+ label: '1600 × 1200 (4:3)',
900
+ available: true,
901
+ getSize: function getSize() {
902
+ return {
903
+ width: 1600,
904
+ height: 1200
905
+ };
906
+ }
907
+ };
908
+ var Resolution1920x1440Option = exports.Resolution1920x1440Option = {
909
+ id: '1920x1440',
910
+ label: '1920 × 1440 (4:3)',
911
+ available: true,
912
+ getSize: function getSize() {
913
+ return {
914
+ width: 1920,
915
+ height: 1440
916
+ };
917
+ }
918
+ };
919
+ var EXPORT_IMG_RESOLUTION_OPTIONS = exports.EXPORT_IMG_RESOLUTION_OPTIONS = [OneXResolutionOption, TwoXResolutionOption, Resolution1280x720Option, Resolution1920x1080Option, Resolution2560x1440Option, Resolution1600x900Option, Resolution1024x768Option, Resolution1280x960Option, Resolution1600x1200Option, Resolution1920x1440Option];
920
+ var EXPORT_DATA_TYPE = exports.EXPORT_DATA_TYPE = (0, _keymirror["default"])({
921
+ CSV: null
922
+ // SHAPEFILE: null,
923
+ // JSON: null,
924
+ // GEOJSON: null,
925
+ // TOPOJSON: null
926
+ });
927
+ var EXPORT_DATA_TYPE_OPTIONS = exports.EXPORT_DATA_TYPE_OPTIONS = [{
928
+ id: EXPORT_DATA_TYPE.CSV,
929
+ label: EXPORT_DATA_TYPE.CSV.toLowerCase(),
930
+ available: true
931
+ }
932
+ // {
933
+ // id: EXPORT_DATA_TYPE.SHAPEFILE,
934
+ // label: 'shapefile',
935
+ // available: false
936
+ // },
937
+ // {
938
+ // id: EXPORT_DATA_TYPE.JSON,
939
+ // label: 'json',
940
+ // available: false
941
+ // },
942
+ // {
943
+ // id: EXPORT_DATA_TYPE.GEOJSON,
944
+ // label: 'geojson',
945
+ // available: false
946
+ // },
947
+ // {
948
+ // id: EXPORT_DATA_TYPE.TOPOJSON,
949
+ // label: 'topojson',
950
+ // available: false
951
+ // }
952
+ ];
953
+
954
+ // Export map types
955
+ var EXPORT_MAP_FORMATS = exports.EXPORT_MAP_FORMATS = (0, _keymirror["default"])({
956
+ HTML: null,
957
+ JSON: null
958
+ });
959
+ var EXPORT_HTML_MAP_MODES = exports.EXPORT_HTML_MAP_MODES = (0, _keymirror["default"])({
960
+ READ: null,
961
+ EDIT: null
962
+ });
963
+
964
+ // Export map options
965
+ var EXPORT_MAP_FORMAT_OPTIONS = exports.EXPORT_MAP_FORMAT_OPTIONS = Object.entries(EXPORT_MAP_FORMATS).map(function (entry) {
966
+ return {
967
+ id: entry[0],
968
+ label: entry[1].toLowerCase(),
969
+ available: true
970
+ };
971
+ });
972
+ function getHTMLMapModeTileUrl(mode) {
973
+ return "https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/map-".concat(mode.toLowerCase(), "-mode.png");
974
+ }
975
+ var EXPORT_HTML_MAP_MODE_OPTIONS = exports.EXPORT_HTML_MAP_MODE_OPTIONS = Object.entries(EXPORT_HTML_MAP_MODES).map(function (entry) {
976
+ return {
977
+ id: entry[0],
978
+ label: "modal.exportMap.html.".concat(entry[1].toLowerCase()),
979
+ available: true,
980
+ url: getHTMLMapModeTileUrl(entry[1])
981
+ };
982
+ });
983
+ var DEFAULT_UUID_COUNT = exports.DEFAULT_UUID_COUNT = 6;
984
+ var DEFAULT_NOTIFICATION_MESSAGE = exports.DEFAULT_NOTIFICATION_MESSAGE = 'MESSAGE_NOT_PROVIDED';
985
+ var DEFAULT_NOTIFICATION_TYPES = exports.DEFAULT_NOTIFICATION_TYPES = (0, _keymirror["default"])({
986
+ info: null,
987
+ error: null,
988
+ warning: null,
989
+ success: null
990
+ });
991
+ var DEFAULT_NOTIFICATION_TOPICS = exports.DEFAULT_NOTIFICATION_TOPICS = (0, _keymirror["default"])({
992
+ global: null,
993
+ file: null
994
+ });
995
+
996
+ // Minimum time between identical notifications about deck.gl errors
997
+ var THROTTLE_NOTIFICATION_TIME = exports.THROTTLE_NOTIFICATION_TIME = 330;
998
+
999
+ // Animation
1000
+ var BASE_SPEED = exports.BASE_SPEED = 600;
1001
+ var FPS = exports.FPS = 60;
1002
+
1003
+ /**
1004
+ * 4 Animation Window Types
1005
+ * 1. free
1006
+ * |-> |->
1007
+ * Current time is a fixed range, animation controller calls next animation frames continuously to animation a moving window
1008
+ * The increment id based on domain / BASE_SPEED * SPEED
1009
+ *
1010
+ * 2. incremental
1011
+ * | |->
1012
+ * Same as free, current time is a growing range, only the max value of range increment during animation.
1013
+ * The increment is also based on domain / BASE_SPEED * SPEED
1014
+ *
1015
+ * 3. point
1016
+ * o -> o
1017
+ * Current time is a point, animation controller calls next animation frame continuously to animation a moving point
1018
+ * The increment is based on domain / BASE_SPEED * SPEED
1019
+ *
1020
+ * 4. interval
1021
+ * o ~> o
1022
+ * Current time is a point. An array of sorted time steps need to be provided.
1023
+ * animation controller calls next animation at a interval when the point jumps to the next step
1024
+ */
1025
+ var ANIMATION_WINDOW = exports.ANIMATION_WINDOW = (0, _keymirror["default"])({
1026
+ free: null,
1027
+ incremental: null,
1028
+ point: null,
1029
+ interval: null
1030
+ });
1031
+ var DEFAULT_TIME_FORMAT = exports.DEFAULT_TIME_FORMAT = 'MM/DD/YY HH:mm:ssa';
1032
+ var SPEED_CONTROL_RANGE = exports.SPEED_CONTROL_RANGE = [0, 10];
1033
+ var SPEED_CONTROL_STEP = exports.SPEED_CONTROL_STEP = 0.001;
1034
+
1035
+ // Geocoder
1036
+ var GEOCODER_DATASET_NAME = exports.GEOCODER_DATASET_NAME = 'geocoder_dataset';
1037
+ var GEOCODER_LAYER_ID = exports.GEOCODER_LAYER_ID = 'geocoder_layer';
1038
+ var GEOCODER_GEO_OFFSET = exports.GEOCODER_GEO_OFFSET = 0.05;
1039
+ var GEOCODER_ICON_COLOR = exports.GEOCODER_ICON_COLOR = [255, 0, 0];
1040
+ // Base icon size before anchor normalization. The geocoder pin icon is bottom-anchored
1041
+ // and scaled to fit the ScatterplotLayer unit circle (~0.5x), so the rendered size is
1042
+ // compensated here (80 * 2 = 160).
1043
+ var GEOCODER_ICON_SIZE = exports.GEOCODER_ICON_SIZE = 160;
1044
+
1045
+ // Editor
1046
+ var EDITOR_LAYER_ID = exports.EDITOR_LAYER_ID = 'kepler_editor_layer';
1047
+ var EDITOR_LAYER_PICKING_RADIUS = exports.EDITOR_LAYER_PICKING_RADIUS = 6;
1048
+ var EDITOR_MODES = exports.EDITOR_MODES = {
1049
+ DRAW_POLYGON: 'DRAW_POLYGON',
1050
+ DRAW_RECTANGLE: 'DRAW_RECTANGLE',
1051
+ DRAW_CIRCLE: 'DRAW_CIRCLE',
1052
+ DRAW_LINESTRING: 'DRAW_LINESTRING',
1053
+ DRAW_POINT: 'DRAW_POINT',
1054
+ EDIT: 'EDIT_VERTEX'
1055
+ };
1056
+ var EDITOR_DRAW_MODES = exports.EDITOR_DRAW_MODES = [EDITOR_MODES.DRAW_POLYGON, EDITOR_MODES.DRAW_RECTANGLE, EDITOR_MODES.DRAW_CIRCLE, EDITOR_MODES.DRAW_LINESTRING, EDITOR_MODES.DRAW_POINT];
1057
+ var PLOT_TYPES = exports.PLOT_TYPES = (0, _keymirror["default"])({
1058
+ histogram: null,
1059
+ lineChart: null
1060
+ });
1061
+
1062
+ // Filter
1063
+ var INIT_FILTER_ITEMS_IN_DROPDOWN = exports.INIT_FILTER_ITEMS_IN_DROPDOWN = 100;
1064
+
1065
+ // GPU Filtering
1066
+ /**
1067
+ * Max number of filter value buffers that deck.gl provides
1068
+ */
1069
+ var MAX_GPU_FILTERS = exports.MAX_GPU_FILTERS = 4;
1070
+ var MAP_THUMBNAIL_DIMENSION = exports.MAP_THUMBNAIL_DIMENSION = {
1071
+ width: 300,
1072
+ height: 200
1073
+ };
1074
+ var MAP_INFO_CHARACTER = exports.MAP_INFO_CHARACTER = {
1075
+ title: 100,
1076
+ description: 100
1077
+ };
1078
+
1079
+ // Load data
1080
+ var LOADING_METHODS = exports.LOADING_METHODS = (0, _keymirror["default"])({
1081
+ upload: null,
1082
+ storage: null,
1083
+ tileset: null
1084
+ });
1085
+ var DEFAULT_FEATURE_FLAGS = exports.DEFAULT_FEATURE_FLAGS = {};
1086
+ var DATASET_FORMATS = exports.DATASET_FORMATS = (0, _keymirror["default"])({
1087
+ row: null,
1088
+ geojson: null,
1089
+ csv: null,
1090
+ keplergl: null,
1091
+ arrow: null,
1092
+ duckdb: null
1093
+ });
1094
+ var MAP_CONTROLS = exports.MAP_CONTROLS = (0, _keymirror["default"])({
1095
+ visibleLayers: null,
1096
+ mapLegend: null,
1097
+ toggle3d: null,
1098
+ splitMap: null,
1099
+ mapDraw: null,
1100
+ mapLocale: null,
1101
+ mapTheme: null,
1102
+ effect: null,
1103
+ annotation: null
1104
+ });
1105
+ var MapViewMode = exports.MapViewMode = /*#__PURE__*/function (MapViewMode) {
1106
+ MapViewMode["MODE_2D"] = "MODE_2D";
1107
+ MapViewMode["MODE_3D"] = "MODE_3D";
1108
+ MapViewMode["MODE_GLOBE"] = "MODE_GLOBE";
1109
+ return MapViewMode;
1110
+ }({});
1111
+ /**
1112
+ * Minimum zoom level allowed in globe mode. Negative values let the user zoom
1113
+ * out further than the web-mercator default of 0, so the whole globe can be
1114
+ * pulled back to appear smaller on screen.
1115
+ */
1116
+ var GLOBE_MIN_ZOOM = exports.GLOBE_MIN_ZOOM = 2;
1117
+
1118
+ /**
1119
+ * Maximum zoom in globe mode.
1120
+ *
1121
+ * The previous "empty rectangles" at high zoom were caused by the vector basemap
1122
+ * layer declaring `maxZoom: 23` while the raw tile endpoints only have data to
1123
+ * z16 (mapbox-streets-v8) / z14 (CARTO) — deck then requested non-existent tiles
1124
+ * that 404. That is fixed in `getGlobeBaseLayers` by setting `maxZoom` to each
1125
+ * source's true data max so deck overzooms instead.
1126
+ *
1127
+ * The remaining practical ceiling is float32 precision: deck's globe places
1128
+ * geometry in common space on a sphere of radius 256 with no fp64/relative-to-
1129
+ * center trick, so beyond ~visual-zoom 16 (roughly this mapState zoom minus
1130
+ * `zoomAdjust(lat)` ≈ 1.65 at the equator) geometry starts to jitter/drift.
1131
+ */
1132
+ var GLOBE_MAX_ZOOM = exports.GLOBE_MAX_ZOOM = 16;
1133
+
1134
+ /**
1135
+ * Maximum absolute center latitude allowed in globe mode. Constrains the camera
1136
+ * target to a band around the equator so the view can't be centered on the
1137
+ * poles (deck.gl's default clamps to ~85°, which lets the camera stare straight
1138
+ * down at a pole). Applies symmetrically to the northern and southern hemisphere.
1139
+ */
1140
+ var GLOBE_MAX_LATITUDE = exports.GLOBE_MAX_LATITUDE = 75;
1141
+ var DEFAULT_GLOBE_CONFIG = exports.DEFAULT_GLOBE_CONFIG = {
1142
+ atmosphere: true,
1143
+ hugeHalo: true,
1144
+ hugeHaloRadius: 3.5,
1145
+ hugeHaloOpacity: 0.2,
1146
+ azimuth: false,
1147
+ azimuthAngle: 45,
1148
+ terminator: true,
1149
+ terminatorOpacity: 0.35,
1150
+ basemap: true,
1151
+ labels: false,
1152
+ labelsColor: [114.75, 114.75, 114.75],
1153
+ adminLines: true,
1154
+ adminLinesColor: [40, 63, 93],
1155
+ water: true,
1156
+ waterColor: [17, 35, 48],
1157
+ surface: true,
1158
+ surfaceColor: [9, 16, 29],
1159
+ // Color of the empty space rendered around the globe (deck.gl clear color).
1160
+ // Matches the previous hardcoded clear color [0.015, 0.035, 0.065] in 0-1 space.
1161
+ backgroundColor: [4, 9, 17],
1162
+ // Starfield behind the globe is on by default in globe view.
1163
+ stars: true
1164
+ };
1165
+ var GLOBE_SUPPORTED_LAYERS = exports.GLOBE_SUPPORTED_LAYERS = {
1166
+ point: true,
1167
+ arc: true,
1168
+ grid: true,
1169
+ hexagon: true,
1170
+ geojson: true,
1171
+ cluster: true,
1172
+ icon: true,
1173
+ hexagonId: true,
1174
+ '3D': true,
1175
+ vectorTile: true,
1176
+ hexTile: true,
1177
+ line: true,
1178
+ trip: true,
1179
+ rasterTile: true,
1180
+ heatmap: true,
1181
+ s2: false,
1182
+ tile3d: false,
1183
+ // Flow arrows are flat quads in common space (equatorial plane) and collapse when
1184
+ // viewed edge-on on the globe, so the flow layer is not supported in Globe mode.
1185
+ flow: false
1186
+ };
1187
+ var MapSplitMode = exports.MapSplitMode = /*#__PURE__*/function (MapSplitMode) {
1188
+ MapSplitMode["SINGLE_MAP"] = "SINGLE_MAP";
1189
+ MapSplitMode["DUAL_MAP"] = "DUAL_MAP";
1190
+ MapSplitMode["SWIPE_COMPARE"] = "SWIPE_COMPARE";
1191
+ return MapSplitMode;
1192
+ }({});
1193
+ /**
1194
+ * A multiplier for screen-space width/scale for Arc, Line, Icon and Text layers.
1195
+ * Required in order to maintain the same appearance after upgrading to deck.gl v8.5.
1196
+ * https://github.com/visgl/deck.gl/blob/master/docs/upgrade-guide.md
1197
+ */
1198
+ var PROJECTED_PIXEL_SIZE_MULTIPLIER = exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;
1199
+
1200
+ /**
1201
+ * Maximum value for text outline width
1202
+ */
1203
+ var TEXT_OUTLINE_MULTIPLIER = exports.TEXT_OUTLINE_MULTIPLIER = 5;
1204
+ var dataTestIds = exports.dataTestIds = {
1205
+ infoIcon: 'info-icon',
1206
+ warningIcon: 'warning-icon',
1207
+ errorIcon: 'error-icon',
1208
+ successIcon: 'success-icon',
1209
+ checkmarkIcon: 'checkmark-icon',
1210
+ copyNotificationIcon: 'copy-notification-icon',
1211
+ sortableLayerItem: 'sortable-layer-item',
1212
+ staticLayerItem: 'static-layer-item',
1213
+ layerTitleEditor: 'layer__title__editor',
1214
+ removeLayerAction: 'remove-layer-action',
1215
+ layerPanel: 'layer-panel',
1216
+ sortableEffectItem: 'sortable-effect-item',
1217
+ staticEffectItem: 'static-effect-item',
1218
+ providerLoading: 'provider-loading',
1219
+ providerMapInfoPanel: 'provider-map-info-panel',
1220
+ providerSelect: 'provider-select',
1221
+ cloudHeader: 'cloud-header',
1222
+ providerShareMap: 'provider-share-map'
1223
+ };
1224
+
1225
+ // Effects
1226
+ var DEFAULT_TIMEZONE = exports.DEFAULT_TIMEZONE = 'UTC';
1227
+ var DEFAULT_POST_PROCESSING_EFFECT_TYPE = exports.DEFAULT_POST_PROCESSING_EFFECT_TYPE = 'ink';
1228
+ var DEFAULT_LIGHT_COLOR = exports.DEFAULT_LIGHT_COLOR = [255, 255, 255];
1229
+ var DEFAULT_LIGHT_INTENSITY = exports.DEFAULT_LIGHT_INTENSITY = 1;
1230
+ var DEFAULT_SHADOW_INTENSITY = exports.DEFAULT_SHADOW_INTENSITY = 0.5;
1231
+ var DEFAULT_SHADOW_COLOR = exports.DEFAULT_SHADOW_COLOR = [0, 0, 0];
1232
+ var LIGHT_AND_SHADOW_EFFECT_TIME_MODES = exports.LIGHT_AND_SHADOW_EFFECT_TIME_MODES = {
1233
+ pick: 'pick',
1234
+ current: 'current',
1235
+ animation: 'animation'
1236
+ };
1237
+ var DEFAULT_LIGHT_AND_SHADOW_PROPS = exports.DEFAULT_LIGHT_AND_SHADOW_PROPS = {
1238
+ timestamp: Date.now(),
1239
+ timeMode: LIGHT_AND_SHADOW_EFFECT_TIME_MODES.pick,
1240
+ shadowIntensity: DEFAULT_SHADOW_INTENSITY,
1241
+ shadowColor: [].concat(DEFAULT_SHADOW_COLOR),
1242
+ sunLightColor: [].concat(DEFAULT_LIGHT_COLOR),
1243
+ sunLightIntensity: DEFAULT_LIGHT_INTENSITY,
1244
+ ambientLightColor: [].concat(DEFAULT_LIGHT_COLOR),
1245
+ ambientLightIntensity: DEFAULT_LIGHT_INTENSITY
1246
+ };
1247
+ var LIGHT_AND_SHADOW_EFFECT = exports.LIGHT_AND_SHADOW_EFFECT = {
1248
+ type: 'lightAndShadow',
1249
+ name: 'Light & Shadow',
1250
+ description: 'effectDescription.lightAndShadow',
1251
+ parameters: [{
1252
+ name: 'timestamp',
1253
+ min: 0,
1254
+ max: Number.MAX_SAFE_INTEGER
1255
+ }, {
1256
+ name: 'shadowIntensity',
1257
+ min: 0,
1258
+ max: 1,
1259
+ defaultValue: DEFAULT_SHADOW_INTENSITY
1260
+ }, {
1261
+ name: 'sunLightIntensity',
1262
+ min: 0,
1263
+ max: 5,
1264
+ defaultValue: DEFAULT_LIGHT_INTENSITY
1265
+ }, {
1266
+ name: 'ambientLightIntensity',
1267
+ min: 0,
1268
+ max: 5,
1269
+ defaultValue: DEFAULT_LIGHT_INTENSITY
1270
+ }, {
1271
+ name: 'shadowColor',
1272
+ type: 'color',
1273
+ min: 0,
1274
+ max: 255,
1275
+ defaultValue: DEFAULT_SHADOW_COLOR
1276
+ }, {
1277
+ name: 'sunLightColor',
1278
+ type: 'color',
1279
+ min: 0,
1280
+ max: 255,
1281
+ defaultValue: DEFAULT_LIGHT_COLOR
1282
+ }, {
1283
+ name: 'ambientLightColor',
1284
+ type: 'color',
1285
+ min: 0,
1286
+ max: 255,
1287
+ defaultValue: DEFAULT_LIGHT_COLOR
1288
+ }]
1289
+ };
1290
+ var DISTANCE_FOG_TYPE = exports.DISTANCE_FOG_TYPE = 'distanceFog';
1291
+ var SURFACE_FOG_TYPE = exports.SURFACE_FOG_TYPE = 'surfaceFog';
1292
+ var POSTPROCESSING_EFFECTS = exports.POSTPROCESSING_EFFECTS = {
1293
+ ink: {
1294
+ type: 'ink',
1295
+ name: 'Ink',
1296
+ description: 'effectDescription.ink',
1297
+ parameters: [{
1298
+ name: 'strength',
1299
+ min: 0,
1300
+ max: 1
1301
+ }]
1302
+ },
1303
+ brightnessContrast: {
1304
+ type: 'brightnessContrast',
1305
+ name: 'Brightness & Contrast',
1306
+ description: 'effectDescription.brightnessContrast',
1307
+ parameters: [{
1308
+ name: 'brightness',
1309
+ min: -1,
1310
+ max: 1
1311
+ }, {
1312
+ name: 'contrast',
1313
+ min: -1,
1314
+ max: 1
1315
+ }]
1316
+ },
1317
+ hueSaturation: {
1318
+ type: 'hueSaturation',
1319
+ name: 'Hue & Saturation',
1320
+ description: 'effectDescription.hueSaturation',
1321
+ parameters: [{
1322
+ name: 'hue',
1323
+ min: -1,
1324
+ max: 1
1325
+ }, {
1326
+ name: 'saturation',
1327
+ defaultValue: 0.25,
1328
+ min: -1,
1329
+ max: 1
1330
+ }]
1331
+ },
1332
+ vibrance: {
1333
+ type: 'vibrance',
1334
+ name: 'Vibrance',
1335
+ description: 'effectDescription.vibrance',
1336
+ parameters: [{
1337
+ name: 'amount',
1338
+ defaultValue: 0.5,
1339
+ min: -1,
1340
+ max: 1
1341
+ }]
1342
+ },
1343
+ sepia: {
1344
+ type: 'sepia',
1345
+ name: 'Sepia',
1346
+ description: 'effectDescription.sepia',
1347
+ parameters: [{
1348
+ name: 'amount',
1349
+ min: 0,
1350
+ max: 1
1351
+ }]
1352
+ },
1353
+ dotScreen: {
1354
+ type: 'dotScreen',
1355
+ name: 'Dot Screen',
1356
+ description: 'effectDescription.dotScreen',
1357
+ parameters: [{
1358
+ name: 'angle',
1359
+ min: 0,
1360
+ max: Math.PI / 2
1361
+ }, {
1362
+ name: 'size',
1363
+ min: 1,
1364
+ max: 20
1365
+ }, {
1366
+ name: 'center',
1367
+ type: 'array',
1368
+ label: ['Center X', 'Center Y'],
1369
+ defaultValue: [0.5, 0.5],
1370
+ min: 0,
1371
+ max: 1
1372
+ }]
1373
+ },
1374
+ colorHalftone: {
1375
+ type: 'colorHalftone',
1376
+ name: 'Color Halftone',
1377
+ description: 'effectDescription.colorHalftone',
1378
+ parameters: [{
1379
+ name: 'angle',
1380
+ min: 0,
1381
+ max: Math.PI / 2
1382
+ }, {
1383
+ name: 'size',
1384
+ min: 1,
1385
+ max: 20
1386
+ }, {
1387
+ name: 'center',
1388
+ type: 'array',
1389
+ label: ['Center X', 'Center Y'],
1390
+ defaultValue: [0.5, 0.5],
1391
+ min: 0,
1392
+ max: 1
1393
+ }]
1394
+ },
1395
+ noise: {
1396
+ type: 'noise',
1397
+ name: 'Noise',
1398
+ description: 'effectDescription.noise',
1399
+ parameters: [{
1400
+ name: 'amount',
1401
+ min: 0,
1402
+ max: 1
1403
+ }]
1404
+ },
1405
+ triangleBlur: {
1406
+ type: 'triangleBlur',
1407
+ name: 'Blur (Triangle)',
1408
+ description: 'effectDescription.triangleBlur',
1409
+ parameters: [{
1410
+ name: 'radius',
1411
+ min: 0,
1412
+ max: 100
1413
+ }]
1414
+ },
1415
+ zoomBlur: {
1416
+ type: 'zoomBlur',
1417
+ name: 'Blur (Zoom)',
1418
+ description: 'effectDescription.zoomBlur',
1419
+ parameters: [{
1420
+ name: 'strength',
1421
+ defaultValue: 0.05,
1422
+ min: 0,
1423
+ max: 1
1424
+ }, {
1425
+ name: 'center',
1426
+ type: 'array',
1427
+ label: ['Center X', 'Center Y'],
1428
+ defaultValue: [0.5, 0.5],
1429
+ min: 0,
1430
+ max: 1
1431
+ }]
1432
+ },
1433
+ tiltShift: {
1434
+ type: 'tiltShift',
1435
+ name: 'Blur (Tilt Shift)',
1436
+ description: 'effectDescription.tiltShift',
1437
+ parameters: [{
1438
+ name: 'blurRadius',
1439
+ label: 'Blur',
1440
+ min: 0,
1441
+ max: 50
1442
+ }, {
1443
+ name: 'gradientRadius',
1444
+ label: 'Gradient',
1445
+ min: 0,
1446
+ max: 400
1447
+ }, {
1448
+ name: 'start',
1449
+ type: 'array',
1450
+ label: ['Start', false],
1451
+ defaultValue: [0.0, 0.0],
1452
+ min: 0,
1453
+ max: 1
1454
+ }, {
1455
+ name: 'end',
1456
+ type: 'array',
1457
+ label: ['End', false],
1458
+ defaultValue: [1, 1],
1459
+ min: 0,
1460
+ max: 1
1461
+ }]
1462
+ },
1463
+ edgeWork: {
1464
+ type: 'edgeWork',
1465
+ name: 'Edge work',
1466
+ description: 'effectDescription.edgeWork',
1467
+ parameters: [{
1468
+ name: 'radius',
1469
+ min: 1,
1470
+ max: 50
1471
+ }]
1472
+ },
1473
+ vignette: {
1474
+ type: 'vignette',
1475
+ name: 'Vignette',
1476
+ description: 'effectDescription.vignette',
1477
+ parameters: [{
1478
+ name: 'amount',
1479
+ min: 0,
1480
+ max: 1
1481
+ }, {
1482
+ name: 'radius',
1483
+ min: 0,
1484
+ max: 1
1485
+ }]
1486
+ },
1487
+ magnify: {
1488
+ type: 'magnify',
1489
+ name: 'Magnify',
1490
+ description: 'effectDescription.magnify',
1491
+ parameters: [{
1492
+ name: 'screenXY',
1493
+ type: 'array',
1494
+ label: ['Position X', 'Position Y'],
1495
+ defaultValue: [0.5, 0.5],
1496
+ min: 0,
1497
+ max: 1
1498
+ }, {
1499
+ name: 'radiusPixels',
1500
+ label: 'Size',
1501
+ min: 10,
1502
+ max: 500
1503
+ }, {
1504
+ name: 'zoom',
1505
+ min: 0.5,
1506
+ max: 50
1507
+ }, {
1508
+ name: 'borderWidthPixels',
1509
+ label: 'Border Width',
1510
+ defaultValue: 3,
1511
+ min: 0,
1512
+ max: 50
1513
+ }]
1514
+ },
1515
+ hexagonalPixelate: {
1516
+ type: 'hexagonalPixelate',
1517
+ name: 'Hexagonal Pixelate',
1518
+ description: 'effectDescription.hexagonalPixelate',
1519
+ parameters: [{
1520
+ name: 'scale',
1521
+ defaultValue: 20,
1522
+ min: 1,
1523
+ max: 50
1524
+ }]
1525
+ },
1526
+ distanceFog: {
1527
+ type: DISTANCE_FOG_TYPE,
1528
+ name: 'Distance Fog',
1529
+ description: 'effectDescription.distanceFog',
1530
+ parameters: [{
1531
+ name: 'density',
1532
+ defaultValue: 0.5,
1533
+ min: 0,
1534
+ max: 1
1535
+ }, {
1536
+ name: 'fogStart',
1537
+ label: 'Start',
1538
+ defaultValue: 0.3,
1539
+ min: 0,
1540
+ max: 1
1541
+ }, {
1542
+ name: 'fogRange',
1543
+ label: 'Range',
1544
+ defaultValue: 0.5,
1545
+ min: 0.01,
1546
+ max: 1
1547
+ }, {
1548
+ name: 'fogColor',
1549
+ type: 'color',
1550
+ min: 0,
1551
+ max: 255,
1552
+ defaultValue: [217, 222, 230]
1553
+ }]
1554
+ },
1555
+ surfaceFog: {
1556
+ type: SURFACE_FOG_TYPE,
1557
+ name: 'Surface Fog',
1558
+ description: 'effectDescription.surfaceFog',
1559
+ parameters: [{
1560
+ name: 'density',
1561
+ defaultValue: 0.6,
1562
+ min: 0,
1563
+ max: 1
1564
+ }, {
1565
+ name: 'height',
1566
+ label: 'Elevation (m)',
1567
+ defaultValue: 50,
1568
+ min: -200,
1569
+ max: 6000
1570
+ }, {
1571
+ name: 'animateHeight',
1572
+ type: 'checkbox',
1573
+ label: 'Animate Elevation',
1574
+ tooltip: 'Animates elevation from start to end value during video export preview and recording.',
1575
+ defaultValue: false,
1576
+ min: 0,
1577
+ max: 1
1578
+ }, {
1579
+ name: 'heightEnd',
1580
+ label: 'End Elevation (m)',
1581
+ defaultValue: 100,
1582
+ min: -200,
1583
+ max: 6000
1584
+ }, {
1585
+ name: 'linearEasing',
1586
+ type: 'checkbox',
1587
+ label: 'Linear Easing',
1588
+ tooltip: 'Uses constant speed instead of smooth ease-in / ease-out during elevation animation.',
1589
+ defaultValue: false,
1590
+ min: 0,
1591
+ max: 1
1592
+ }, {
1593
+ name: 'thickness',
1594
+ label: 'Transition (m)',
1595
+ defaultValue: 50,
1596
+ min: 0,
1597
+ max: 1000
1598
+ }, {
1599
+ name: 'fogColor',
1600
+ type: 'color',
1601
+ label: 'Fog Color',
1602
+ min: 0,
1603
+ max: 255,
1604
+ defaultValue: [230, 235, 242]
1605
+ }, {
1606
+ name: 'pattern',
1607
+ type: 'checkbox',
1608
+ label: 'Pattern',
1609
+ tooltip: 'Adds a noise pattern to the fog for a more natural, volumetric look.',
1610
+ defaultValue: false,
1611
+ min: 0,
1612
+ max: 1
1613
+ }]
1614
+ }
1615
+ };
1616
+ var EFFECT_DESCRIPTIONS = exports.EFFECT_DESCRIPTIONS = [LIGHT_AND_SHADOW_EFFECT].concat((0, _toConsumableArray2["default"])(Object.keys(POSTPROCESSING_EFFECTS).map(function (keyName) {
1617
+ return POSTPROCESSING_EFFECTS[keyName];
1618
+ })));
1619
+ var SYNC_TIMELINE_MODES = exports.SYNC_TIMELINE_MODES = {
1620
+ start: 0,
1621
+ end: 1
1622
+ };
1623
+ var GEOARROW_METADATA_KEY = exports.GEOARROW_METADATA_KEY = 'ARROW:extension:name';
1624
+
1625
+ /**
1626
+ * Enum holding GeoArrow extension type names
1627
+ */
1628
+ var GEOARROW_EXTENSIONS = exports.GEOARROW_EXTENSIONS = /*#__PURE__*/function (GEOARROW_EXTENSIONS) {
1629
+ GEOARROW_EXTENSIONS["POINT"] = "geoarrow.point";
1630
+ GEOARROW_EXTENSIONS["LINESTRING"] = "geoarrow.linestring";
1631
+ GEOARROW_EXTENSIONS["POLYGON"] = "geoarrow.polygon";
1632
+ GEOARROW_EXTENSIONS["MULTIPOINT"] = "geoarrow.multipoint";
1633
+ GEOARROW_EXTENSIONS["MULTILINESTRING"] = "geoarrow.multilinestring";
1634
+ GEOARROW_EXTENSIONS["MULTIPOLYGON"] = "geoarrow.multipolygon";
1635
+ GEOARROW_EXTENSIONS["WKB"] = "geoarrow.wkb";
1636
+ return GEOARROW_EXTENSIONS;
1637
+ }({});
1638
+ var LOADERS_CDN_VERSION = exports.LOADERS_CDN_VERSION = '4.3.2';
1639
+ var LOADERS_CDN_URL = exports.LOADERS_CDN_URL = 'https://unpkg.com/@loaders.gl';
1640
+ var getLoaderOptions = exports.getLoaderOptions = function getLoaderOptions() {
1641
+ return {
1642
+ mvt: {
1643
+ workerUrl: "".concat(LOADERS_CDN_URL, "/mvt@").concat(LOADERS_CDN_VERSION, "/dist/mvt-worker.js")
1644
+ },
1645
+ 'quantized-mesh': {
1646
+ workerUrl: "".concat(LOADERS_CDN_URL, "/terrain@").concat(LOADERS_CDN_VERSION, "/dist/quantized-mesh-worker.js")
1647
+ },
1648
+ npy: {
1649
+ workerUrl: "".concat(LOADERS_CDN_URL, "/textures@").concat(LOADERS_CDN_VERSION, "/dist/npy-worker.js")
1650
+ }
1651
+ };
1652
+ };
1653
+ var CUSTOM_SCENEGRAPH_MODEL_ID = exports.CUSTOM_SCENEGRAPH_MODEL_ID = 'custom';
1654
+ var MODELS_BASE_URL = 'https://studio-public-data.foursquare.com/statics/keplergl/3d-models.2022-06-13';
1655
+ var TRIP_LAYER_SCENEGRAPH_MODELS = exports.TRIP_LAYER_SCENEGRAPH_MODELS = [{
1656
+ id: 'airplane',
1657
+ label: 'Airplane',
1658
+ icon: null,
1659
+ url: "".concat(MODELS_BASE_URL, "/Plane.glb"),
1660
+ angles: [0, 0, 0],
1661
+ scale: 1.0
1662
+ }, {
1663
+ id: 'boeing777',
1664
+ label: 'Airliner',
1665
+ icon: null,
1666
+ url: "".concat(MODELS_BASE_URL, "/Airliner.glb"),
1667
+ angles: [0, 0, 0],
1668
+ scale: 1.0
1669
+ }, {
1670
+ id: 'uber-evtol',
1671
+ label: 'VTOL',
1672
+ icon: null,
1673
+ url: "".concat(MODELS_BASE_URL, "/evtol.glb"),
1674
+ angles: [0, 0, 0],
1675
+ scale: 1.0
1676
+ }, {
1677
+ id: 'hang-glider',
1678
+ label: 'Glider',
1679
+ icon: null,
1680
+ url: "".concat(MODELS_BASE_URL, "/Hangglider.glb"),
1681
+ angles: [0, 0, 0],
1682
+ scale: 1.0
1683
+ }, {
1684
+ id: 'helicopter',
1685
+ label: 'Helicopter',
1686
+ icon: null,
1687
+ url: "".concat(MODELS_BASE_URL, "/Helicopter.glb"),
1688
+ angles: [0, 0, 0],
1689
+ scale: 1.0
1690
+ }, {
1691
+ id: 'bicycle',
1692
+ label: 'Bicycle',
1693
+ icon: null,
1694
+ url: "".concat(MODELS_BASE_URL, "/Bicycle.glb"),
1695
+ angles: [0, 0, 0],
1696
+ scale: 1.0
1697
+ }, {
1698
+ id: 'scooter',
1699
+ label: 'Scooter',
1700
+ icon: null,
1701
+ url: "".concat(MODELS_BASE_URL, "/Scooter.glb"),
1702
+ angles: [0, 0, 0],
1703
+ scale: 1.0
1704
+ }, {
1705
+ id: 'car',
1706
+ label: 'Car',
1707
+ icon: null,
1708
+ url: "".concat(MODELS_BASE_URL, "/Car.glb"),
1709
+ angles: [0, 0, 0],
1710
+ scale: 1.0
1711
+ }, {
1712
+ id: 'truck',
1713
+ label: 'Truck',
1714
+ icon: null,
1715
+ url: "".concat(MODELS_BASE_URL, "/Truck.glb"),
1716
+ angles: [0, 0, 0],
1717
+ scale: 1.0
1718
+ }, {
1719
+ id: 'semitruck',
1720
+ label: 'Semitruck',
1721
+ icon: null,
1722
+ url: "".concat(MODELS_BASE_URL, "/Semitruck.glb"),
1723
+ angles: [0, 0, 0],
1724
+ scale: 1.0
1725
+ }, {
1726
+ id: 'cargoship',
1727
+ label: 'Cargoship',
1728
+ icon: null,
1729
+ url: "".concat(MODELS_BASE_URL, "/Cargoship.glb"),
1730
+ angles: [0, 0, 0],
1731
+ scale: 1.0
1732
+ }, {
1733
+ id: CUSTOM_SCENEGRAPH_MODEL_ID,
1734
+ label: 'Custom',
1735
+ icon: null,
1736
+ url: null,
1737
+ angles: [0, 0, 0],
1738
+ scale: 1.0
1739
+ }];
1740
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfa2V5bWlycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZDNTY2FsZSIsIl90b29sdGlwIiwiX0ZJRUxEX1RZUEVfRElTUExBWSIsIl9GSUVMRF9PUFRTIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJBQ1RJT05fUFJFRklYIiwiZXhwb3J0cyIsIktFUExFUl9VTkZPTERFRF9CVUNLRVQiLCJCQVNFTUFQX0lDT05fUFJFRklYIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIlRSQU5TSVRJT05fRFVSQVRJT04iLCJEQVRBX1RBQkxFX0lEIiwiREVMRVRFX0RBVEFfSUQiLCJBRERfREFUQV9JRCIsIkVYUE9SVF9JTUFHRV9JRCIsIkVYUE9SVF9EQVRBX0lEIiwiQUREX01BUF9TVFlMRV9JRCIsIkVYUE9SVF9NQVBfSUQiLCJFWFBPUlRfVklERU9fSUQiLCJTQVZFX01BUF9JRCIsIk9WRVJXUklURV9NQVBfSUQiLCJTSEFSRV9NQVBfSUQiLCJLRVBMRVJfR0xfTkFNRSIsIktFUExFUl9HTF9WRVJTSU9OIiwiS0VQTEVSX0dMX1dFQlNJVEUiLCJESU1FTlNJT05TIiwic2lkZVBhbmVsIiwid2lkdGgiLCJtYXJnaW4iLCJ0b3AiLCJsZWZ0IiwiYm90dG9tIiwicmlnaHQiLCJoZWFkZXJIZWlnaHQiLCJtYXBDb250cm9sIiwicGFkZGluZyIsIm1hcExlZ2VuZCIsInBpbm5lZCIsIlRIRU1FIiwia2V5TWlycm9yIiwibGlnaHQiLCJkYXJrIiwiYmFzZSIsIlNJREVCQVJfUEFORUxTIiwiaWQiLCJsYWJlbCIsIm9uQ2xpY2siLCJQQU5FTF9WSUVXX1RPR0dMRVMiLCJsaXN0IiwiYnlEYXRhc2V0IiwiUEFORUxTIiwiREVGQVVMVF9CTERHX0NPTE9SIiwiREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SIiwiQkFTRV9NQVBfQkFDS0dST1VORF9MQVlFUl9JRFMiLCJCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUciLCJUSFJFRV9EX0JVSUxESU5HX0xBWUVSX0dST1VQX1NMVUciLCJCQUNLR1JPVU5EX0xBWUVSX0dST1VQIiwic2x1ZyIsImRlZmF1bHRWaXNpYmlsaXR5IiwiaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlIiwiaXNNb3ZlVG9Ub3BBdmFpbGFibGUiLCJpc0NvbG9yUGlja2VyQXZhaWxhYmxlIiwiREVGQVVMVF9MQVlFUl9HUk9VUFMiLCJfcmVmIiwidHlwZSIsIm1hdGNoIiwiX3JlZjIiLCJfcmVmMyIsIl9yZWY0IiwiX3JlZjUiLCJfcmVmNiIsIkJBU0VfTUFQX0NPTE9SX01PREVTIiwiTk9ORSIsIkRBUksiLCJMSUdIVCIsIk5PX01BUF9JRCIsIkVNUFRZX01BUEJPWF9TVFlMRSIsInZlcnNpb24iLCJzb3VyY2VzIiwibGF5ZXJzIiwiTUFQX0xJQl9PUFRJT05TIiwiTUFQQk9YIiwiTUFQTElCUkUiLCJNQVBCT1hfTUFYX1BJVENIIiwiTk9fQkFTRU1BUF9JQ09OIiwiY29uY2F0IiwiREVGQVVMVF9CQVNFX01BUF9TVFlMRSIsIkRFRkFVTFRfTk9fQkFTRU1BUF9TVFlMRSIsInVybCIsImljb24iLCJsYXllckdyb3VwcyIsImNvbG9yTW9kZSIsInN0eWxlIiwiREVGQVVMVF9NQVBCT1hfU1RZTEVTIiwiY29tcGxpbWVudGFyeVN0eWxlSWQiLCJERUZBVUxUX01BUEJPWF9TQVRFTElURV9TVFlMRVMiLCJERUZBVUxUX01BUExJQlJFX1NUWUxFUyIsIkRFRkFVTFRfTUFQX1NUWUxFUyIsIkdFT0pTT05fRklFTERTIiwiZ2VvanNvbiIsIklDT05fRklFTERTIiwiVFJJUF9QT0lOVF9GSUVMRFMiLCJBTFRJVFVERV9GSUVMRFMiLCJUUklQX0FSQ19GSUVMRFMiLCJsYXQwIiwibG5nMCIsImxhdDEiLCJsbmcxIiwiRklMVEVSX1RZUEVTIiwicmFuZ2UiLCJzZWxlY3QiLCJpbnB1dCIsInRpbWVSYW5nZSIsIm11bHRpU2VsZWN0IiwicG9seWdvbiIsIkZJTFRFUl9WSUVXX1RZUEVTIiwic2lkZSIsImVubGFyZ2VkIiwibWluaWZpZWQiLCJERUZBVUxUX0ZJTFRFUl9WSUVXX1RZUEUiLCJTQ0FMRV9UWVBFUyIsIm9yZGluYWwiLCJxdWFudGlsZSIsInF1YW50aXplIiwibGluZWFyIiwic3FydCIsImxvZyIsInRocmVzaG9sZCIsImN1c3RvbSIsImN1c3RvbU9yZGluYWwiLCJwb2ludCIsIlNDQUxFX1RZUEVfTkFNRVMiLCJTQ0FMRV9GVU5DIiwic2NhbGVMaW5lYXIiLCJzY2FsZVF1YW50aXplIiwic2NhbGVRdWFudGlsZSIsInNjYWxlT3JkaW5hbCIsInNjYWxlU3FydCIsInNjYWxlTG9nIiwic2NhbGVQb2ludCIsInNjYWxlVGhyZXNob2xkIiwiQUxMX0ZJRUxEX1RZUEVTIiwiZGF0ZSIsImludGVnZXIiLCJyZWFsIiwic3RyaW5nIiwidGltZXN0YW1wIiwiYXJyYXkiLCJvYmplY3QiLCJnZW9hcnJvdyIsImgzIiwiU09SVF9PUkRFUiIsIkFTQ0VORElORyIsIkRFU0NFTkRJTkciLCJVTlNPUlQiLCJUQUJMRV9PUFRJT04iLCJTT1JUX0FTQyIsIlNPUlRfREVTIiwiUElOIiwiVU5QSU4iLCJDT1BZIiwiRk9STUFUX0NPTFVNTiIsIlRBQkxFX09QVElPTl9MSVNUIiwidmFsdWUiLCJkaXNwbGF5IiwiY29uZGl0aW9uIiwicHJvcHMiLCJzb3J0VGFibGVDb2x1bW4iLCJzb3J0TW9kZSIsImlzU29ydGVkIiwiaXNQaW5uZWQiLCJzZXREaXNwbGF5Rm9ybWF0IiwiWUVMTE9XIiwiUElOSyIsIlBVUlBMRSIsIkJMVUUiLCJCTFVFMiIsIkJMVUUzIiwiR1JFRU4iLCJHUkVFTjIiLCJSRUQiLCJPUkFOR0UiLCJGSUVMRF9UWVBFX0RJU1BMQVkiLCJjb2xvciIsIkZJRUxEX0NPTE9SUyIsIkhJR0hMSUdIX0NPTE9SXzNEIiwiQ0hBTk5FTF9TQ0FMRVMiLCJyYWRpdXMiLCJzaXplIiwiY29sb3JBZ2dyIiwic2l6ZUFnZ3IiLCJhbmdsZSIsIkFHR1JFR0FUSU9OX1RZUEVTIiwiY291bnQiLCJhdmVyYWdlIiwibWF4aW11bSIsIm1pbmltdW0iLCJtZWRpYW4iLCJzdGRldiIsInN1bSIsInZhcmlhbmNlIiwibW9kZSIsImNvdW50VW5pcXVlIiwiQUdHUkVHQVRJT05fVFlQRV9PUFRJT05TIiwiZW50cmllcyIsIm1hcCIsIl9yZWY3IiwiX3JlZjgiLCJfc2xpY2VkVG9BcnJheTIiLCJrZXkiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwibGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyIsIkRFRkFVTFRfQUdHUkVHQVRJT05fQ09MT1JfU0NBTEVTIiwibGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMiLCJyZWR1Y2UiLCJwcmV2IiwiY3VyIiwib3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMiLCJvcmRpbmFsRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMiLCJub3RTdXBwb3J0ZWRTY2FsZU9wdHMiLCJub3RTdXBwb3J0QWdnck9wdHMiLCJERUZBVUxUX0FHR1JFR0FUSU9OIiwiRklFTERfT1BUUyIsInNjYWxlIiwiZm9ybWF0IiwibGVnZW5kIiwiZCIsInRvb2x0aXAiLCJUT09MVElQX0ZPUk1BVF9UWVBFUyIsIkRFQ0lNQUwiLCJQRVJDRU5UQUdFIiwiREFURSIsIkRBVEVfVElNRSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJCT09MRUFOIiwiQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTIiwiYWNjdSIsImZ0IiwiREVGQVVMVF9MQVlFUl9DT0xPUiIsInRyaXBBcmMiLCJiZWdpbnRyaXBfbGF0IiwiZHJvcG9mZl9sYXQiLCJyZXF1ZXN0X2xhdCIsIkRFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURSIsIkRFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURV9TVEVQUyIsIkRFRkFVTFRfVE9PTFRJUF9GSUVMRFMiLCJOT19WQUxVRV9DT0xPUiIsIk1JU1NJTkdfVkFMVUVfQ09MT1IiLCJERUZBVUxUX1BJQ0tJTkdfUkFESVVTIiwiT1ZFUkxBWV9CTEVORElOR1MiLCJub3JtYWwiLCJzY3JlZW4iLCJkYXJrZW4iLCJMQVlFUl9CTEVORElOR1MiLCJhZGRpdGl2ZSIsImJsZW5kRnVuYyIsImJsZW5kRXF1YXRpb24iLCJzdWJ0cmFjdGl2ZSIsIk1BWF9ERUZBVUxUX1RPT0xUSVBTIiwiUkVTT0xVVElPTlMiLCJPTkVfWCIsIlRXT19YIiwiRVhQT1JUX0lNR19SQVRJT1MiLCJTQ1JFRU4iLCJGT1VSX0JZX1RIUkVFIiwiU0lYVEVFTl9CWV9OSU5FIiwiQ1VTVE9NIiwiU2NyZWVuUmF0aW9PcHRpb24iLCJnZXRTaXplIiwic2NyZWVuVyIsInNjcmVlbkgiLCJoZWlnaHQiLCJDdXN0b21SYXRpb09wdGlvbiIsImhpZGRlbiIsIm1hcFciLCJtYXBIIiwiRm91ckJ5VGhyZWVSYXRpb09wdGlvbiIsIk1hdGgiLCJyb3VuZCIsIlNpeHRlZW5CeU5pbmVSYXRpb09wdGlvbiIsIkVYUE9SVF9JTUdfUkFUSU9fT1BUSU9OUyIsIk9uZVhSZXNvbHV0aW9uT3B0aW9uIiwiYXZhaWxhYmxlIiwiVHdvWFJlc29sdXRpb25PcHRpb24iLCJSZXNvbHV0aW9uMTkyMHgxMDgwT3B0aW9uIiwiUmVzb2x1dGlvbjEyODB4NzIwT3B0aW9uIiwiUmVzb2x1dGlvbjI1NjB4MTQ0ME9wdGlvbiIsIlJlc29sdXRpb24xNjAweDkwME9wdGlvbiIsIlJlc29sdXRpb24xMDI0eDc2OE9wdGlvbiIsIlJlc29sdXRpb24xMjgweDk2ME9wdGlvbiIsIlJlc29sdXRpb24xNjAweDEyMDBPcHRpb24iLCJSZXNvbHV0aW9uMTkyMHgxNDQwT3B0aW9uIiwiRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlMiLCJFWFBPUlRfREFUQV9UWVBFIiwiQ1NWIiwiRVhQT1JUX0RBVEFfVFlQRV9PUFRJT05TIiwidG9Mb3dlckNhc2UiLCJFWFBPUlRfTUFQX0ZPUk1BVFMiLCJIVE1MIiwiSlNPTiIsIkVYUE9SVF9IVE1MX01BUF9NT0RFUyIsIlJFQUQiLCJFRElUIiwiRVhQT1JUX01BUF9GT1JNQVRfT1BUSU9OUyIsImVudHJ5IiwiZ2V0SFRNTE1hcE1vZGVUaWxlVXJsIiwiRVhQT1JUX0hUTUxfTUFQX01PREVfT1BUSU9OUyIsIkRFRkFVTFRfVVVJRF9DT1VOVCIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX01FU1NBR0UiLCJERUZBVUxUX05PVElGSUNBVElPTl9UWVBFUyIsImluZm8iLCJlcnJvciIsIndhcm5pbmciLCJzdWNjZXNzIiwiREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTIiwiZ2xvYmFsIiwiZmlsZSIsIlRIUk9UVExFX05PVElGSUNBVElPTl9USU1FIiwiQkFTRV9TUEVFRCIsIkZQUyIsIkFOSU1BVElPTl9XSU5ET1ciLCJmcmVlIiwiaW5jcmVtZW50YWwiLCJpbnRlcnZhbCIsIkRFRkFVTFRfVElNRV9GT1JNQVQiLCJTUEVFRF9DT05UUk9MX1JBTkdFIiwiU1BFRURfQ09OVFJPTF9TVEVQIiwiR0VPQ09ERVJfREFUQVNFVF9OQU1FIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJHRU9DT0RFUl9HRU9fT0ZGU0VUIiwiR0VPQ09ERVJfSUNPTl9DT0xPUiIsIkdFT0NPREVSX0lDT05fU0laRSIsIkVESVRPUl9MQVlFUl9JRCIsIkVESVRPUl9MQVlFUl9QSUNLSU5HX1JBRElVUyIsIkVESVRPUl9NT0RFUyIsIkRSQVdfUE9MWUdPTiIsIkRSQVdfUkVDVEFOR0xFIiwiRFJBV19DSVJDTEUiLCJEUkFXX0xJTkVTVFJJTkciLCJEUkFXX1BPSU5UIiwiRURJVE9SX0RSQVdfTU9ERVMiLCJQTE9UX1RZUEVTIiwiaGlzdG9ncmFtIiwibGluZUNoYXJ0IiwiSU5JVF9GSUxURVJfSVRFTVNfSU5fRFJPUERPV04iLCJNQVhfR1BVX0ZJTFRFUlMiLCJNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiIsIk1BUF9JTkZPX0NIQVJBQ1RFUiIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJMT0FESU5HX01FVEhPRFMiLCJ1cGxvYWQiLCJzdG9yYWdlIiwidGlsZXNldCIsIkRFRkFVTFRfRkVBVFVSRV9GTEFHUyIsIkRBVEFTRVRfRk9STUFUUyIsInJvdyIsImNzdiIsImtlcGxlcmdsIiwiYXJyb3ciLCJkdWNrZGIiLCJNQVBfQ09OVFJPTFMiLCJ2aXNpYmxlTGF5ZXJzIiwidG9nZ2xlM2QiLCJzcGxpdE1hcCIsIm1hcERyYXciLCJtYXBMb2NhbGUiLCJtYXBUaGVtZSIsImVmZmVjdCIsImFubm90YXRpb24iLCJNYXBWaWV3TW9kZSIsIkdMT0JFX01JTl9aT09NIiwiR0xPQkVfTUFYX1pPT00iLCJHTE9CRV9NQVhfTEFUSVRVREUiLCJERUZBVUxUX0dMT0JFX0NPTkZJRyIsImF0bW9zcGhlcmUiLCJodWdlSGFsbyIsImh1Z2VIYWxvUmFkaXVzIiwiaHVnZUhhbG9PcGFjaXR5IiwiYXppbXV0aCIsImF6aW11dGhBbmdsZSIsInRlcm1pbmF0b3IiLCJ0ZXJtaW5hdG9yT3BhY2l0eSIsImJhc2VtYXAiLCJsYWJlbHMiLCJsYWJlbHNDb2xvciIsImFkbWluTGluZXMiLCJhZG1pbkxpbmVzQ29sb3IiLCJ3YXRlciIsIndhdGVyQ29sb3IiLCJzdXJmYWNlIiwic3VyZmFjZUNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwic3RhcnMiLCJHTE9CRV9TVVBQT1JURURfTEFZRVJTIiwiYXJjIiwiZ3JpZCIsImhleGFnb24iLCJjbHVzdGVyIiwiaGV4YWdvbklkIiwidmVjdG9yVGlsZSIsImhleFRpbGUiLCJsaW5lIiwidHJpcCIsInJhc3RlclRpbGUiLCJoZWF0bWFwIiwiczIiLCJ0aWxlM2QiLCJmbG93IiwiTWFwU3BsaXRNb2RlIiwiUFJPSkVDVEVEX1BJWEVMX1NJWkVfTVVMVElQTElFUiIsIlRFWFRfT1VUTElORV9NVUxUSVBMSUVSIiwiZGF0YVRlc3RJZHMiLCJpbmZvSWNvbiIsIndhcm5pbmdJY29uIiwiZXJyb3JJY29uIiwic3VjY2Vzc0ljb24iLCJjaGVja21hcmtJY29uIiwiY29weU5vdGlmaWNhdGlvbkljb24iLCJzb3J0YWJsZUxheWVySXRlbSIsInN0YXRpY0xheWVySXRlbSIsImxheWVyVGl0bGVFZGl0b3IiLCJyZW1vdmVMYXllckFjdGlvbiIsImxheWVyUGFuZWwiLCJzb3J0YWJsZUVmZmVjdEl0ZW0iLCJzdGF0aWNFZmZlY3RJdGVtIiwicHJvdmlkZXJMb2FkaW5nIiwicHJvdmlkZXJNYXBJbmZvUGFuZWwiLCJwcm92aWRlclNlbGVjdCIsImNsb3VkSGVhZGVyIiwicHJvdmlkZXJTaGFyZU1hcCIsIkRFRkFVTFRfVElNRVpPTkUiLCJERUZBVUxUX1BPU1RfUFJPQ0VTU0lOR19FRkZFQ1RfVFlQRSIsIkRFRkFVTFRfTElHSFRfQ09MT1IiLCJERUZBVUxUX0xJR0hUX0lOVEVOU0lUWSIsIkRFRkFVTFRfU0hBRE9XX0lOVEVOU0lUWSIsIkRFRkFVTFRfU0hBRE9XX0NPTE9SIiwiTElHSFRfQU5EX1NIQURPV19FRkZFQ1RfVElNRV9NT0RFUyIsInBpY2siLCJjdXJyZW50IiwiYW5pbWF0aW9uIiwiREVGQVVMVF9MSUdIVF9BTkRfU0hBRE9XX1BST1BTIiwiRGF0ZSIsIm5vdyIsInRpbWVNb2RlIiwic2hhZG93SW50ZW5zaXR5Iiwic2hhZG93Q29sb3IiLCJzdW5MaWdodENvbG9yIiwic3VuTGlnaHRJbnRlbnNpdHkiLCJhbWJpZW50TGlnaHRDb2xvciIsImFtYmllbnRMaWdodEludGVuc2l0eSIsIkxJR0hUX0FORF9TSEFET1dfRUZGRUNUIiwibmFtZSIsInBhcmFtZXRlcnMiLCJtaW4iLCJtYXgiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwiZGVmYXVsdFZhbHVlIiwiRElTVEFOQ0VfRk9HX1RZUEUiLCJTVVJGQUNFX0ZPR19UWVBFIiwiUE9TVFBST0NFU1NJTkdfRUZGRUNUUyIsImluayIsImJyaWdodG5lc3NDb250cmFzdCIsImh1ZVNhdHVyYXRpb24iLCJ2aWJyYW5jZSIsInNlcGlhIiwiZG90U2NyZWVuIiwiUEkiLCJjb2xvckhhbGZ0b25lIiwibm9pc2UiLCJ0cmlhbmdsZUJsdXIiLCJ6b29tQmx1ciIsInRpbHRTaGlmdCIsImVkZ2VXb3JrIiwidmlnbmV0dGUiLCJtYWduaWZ5IiwiaGV4YWdvbmFsUGl4ZWxhdGUiLCJkaXN0YW5jZUZvZyIsInN1cmZhY2VGb2ciLCJFRkZFQ1RfREVTQ1JJUFRJT05TIiwia2V5TmFtZSIsIlNZTkNfVElNRUxJTkVfTU9ERVMiLCJzdGFydCIsImVuZCIsIkdFT0FSUk9XX01FVEFEQVRBX0tFWSIsIkdFT0FSUk9XX0VYVEVOU0lPTlMiLCJMT0FERVJTX0NETl9WRVJTSU9OIiwiTE9BREVSU19DRE5fVVJMIiwiZ2V0TG9hZGVyT3B0aW9ucyIsIm12dCIsIndvcmtlclVybCIsIm5weSIsIkNVU1RPTV9TQ0VORUdSQVBIX01PREVMX0lEIiwiTU9ERUxTX0JBU0VfVVJMIiwiVFJJUF9MQVlFUl9TQ0VORUdSQVBIX01PREVMUyIsImFuZ2xlcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWZhdWx0LXNldHRpbmdzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBrZXlNaXJyb3IgZnJvbSAna2V5bWlycm9yJztcblxuaW1wb3J0IHtcbiAgQmFzZU1hcFN0eWxlLFxuICBFZmZlY3REZXNjcmlwdGlvbixcbiAgUkdCQUNvbG9yLFxuICBTeW5jVGltZWxpbmVNb2RlLFxuICBCYXNlTWFwQ29sb3JNb2RlcyxcbiAgTWVyZ2Vcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBzY2FsZUxpbmVhcixcbiAgc2NhbGVMb2csXG4gIHNjYWxlT3JkaW5hbCxcbiAgc2NhbGVQb2ludCxcbiAgc2NhbGVRdWFudGlsZSxcbiAgc2NhbGVRdWFudGl6ZSxcbiAgc2NhbGVTcXJ0LFxuICBzY2FsZVRocmVzaG9sZFxufSBmcm9tICdkMy1zY2FsZSc7XG5pbXBvcnQge1RPT0xUSVBfRk9STUFUX1RZUEVTfSBmcm9tICcuL3Rvb2x0aXAnO1xuXG5leHBvcnQgY29uc3QgQUNUSU9OX1BSRUZJWCA9ICdAQGtlcGxlci5nbC8nO1xuZXhwb3J0IGNvbnN0IEtFUExFUl9VTkZPTERFRF9CVUNLRVQgPSAnaHR0cHM6Ly9zdHVkaW8tcHVibGljLWRhdGEuZm91cnNxdWFyZS5jb20vc3RhdGljcy9rZXBsZXJnbCc7XG5leHBvcnQgY29uc3QgQkFTRU1BUF9JQ09OX1BSRUZJWCA9IGBnZW9kdWRlYDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUEJPWF9BUElfVVJMID0gJ2h0dHBzOi8vYXBpLm1hcGJveC5jb20nO1xuZXhwb3J0IGNvbnN0IFRSQU5TSVRJT05fRFVSQVRJT04gPSAwO1xuXG4vLyBNb2RhbCBJZHNcbi8qKlxuICogTW9kYWwgaWQ6IGRhdGEgdGFibGVcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERBVEFfVEFCTEVfSUQgPSAnZGF0YVRhYmxlJztcbi8qKlxuICogTW9kYWwgaWQ6IGRlbGV0ZSBkYXRhc2V0IGNvbmZpcm0gZGlhbG9nXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUxFVEVfREFUQV9JRCA9ICdkZWxldGVEYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGFkZCBkYXRhIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBBRERfREFUQV9JRCA9ICdhZGREYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBpbWFnZSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNQUdFX0lEID0gJ2V4cG9ydEltYWdlJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBkYXRhIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9JRCA9ICdleHBvcnREYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGFkZCBjdXN0b20gbWFwIHN0eWxlIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBBRERfTUFQX1NUWUxFX0lEID0gJ2FkZE1hcFN0eWxlJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBtYXAgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfSUQgPSAnZXhwb3J0TWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCB2aWRlbyBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX1ZJREVPX0lEID0gJ2V4cG9ydFZpZGVvJztcbi8qKlxuICogTW9kYWwgaWQ6IHNhdmUgbWFwIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBTQVZFX01BUF9JRCA9ICdzYXZlTWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IGNvbmZpcm0gdG8gb3ZlcndyaXRlIHNhdmVkIG1hcFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgT1ZFUldSSVRFX01BUF9JRCA9ICdvdmVyd3JpdGVNYXAnO1xuLyoqXG4gKiBNb2RhbCBpZDogc2hhcmUgbWFwIHVybCBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgU0hBUkVfTUFQX0lEID0gJ3NoYXJlTWFwJztcblxuZXhwb3J0IGNvbnN0IEtFUExFUl9HTF9OQU1FID0gJ2tlcGxlci5nbCc7XG5cbi8vIF9fUEFDS0FHRV9WRVJTSU9OX18gaXMgYXV0b21hdGljYWxseSBpbmplY3RlZCBieSBCYWJlbC9Fc2J1aWxkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzc1xuLy8gU2luY2Ugd2UgYXJlIGluamVjdGluZyB0aGlzIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcyB3aXRoIGJhYmVsXG4vLyB3aGlsZSBkZXZlbG9waW5nIFZFUlNJT04gaXMgbm90IGRlZmluZWQsIHdlIGNhcHR1cmUgdGhlIGV4Y2VwdGlvbiBhbmQgcmV0dXJuXG4vLyBhbiBlbXB0eSBzdHJpbmcgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byByZXRyaWV2ZSB0aGUgbGF0ZXN0IHVtZCB2ZXJzaW9uXG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX1ZFUlNJT04gPSAnX19QQUNLQUdFX1ZFUlNJT05fXyc7XG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX1dFQlNJVEUgPSAnaHR0cDovL2tlcGxlci5nbC8nO1xuXG5leHBvcnQgY29uc3QgRElNRU5TSU9OUyA9IHtcbiAgc2lkZVBhbmVsOiB7XG4gICAgd2lkdGg6IDMwMCxcbiAgICBtYXJnaW46IHt0b3A6IDEyLCBsZWZ0OiAxMiwgYm90dG9tOiAxMiwgcmlnaHQ6IDIwfSxcbiAgICBoZWFkZXJIZWlnaHQ6IDk2XG4gIH0sXG4gIG1hcENvbnRyb2w6IHtcbiAgICB3aWR0aDogMTg0LFxuICAgIHBhZGRpbmc6IDEyLFxuICAgIG1hcExlZ2VuZDoge1xuICAgICAgcGlubmVkOiB7XG4gICAgICAgIGJvdHRvbTogMjIsXG4gICAgICAgIHJpZ2h0OiAxMlxuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBUaGVtZSBuYW1lIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBgS2VwbGVyR2xgIGBwcm9wLnRoZW1lYC5cbiAqIEF2YWlsYWJsZSB0aGVtZXMgYXJlIGBUSEVNRS5saWdodGAgYW5kIGBUSEVNRS5kYXJrYC4gRGVmYXVsdCB0aGVtZSBpcyBgVEhFTUUuZGFya2BcbiAqIEBjb25zdGFudFxuICogQHR5cGUge29iamVjdH1cbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBgYGBqc1xuICogY29uc3QgTWFwID0gKCkgPT4gPEtlcGxlckdsIHRoZW1lPXtUSEVNRS5saWdodH0gaWQ9XCJtYXBcIi8+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IFRIRU1FID0ga2V5TWlycm9yKHtcbiAgbGlnaHQ6IG51bGwsXG4gIGRhcms6IG51bGwsXG4gIGJhc2U6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgU0lERUJBUl9QQU5FTFMgPSBbXG4gIHtcbiAgICBpZDogJ2xheWVyJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmxheWVyJyxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2ZpbHRlcicsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5maWx0ZXInLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnaW50ZXJhY3Rpb24nLFxuICAgIGxhYmVsOiAnc2lkZWJhci5wYW5lbHMuaW50ZXJhY3Rpb24nLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnbWFwJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmJhc2VtYXAnLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IFBBTkVMX1ZJRVdfVE9HR0xFUyA9IGtleU1pcnJvcih7XG4gIGxpc3Q6IG51bGwsXG4gIGJ5RGF0YXNldDogbnVsbFxufSk7XG5cbi8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbmV4cG9ydCBjb25zdCBQQU5FTFMgPSBTSURFQkFSX1BBTkVMUztcblxuLy8gTUFQIFNUWUxFU1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CTERHX0NPTE9SID0gJyNEMUNFQzcnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SID0gJyMwMDAwMDAnO1xuXG4vLyBhc3Npc3RzIGluIGlkZW50aWZ5aW5nIGJhc2VtYXAgYmFja2dyb3VuZCBsYXllcnMgd2hlbiBhdXRvLWRldGVybWluaW5nIHRoZSBiYWNrZ3JvdW5kQ29sb3JcbmV4cG9ydCBjb25zdCBCQVNFX01BUF9CQUNLR1JPVU5EX0xBWUVSX0lEUyA9IFsnYmFja2dyb3VuZCcsICdiZycsICdsYW5kJywgJ3dhdGVyJ107XG5cbmV4cG9ydCBjb25zdCBCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUcgPSAnQmFja2dyb3VuZCc7XG5cbmV4cG9ydCBjb25zdCBUSFJFRV9EX0JVSUxESU5HX0xBWUVSX0dST1VQX1NMVUcgPSAnM2QgYnVpbGRpbmcnO1xuXG5leHBvcnQgdHlwZSBERUZBVUxUX0xBWUVSX0dST1VQID0ge1xuICBzbHVnOiBzdHJpbmc7XG4gIGZpbHRlcjogKHZhbHVlKSA9PiBib29sZWFuO1xuICBkZWZhdWx0VmlzaWJpbGl0eTogYm9vbGVhbjtcbiAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlPzogYm9vbGVhbjtcbiAgaXNNb3ZlVG9Ub3BBdmFpbGFibGU/OiBib29sZWFuO1xuICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBCQUNLR1JPVU5EX0xBWUVSX0dST1VQOiBERUZBVUxUX0xBWUVSX0dST1VQID0ge1xuICBzbHVnOiBCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUcsXG4gIGZpbHRlcjogKCkgPT4gZmFsc2UsXG4gIGRlZmF1bHRWaXNpYmlsaXR5OiBmYWxzZSxcbiAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiBmYWxzZSxcbiAgaXNNb3ZlVG9Ub3BBdmFpbGFibGU6IGZhbHNlLFxuICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiB0cnVlXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9HUk9VUFM6IERFRkFVTFRfTEFZRVJfR1JPVVBbXSA9IFtcbiAge1xuICAgIHNsdWc6ICdsYWJlbCcsXG4gICAgZmlsdGVyOiAoe2lkLCB0eXBlfSkgPT4gaWQubWF0Y2goLyg/PShsYWJlbHxwbGFjZS18cG9pLSkpLykgfHwgdHlwZT8ubWF0Y2goLyg/PShzeW1ib2wpKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ3JvYWQnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0ocm9hZHxyYWlsd2F5fHR1bm5lbHxzdHJlZXR8YnJpZGdlKSkoPyEuKmxhYmVsKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2JvcmRlcicsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goL2JvcmRlcnxib3VuZGFyaWVzfGJvdW5kYXJ5LyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IGZhbHNlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2J1aWxkaW5nJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvYnVpbGRpbmcvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZSxcbiAgICBpc1Zpc2liaWxpdHlUb2dnbGVBdmFpbGFibGU6IHRydWUsXG4gICAgaXNNb3ZlVG9Ub3BBdmFpbGFibGU6IHRydWUsXG4gICAgaXNDb2xvclBpY2tlckF2YWlsYWJsZTogZmFsc2VcbiAgfSxcbiAge1xuICAgIHNsdWc6ICd3YXRlcicsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PSh3YXRlcnxzdHJlYW18ZmVycnkpKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2xhbmQnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0ocGFya3N8bGFuZGNvdmVyfGluZHVzdHJpYWx8c2FuZHxoaWxsc2hhZGUpKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogVEhSRUVfRF9CVUlMRElOR19MQVlFUl9HUk9VUF9TTFVHLFxuICAgIGZpbHRlcjogKCkgPT4gZmFsc2UsXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IGZhbHNlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiB0cnVlXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBCQVNFX01BUF9DT0xPUl9NT0RFUyA9IGtleU1pcnJvcih7XG4gIE5PTkU6IG51bGwsXG4gIERBUks6IG51bGwsXG4gIExJR0hUOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IE5PX01BUF9JRCA9ICdub19tYXAnO1xuXG4vLyBGYWxsYmFjayBzdHlsZSB0byB1c2Ugd2hlbiBzdHlsZXMgYXJlIGJlaW5nIGZldGNoZWQsIG9yIHdoZW5cbi8vIGEgc3R5bGUgZmFpbHMgdG8gZmV0Y2hcbmV4cG9ydCBjb25zdCBFTVBUWV9NQVBCT1hfU1RZTEUgPSB7XG4gIHZlcnNpb246IDgsXG4gIHNvdXJjZXM6IHt9LFxuICBsYXllcnM6IFtdXG59O1xuXG5leHBvcnQgY29uc3QgTUFQX0xJQl9PUFRJT05TID0ge1xuICBNQVBCT1g6ICdtYXBib3gnIGFzIGNvbnN0LFxuICBNQVBMSUJSRTogJ21hcGxpYnJlJyBhcyBjb25zdFxufTtcblxuLyoqIE1hcGJveCBHTCBKUyBkb2VzIG5vdCBzdXBwb3J0IHBpdGNoIGFib3ZlIDYwIGRlZ3JlZXMgKi9cbmV4cG9ydCBjb25zdCBNQVBCT1hfTUFYX1BJVENIID0gNjA7XG5cbmV4cG9ydCB0eXBlIEJhc2VNYXBMaWJyYXJ5VHlwZSA9ICdtYXBib3gnIHwgJ21hcGxpYnJlJztcblxuZXhwb3J0IGNvbnN0IE5PX0JBU0VNQVBfSUNPTiA9IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L05PX0JBU0VNQVAucG5nYDtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQkFTRV9NQVBfU1RZTEUgPSAnZGFyay1tYXR0ZXInO1xuXG50eXBlIERlZmF1bHRCYXNlTWFwU3R5bGUgPSBNZXJnZTxcbiAgQmFzZU1hcFN0eWxlLFxuICB7XG4gICAgY29sb3JNb2RlOiBCYXNlTWFwQ29sb3JNb2RlcztcbiAgfVxuPjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9fQkFTRU1BUF9TVFlMRTogRGVmYXVsdEJhc2VNYXBTdHlsZSA9IHtcbiAgaWQ6IE5PX01BUF9JRCxcbiAgbGFiZWw6ICdObyBCYXNlbWFwJyxcbiAgdXJsOiAnJyxcbiAgaWNvbjogTk9fQkFTRU1BUF9JQ09OLFxuICBsYXllckdyb3VwczogW0JBQ0tHUk9VTkRfTEFZRVJfR1JPVVBdLFxuICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLk5PTkUsXG4gIHN0eWxlOiBFTVBUWV9NQVBCT1hfU1RZTEVcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUEJPWF9TVFlMRVM6IERlZmF1bHRCYXNlTWFwU3R5bGVbXSA9IFtcbiAge1xuICAgIGlkOiAnZGFyaycsXG4gICAgbGFiZWw6ICdEYXJrJyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pvcWJiZjZsOWszMDJzbDk2dHl2a2EwOScsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vVUJFUl9EQVJLX1YyLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuREFSSyxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ2xpZ2h0J1xuICB9LFxuICB7XG4gICAgaWQ6ICdsaWdodCcsXG4gICAgbGFiZWw6ICdMaWdodCcsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2Nqb3FiOWozMzlrMWYyc2w5dDVpYzVibjQnLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1VCRVJfTElHSFRfVjIucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFMsXG4gICAgY29sb3JNb2RlOiBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVCxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ2RhcmsnXG4gIH0sXG4gIHtcbiAgICBpZDogJ211dGVkJyxcbiAgICBsYWJlbDogJ011dGVkIExpZ2h0JyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pmeWwwM2twMXR1bDJzbWY1djJ0YmRkNCcsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vVUJFUl9NVVRFRF9MSUdIVC5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkxJR0hULFxuICAgIGNvbXBsaW1lbnRhcnlTdHlsZUlkOiAnbXV0ZWRfbmlnaHQnXG4gIH0sXG4gIHtcbiAgICBpZDogJ211dGVkX25pZ2h0JyxcbiAgICBsYWJlbDogJ011dGVkIE5pZ2h0JyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pmeGhsaWttYWoxYjJzb3l6ZXZueXdncycsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vVUJFUl9NVVRFRF9OSUdIVC5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkRBUkssXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdtdXRlZCdcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFQQk9YX1NBVEVMSVRFX1NUWUxFUzogRGVmYXVsdEJhc2VNYXBTdHlsZVtdID0gW1xuICB7XG4gICAgaWQ6ICdzYXRlbGxpdGUnLFxuICAgIGxhYmVsOiAnU2F0ZWxsaXRlIHdpdGggc3RyZWV0cycsXG4gICAgdXJsOiBgbWFwYm94Oi8vc3R5bGVzL21hcGJveC9zYXRlbGxpdGUtc3RyZWV0cy12MTFgLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1VCRVJfU0FURUxMSVRFLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuTk9ORVxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVBMSUJSRV9TVFlMRVM6IERlZmF1bHRCYXNlTWFwU3R5bGVbXSA9IFtcbiAge1xuICAgIGlkOiAnZGFyay1tYXR0ZXInLFxuICAgIGxhYmVsOiAnRGFya01hdHRlcicsXG4gICAgdXJsOiAnaHR0cHM6Ly9iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vZ2wvZGFyay1tYXR0ZXItZ2wtc3R5bGUvc3R5bGUuanNvbicsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vREFSS01BVFRFUi5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkRBUkssXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdwb3NpdHJvbidcbiAgfSxcbiAge1xuICAgIGlkOiAncG9zaXRyb24nLFxuICAgIGxhYmVsOiAnUG9zaXRyb24nLFxuICAgIHVybDogJ2h0dHBzOi8vYmFzZW1hcHMuY2FydG9jZG4uY29tL2dsL3Bvc2l0cm9uLWdsLXN0eWxlL3N0eWxlLmpzb24nLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1BPU0lUUk9OLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuTElHSFQsXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdkYXJrLW1hdHRlcidcbiAgfSxcbiAge1xuICAgIGlkOiAndm95YWdlcicsXG4gICAgbGFiZWw6ICdWb3lhZ2VyJyxcbiAgICB1cmw6ICdodHRwczovL2Jhc2VtYXBzLmNhcnRvY2RuLmNvbS9nbC92b3lhZ2VyLWdsLXN0eWxlL3N0eWxlLmpzb24nLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1ZPWUFHRVIucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFMsXG4gICAgY29sb3JNb2RlOiBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVCxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ2RhcmstbWF0dGVyJ1xuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVBfU1RZTEVTID0gW1xuICBERUZBVUxUX05PX0JBU0VNQVBfU1RZTEUsXG4gIC4uLkRFRkFVTFRfTUFQTElCUkVfU1RZTEVTLFxuICAuLi5ERUZBVUxUX01BUEJPWF9TQVRFTElURV9TVFlMRVMsXG4gIC4uLkRFRkFVTFRfTUFQQk9YX1NUWUxFU1xuXTtcblxuZXhwb3J0IGNvbnN0IEdFT0pTT05fRklFTERTID0ge1xuICBnZW9qc29uOiBbJ19nZW9qc29uJywgJ2FsbF9wb2ludHMnLCAnZ2VvanNvbiddXG59O1xuXG5leHBvcnQgY29uc3QgSUNPTl9GSUVMRFMgPSB7XG4gIGljb246IFsnaWNvbiddXG59O1xuXG5leHBvcnQgY29uc3QgVFJJUF9QT0lOVF9GSUVMRFM6IFtzdHJpbmcsIHN0cmluZ11bXSA9IFtcbiAgWydsYXQnLCAnbG5nJ10sXG4gIFsnbGF0JywgJ2xvbiddLFxuICBbJ2xhdCcsICdsb25nJ10sXG4gIFsnbGF0aXR1ZGUnLCAnbG9uZ2l0dWRlJ11cbl07XG5cbmV4cG9ydCBjb25zdCBBTFRJVFVERV9GSUVMRFMgPSBbJ2FsdCcsICdhbHRpdHVkZSddO1xuZXhwb3J0IGNvbnN0IFRSSVBfQVJDX0ZJRUxEUyA9IHtcbiAgbGF0MDogJ2JlZ2ludHJpcCcsXG4gIGxuZzA6ICdiZWdpbnRyaXAnLFxuICBsYXQxOiAnZHJvcG9mZicsXG4gIGxuZzE6ICdkcm9wb2ZmJ1xufTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9UWVBFUyA9IGtleU1pcnJvcih7XG4gIHJhbmdlOiBudWxsLFxuICBzZWxlY3Q6IG51bGwsXG4gIGlucHV0OiBudWxsLFxuICB0aW1lUmFuZ2U6IG51bGwsXG4gIG11bHRpU2VsZWN0OiBudWxsLFxuICBwb2x5Z29uOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9WSUVXX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgc2lkZTogbnVsbCxcbiAgZW5sYXJnZWQ6IG51bGwsXG4gIG1pbmlmaWVkOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRklMVEVSX1ZJRVdfVFlQRSA9IEZJTFRFUl9WSUVXX1RZUEVTLnNpZGU7XG5cbmV4cG9ydCB0eXBlIFNDQUxFX1RZUEVTX0RFRiA9IHtcbiAgb3JkaW5hbDogJ29yZGluYWwnO1xuICBxdWFudGlsZTogJ3F1YW50aWxlJztcbiAgcXVhbnRpemU6ICdxdWFudGl6ZSc7XG4gIGxpbmVhcjogJ2xpbmVhcic7XG4gIHNxcnQ6ICdzcXJ0JztcbiAgbG9nOiAnbG9nJztcbiAgcG9pbnQ6ICdwb2ludCc7XG4gIHRocmVzaG9sZDogJ3RocmVzaG9sZCc7XG4gIGN1c3RvbTogJ2N1c3RvbSc7XG4gIGN1c3RvbU9yZGluYWw6ICdjdXN0b21PcmRpbmFsJztcbn07XG5cbmV4cG9ydCBjb25zdCBTQ0FMRV9UWVBFUzogU0NBTEVfVFlQRVNfREVGID0ga2V5TWlycm9yKHtcbiAgb3JkaW5hbDogbnVsbCxcbiAgcXVhbnRpbGU6IG51bGwsXG4gIHF1YW50aXplOiBudWxsLFxuICBsaW5lYXI6IG51bGwsXG4gIHNxcnQ6IG51bGwsXG4gIGxvZzogbnVsbCxcbiAgdGhyZXNob2xkOiBudWxsLFxuICBjdXN0b206IG51bGwsXG4gIGN1c3RvbU9yZGluYWw6IG51bGwsXG4gIC8vIG9yZGluYWwgZG9tYWluIHRvIGxpbmVhciByYW5nZVxuICBwb2ludDogbnVsbFxufSk7XG5leHBvcnQgY29uc3QgU0NBTEVfVFlQRV9OQU1FUzoge1trZXkgaW4ga2V5b2YgU0NBTEVfVFlQRVNfREVGXTogc3RyaW5nfSA9IHtcbiAgb3JkaW5hbDogJ09yZGluYWwnLFxuICBxdWFudGlsZTogJ1F1YW50aWxlJyxcbiAgcXVhbnRpemU6ICdRdWFudGl6ZScsXG4gIGxpbmVhcjogJ0xpbmVhcicsXG4gIHNxcnQ6ICdTcXJ0JyxcbiAgbG9nOiAnTG9nJyxcbiAgdGhyZXNob2xkOiAnVGhyZXNob2xkJyxcbiAgY3VzdG9tOiAnQ3VzdG9tIEJyZWFrcycsXG4gIGN1c3RvbU9yZGluYWw6ICdDdXN0b20gT3JkaW5hbCcsXG4gIHBvaW50OiAnUG9pbnQnXG59O1xuXG5leHBvcnQgdHlwZSBTQ0FMRV9GVU5DX1RZUEUgPSB7XG4gIFtrZXkgaW4ga2V5b2YgU0NBTEVfVFlQRVNfREVGXTogKCkgPT4gbnVtYmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IFNDQUxFX0ZVTkMgPSB7XG4gIFtTQ0FMRV9UWVBFUy5saW5lYXJdOiBzY2FsZUxpbmVhcixcbiAgW1NDQUxFX1RZUEVTLnF1YW50aXplXTogc2NhbGVRdWFudGl6ZSxcbiAgW1NDQUxFX1RZUEVTLnF1YW50aWxlXTogc2NhbGVRdWFudGlsZSxcbiAgW1NDQUxFX1RZUEVTLm9yZGluYWxdOiBzY2FsZU9yZGluYWwsXG4gIFtTQ0FMRV9UWVBFUy5zcXJ0XTogc2NhbGVTcXJ0LFxuICBbU0NBTEVfVFlQRVMubG9nXTogc2NhbGVMb2csXG4gIFtTQ0FMRV9UWVBFUy5wb2ludF06IHNjYWxlUG9pbnQsXG4gIFtTQ0FMRV9UWVBFUy50aHJlc2hvbGRdOiBzY2FsZVRocmVzaG9sZCxcbiAgW1NDQUxFX1RZUEVTLmN1c3RvbV06IHNjYWxlVGhyZXNob2xkLFxuICBbU0NBTEVfVFlQRVMuY3VzdG9tT3JkaW5hbF06IHNjYWxlT3JkaW5hbFxufTtcblxuZXhwb3J0IGNvbnN0IEFMTF9GSUVMRF9UWVBFUyA9IGtleU1pcnJvcih7XG4gIGJvb2xlYW46IG51bGwsXG4gIGRhdGU6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGludGVnZXI6IG51bGwsXG4gIHJlYWw6IG51bGwsXG4gIHN0cmluZzogbnVsbCxcbiAgdGltZXN0YW1wOiBudWxsLFxuICBwb2ludDogbnVsbCxcbiAgYXJyYXk6IG51bGwsXG4gIG9iamVjdDogbnVsbCxcbiAgZ2VvYXJyb3c6IG51bGwsXG4gIGgzOiBudWxsXG59KTtcblxuLy8gRGF0YSBUYWJsZVxuZXhwb3J0IGNvbnN0IFNPUlRfT1JERVIgPSBrZXlNaXJyb3Ioe1xuICBBU0NFTkRJTkc6IG51bGwsXG4gIERFU0NFTkRJTkc6IG51bGwsXG4gIFVOU09SVDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT04gPSBrZXlNaXJyb3Ioe1xuICBTT1JUX0FTQzogbnVsbCxcbiAgU09SVF9ERVM6IG51bGwsXG4gIFVOU09SVDogbnVsbCxcbiAgUElOOiBudWxsLFxuICBVTlBJTjogbnVsbCxcbiAgQ09QWTogbnVsbCxcbiAgRk9STUFUX0NPTFVNTjogbnVsbFxufSk7XG5cbmV4cG9ydCB0eXBlIFRhYmxlT3B0aW9uID0ge1xuICB2YWx1ZTogJ1NPUlRfQVNDJyB8ICdTT1JUX0RFUycgfCAnVU5TT1JUJyB8ICdQSU4nIHwgJ1VOUElOJyB8ICdDT1BZJyB8ICdGT1JNQVRfQ09MVU1OJztcbiAgZGlzcGxheTogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG4gIGNvbmRpdGlvbj86IChwcm9wczogYW55KSA9PiBib29sZWFuO1xufTtcbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT05fTElTVDogVGFibGVPcHRpb25bXSA9IFtcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uU09SVF9BU0MsXG4gICAgZGlzcGxheTogJ1NvcnQgQXNjZW5kaW5nJyxcbiAgICBpY29uOiAnQXJyb3dVcCcsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5zb3J0VGFibGVDb2x1bW4gJiYgcHJvcHMuc29ydE1vZGUgIT09IFNPUlRfT1JERVIuQVNDRU5ESU5HXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlNPUlRfREVTLFxuICAgIGRpc3BsYXk6ICdTb3J0IERlc2NlbmRpbmcnLFxuICAgIGljb246ICdBcnJvd0Rvd24nLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuc29ydFRhYmxlQ29sdW1uICYmIHByb3BzLnNvcnRNb2RlICE9PSBTT1JUX09SREVSLkRFU0NFTkRJTkdcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uVU5TT1JULFxuICAgIGRpc3BsYXk6ICdVbnNvcnQgQ29sdW1uJyxcbiAgICBpY29uOiAnQ2FuY2VsJyxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLmlzU29ydGVkXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlBJTixcbiAgICBkaXNwbGF5OiAnUGluIENvbHVtbicsXG4gICAgaWNvbjogJ1BpbicsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiAhcHJvcHMuaXNQaW5uZWRcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uVU5QSU4sXG4gICAgZGlzcGxheTogJ1VucGluIENvbHVtbicsXG4gICAgaWNvbjogJ0NhbmNlbCcsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5pc1Bpbm5lZFxuICB9LFxuICB7dmFsdWU6IFRBQkxFX09QVElPTi5DT1BZLCBkaXNwbGF5OiAnQ29weSBDb2x1bW4nLCBpY29uOiAnQ2xpcGJvYXJkJ30sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLkZPUk1BVF9DT0xVTU4sXG4gICAgZGlzcGxheTogJ0Zvcm1hdCBDb2x1bW4nLFxuICAgIGljb246ICdIYXNoJyxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLnNldERpc3BsYXlGb3JtYXRcbiAgfVxuXTtcblxuY29uc3QgWUVMTE9XID0gJzI0OCwgMTk0LCAyOCc7XG5jb25zdCBQSU5LID0gJzI0MiwgMTUyLCAxNjMnO1xuY29uc3QgUFVSUExFID0gJzE2MCwgMTA2LCAyMDYnO1xuY29uc3QgQkxVRSA9ICcxNDAsIDIxMCwgMjA1JztcbmNvbnN0IEJMVUUyID0gJzEwNiwgMTYwLCAyMDYnO1xuY29uc3QgQkxVRTMgPSAnMCwgMTcyLCAyMzcnO1xuY29uc3QgR1JFRU4gPSAnMTA2LCAxNjAsIDU2JztcbmNvbnN0IEdSRUVOMiA9ICc3NCwgMTY1LCAxNTAnO1xuY29uc3QgUkVEID0gJzIzNywgODgsIDEwNic7XG5jb25zdCBPUkFOR0UgPSAnMjMxLCAxMTAsIDU4JztcblxuZXhwb3J0IGNvbnN0IEZJRUxEX1RZUEVfRElTUExBWSA9IHtcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXToge1xuICAgIGxhYmVsOiAnYm9vbCcsXG4gICAgY29sb3I6IFBJTktcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXToge1xuICAgIGxhYmVsOiAnZGF0ZScsXG4gICAgY29sb3I6IFBVUlBMRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb25dOiB7XG4gICAgbGFiZWw6ICdnZW8nLFxuICAgIGNvbG9yOiBCTFVFMlxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2Fycm93XToge1xuICAgIGxhYmVsOiAnZ2VvJyxcbiAgICBjb2xvcjogQkxVRTJcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXToge1xuICAgIGxhYmVsOiAnaW50JyxcbiAgICBjb2xvcjogWUVMTE9XXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMucmVhbF06IHtcbiAgICBsYWJlbDogJ2Zsb2F0JyxcbiAgICBjb2xvcjogWUVMTE9XXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuc3RyaW5nXToge1xuICAgIGxhYmVsOiAnc3RyaW5nJyxcbiAgICBjb2xvcjogQkxVRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IHtcbiAgICBsYWJlbDogJ3RpbWUnLFxuICAgIGNvbG9yOiBHUkVFTlxuICB9LFxuICAvLyBmaWVsZCBwYWlyc1xuICBbQUxMX0ZJRUxEX1RZUEVTLnBvaW50XToge1xuICAgIGxhYmVsOiAncG9pbnQnLFxuICAgIGNvbG9yOiBCTFVFM1xuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmFycmF5XToge1xuICAgIGxhYmVsOiAnYXJyYXknLFxuICAgIGNvbG9yOiBPUkFOR0VcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5vYmplY3RdOiB7XG4gICAgbGFiZWw6ICdvYmplY3QnLFxuICAgIGNvbG9yOiBHUkVFTjJcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5oM106IHtcbiAgICBsYWJlbDogJ2gzJyxcbiAgICBjb2xvcjogQkxVRVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfQ09MT1JTID0ge1xuICBkZWZhdWx0OiBSRURcbn07XG5leHBvcnQgY29uc3QgSElHSExJR0hfQ09MT1JfM0Q6IFJHQkFDb2xvciA9IFsyNTUsIDI1NSwgMjU1LCA2MF07XG5leHBvcnQgY29uc3QgQ0hBTk5FTF9TQ0FMRVMgPSBrZXlNaXJyb3Ioe1xuICBjb2xvcjogbnVsbCxcbiAgcmFkaXVzOiBudWxsLFxuICBzaXplOiBudWxsLFxuICBjb2xvckFnZ3I6IG51bGwsXG4gIHNpemVBZ2dyOiBudWxsLFxuICBhbmdsZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBBR0dSRUdBVElPTl9UWVBFUzoge1xuICAvLyBkZWZhdWx0XG4gIGNvdW50OiAnY291bnQnO1xuICAvLyBsaW5lYXJcbiAgYXZlcmFnZTogJ2F2ZXJhZ2UnO1xuICBtYXhpbXVtOiAnbWF4aW11bSc7XG4gIG1pbmltdW06ICdtaW5pbXVtJztcbiAgbWVkaWFuOiAnbWVkaWFuJztcbiAgc3RkZXY6ICdzdGRldic7XG4gIHN1bTogJ3N1bSc7XG4gIHZhcmlhbmNlOiAndmFyaWFuY2UnO1xuICAvLyBvcmRpbmFsXG4gIG1vZGU6ICdtb2RlJztcbiAgY291bnRVbmlxdWU6ICdjb3VudFVuaXF1ZSc7XG59ID0ge1xuICAvLyBkZWZhdWx0XG4gIGNvdW50OiAnY291bnQnLFxuICAvLyBsaW5lYXJcbiAgYXZlcmFnZTogJ2F2ZXJhZ2UnLFxuICBtYXhpbXVtOiAnbWF4aW11bScsXG4gIG1pbmltdW06ICdtaW5pbXVtJyxcbiAgbWVkaWFuOiAnbWVkaWFuJyxcbiAgc3RkZXY6ICdzdGRldicsXG4gIHN1bTogJ3N1bScsXG4gIHZhcmlhbmNlOiAndmFyaWFuY2UnLFxuICAvLyBvcmRpbmFsXG4gIG1vZGU6ICdtb2RlJyxcbiAgY291bnRVbmlxdWU6ICdjb3VudFVuaXF1ZSdcbn07XG5cbmV4cG9ydCBjb25zdCBBR0dSRUdBVElPTl9UWVBFX09QVElPTlM6IHtpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nfVtdID0gT2JqZWN0LmVudHJpZXMoXG4gIEFHR1JFR0FUSU9OX1RZUEVTXG4pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICBpZDoga2V5LFxuICBsYWJlbDpcbiAgICBrZXkgPT09ICdzdGRldidcbiAgICAgID8gJ1N0ZCBEZXZpYXRpb24nXG4gICAgICA6IGtleSA9PT0gJ2NvdW50VW5pcXVlJ1xuICAgICAgPyAnQ291bnQgVW5pcXVlJ1xuICAgICAgOiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICA/IHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSlcbiAgICAgIDogdmFsdWVcbn0pKTtcblxuZXhwb3J0IGNvbnN0IGxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gIFtDSEFOTkVMX1NDQUxFUy5yYWRpdXNdOiBbU0NBTEVfVFlQRVMuc3FydF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgW0NIQU5ORUxfU0NBTEVTLmFuZ2xlXTogW1NDQUxFX1RZUEVTLmxpbmVhcl1cbn07XG5cbmNvbnN0IERFRkFVTFRfQUdHUkVHQVRJT05fQ09MT1JfU0NBTEVTID0gW1xuICBTQ0FMRV9UWVBFUy5xdWFudGl6ZSxcbiAgU0NBTEVfVFlQRVMucXVhbnRpbGUsXG4gIFNDQUxFX1RZUEVTLmN1c3RvbVxuXTtcblxuZXhwb3J0IGNvbnN0IGxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXTogW1xuICAgIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLm1lZGlhbixcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdGRldixcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2UsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMuY291bnRcbiAgXS5yZWR1Y2UoKHByZXYsIGN1cikgPT4ge1xuICAgIHByZXZbY3VyXSA9IERFRkFVTFRfQUdHUkVHQVRJT05fQ09MT1JfU0NBTEVTO1xuICAgIHJldHVybiBwcmV2O1xuICB9LCB7fSksXG5cbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW1dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tZWRpYW5dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5zdGRldl06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN1bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXVxuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgb3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsLCBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnJhZGl1c106IFtTQ0FMRV9UWVBFUy5wb2ludF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW1NDQUxFX1RZUEVTLnBvaW50XVxufTtcblxuZXhwb3J0IGNvbnN0IG9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgLy8gW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsLCBTQ0FMRV9UWVBFUy5saW5lYXJdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tb2RlXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudFVuaXF1ZV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGVdXG4gIH0sXG5cbiAgLy8gQ3VycmVudGx5IGRvZXNuJ3Qgc3VwcG9ydCB5ZXRcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge31cbn07XG5cbmV4cG9ydCBjb25zdCBub3RTdXBwb3J0ZWRTY2FsZU9wdHMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtdLFxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXTogW10sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW11cbn07XG5cbmV4cG9ydCBjb25zdCBub3RTdXBwb3J0QWdnck9wdHMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7fSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge31cbn07XG5cbi8qKlxuICogRGVmYXVsdCBhZ2dyZWdhdGlvbiBhcmUgYmFzZWQgb24gb2N1bnRcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUdHUkVHQVRJT04gPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmNvdW50XTogREVGQVVMVF9BR0dSRUdBVElPTl9DT0xPUl9TQ0FMRVNcbiAgfSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudF06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ11cbiAgfVxufTtcblxuLyoqXG4gKiBEZWZpbmUgd2hhdCB0eXBlIG9mIHNjYWxlIG9wZXJhdGlvbiBpcyBhbGxvd2VkIG9uIGVhY2ggdHlwZSBvZiBmaWVsZHNcbiAqL1xuZXhwb3J0IGNvbnN0IEZJRUxEX09QVFMgPSB7XG4gIFtBTExfRklFTERfVFlQRVMuc3RyaW5nXToge1xuICAgIHR5cGU6ICdjYXRlZ29yaWNhbCcsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMucmVhbF06IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLmxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFXG4gICAgICBdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IHtcbiAgICB0eXBlOiAndGltZScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5ub3RTdXBwb3J0QWdnck9wdHNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVfVElNRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXToge1xuICAgIHR5cGU6ICdudW1lcmljYWwnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi57XG4gICAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAgIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtcbiAgICAgICAgICAuLi5saW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zW0NIQU5ORUxfU0NBTEVTLmNvbG9yXSxcbiAgICAgICAgICBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAuLi5saW5lYXJGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuTk9ORSxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREVDSU1BTCxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuUEVSQ0VOVEFHRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXToge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ub3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5vcmRpbmFsRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbVE9PTFRJUF9GT1JNQVRfVFlQRVMuTk9ORSwgVE9PTFRJUF9GT1JNQVRfVFlQRVMuQk9PTEVBTl1cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuZGF0ZV06IHtcbiAgICB0eXBlOiAndGltZScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1RPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb25dOiB7XG4gICAgdHlwZTogJ2dlb21ldHJ5JyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubm90U3VwcG9ydGVkU2NhbGVPcHRzLFxuICAgICAgLi4ubm90U3VwcG9ydEFnZ3JPcHRzXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogKCkgPT4gJy4uLicsXG4gICAgICB0b29sdGlwOiBbXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9hcnJvd106IHtcbiAgICB0eXBlOiAnZ2VvbWV0cnknLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5ub3RTdXBwb3J0ZWRTY2FsZU9wdHMsXG4gICAgICAuLi5ub3RTdXBwb3J0QWdnck9wdHNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiAoKSA9PiAnLi4uJyxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLm9iamVjdF06IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge30sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6ICgpID0+ICcuLi4nLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuYXJyYXldOiB7XG4gICAgdHlwZTogJ251bWVyaWNhbCcsXG4gICAgc2NhbGU6IHt9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiAoKSA9PiAnLi4uJyxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmgzXToge1xuICAgIHR5cGU6ICdoMycsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm5vdFN1cHBvcnRlZFNjYWxlT3B0cyxcbiAgICAgIC4uLm5vdFN1cHBvcnRBZ2dyT3B0c1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6ICgpID0+ICcuLi4nLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFMgPSBPYmplY3Qua2V5cyhDSEFOTkVMX1NDQUxFUykucmVkdWNlKFxuICAoYWNjdSwga2V5KSA9PiAoe1xuICAgIC4uLmFjY3UsXG4gICAgW2tleV06IE9iamVjdC5rZXlzKEZJRUxEX09QVFMpLmZpbHRlcihcbiAgICAgIGZ0ID0+IEZJRUxEX09QVFNbZnRdLnNjYWxlW2tleV0gJiYgT2JqZWN0LmtleXMoRklFTERfT1BUU1tmdF0uc2NhbGVba2V5XSkubGVuZ3RoXG4gICAgKVxuICB9KSxcbiAge30gYXMge1tpZDogc3RyaW5nXTogc3RyaW5nW119XG4pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9DT0xPUiA9IHtcbiAgdHJpcEFyYzogJyM5MjI2QzYnLFxuICBiZWdpbnRyaXBfbGF0OiAnIzFFOTZCRScsXG4gIGRyb3BvZmZfbGF0OiAnI0ZGOTkxRicsXG4gIHJlcXVlc3RfbGF0OiAnIzUyQTM1Mydcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xBWUVSX0NPTE9SX1BBTEVUVEUgPSAnR2xvYmFsIFdhcm1pbmcnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURV9TVEVQUyA9IDY7XG5cbi8vIGxldCB1c2VyIHBhc3MgaW4gZGVmYXVsdCB0b29sdGlwIGZpZWxkc1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVE9PTFRJUF9GSUVMRFM6IGFueVtdID0gW107XG5cbmV4cG9ydCBjb25zdCBOT19WQUxVRV9DT0xPUjogUkdCQUNvbG9yID0gWzAsIDAsIDAsIDBdO1xuLyoqIFZpc2libGUgZ3JheSB1c2VkIHdoZW4gYSBjb2xvciBmaWVsZCBoYXMgbm8gdmFsdWUgYW5kIG1pc3NpbmcgZmVhdHVyZXMgc2hvdWxkIHN0YXkgb24gdGhlIG1hcC4gKi9cbmV4cG9ydCBjb25zdCBNSVNTSU5HX1ZBTFVFX0NPTE9SOiBSR0JBQ29sb3IgPSBbMTI4LCAxMjgsIDEyOCwgMjU1XTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUElDS0lOR19SQURJVVMgPSAzO1xuXG5leHBvcnQgY29uc3QgT1ZFUkxBWV9CTEVORElOR1MgPSB7XG4gIG5vcm1hbDoge1xuICAgIGxhYmVsOiAnb3ZlcmxheUJsZW5kaW5nLm5vcm1hbCcsXG4gICAgdmFsdWU6ICdub3JtYWwnXG4gIH0sXG4gIHNjcmVlbjoge1xuICAgIGxhYmVsOiAnb3ZlcmxheUJsZW5kaW5nLnNjcmVlbicsXG4gICAgdmFsdWU6ICdzY3JlZW4nXG4gIH0sXG4gIGRhcmtlbjoge1xuICAgIGxhYmVsOiAnb3ZlcmxheUJsZW5kaW5nLmRhcmtlbicsXG4gICAgdmFsdWU6ICdkYXJrZW4nXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMQVlFUl9CTEVORElOR1MgPSB7XG4gIGFkZGl0aXZlOiB7XG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLmFkZGl0aXZlJyxcbiAgICBibGVuZEZ1bmM6IFsnU1JDX0FMUEhBJywgJ0RTVF9BTFBIQSddLFxuICAgIGJsZW5kRXF1YXRpb246ICdGVU5DX0FERCdcbiAgfSxcbiAgbm9ybWFsOiB7XG4gICAgLy8gcmVmZXJlbmNlIHRvXG4gICAgLy8gaHR0cHM6Ly9saW1udS5jb20vd2ViZ2wtYmxlbmRpbmcteW91cmUtcHJvYmFibHktd3JvbmcvXG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLm5vcm1hbCcsXG4gICAgYmxlbmRGdW5jOiBbJ1NSQ19BTFBIQScsICdPTkVfTUlOVVNfU1JDX0FMUEhBJywgJ09ORScsICdPTkVfTUlOVVNfU1JDX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogWydGVU5DX0FERCcsICdGVU5DX0FERCddXG4gIH0sXG4gIHN1YnRyYWN0aXZlOiB7XG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLnN1YnRyYWN0aXZlJyxcbiAgICBibGVuZEZ1bmM6IFsnT05FJywgJ09ORV9NSU5VU19EU1RfQ09MT1InLCAnU1JDX0FMUEhBJywgJ0RTVF9BTFBIQSddLFxuICAgIGJsZW5kRXF1YXRpb246IFsnRlVOQ19TVUJUUkFDVCcsICdGVU5DX0FERCddXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBNQVhfREVGQVVMVF9UT09MVElQUyA9IDU7XG5cbmV4cG9ydCBjb25zdCBSRVNPTFVUSU9OUyA9IGtleU1pcnJvcih7XG4gIE9ORV9YOiBudWxsLFxuICBUV09fWDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSU1HX1JBVElPUyA9IGtleU1pcnJvcih7XG4gIFNDUkVFTjogbnVsbCxcbiAgRk9VUl9CWV9USFJFRTogbnVsbCxcbiAgU0lYVEVFTl9CWV9OSU5FOiBudWxsLFxuICBDVVNUT006IG51bGxcbn0pO1xuXG5leHBvcnQgdHlwZSBJbWFnZVJhdGlvT3B0aW9uID0ge1xuICBpZDoga2V5b2YgdHlwZW9mIEVYUE9SVF9JTUdfUkFUSU9TO1xuICBsYWJlbDogc3RyaW5nO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBnZXRTaXplOiAoc2NyZWVuVzogbnVtYmVyLCBzY3JlZW5IOiBudW1iZXIpID0+IHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn07XG59O1xuXG5leHBvcnQgY29uc3QgU2NyZWVuUmF0aW9PcHRpb246IEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBFWFBPUlRfSU1HX1JBVElPUy5TQ1JFRU4sXG4gIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW9PcmlnaW5hbFNjcmVlbicsXG4gIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe3dpZHRoOiBzY3JlZW5XLCBoZWlnaHQ6IHNjcmVlbkh9KVxufTtcbmV4cG9ydCBjb25zdCBDdXN0b21SYXRpb09wdGlvbjogSW1hZ2VSYXRpb09wdGlvbiA9IHtcbiAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLkNVU1RPTSxcbiAgaGlkZGVuOiB0cnVlLFxuICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvQ3VzdG9tJyxcbiAgZ2V0U2l6ZTogKG1hcFcsIG1hcEgpID0+ICh7d2lkdGg6IG1hcFcsIGhlaWdodDogbWFwSH0pXG59O1xuZXhwb3J0IGNvbnN0IEZvdXJCeVRocmVlUmF0aW9PcHRpb246IEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBFWFBPUlRfSU1HX1JBVElPUy5GT1VSX0JZX1RIUkVFLFxuICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvNF8zJyxcbiAgZ2V0U2l6ZTogc2NyZWVuVyA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgIGhlaWdodDogTWF0aC5yb3VuZChzY3JlZW5XICogMC43NSlcbiAgfSlcbn07XG5leHBvcnQgY29uc3QgU2l4dGVlbkJ5TmluZVJhdGlvT3B0aW9uOiBJbWFnZVJhdGlvT3B0aW9uID0ge1xuICBpZDogRVhQT1JUX0lNR19SQVRJT1MuU0lYVEVFTl9CWV9OSU5FLFxuICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvMTZfOScsXG4gIGdldFNpemU6IHNjcmVlblcgPT4gKHtcbiAgICB3aWR0aDogc2NyZWVuVyxcbiAgICBoZWlnaHQ6IE1hdGgucm91bmQoc2NyZWVuVyAqIDAuNTYyNSlcbiAgfSlcbn07XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSU1HX1JBVElPX09QVElPTlM6IFJlYWRvbmx5QXJyYXk8SW1hZ2VSYXRpb09wdGlvbj4gPSBbXG4gIFNjcmVlblJhdGlvT3B0aW9uLFxuICBGb3VyQnlUaHJlZVJhdGlvT3B0aW9uLFxuICBTaXh0ZWVuQnlOaW5lUmF0aW9PcHRpb24sXG4gIEN1c3RvbVJhdGlvT3B0aW9uXG5dO1xuXG5leHBvcnQgdHlwZSBFeHBvcnRSZXNvbHV0aW9uT3B0aW9uID1cbiAgfCBrZXlvZiB0eXBlb2YgUkVTT0xVVElPTlNcbiAgfCAnMTI4MHg3MjAnXG4gIHwgJzE5MjB4MTA4MCdcbiAgfCAnMjU2MHgxNDQwJ1xuICB8ICcxNjAweDkwMCdcbiAgfCAnMTAyNHg3NjgnXG4gIHwgJzEyODB4OTYwJ1xuICB8ICcxNjAweDEyMDAnXG4gIHwgJzE5MjB4MTQ0MCc7XG5cbmV4cG9ydCB0eXBlIEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6IEV4cG9ydFJlc29sdXRpb25PcHRpb247XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGF2YWlsYWJsZTogYm9vbGVhbjtcbiAgc2NhbGU/OiBudW1iZXI7XG4gIGdldFNpemU6IChzY3JlZW5XOiBudW1iZXIsIHNjcmVlbkg6IG51bWJlcikgPT4ge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfTtcbn07XG5cbmV4cG9ydCBjb25zdCBPbmVYUmVzb2x1dGlvbk9wdGlvbjogSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogUkVTT0xVVElPTlMuT05FX1gsXG4gIGxhYmVsOiAnMXgnLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIHNjYWxlOiAxLFxuICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICB3aWR0aDogc2NyZWVuVyxcbiAgICBoZWlnaHQ6IHNjcmVlbkhcbiAgfSlcbn07XG5cbmV4cG9ydCBjb25zdCBUd29YUmVzb2x1dGlvbk9wdGlvbjogSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogUkVTT0xVVElPTlMuVFdPX1gsXG4gIGxhYmVsOiAnMngnLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIHNjYWxlOiAyLFxuICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICB3aWR0aDogc2NyZWVuVyAqIDIsXG4gICAgaGVpZ2h0OiBzY3JlZW5IICogMlxuICB9KVxufTtcblxuLy8gRml4ZWQgZGltZW5zaW9uIG9wdGlvbnNcbmV4cG9ydCBjb25zdCBSZXNvbHV0aW9uMTkyMHgxMDgwT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiAnMTkyMHgxMDgwJyxcbiAgbGFiZWw6ICcxOTIwIMOXIDEwODAgKDE2OjkpJyxcbiAgYXZhaWxhYmxlOiB0cnVlLFxuICBnZXRTaXplOiAoKSA9PiAoe3dpZHRoOiAxOTIwLCBoZWlnaHQ6IDEwODB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24xMjgweDcyME9wdGlvbjogSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogJzEyODB4NzIwJyxcbiAgbGFiZWw6ICcxMjgwIMOXIDcyMCAoMTY6OSknLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIGdldFNpemU6ICgpID0+ICh7d2lkdGg6IDEyODAsIGhlaWdodDogNzIwfSlcbn07XG5cbmV4cG9ydCBjb25zdCBSZXNvbHV0aW9uMjU2MHgxNDQwT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiAnMjU2MHgxNDQwJyxcbiAgbGFiZWw6ICcyNTYwIMOXIDE0NDAgKDE2OjkpJyxcbiAgYXZhaWxhYmxlOiB0cnVlLFxuICBnZXRTaXplOiAoKSA9PiAoe3dpZHRoOiAyNTYwLCBoZWlnaHQ6IDE0NDB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24xNjAweDkwME9wdGlvbjogSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogJzE2MDB4OTAwJyxcbiAgbGFiZWw6ICcxNjAwIMOXIDkwMCAoMTY6OSknLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIGdldFNpemU6ICgpID0+ICh7d2lkdGg6IDE2MDAsIGhlaWdodDogOTAwfSlcbn07XG5cbmV4cG9ydCBjb25zdCBSZXNvbHV0aW9uMTAyNHg3NjhPcHRpb246IEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6ICcxMDI0eDc2OCcsXG4gIGxhYmVsOiAnMTAyNCDDlyA3NjggKDQ6MyknLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIGdldFNpemU6ICgpID0+ICh7d2lkdGg6IDEwMjQsIGhlaWdodDogNzY4fSlcbn07XG5cbmV4cG9ydCBjb25zdCBSZXNvbHV0aW9uMTI4MHg5NjBPcHRpb246IEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6ICcxMjgweDk2MCcsXG4gIGxhYmVsOiAnMTI4MCDDlyA5NjAgKDQ6MyknLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIGdldFNpemU6ICgpID0+ICh7d2lkdGg6IDEyODAsIGhlaWdodDogOTYwfSlcbn07XG5cbmV4cG9ydCBjb25zdCBSZXNvbHV0aW9uMTYwMHgxMjAwT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiAnMTYwMHgxMjAwJyxcbiAgbGFiZWw6ICcxNjAwIMOXIDEyMDAgKDQ6MyknLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIGdldFNpemU6ICgpID0+ICh7d2lkdGg6IDE2MDAsIGhlaWdodDogMTIwMH0pXG59O1xuXG5leHBvcnQgY29uc3QgUmVzb2x1dGlvbjE5MjB4MTQ0ME9wdGlvbjogSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogJzE5MjB4MTQ0MCcsXG4gIGxhYmVsOiAnMTkyMCDDlyAxNDQwICg0OjMpJyxcbiAgYXZhaWxhYmxlOiB0cnVlLFxuICBnZXRTaXplOiAoKSA9PiAoe3dpZHRoOiAxOTIwLCBoZWlnaHQ6IDE0NDB9KVxufTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUdfUkVTT0xVVElPTl9PUFRJT05TOiBSZWFkb25seUFycmF5PEltYWdlUmVzb2x1dGlvbk9wdGlvbj4gPSBbXG4gIE9uZVhSZXNvbHV0aW9uT3B0aW9uLFxuICBUd29YUmVzb2x1dGlvbk9wdGlvbixcbiAgUmVzb2x1dGlvbjEyODB4NzIwT3B0aW9uLFxuICBSZXNvbHV0aW9uMTkyMHgxMDgwT3B0aW9uLFxuICBSZXNvbHV0aW9uMjU2MHgxNDQwT3B0aW9uLFxuICBSZXNvbHV0aW9uMTYwMHg5MDBPcHRpb24sXG4gIFJlc29sdXRpb24xMDI0eDc2OE9wdGlvbixcbiAgUmVzb2x1dGlvbjEyODB4OTYwT3B0aW9uLFxuICBSZXNvbHV0aW9uMTYwMHgxMjAwT3B0aW9uLFxuICBSZXNvbHV0aW9uMTkyMHgxNDQwT3B0aW9uXG5dO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0RBVEFfVFlQRSA9IGtleU1pcnJvcih7XG4gIENTVjogbnVsbFxuICAvLyBTSEFQRUZJTEU6IG51bGwsXG4gIC8vIEpTT046IG51bGwsXG4gIC8vIEdFT0pTT046IG51bGwsXG4gIC8vIFRPUE9KU09OOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9EQVRBX1RZUEVfT1BUSU9OUyA9IFtcbiAge1xuICAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLkNTVixcbiAgICBsYWJlbDogRVhQT1JUX0RBVEFfVFlQRS5DU1YudG9Mb3dlckNhc2UoKSxcbiAgICBhdmFpbGFibGU6IHRydWVcbiAgfVxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuU0hBUEVGSUxFLFxuICAvLyAgIGxhYmVsOiAnc2hhcGVmaWxlJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH0sXG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5KU09OLFxuICAvLyAgIGxhYmVsOiAnanNvbicsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9LFxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuR0VPSlNPTixcbiAgLy8gICBsYWJlbDogJ2dlb2pzb24nLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfSxcbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLlRPUE9KU09OLFxuICAvLyAgIGxhYmVsOiAndG9wb2pzb24nLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfVxuXTtcblxuLy8gRXhwb3J0IG1hcCB0eXBlc1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfRk9STUFUUyA9IGtleU1pcnJvcih7XG4gIEhUTUw6IG51bGwsXG4gIEpTT046IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0hUTUxfTUFQX01PREVTID0ga2V5TWlycm9yKHtcbiAgUkVBRDogbnVsbCxcbiAgRURJVDogbnVsbFxufSk7XG5cbi8vIEV4cG9ydCBtYXAgb3B0aW9uc1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfRk9STUFUX09QVElPTlMgPSBPYmplY3QuZW50cmllcyhFWFBPUlRfTUFQX0ZPUk1BVFMpLm1hcChcbiAgKGVudHJ5OiBbc3RyaW5nLCBhbnldKSA9PiAoe1xuICAgIGlkOiBlbnRyeVswXSxcbiAgICBsYWJlbDogZW50cnlbMV0udG9Mb3dlckNhc2UoKSxcbiAgICBhdmFpbGFibGU6IHRydWVcbiAgfSlcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIVE1MTWFwTW9kZVRpbGVVcmwobW9kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBodHRwczovL2QxYTNmNHNwYXp6cnA0LmNsb3VkZnJvbnQubmV0L2tlcGxlci5nbC9kb2N1bWVudGF0aW9uL21hcC0ke21vZGUudG9Mb3dlckNhc2UoKX0tbW9kZS5wbmdgO1xufVxuXG5leHBvcnQgY29uc3QgRVhQT1JUX0hUTUxfTUFQX01PREVfT1BUSU9OUyA9IE9iamVjdC5lbnRyaWVzKEVYUE9SVF9IVE1MX01BUF9NT0RFUykubWFwKFxuICAoZW50cnk6IFtzdHJpbmcsIGFueV0pID0+ICh7XG4gICAgaWQ6IGVudHJ5WzBdLFxuICAgIGxhYmVsOiBgbW9kYWwuZXhwb3J0TWFwLmh0bWwuJHtlbnRyeVsxXS50b0xvd2VyQ2FzZSgpfWAsXG4gICAgYXZhaWxhYmxlOiB0cnVlLFxuICAgIHVybDogZ2V0SFRNTE1hcE1vZGVUaWxlVXJsKGVudHJ5WzFdKVxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVVJRF9DT1VOVCA9IDY7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9NRVNTQUdFID0gJ01FU1NBR0VfTk9UX1BST1ZJREVEJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgaW5mbzogbnVsbCxcbiAgZXJyb3I6IG51bGwsXG4gIHdhcm5pbmc6IG51bGwsXG4gIHN1Y2Nlc3M6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTID0ga2V5TWlycm9yKHtcbiAgZ2xvYmFsOiBudWxsLFxuICBmaWxlOiBudWxsXG59KTtcblxuLy8gTWluaW11bSB0aW1lIGJldHdlZW4gaWRlbnRpY2FsIG5vdGlmaWNhdGlvbnMgYWJvdXQgZGVjay5nbCBlcnJvcnNcbmV4cG9ydCBjb25zdCBUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSA9IDMzMDtcblxuLy8gQW5pbWF0aW9uXG5leHBvcnQgY29uc3QgQkFTRV9TUEVFRCA9IDYwMDtcbmV4cG9ydCBjb25zdCBGUFMgPSA2MDtcblxuLyoqXG4gKiA0IEFuaW1hdGlvbiBXaW5kb3cgVHlwZXNcbiAqIDEuIGZyZWVcbiAqICB8LT4gIHwtPlxuICogQ3VycmVudCB0aW1lIGlzIGEgZml4ZWQgcmFuZ2UsIGFuaW1hdGlvbiBjb250cm9sbGVyIGNhbGxzIG5leHQgYW5pbWF0aW9uIGZyYW1lcyBjb250aW51b3VzbHkgdG8gYW5pbWF0aW9uIGEgbW92aW5nIHdpbmRvd1xuICogVGhlIGluY3JlbWVudCBpZCBiYXNlZCBvbiBkb21haW4gLyBCQVNFX1NQRUVEICogU1BFRURcbiAqXG4gKiAyLiBpbmNyZW1lbnRhbFxuICogfCAgICB8LT5cbiAqIFNhbWUgYXMgZnJlZSwgY3VycmVudCB0aW1lIGlzIGEgZ3Jvd2luZyByYW5nZSwgb25seSB0aGUgbWF4IHZhbHVlIG9mIHJhbmdlIGluY3JlbWVudCBkdXJpbmcgYW5pbWF0aW9uLlxuICogVGhlIGluY3JlbWVudCBpcyBhbHNvIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDMuIHBvaW50XG4gKiBvIC0+IG9cbiAqIEN1cnJlbnQgdGltZSBpcyBhIHBvaW50LCBhbmltYXRpb24gY29udHJvbGxlciBjYWxscyBuZXh0IGFuaW1hdGlvbiBmcmFtZSBjb250aW51b3VzbHkgdG8gYW5pbWF0aW9uIGEgbW92aW5nIHBvaW50XG4gKiBUaGUgaW5jcmVtZW50IGlzIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDQuIGludGVydmFsXG4gKiBvIH4+IG9cbiAqIEN1cnJlbnQgdGltZSBpcyBhIHBvaW50LiBBbiBhcnJheSBvZiBzb3J0ZWQgdGltZSBzdGVwcyBuZWVkIHRvIGJlIHByb3ZpZGVkLlxuICogYW5pbWF0aW9uIGNvbnRyb2xsZXIgY2FsbHMgbmV4dCBhbmltYXRpb24gYXQgYSBpbnRlcnZhbCB3aGVuIHRoZSBwb2ludCBqdW1wcyB0byB0aGUgbmV4dCBzdGVwXG4gKi9cbmV4cG9ydCBjb25zdCBBTklNQVRJT05fV0lORE9XID0ga2V5TWlycm9yKHtcbiAgZnJlZTogbnVsbCxcbiAgaW5jcmVtZW50YWw6IG51bGwsXG4gIHBvaW50OiBudWxsLFxuICBpbnRlcnZhbDogbnVsbFxufSk7XG5leHBvcnQgY29uc3QgREVGQVVMVF9USU1FX0ZPUk1BVCA9ICdNTS9ERC9ZWSBISDptbTpzc2EnO1xuZXhwb3J0IGNvbnN0IFNQRUVEX0NPTlRST0xfUkFOR0U6IFtudW1iZXIsIG51bWJlcl0gPSBbMCwgMTBdO1xuZXhwb3J0IGNvbnN0IFNQRUVEX0NPTlRST0xfU1RFUCA9IDAuMDAxO1xuXG4vLyBHZW9jb2RlclxuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0RBVEFTRVRfTkFNRSA9ICdnZW9jb2Rlcl9kYXRhc2V0JztcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9MQVlFUl9JRCA9ICdnZW9jb2Rlcl9sYXllcic7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfR0VPX09GRlNFVCA9IDAuMDU7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfSUNPTl9DT0xPUjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzI1NSwgMCwgMF07XG4vLyBCYXNlIGljb24gc2l6ZSBiZWZvcmUgYW5jaG9yIG5vcm1hbGl6YXRpb24uIFRoZSBnZW9jb2RlciBwaW4gaWNvbiBpcyBib3R0b20tYW5jaG9yZWRcbi8vIGFuZCBzY2FsZWQgdG8gZml0IHRoZSBTY2F0dGVycGxvdExheWVyIHVuaXQgY2lyY2xlICh+MC41eCksIHNvIHRoZSByZW5kZXJlZCBzaXplIGlzXG4vLyBjb21wZW5zYXRlZCBoZXJlICg4MCAqIDIgPSAxNjApLlxuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0lDT05fU0laRSA9IDE2MDtcblxuLy8gRWRpdG9yXG5leHBvcnQgY29uc3QgRURJVE9SX0xBWUVSX0lEID0gJ2tlcGxlcl9lZGl0b3JfbGF5ZXInO1xuZXhwb3J0IGNvbnN0IEVESVRPUl9MQVlFUl9QSUNLSU5HX1JBRElVUyA9IDY7XG5leHBvcnQgY29uc3QgRURJVE9SX01PREVTID0ge1xuICBEUkFXX1BPTFlHT046ICdEUkFXX1BPTFlHT04nLFxuICBEUkFXX1JFQ1RBTkdMRTogJ0RSQVdfUkVDVEFOR0xFJyxcbiAgRFJBV19DSVJDTEU6ICdEUkFXX0NJUkNMRScsXG4gIERSQVdfTElORVNUUklORzogJ0RSQVdfTElORVNUUklORycsXG4gIERSQVdfUE9JTlQ6ICdEUkFXX1BPSU5UJyxcbiAgRURJVDogJ0VESVRfVkVSVEVYJ1xufTtcblxuZXhwb3J0IGNvbnN0IEVESVRPUl9EUkFXX01PREVTOiBzdHJpbmdbXSA9IFtcbiAgRURJVE9SX01PREVTLkRSQVdfUE9MWUdPTixcbiAgRURJVE9SX01PREVTLkRSQVdfUkVDVEFOR0xFLFxuICBFRElUT1JfTU9ERVMuRFJBV19DSVJDTEUsXG4gIEVESVRPUl9NT0RFUy5EUkFXX0xJTkVTVFJJTkcsXG4gIEVESVRPUl9NT0RFUy5EUkFXX1BPSU5UXG5dO1xuXG5leHBvcnQgY29uc3QgUExPVF9UWVBFUyA9IGtleU1pcnJvcih7XG4gIGhpc3RvZ3JhbTogbnVsbCxcbiAgbGluZUNoYXJ0OiBudWxsXG59KTtcblxuLy8gRmlsdGVyXG5leHBvcnQgY29uc3QgSU5JVF9GSUxURVJfSVRFTVNfSU5fRFJPUERPV04gPSAxMDA7XG5cbi8vIEdQVSBGaWx0ZXJpbmdcbi8qKlxuICogTWF4IG51bWJlciBvZiBmaWx0ZXIgdmFsdWUgYnVmZmVycyB0aGF0IGRlY2suZ2wgcHJvdmlkZXNcbiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9HUFVfRklMVEVSUyA9IDQ7XG5leHBvcnQgY29uc3QgTUFQX1RIVU1CTkFJTF9ESU1FTlNJT04gPSB7XG4gIHdpZHRoOiAzMDAsXG4gIGhlaWdodDogMjAwXG59O1xuXG5leHBvcnQgY29uc3QgTUFQX0lORk9fQ0hBUkFDVEVSID0ge1xuICB0aXRsZTogMTAwLFxuICBkZXNjcmlwdGlvbjogMTAwXG59O1xuXG4vLyBMb2FkIGRhdGFcbmV4cG9ydCBjb25zdCBMT0FESU5HX01FVEhPRFMgPSBrZXlNaXJyb3Ioe1xuICB1cGxvYWQ6IG51bGwsXG4gIHN0b3JhZ2U6IG51bGwsXG4gIHRpbGVzZXQ6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9GRUFUVVJFX0ZMQUdTID0ge307XG5cbmV4cG9ydCBjb25zdCBEQVRBU0VUX0ZPUk1BVFMgPSBrZXlNaXJyb3Ioe1xuICByb3c6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGNzdjogbnVsbCxcbiAga2VwbGVyZ2w6IG51bGwsXG4gIGFycm93OiBudWxsLFxuICBkdWNrZGI6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTUFQX0NPTlRST0xTID0ga2V5TWlycm9yKHtcbiAgdmlzaWJsZUxheWVyczogbnVsbCxcbiAgbWFwTGVnZW5kOiBudWxsLFxuICB0b2dnbGUzZDogbnVsbCxcbiAgc3BsaXRNYXA6IG51bGwsXG4gIG1hcERyYXc6IG51bGwsXG4gIG1hcExvY2FsZTogbnVsbCxcbiAgbWFwVGhlbWU6IG51bGwsXG4gIGVmZmVjdDogbnVsbCxcbiAgYW5ub3RhdGlvbjogbnVsbFxufSk7XG5cbmV4cG9ydCBlbnVtIE1hcFZpZXdNb2RlIHtcbiAgTU9ERV8yRCA9ICdNT0RFXzJEJyxcbiAgTU9ERV8zRCA9ICdNT0RFXzNEJyxcbiAgTU9ERV9HTE9CRSA9ICdNT0RFX0dMT0JFJ1xufVxuXG4vKipcbiAqIE1pbmltdW0gem9vbSBsZXZlbCBhbGxvd2VkIGluIGdsb2JlIG1vZGUuIE5lZ2F0aXZlIHZhbHVlcyBsZXQgdGhlIHVzZXIgem9vbVxuICogb3V0IGZ1cnRoZXIgdGhhbiB0aGUgd2ViLW1lcmNhdG9yIGRlZmF1bHQgb2YgMCwgc28gdGhlIHdob2xlIGdsb2JlIGNhbiBiZVxuICogcHVsbGVkIGJhY2sgdG8gYXBwZWFyIHNtYWxsZXIgb24gc2NyZWVuLlxuICovXG5leHBvcnQgY29uc3QgR0xPQkVfTUlOX1pPT00gPSAyO1xuXG4vKipcbiAqIE1heGltdW0gem9vbSBpbiBnbG9iZSBtb2RlLlxuICpcbiAqIFRoZSBwcmV2aW91cyBcImVtcHR5IHJlY3RhbmdsZXNcIiBhdCBoaWdoIHpvb20gd2VyZSBjYXVzZWQgYnkgdGhlIHZlY3RvciBiYXNlbWFwXG4gKiBsYXllciBkZWNsYXJpbmcgYG1heFpvb206IDIzYCB3aGlsZSB0aGUgcmF3IHRpbGUgZW5kcG9pbnRzIG9ubHkgaGF2ZSBkYXRhIHRvXG4gKiB6MTYgKG1hcGJveC1zdHJlZXRzLXY4KSAvIHoxNCAoQ0FSVE8pIOKAlCBkZWNrIHRoZW4gcmVxdWVzdGVkIG5vbi1leGlzdGVudCB0aWxlc1xuICogdGhhdCA0MDQuIFRoYXQgaXMgZml4ZWQgaW4gYGdldEdsb2JlQmFzZUxheWVyc2AgYnkgc2V0dGluZyBgbWF4Wm9vbWAgdG8gZWFjaFxuICogc291cmNlJ3MgdHJ1ZSBkYXRhIG1heCBzbyBkZWNrIG92ZXJ6b29tcyBpbnN0ZWFkLlxuICpcbiAqIFRoZSByZW1haW5pbmcgcHJhY3RpY2FsIGNlaWxpbmcgaXMgZmxvYXQzMiBwcmVjaXNpb246IGRlY2sncyBnbG9iZSBwbGFjZXNcbiAqIGdlb21ldHJ5IGluIGNvbW1vbiBzcGFjZSBvbiBhIHNwaGVyZSBvZiByYWRpdXMgMjU2IHdpdGggbm8gZnA2NC9yZWxhdGl2ZS10by1cbiAqIGNlbnRlciB0cmljaywgc28gYmV5b25kIH52aXN1YWwtem9vbSAxNiAocm91Z2hseSB0aGlzIG1hcFN0YXRlIHpvb20gbWludXNcbiAqIGB6b29tQWRqdXN0KGxhdClgIOKJiCAxLjY1IGF0IHRoZSBlcXVhdG9yKSBnZW9tZXRyeSBzdGFydHMgdG8gaml0dGVyL2RyaWZ0LlxuICovXG5leHBvcnQgY29uc3QgR0xPQkVfTUFYX1pPT00gPSAxNjtcblxuLyoqXG4gKiBNYXhpbXVtIGFic29sdXRlIGNlbnRlciBsYXRpdHVkZSBhbGxvd2VkIGluIGdsb2JlIG1vZGUuIENvbnN0cmFpbnMgdGhlIGNhbWVyYVxuICogdGFyZ2V0IHRvIGEgYmFuZCBhcm91bmQgdGhlIGVxdWF0b3Igc28gdGhlIHZpZXcgY2FuJ3QgYmUgY2VudGVyZWQgb24gdGhlXG4gKiBwb2xlcyAoZGVjay5nbCdzIGRlZmF1bHQgY2xhbXBzIHRvIH44NcKwLCB3aGljaCBsZXRzIHRoZSBjYW1lcmEgc3RhcmUgc3RyYWlnaHRcbiAqIGRvd24gYXQgYSBwb2xlKS4gQXBwbGllcyBzeW1tZXRyaWNhbGx5IHRvIHRoZSBub3J0aGVybiBhbmQgc291dGhlcm4gaGVtaXNwaGVyZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdMT0JFX01BWF9MQVRJVFVERSA9IDc1O1xuXG5leHBvcnQgdHlwZSBHbG9iZUNvbmZpZyA9IHtcbiAgYXRtb3NwaGVyZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgZHJhdyBhIGxhcmdlIHN1bi1pbmRlcGVuZGVudCB1bmlmb3JtIGdsb3cgaW4gYWRkaXRpb24gdG8gdGhlXG4gICAqIHJlYWxpc3RpYyBzY2F0dGVyaW5nIHNreSBoYWxvLlxuICAgKi9cbiAgaHVnZUhhbG86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBNdWx0aXBsaWVyIGZvciBodWdlLWhhbG8gc2hlbGwgdGhpY2tuZXNzLiBgMWAgaXMgdGhlIGJhc2VsaW5lICh+MTQlIGJleW9uZFxuICAgKiB0aGUgZ2xvYmUpOyB0aGUgY29uZmlndXJlZCBkZWZhdWx0IGlzIDMuNS5cbiAgICovXG4gIGh1Z2VIYWxvUmFkaXVzOiBudW1iZXI7XG4gIC8qKiBPcGFjaXR5IG9mIHRoZSBodWdlLWhhbG8gZ2xvdyAoMOKAkzEpLiBEZWZhdWx0OiAwLjIuICovXG4gIGh1Z2VIYWxvT3BhY2l0eTogbnVtYmVyO1xuICBhemltdXRoOiBib29sZWFuO1xuICBhemltdXRoQW5nbGU6IG51bWJlcjtcbiAgdGVybWluYXRvcjogYm9vbGVhbjtcbiAgdGVybWluYXRvck9wYWNpdHk6IG51bWJlcjtcbiAgYmFzZW1hcDogYm9vbGVhbjtcbiAgbGFiZWxzOiBib29sZWFuO1xuICBsYWJlbHNDb2xvcjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBhZG1pbkxpbmVzOiBib29sZWFuO1xuICBhZG1pbkxpbmVzQ29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgd2F0ZXI6IGJvb2xlYW47XG4gIHdhdGVyQ29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgc3VyZmFjZUNvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHN1cmZhY2U6IGJvb2xlYW47XG4gIGJhY2tncm91bmRDb2xvcjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBzdGFyczogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEdsb2JlID0ge1xuICBlbmFibGVkOiBib29sZWFuO1xuICBjb25maWc6IEdsb2JlQ29uZmlnO1xufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfR0xPQkVfQ09ORklHOiBHbG9iZUNvbmZpZyA9IHtcbiAgYXRtb3NwaGVyZTogdHJ1ZSxcbiAgaHVnZUhhbG86IHRydWUsXG4gIGh1Z2VIYWxvUmFkaXVzOiAzLjUsXG4gIGh1Z2VIYWxvT3BhY2l0eTogMC4yLFxuICBhemltdXRoOiBmYWxzZSxcbiAgYXppbXV0aEFuZ2xlOiA0NSxcbiAgdGVybWluYXRvcjogdHJ1ZSxcbiAgdGVybWluYXRvck9wYWNpdHk6IDAuMzUsXG4gIGJhc2VtYXA6IHRydWUsXG4gIGxhYmVsczogZmFsc2UsXG4gIGxhYmVsc0NvbG9yOiBbMTE0Ljc1LCAxMTQuNzUsIDExNC43NV0sXG4gIGFkbWluTGluZXM6IHRydWUsXG4gIGFkbWluTGluZXNDb2xvcjogWzQwLCA2MywgOTNdLFxuICB3YXRlcjogdHJ1ZSxcbiAgd2F0ZXJDb2xvcjogWzE3LCAzNSwgNDhdLFxuICBzdXJmYWNlOiB0cnVlLFxuICBzdXJmYWNlQ29sb3I6IFs5LCAxNiwgMjldLFxuICAvLyBDb2xvciBvZiB0aGUgZW1wdHkgc3BhY2UgcmVuZGVyZWQgYXJvdW5kIHRoZSBnbG9iZSAoZGVjay5nbCBjbGVhciBjb2xvcikuXG4gIC8vIE1hdGNoZXMgdGhlIHByZXZpb3VzIGhhcmRjb2RlZCBjbGVhciBjb2xvciBbMC4wMTUsIDAuMDM1LCAwLjA2NV0gaW4gMC0xIHNwYWNlLlxuICBiYWNrZ3JvdW5kQ29sb3I6IFs0LCA5LCAxN10sXG4gIC8vIFN0YXJmaWVsZCBiZWhpbmQgdGhlIGdsb2JlIGlzIG9uIGJ5IGRlZmF1bHQgaW4gZ2xvYmUgdmlldy5cbiAgc3RhcnM6IHRydWVcbn07XG5cbmV4cG9ydCBjb25zdCBHTE9CRV9TVVBQT1JURURfTEFZRVJTOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHtcbiAgcG9pbnQ6IHRydWUsXG4gIGFyYzogdHJ1ZSxcbiAgZ3JpZDogdHJ1ZSxcbiAgaGV4YWdvbjogdHJ1ZSxcbiAgZ2VvanNvbjogdHJ1ZSxcbiAgY2x1c3RlcjogdHJ1ZSxcbiAgaWNvbjogdHJ1ZSxcbiAgaGV4YWdvbklkOiB0cnVlLFxuICAnM0QnOiB0cnVlLFxuICB2ZWN0b3JUaWxlOiB0cnVlLFxuICBoZXhUaWxlOiB0cnVlLFxuICBsaW5lOiB0cnVlLFxuICB0cmlwOiB0cnVlLFxuICByYXN0ZXJUaWxlOiB0cnVlLFxuICBoZWF0bWFwOiB0cnVlLFxuICBzMjogZmFsc2UsXG4gIHRpbGUzZDogZmFsc2UsXG4gIC8vIEZsb3cgYXJyb3dzIGFyZSBmbGF0IHF1YWRzIGluIGNvbW1vbiBzcGFjZSAoZXF1YXRvcmlhbCBwbGFuZSkgYW5kIGNvbGxhcHNlIHdoZW5cbiAgLy8gdmlld2VkIGVkZ2Utb24gb24gdGhlIGdsb2JlLCBzbyB0aGUgZmxvdyBsYXllciBpcyBub3Qgc3VwcG9ydGVkIGluIEdsb2JlIG1vZGUuXG4gIGZsb3c6IGZhbHNlXG59O1xuXG5leHBvcnQgZW51bSBNYXBTcGxpdE1vZGUge1xuICBTSU5HTEVfTUFQID0gJ1NJTkdMRV9NQVAnLFxuICBEVUFMX01BUCA9ICdEVUFMX01BUCcsXG4gIFNXSVBFX0NPTVBBUkUgPSAnU1dJUEVfQ09NUEFSRSdcbn1cblxuLyoqXG4gKiBBIG11bHRpcGxpZXIgZm9yIHNjcmVlbi1zcGFjZSB3aWR0aC9zY2FsZSBmb3IgQXJjLCBMaW5lLCBJY29uIGFuZCBUZXh0IGxheWVycy5cbiAqIFJlcXVpcmVkIGluIG9yZGVyIHRvIG1haW50YWluIHRoZSBzYW1lIGFwcGVhcmFuY2UgYWZ0ZXIgdXBncmFkaW5nIHRvIGRlY2suZ2wgdjguNS5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS92aXNnbC9kZWNrLmdsL2Jsb2IvbWFzdGVyL2RvY3MvdXBncmFkZS1ndWlkZS5tZFxuICovXG5leHBvcnQgY29uc3QgUFJPSkVDVEVEX1BJWEVMX1NJWkVfTVVMVElQTElFUiA9IDIgLyAzO1xuXG4vKipcbiAqIE1heGltdW0gdmFsdWUgZm9yIHRleHQgb3V0bGluZSB3aWR0aFxuICovXG5leHBvcnQgY29uc3QgVEVYVF9PVVRMSU5FX01VTFRJUExJRVIgPSA1O1xuXG5leHBvcnQgY29uc3QgZGF0YVRlc3RJZHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGluZm9JY29uOiAnaW5mby1pY29uJyxcbiAgd2FybmluZ0ljb246ICd3YXJuaW5nLWljb24nLFxuICBlcnJvckljb246ICdlcnJvci1pY29uJyxcbiAgc3VjY2Vzc0ljb246ICdzdWNjZXNzLWljb24nLFxuICBjaGVja21hcmtJY29uOiAnY2hlY2ttYXJrLWljb24nLFxuICBjb3B5Tm90aWZpY2F0aW9uSWNvbjogJ2NvcHktbm90aWZpY2F0aW9uLWljb24nLFxuICBzb3J0YWJsZUxheWVySXRlbTogJ3NvcnRhYmxlLWxheWVyLWl0ZW0nLFxuICBzdGF0aWNMYXllckl0ZW06ICdzdGF0aWMtbGF5ZXItaXRlbScsXG4gIGxheWVyVGl0bGVFZGl0b3I6ICdsYXllcl9fdGl0bGVfX2VkaXRvcicsXG4gIHJlbW92ZUxheWVyQWN0aW9uOiAncmVtb3ZlLWxheWVyLWFjdGlvbicsXG4gIGxheWVyUGFuZWw6ICdsYXllci1wYW5lbCcsXG4gIHNvcnRhYmxlRWZmZWN0SXRlbTogJ3NvcnRhYmxlLWVmZmVjdC1pdGVtJyxcbiAgc3RhdGljRWZmZWN0SXRlbTogJ3N0YXRpYy1lZmZlY3QtaXRlbScsXG4gIHByb3ZpZGVyTG9hZGluZzogJ3Byb3ZpZGVyLWxvYWRpbmcnLFxuICBwcm92aWRlck1hcEluZm9QYW5lbDogJ3Byb3ZpZGVyLW1hcC1pbmZvLXBhbmVsJyxcbiAgcHJvdmlkZXJTZWxlY3Q6ICdwcm92aWRlci1zZWxlY3QnLFxuICBjbG91ZEhlYWRlcjogJ2Nsb3VkLWhlYWRlcicsXG4gIHByb3ZpZGVyU2hhcmVNYXA6ICdwcm92aWRlci1zaGFyZS1tYXAnXG59O1xuXG4vLyBFZmZlY3RzXG5leHBvcnQgY29uc3QgREVGQVVMVF9USU1FWk9ORSA9ICdVVEMnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUE9TVF9QUk9DRVNTSU5HX0VGRkVDVF9UWVBFID0gJ2luayc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xJR0hUX0NPTE9SOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbMjU1LCAyNTUsIDI1NV07XG5leHBvcnQgY29uc3QgREVGQVVMVF9MSUdIVF9JTlRFTlNJVFkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0hBRE9XX0lOVEVOU0lUWSA9IDAuNTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NIQURPV19DT0xPUjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzAsIDAsIDBdO1xuXG5leHBvcnQgY29uc3QgTElHSFRfQU5EX1NIQURPV19FRkZFQ1RfVElNRV9NT0RFUyA9IHtcbiAgcGljazogJ3BpY2snIGFzIGNvbnN0LFxuICBjdXJyZW50OiAnY3VycmVudCcgYXMgY29uc3QsXG4gIGFuaW1hdGlvbjogJ2FuaW1hdGlvbicgYXMgY29uc3Rcbn07XG5leHBvcnQgdHlwZSBMaWdodEFuZFNoYWRvd0VmZmVjdFRpbWVNb2RlID0gJ3BpY2snIHwgJ2N1cnJlbnQnIHwgJ2FuaW1hdGlvbic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9MSUdIVF9BTkRfU0hBRE9XX1BST1BTOiB7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICB0aW1lTW9kZTogTGlnaHRBbmRTaGFkb3dFZmZlY3RUaW1lTW9kZTtcbiAgc2hhZG93SW50ZW5zaXR5OiBudW1iZXI7XG4gIHNoYWRvd0NvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHN1bkxpZ2h0Q29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgc3VuTGlnaHRJbnRlbnNpdHk6IG51bWJlcjtcbiAgYW1iaWVudExpZ2h0Q29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgYW1iaWVudExpZ2h0SW50ZW5zaXR5OiBudW1iZXI7XG59ID0ge1xuICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gIHRpbWVNb2RlOiBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVF9USU1FX01PREVTLnBpY2sgYXMgTGlnaHRBbmRTaGFkb3dFZmZlY3RUaW1lTW9kZSxcbiAgc2hhZG93SW50ZW5zaXR5OiBERUZBVUxUX1NIQURPV19JTlRFTlNJVFksXG4gIHNoYWRvd0NvbG9yOiBbLi4uREVGQVVMVF9TSEFET1dfQ09MT1JdIGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSxcbiAgc3VuTGlnaHRDb2xvcjogWy4uLkRFRkFVTFRfTElHSFRfQ09MT1JdIGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSxcbiAgc3VuTGlnaHRJbnRlbnNpdHk6IERFRkFVTFRfTElHSFRfSU5URU5TSVRZLFxuICBhbWJpZW50TGlnaHRDb2xvcjogWy4uLkRFRkFVTFRfTElHSFRfQ09MT1JdIGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSxcbiAgYW1iaWVudExpZ2h0SW50ZW5zaXR5OiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWVxufTtcblxuZXhwb3J0IGNvbnN0IExJR0hUX0FORF9TSEFET1dfRUZGRUNUOiBFZmZlY3REZXNjcmlwdGlvbiA9IHtcbiAgdHlwZTogJ2xpZ2h0QW5kU2hhZG93JyxcbiAgbmFtZTogJ0xpZ2h0ICYgU2hhZG93JyxcbiAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5saWdodEFuZFNoYWRvdycsXG4gIHBhcmFtZXRlcnM6IFtcbiAgICB7bmFtZTogJ3RpbWVzdGFtcCcsIG1pbjogMCwgbWF4OiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUn0sXG4gICAge25hbWU6ICdzaGFkb3dJbnRlbnNpdHknLCBtaW46IDAsIG1heDogMSwgZGVmYXVsdFZhbHVlOiBERUZBVUxUX1NIQURPV19JTlRFTlNJVFl9LFxuICAgIHtuYW1lOiAnc3VuTGlnaHRJbnRlbnNpdHknLCBtaW46IDAsIG1heDogNSwgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWX0sXG4gICAge25hbWU6ICdhbWJpZW50TGlnaHRJbnRlbnNpdHknLCBtaW46IDAsIG1heDogNSwgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWX0sXG4gICAge25hbWU6ICdzaGFkb3dDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9TSEFET1dfQ09MT1J9LFxuICAgIHtuYW1lOiAnc3VuTGlnaHRDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9MSUdIVF9DT0xPUn0sXG4gICAge25hbWU6ICdhbWJpZW50TGlnaHRDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9MSUdIVF9DT0xPUn1cbiAgXVxufTtcblxuZXhwb3J0IGNvbnN0IERJU1RBTkNFX0ZPR19UWVBFID0gJ2Rpc3RhbmNlRm9nJztcbmV4cG9ydCBjb25zdCBTVVJGQUNFX0ZPR19UWVBFID0gJ3N1cmZhY2VGb2cnO1xuXG5leHBvcnQgY29uc3QgUE9TVFBST0NFU1NJTkdfRUZGRUNUUzoge1trZXk6IHN0cmluZ106IEVmZmVjdERlc2NyaXB0aW9ufSA9IHtcbiAgaW5rOiB7XG4gICAgdHlwZTogJ2luaycsXG4gICAgbmFtZTogJ0luaycsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5pbmsnLFxuICAgIHBhcmFtZXRlcnM6IFt7bmFtZTogJ3N0cmVuZ3RoJywgbWluOiAwLCBtYXg6IDF9XVxuICB9LFxuICBicmlnaHRuZXNzQ29udHJhc3Q6IHtcbiAgICB0eXBlOiAnYnJpZ2h0bmVzc0NvbnRyYXN0JyxcbiAgICBuYW1lOiAnQnJpZ2h0bmVzcyAmIENvbnRyYXN0JyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLmJyaWdodG5lc3NDb250cmFzdCcsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge25hbWU6ICdicmlnaHRuZXNzJywgbWluOiAtMSwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAnY29udHJhc3QnLCBtaW46IC0xLCBtYXg6IDF9XG4gICAgXVxuICB9LFxuICBodWVTYXR1cmF0aW9uOiB7XG4gICAgdHlwZTogJ2h1ZVNhdHVyYXRpb24nLFxuICAgIG5hbWU6ICdIdWUgJiBTYXR1cmF0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLmh1ZVNhdHVyYXRpb24nLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtuYW1lOiAnaHVlJywgbWluOiAtMSwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAnc2F0dXJhdGlvbicsIGRlZmF1bHRWYWx1ZTogMC4yNSwgbWluOiAtMSwgbWF4OiAxfVxuICAgIF1cbiAgfSxcbiAgdmlicmFuY2U6IHtcbiAgICB0eXBlOiAndmlicmFuY2UnLFxuICAgIG5hbWU6ICdWaWJyYW5jZScsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi52aWJyYW5jZScsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAnYW1vdW50JywgZGVmYXVsdFZhbHVlOiAwLjUsIG1pbjogLTEsIG1heDogMX1dXG4gIH0sXG4gIHNlcGlhOiB7XG4gICAgdHlwZTogJ3NlcGlhJyxcbiAgICBuYW1lOiAnU2VwaWEnLFxuICAgIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24uc2VwaWEnLFxuICAgIHBhcmFtZXRlcnM6IFt7bmFtZTogJ2Ftb3VudCcsIG1pbjogMCwgbWF4OiAxfV1cbiAgfSxcbiAgZG90U2NyZWVuOiB7XG4gICAgdHlwZTogJ2RvdFNjcmVlbicsXG4gICAgbmFtZTogJ0RvdCBTY3JlZW4nLFxuICAgIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24uZG90U2NyZWVuJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhbmdsZScsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiBNYXRoLlBJIC8gMlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NpemUnLFxuICAgICAgICBtaW46IDEsXG4gICAgICAgIG1heDogMjBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdjZW50ZXInLFxuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICBsYWJlbDogWydDZW50ZXIgWCcsICdDZW50ZXIgWSddLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFswLjUsIDAuNV0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9XG4gICAgXVxuICB9LFxuICBjb2xvckhhbGZ0b25lOiB7XG4gICAgdHlwZTogJ2NvbG9ySGFsZnRvbmUnLFxuICAgIG5hbWU6ICdDb2xvciBIYWxmdG9uZScsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5jb2xvckhhbGZ0b25lJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhbmdsZScsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiBNYXRoLlBJIC8gMlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NpemUnLFxuICAgICAgICBtaW46IDEsXG4gICAgICAgIG1heDogMjBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdjZW50ZXInLFxuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICBsYWJlbDogWydDZW50ZXIgWCcsICdDZW50ZXIgWSddLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFswLjUsIDAuNV0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9XG4gICAgXVxuICB9LFxuICBub2lzZToge1xuICAgIHR5cGU6ICdub2lzZScsXG4gICAgbmFtZTogJ05vaXNlJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLm5vaXNlJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdhbW91bnQnLCBtaW46IDAsIG1heDogMX1dXG4gIH0sXG4gIHRyaWFuZ2xlQmx1cjoge1xuICAgIHR5cGU6ICd0cmlhbmdsZUJsdXInLFxuICAgIG5hbWU6ICdCbHVyIChUcmlhbmdsZSknLFxuICAgIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24udHJpYW5nbGVCbHVyJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdyYWRpdXMnLCBtaW46IDAsIG1heDogMTAwfV1cbiAgfSxcbiAgem9vbUJsdXI6IHtcbiAgICB0eXBlOiAnem9vbUJsdXInLFxuICAgIG5hbWU6ICdCbHVyIChab29tKScsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi56b29tQmx1cicsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnc3RyZW5ndGgnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IDAuMDUsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY2VudGVyJyxcbiAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgbGFiZWw6IFsnQ2VudGVyIFgnLCAnQ2VudGVyIFknXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMC41LCAwLjVdLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfVxuICAgIF1cbiAgfSxcbiAgdGlsdFNoaWZ0OiB7XG4gICAgdHlwZTogJ3RpbHRTaGlmdCcsXG4gICAgbmFtZTogJ0JsdXIgKFRpbHQgU2hpZnQpJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLnRpbHRTaGlmdCcsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnYmx1clJhZGl1cycsXG4gICAgICAgIGxhYmVsOiAnQmx1cicsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiA1MFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2dyYWRpZW50UmFkaXVzJyxcbiAgICAgICAgbGFiZWw6ICdHcmFkaWVudCcsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiA0MDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzdGFydCcsXG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGxhYmVsOiBbJ1N0YXJ0JywgZmFsc2VdLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFswLjAsIDAuMF0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnZW5kJyxcbiAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgbGFiZWw6IFsnRW5kJywgZmFsc2VdLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFsxLCAxXSxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDFcbiAgICAgIH1cbiAgICBdXG4gIH0sXG4gIGVkZ2VXb3JrOiB7XG4gICAgdHlwZTogJ2VkZ2VXb3JrJyxcbiAgICBuYW1lOiAnRWRnZSB3b3JrJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLmVkZ2VXb3JrJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdyYWRpdXMnLCBtaW46IDEsIG1heDogNTB9XVxuICB9LFxuICB2aWduZXR0ZToge1xuICAgIHR5cGU6ICd2aWduZXR0ZScsXG4gICAgbmFtZTogJ1ZpZ25ldHRlJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLnZpZ25ldHRlJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7bmFtZTogJ2Ftb3VudCcsIG1pbjogMCwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAncmFkaXVzJywgbWluOiAwLCBtYXg6IDF9XG4gICAgXVxuICB9LFxuICBtYWduaWZ5OiB7XG4gICAgdHlwZTogJ21hZ25pZnknLFxuICAgIG5hbWU6ICdNYWduaWZ5JyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLm1hZ25pZnknLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NjcmVlblhZJyxcbiAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgbGFiZWw6IFsnUG9zaXRpb24gWCcsICdQb3NpdGlvbiBZJ10sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogWzAuNSwgMC41XSxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDFcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdyYWRpdXNQaXhlbHMnLFxuICAgICAgICBsYWJlbDogJ1NpemUnLFxuICAgICAgICBtaW46IDEwLFxuICAgICAgICBtYXg6IDUwMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3pvb20nLFxuICAgICAgICBtaW46IDAuNSxcbiAgICAgICAgbWF4OiA1MFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2JvcmRlcldpZHRoUGl4ZWxzJyxcbiAgICAgICAgbGFiZWw6ICdCb3JkZXIgV2lkdGgnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IDMsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiA1MFxuICAgICAgfVxuICAgIF1cbiAgfSxcbiAgaGV4YWdvbmFsUGl4ZWxhdGU6IHtcbiAgICB0eXBlOiAnaGV4YWdvbmFsUGl4ZWxhdGUnLFxuICAgIG5hbWU6ICdIZXhhZ29uYWwgUGl4ZWxhdGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24uaGV4YWdvbmFsUGl4ZWxhdGUnLFxuICAgIHBhcmFtZXRlcnM6IFt7bmFtZTogJ3NjYWxlJywgZGVmYXVsdFZhbHVlOiAyMCwgbWluOiAxLCBtYXg6IDUwfV1cbiAgfSxcbiAgZGlzdGFuY2VGb2c6IHtcbiAgICB0eXBlOiBESVNUQU5DRV9GT0dfVFlQRSxcbiAgICBuYW1lOiAnRGlzdGFuY2UgRm9nJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLmRpc3RhbmNlRm9nJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7bmFtZTogJ2RlbnNpdHknLCBkZWZhdWx0VmFsdWU6IDAuNSwgbWluOiAwLCBtYXg6IDF9LFxuICAgICAge25hbWU6ICdmb2dTdGFydCcsIGxhYmVsOiAnU3RhcnQnLCBkZWZhdWx0VmFsdWU6IDAuMywgbWluOiAwLCBtYXg6IDF9LFxuICAgICAge25hbWU6ICdmb2dSYW5nZScsIGxhYmVsOiAnUmFuZ2UnLCBkZWZhdWx0VmFsdWU6IDAuNSwgbWluOiAwLjAxLCBtYXg6IDF9LFxuICAgICAge25hbWU6ICdmb2dDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogWzIxNywgMjIyLCAyMzBdfVxuICAgIF1cbiAgfSxcbiAgc3VyZmFjZUZvZzoge1xuICAgIHR5cGU6IFNVUkZBQ0VfRk9HX1RZUEUsXG4gICAgbmFtZTogJ1N1cmZhY2UgRm9nJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLnN1cmZhY2VGb2cnLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtuYW1lOiAnZGVuc2l0eScsIGRlZmF1bHRWYWx1ZTogMC42LCBtaW46IDAsIG1heDogMX0sXG4gICAgICB7bmFtZTogJ2hlaWdodCcsIGxhYmVsOiAnRWxldmF0aW9uIChtKScsIGRlZmF1bHRWYWx1ZTogNTAsIG1pbjogLTIwMCwgbWF4OiA2MDAwfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2FuaW1hdGVIZWlnaHQnLFxuICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgICBsYWJlbDogJ0FuaW1hdGUgRWxldmF0aW9uJyxcbiAgICAgICAgdG9vbHRpcDpcbiAgICAgICAgICAnQW5pbWF0ZXMgZWxldmF0aW9uIGZyb20gc3RhcnQgdG8gZW5kIHZhbHVlIGR1cmluZyB2aWRlbyBleHBvcnQgcHJldmlldyBhbmQgcmVjb3JkaW5nLicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9LFxuICAgICAge25hbWU6ICdoZWlnaHRFbmQnLCBsYWJlbDogJ0VuZCBFbGV2YXRpb24gKG0pJywgZGVmYXVsdFZhbHVlOiAxMDAsIG1pbjogLTIwMCwgbWF4OiA2MDAwfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2xpbmVhckVhc2luZycsXG4gICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICAgIGxhYmVsOiAnTGluZWFyIEVhc2luZycsXG4gICAgICAgIHRvb2x0aXA6XG4gICAgICAgICAgJ1VzZXMgY29uc3RhbnQgc3BlZWQgaW5zdGVhZCBvZiBzbW9vdGggZWFzZS1pbiAvIGVhc2Utb3V0IGR1cmluZyBlbGV2YXRpb24gYW5pbWF0aW9uLicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9LFxuICAgICAge25hbWU6ICd0aGlja25lc3MnLCBsYWJlbDogJ1RyYW5zaXRpb24gKG0pJywgZGVmYXVsdFZhbHVlOiA1MCwgbWluOiAwLCBtYXg6IDEwMDB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnZm9nQ29sb3InLFxuICAgICAgICB0eXBlOiAnY29sb3InLFxuICAgICAgICBsYWJlbDogJ0ZvZyBDb2xvcicsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAyNTUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogWzIzMCwgMjM1LCAyNDJdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAncGF0dGVybicsXG4gICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICAgIGxhYmVsOiAnUGF0dGVybicsXG4gICAgICAgIHRvb2x0aXA6ICdBZGRzIGEgbm9pc2UgcGF0dGVybiB0byB0aGUgZm9nIGZvciBhIG1vcmUgbmF0dXJhbCwgdm9sdW1ldHJpYyBsb29rLicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9XG4gICAgXVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRUZGRUNUX0RFU0NSSVBUSU9OUzogRWZmZWN0RGVzY3JpcHRpb25bXSA9IFtcbiAgTElHSFRfQU5EX1NIQURPV19FRkZFQ1QsXG4gIC4uLk9iamVjdC5rZXlzKFBPU1RQUk9DRVNTSU5HX0VGRkVDVFMpLm1hcChrZXlOYW1lID0+IFBPU1RQUk9DRVNTSU5HX0VGRkVDVFNba2V5TmFtZV0pXG5dO1xuXG5leHBvcnQgdHlwZSBFZmZlY3RUeXBlID1cbiAgfCAnaW5rJ1xuICB8ICdicmlnaHRuZXNzQ29udHJhc3QnXG4gIHwgJ2h1ZVNhdHVyYXRpb24nXG4gIHwgJ3ZpYnJhbmNlJ1xuICB8ICdzZXBpYSdcbiAgfCAnZG90U2NyZWVuJ1xuICB8ICdjb2xvckhhbGZ0b25lJ1xuICB8ICdub2lzZSdcbiAgfCAndHJpYW5nbGVCbHVyJ1xuICB8ICd6b29tQmx1cidcbiAgfCAndGlsdFNoaWZ0J1xuICB8ICdlZGdlV29yaydcbiAgfCAndmlnbmV0dGUnXG4gIHwgJ21hZ25pZnknXG4gIHwgJ2hleGFnb25hbFBpeGVsYXRlJ1xuICB8ICdkaXN0YW5jZUZvZydcbiAgfCAnc3VyZmFjZUZvZydcbiAgfCAnbGlnaHRBbmRTaGFkb3cnO1xuXG5leHBvcnQgY29uc3QgU1lOQ19USU1FTElORV9NT0RFUzogUmVjb3JkPHN0cmluZywgU3luY1RpbWVsaW5lTW9kZT4gPSB7XG4gIHN0YXJ0OiAwLFxuICBlbmQ6IDFcbn07XG5cbmV4cG9ydCBjb25zdCBHRU9BUlJPV19NRVRBREFUQV9LRVkgPSAnQVJST1c6ZXh0ZW5zaW9uOm5hbWUnO1xuXG4vKipcbiAqIEVudW0gaG9sZGluZyBHZW9BcnJvdyBleHRlbnNpb24gdHlwZSBuYW1lc1xuICovXG5leHBvcnQgZW51bSBHRU9BUlJPV19FWFRFTlNJT05TIHtcbiAgUE9JTlQgPSAnZ2VvYXJyb3cucG9pbnQnLFxuICBMSU5FU1RSSU5HID0gJ2dlb2Fycm93LmxpbmVzdHJpbmcnLFxuICBQT0xZR09OID0gJ2dlb2Fycm93LnBvbHlnb24nLFxuICBNVUxUSVBPSU5UID0gJ2dlb2Fycm93Lm11bHRpcG9pbnQnLFxuICBNVUxUSUxJTkVTVFJJTkcgPSAnZ2VvYXJyb3cubXVsdGlsaW5lc3RyaW5nJyxcbiAgTVVMVElQT0xZR09OID0gJ2dlb2Fycm93Lm11bHRpcG9seWdvbicsXG4gIFdLQiA9ICdnZW9hcnJvdy53a2InXG59XG5cbmV4cG9ydCBjb25zdCBMT0FERVJTX0NETl9WRVJTSU9OID0gJzQuMy4yJztcbmV4cG9ydCBjb25zdCBMT0FERVJTX0NETl9VUkwgPSAnaHR0cHM6Ly91bnBrZy5jb20vQGxvYWRlcnMuZ2wnO1xuXG5leHBvcnQgY29uc3QgZ2V0TG9hZGVyT3B0aW9ucyA9ICgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBtdnQ6IHtcbiAgICAgIHdvcmtlclVybDogYCR7TE9BREVSU19DRE5fVVJMfS9tdnRAJHtMT0FERVJTX0NETl9WRVJTSU9OfS9kaXN0L212dC13b3JrZXIuanNgXG4gICAgfSxcbiAgICAncXVhbnRpemVkLW1lc2gnOiB7XG4gICAgICB3b3JrZXJVcmw6IGAke0xPQURFUlNfQ0ROX1VSTH0vdGVycmFpbkAke0xPQURFUlNfQ0ROX1ZFUlNJT059L2Rpc3QvcXVhbnRpemVkLW1lc2gtd29ya2VyLmpzYFxuICAgIH0sXG4gICAgbnB5OiB7XG4gICAgICB3b3JrZXJVcmw6IGAke0xPQURFUlNfQ0ROX1VSTH0vdGV4dHVyZXNAJHtMT0FERVJTX0NETl9WRVJTSU9OfS9kaXN0L25weS13b3JrZXIuanNgXG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IENVU1RPTV9TQ0VORUdSQVBIX01PREVMX0lEID0gJ2N1c3RvbSc7XG5jb25zdCBNT0RFTFNfQkFTRV9VUkwgPVxuICAnaHR0cHM6Ly9zdHVkaW8tcHVibGljLWRhdGEuZm91cnNxdWFyZS5jb20vc3RhdGljcy9rZXBsZXJnbC8zZC1tb2RlbHMuMjAyMi0wNi0xMyc7XG5cbmV4cG9ydCBjb25zdCBUUklQX0xBWUVSX1NDRU5FR1JBUEhfTU9ERUxTOiB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb246IGFueTtcbiAgdXJsOiBzdHJpbmcgfCBudWxsO1xuICBhbmdsZXM6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgc2NhbGU6IG51bWJlcjtcbn1bXSA9IFtcbiAge1xuICAgIGlkOiAnYWlycGxhbmUnLFxuICAgIGxhYmVsOiAnQWlycGxhbmUnLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L1BsYW5lLmdsYmAsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9LFxuICB7XG4gICAgaWQ6ICdib2Vpbmc3NzcnLFxuICAgIGxhYmVsOiAnQWlybGluZXInLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L0FpcmxpbmVyLmdsYmAsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9LFxuICB7XG4gICAgaWQ6ICd1YmVyLWV2dG9sJyxcbiAgICBsYWJlbDogJ1ZUT0wnLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L2V2dG9sLmdsYmAsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9LFxuICB7XG4gICAgaWQ6ICdoYW5nLWdsaWRlcicsXG4gICAgbGFiZWw6ICdHbGlkZXInLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L0hhbmdnbGlkZXIuZ2xiYCxcbiAgICBhbmdsZXM6IFswLCAwLCAwXSxcbiAgICBzY2FsZTogMS4wXG4gIH0sXG4gIHtcbiAgICBpZDogJ2hlbGljb3B0ZXInLFxuICAgIGxhYmVsOiAnSGVsaWNvcHRlcicsXG4gICAgaWNvbjogbnVsbCxcbiAgICB1cmw6IGAke01PREVMU19CQVNFX1VSTH0vSGVsaWNvcHRlci5nbGJgLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfSxcbiAge1xuICAgIGlkOiAnYmljeWNsZScsXG4gICAgbGFiZWw6ICdCaWN5Y2xlJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9CaWN5Y2xlLmdsYmAsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9LFxuICB7XG4gICAgaWQ6ICdzY29vdGVyJyxcbiAgICBsYWJlbDogJ1Njb290ZXInLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L1Njb290ZXIuZ2xiYCxcbiAgICBhbmdsZXM6IFswLCAwLCAwXSxcbiAgICBzY2FsZTogMS4wXG4gIH0sXG4gIHtcbiAgICBpZDogJ2NhcicsXG4gICAgbGFiZWw6ICdDYXInLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L0Nhci5nbGJgLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfSxcbiAge1xuICAgIGlkOiAndHJ1Y2snLFxuICAgIGxhYmVsOiAnVHJ1Y2snLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L1RydWNrLmdsYmAsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9LFxuICB7XG4gICAgaWQ6ICdzZW1pdHJ1Y2snLFxuICAgIGxhYmVsOiAnU2VtaXRydWNrJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9TZW1pdHJ1Y2suZ2xiYCxcbiAgICBhbmdsZXM6IFswLCAwLCAwXSxcbiAgICBzY2FsZTogMS4wXG4gIH0sXG4gIHtcbiAgICBpZDogJ2Nhcmdvc2hpcCcsXG4gICAgbGFiZWw6ICdDYXJnb3NoaXAnLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L0Nhcmdvc2hpcC5nbGJgLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfSxcbiAge1xuICAgIGlkOiBDVVNUT01fU0NFTkVHUkFQSF9NT0RFTF9JRCxcbiAgICBsYWJlbDogJ0N1c3RvbScsXG4gICAgaWNvbjogbnVsbCxcbiAgICB1cmw6IG51bGwsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9XG5dO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBVUEsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBVUEsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBQStDLElBQUFHLG1CQUFBLEVBQUFDLFdBQUEsRUF2Qi9DO0FBQ0E7QUFBQSxTQUFBQyxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFBWixDQUFBLFFBQUFBLENBQUEsT0FBQUYsT0FBQSxDQUFBSSxNQUFBLENBQUFELENBQUEsT0FBQWEsT0FBQSxXQUFBZCxDQUFBLFFBQUFlLGdCQUFBLGFBQUFoQixDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxDQUFBRCxDQUFBLFNBQUFFLE1BQUEsQ0FBQWMseUJBQUEsR0FBQWQsTUFBQSxDQUFBZSxnQkFBQSxDQUFBbEIsQ0FBQSxFQUFBRyxNQUFBLENBQUFjLHlCQUFBLENBQUFmLENBQUEsS0FBQUgsT0FBQSxDQUFBSSxNQUFBLENBQUFELENBQUEsR0FBQWEsT0FBQSxXQUFBZCxDQUFBLElBQUFFLE1BQUEsQ0FBQWdCLGNBQUEsQ0FBQW5CLENBQUEsRUFBQUMsQ0FBQSxFQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFOLENBQUEsRUFBQUQsQ0FBQSxpQkFBQUQsQ0FBQTtBQXdCTyxJQUFNb0IsYUFBYSxHQUFBQyxPQUFBLENBQUFELGFBQUEsR0FBRyxjQUFjO0FBQ3BDLElBQU1FLHNCQUFzQixHQUFBRCxPQUFBLENBQUFDLHNCQUFBLEdBQUcsNERBQTREO0FBQzNGLElBQU1DLG1CQUFtQixHQUFBRixPQUFBLENBQUFFLG1CQUFBLFlBQVk7QUFDckMsSUFBTUMsc0JBQXNCLEdBQUFILE9BQUEsQ0FBQUcsc0JBQUEsR0FBRyx3QkFBd0I7QUFDdkQsSUFBTUMsbUJBQW1CLEdBQUFKLE9BQUEsQ0FBQUksbUJBQUEsR0FBRyxDQUFDOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1DLGFBQWEsR0FBQUwsT0FBQSxDQUFBSyxhQUFBLEdBQUcsV0FBVztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxjQUFjLEdBQUFOLE9BQUEsQ0FBQU0sY0FBQSxHQUFHLFlBQVk7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsV0FBVyxHQUFBUCxPQUFBLENBQUFPLFdBQUEsR0FBRyxTQUFTO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1DLGVBQWUsR0FBQVIsT0FBQSxDQUFBUSxlQUFBLEdBQUcsYUFBYTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxjQUFjLEdBQUFULE9BQUEsQ0FBQVMsY0FBQSxHQUFHLFlBQVk7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsZ0JBQWdCLEdBQUFWLE9BQUEsQ0FBQVUsZ0JBQUEsR0FBRyxhQUFhO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1DLGFBQWEsR0FBQVgsT0FBQSxDQUFBVyxhQUFBLEdBQUcsV0FBVztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxlQUFlLEdBQUFaLE9BQUEsQ0FBQVksZUFBQSxHQUFHLGFBQWE7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsV0FBVyxHQUFBYixPQUFBLENBQUFhLFdBQUEsR0FBRyxTQUFTO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1DLGdCQUFnQixHQUFBZCxPQUFBLENBQUFjLGdCQUFBLEdBQUcsY0FBYztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxZQUFZLEdBQUFmLE9BQUEsQ0FBQWUsWUFBQSxHQUFHLFVBQVU7QUFFL0IsSUFBTUMsY0FBYyxHQUFBaEIsT0FBQSxDQUFBZ0IsY0FBQSxHQUFHLFdBQVc7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsaUJBQWlCLEdBQUFqQixPQUFBLENBQUFpQixpQkFBQSxHQUFHLGdCQUFxQjtBQUMvQyxJQUFNQyxpQkFBaUIsR0FBQWxCLE9BQUEsQ0FBQWtCLGlCQUFBLEdBQUcsbUJBQW1CO0FBRTdDLElBQU1DLFVBQVUsR0FBQW5CLE9BQUEsQ0FBQW1CLFVBQUEsR0FBRztFQUN4QkMsU0FBUyxFQUFFO0lBQ1RDLEtBQUssRUFBRSxHQUFHO0lBQ1ZDLE1BQU0sRUFBRTtNQUFDQyxHQUFHLEVBQUUsRUFBRTtNQUFFQyxJQUFJLEVBQUUsRUFBRTtNQUFFQyxNQUFNLEVBQUUsRUFBRTtNQUFFQyxLQUFLLEVBQUU7SUFBRSxDQUFDO0lBQ2xEQyxZQUFZLEVBQUU7RUFDaEIsQ0FBQztFQUNEQyxVQUFVLEVBQUU7SUFDVlAsS0FBSyxFQUFFLEdBQUc7SUFDVlEsT0FBTyxFQUFFLEVBQUU7SUFDWEMsU0FBUyxFQUFFO01BQ1RDLE1BQU0sRUFBRTtRQUNOTixNQUFNLEVBQUUsRUFBRTtRQUNWQyxLQUFLLEVBQUU7TUFDVDtJQUNGO0VBQ0Y7QUFDRixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNTSxLQUFLLEdBQUFoQyxPQUFBLENBQUFnQyxLQUFBLEdBQUcsSUFBQUMscUJBQVMsRUFBQztFQUM3QkMsS0FBSyxFQUFFLElBQUk7RUFDWEMsSUFBSSxFQUFFLElBQUk7RUFDVkMsSUFBSSxFQUFFO0FBQ1IsQ0FBQyxDQUFDO0FBRUssSUFBTUMsY0FBYyxHQUFBckMsT0FBQSxDQUFBcUMsY0FBQSxHQUFHLENBQzVCO0VBQ0VDLEVBQUUsRUFBRSxPQUFPO0VBQ1hDLEtBQUssRUFBRSxzQkFBc0I7RUFDN0JDLE9BQU8sRUFBRTtBQUNYLENBQUMsRUFDRDtFQUNFRixFQUFFLEVBQUUsUUFBUTtFQUNaQyxLQUFLLEVBQUUsdUJBQXVCO0VBQzlCQyxPQUFPLEVBQUU7QUFDWCxDQUFDLEVBQ0Q7RUFDRUYsRUFBRSxFQUFFLGFBQWE7RUFDakJDLEtBQUssRUFBRSw0QkFBNEI7RUFDbkNDLE9BQU8sRUFBRTtBQUNYLENBQUMsRUFDRDtFQUNFRixFQUFFLEVBQUUsS0FBSztFQUNUQyxLQUFLLEVBQUUsd0JBQXdCO0VBQy9CQyxPQUFPLEVBQUU7QUFDWCxDQUFDLENBQ0Y7QUFFTSxJQUFNQyxrQkFBa0IsR0FBQXpDLE9BQUEsQ0FBQXlDLGtCQUFBLEdBQUcsSUFBQVIscUJBQVMsRUFBQztFQUMxQ1MsSUFBSSxFQUFFLElBQUk7RUFDVkMsU0FBUyxFQUFFO0FBQ2IsQ0FBQyxDQUFDOztBQUVGO0FBQ08sSUFBTUMsTUFBTSxHQUFBNUMsT0FBQSxDQUFBNEMsTUFBQSxHQUFHUCxjQUFjOztBQUVwQzs7QUFFTyxJQUFNUSxrQkFBa0IsR0FBQTdDLE9BQUEsQ0FBQTZDLGtCQUFBLEdBQUcsU0FBUztBQUVwQyxJQUFNQyx3QkFBd0IsR0FBQTlDLE9BQUEsQ0FBQThDLHdCQUFBLEdBQUcsU0FBUzs7QUFFakQ7QUFDTyxJQUFNQyw2QkFBNkIsR0FBQS9DLE9BQUEsQ0FBQStDLDZCQUFBLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUM7QUFFM0UsSUFBTUMsMkJBQTJCLEdBQUFoRCxPQUFBLENBQUFnRCwyQkFBQSxHQUFHLFlBQVk7QUFFaEQsSUFBTUMsaUNBQWlDLEdBQUFqRCxPQUFBLENBQUFpRCxpQ0FBQSxHQUFHLGFBQWE7QUFXdkQsSUFBTUMsc0JBQTJDLEdBQUFsRCxPQUFBLENBQUFrRCxzQkFBQSxHQUFHO0VBQ3pEQyxJQUFJLEVBQUVILDJCQUEyQjtFQUNqQzlELE1BQU0sRUFBRSxTQUFSQSxNQUFNQSxDQUFBO0lBQUEsT0FBUSxLQUFLO0VBQUE7RUFDbkJrRSxpQkFBaUIsRUFBRSxLQUFLO0VBQ3hCQywyQkFBMkIsRUFBRSxLQUFLO0VBQ2xDQyxvQkFBb0IsRUFBRSxLQUFLO0VBQzNCQyxzQkFBc0IsRUFBRTtBQUMxQixDQUFDO0FBRU0sSUFBTUMsb0JBQTJDLEdBQUF4RCxPQUFBLENBQUF3RCxvQkFBQSxHQUFHLENBQ3pEO0VBQ0VMLElBQUksRUFBRSxPQUFPO0VBQ2JqRSxNQUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBQXVFLElBQUE7SUFBQSxJQUFJbkIsRUFBRSxHQUFBbUIsSUFBQSxDQUFGbkIsRUFBRTtNQUFFb0IsSUFBSSxHQUFBRCxJQUFBLENBQUpDLElBQUk7SUFBQSxPQUFNcEIsRUFBRSxDQUFDcUIsS0FBSyxDQUFDLHlCQUF5QixDQUFDLEtBQUlELElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFQyxLQUFLLENBQUMsY0FBYyxDQUFDO0VBQUE7RUFDMUZQLGlCQUFpQixFQUFFLElBQUk7RUFDdkJDLDJCQUEyQixFQUFFLElBQUk7RUFDakNDLG9CQUFvQixFQUFFLElBQUk7RUFDMUJDLHNCQUFzQixFQUFFO0FBQzFCLENBQUMsRUFDRDtFQUNFSixJQUFJLEVBQUUsTUFBTTtFQUNaakUsTUFBTSxFQUFFLFNBQVJBLE1BQU1BLENBQUEwRSxLQUFBO0lBQUEsSUFBSXRCLEVBQUUsR0FBQXNCLEtBQUEsQ0FBRnRCLEVBQUU7SUFBQSxPQUFNQSxFQUFFLENBQUNxQixLQUFLLENBQUMsb0RBQW9ELENBQUM7RUFBQTtFQUNoRlAsaUJBQWlCLEVBQUUsSUFBSTtFQUN2QkMsMkJBQTJCLEVBQUUsSUFBSTtFQUNqQ0Msb0JBQW9CLEVBQUUsSUFBSTtFQUMxQkMsc0JBQXNCLEVBQUU7QUFDMUIsQ0FBQyxFQUNEO0VBQ0VKLElBQUksRUFBRSxRQUFRO0VBQ2RqRSxNQUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBQTJFLEtBQUE7SUFBQSxJQUFJdkIsRUFBRSxHQUFBdUIsS0FBQSxDQUFGdkIsRUFBRTtJQUFBLE9BQU1BLEVBQUUsQ0FBQ3FCLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQztFQUFBO0VBQ3hEUCxpQkFBaUIsRUFBRSxLQUFLO0VBQ3hCQywyQkFBMkIsRUFBRSxJQUFJO0VBQ2pDQyxvQkFBb0IsRUFBRSxJQUFJO0VBQzFCQyxzQkFBc0IsRUFBRTtBQUMxQixDQUFDLEVBQ0Q7RUFDRUosSUFBSSxFQUFFLFVBQVU7RUFDaEJqRSxNQUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBQTRFLEtBQUE7SUFBQSxJQUFJeEIsRUFBRSxHQUFBd0IsS0FBQSxDQUFGeEIsRUFBRTtJQUFBLE9BQU1BLEVBQUUsQ0FBQ3FCLEtBQUssQ0FBQyxVQUFVLENBQUM7RUFBQTtFQUN0Q1AsaUJBQWlCLEVBQUUsSUFBSTtFQUN2QkMsMkJBQTJCLEVBQUUsSUFBSTtFQUNqQ0Msb0JBQW9CLEVBQUUsSUFBSTtFQUMxQkMsc0JBQXNCLEVBQUU7QUFDMUIsQ0FBQyxFQUNEO0VBQ0VKLElBQUksRUFBRSxPQUFPO0VBQ2JqRSxNQUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBQTZFLEtBQUE7SUFBQSxJQUFJekIsRUFBRSxHQUFBeUIsS0FBQSxDQUFGekIsRUFBRTtJQUFBLE9BQU1BLEVBQUUsQ0FBQ3FCLEtBQUssQ0FBQywwQkFBMEIsQ0FBQztFQUFBO0VBQ3REUCxpQkFBaUIsRUFBRSxJQUFJO0VBQ3ZCQywyQkFBMkIsRUFBRSxJQUFJO0VBQ2pDQyxvQkFBb0IsRUFBRSxJQUFJO0VBQzFCQyxzQkFBc0IsRUFBRTtBQUMxQixDQUFDLEVBQ0Q7RUFDRUosSUFBSSxFQUFFLE1BQU07RUFDWmpFLE1BQU0sRUFBRSxTQUFSQSxNQUFNQSxDQUFBOEUsS0FBQTtJQUFBLElBQUkxQixFQUFFLEdBQUEwQixLQUFBLENBQUYxQixFQUFFO0lBQUEsT0FBTUEsRUFBRSxDQUFDcUIsS0FBSyxDQUFDLGlEQUFpRCxDQUFDO0VBQUE7RUFDN0VQLGlCQUFpQixFQUFFLElBQUk7RUFDdkJDLDJCQUEyQixFQUFFLElBQUk7RUFDakNDLG9CQUFvQixFQUFFLElBQUk7RUFDMUJDLHNCQUFzQixFQUFFO0FBQzFCLENBQUMsRUFDRDtFQUNFSixJQUFJLEVBQUVGLGlDQUFpQztFQUN2Qy9ELE1BQU0sRUFBRSxTQUFSQSxNQUFNQSxDQUFBO0lBQUEsT0FBUSxLQUFLO0VBQUE7RUFDbkJrRSxpQkFBaUIsRUFBRSxLQUFLO0VBQ3hCQywyQkFBMkIsRUFBRSxJQUFJO0VBQ2pDQyxvQkFBb0IsRUFBRSxJQUFJO0VBQzFCQyxzQkFBc0IsRUFBRTtBQUMxQixDQUFDLENBQ0Y7QUFFTSxJQUFNVSxvQkFBb0IsR0FBQWpFLE9BQUEsQ0FBQWlFLG9CQUFBLEdBQUcsSUFBQWhDLHFCQUFTLEVBQUM7RUFDNUNpQyxJQUFJLEVBQUUsSUFBSTtFQUNWQyxJQUFJLEVBQUUsSUFBSTtFQUNWQyxLQUFLLEVBQUU7QUFDVCxDQUFDLENBQUM7QUFFSyxJQUFNQyxTQUFTLEdBQUFyRSxPQUFBLENBQUFxRSxTQUFBLEdBQUcsUUFBUTs7QUFFakM7QUFDQTtBQUNPLElBQU1DLGtCQUFrQixHQUFBdEUsT0FBQSxDQUFBc0Usa0JBQUEsR0FBRztFQUNoQ0MsT0FBTyxFQUFFLENBQUM7RUFDVkMsT0FBTyxFQUFFLENBQUMsQ0FBQztFQUNYQyxNQUFNLEVBQUU7QUFDVixDQUFDO0FBRU0sSUFBTUMsZUFBZSxHQUFBMUUsT0FBQSxDQUFBMEUsZUFBQSxHQUFHO0VBQzdCQyxNQUFNLEVBQUUsUUFBaUI7RUFDekJDLFFBQVEsRUFBRTtBQUNaLENBQUM7O0FBRUQ7QUFDTyxJQUFNQyxnQkFBZ0IsR0FBQTdFLE9BQUEsQ0FBQTZFLGdCQUFBLEdBQUcsRUFBRTtBQUkzQixJQUFNQyxlQUFlLEdBQUE5RSxPQUFBLENBQUE4RSxlQUFBLE1BQUFDLE1BQUEsQ0FBTTdFLG1CQUFtQixvQkFBaUI7QUFFL0QsSUFBTThFLHNCQUFzQixHQUFBaEYsT0FBQSxDQUFBZ0Ysc0JBQUEsR0FBRyxhQUFhO0FBUzVDLElBQU1DLHdCQUE2QyxHQUFBakYsT0FBQSxDQUFBaUYsd0JBQUEsR0FBRztFQUMzRDNDLEVBQUUsRUFBRStCLFNBQVM7RUFDYjlCLEtBQUssRUFBRSxZQUFZO0VBQ25CMkMsR0FBRyxFQUFFLEVBQUU7RUFDUEMsSUFBSSxFQUFFTCxlQUFlO0VBQ3JCTSxXQUFXLEVBQUUsQ0FBQ2xDLHNCQUFzQixDQUFDO0VBQ3JDbUMsU0FBUyxFQUFFcEIsb0JBQW9CLENBQUNDLElBQUk7RUFDcENvQixLQUFLLEVBQUVoQjtBQUNULENBQUM7QUFFTSxJQUFNaUIscUJBQTRDLEdBQUF2RixPQUFBLENBQUF1RixxQkFBQSxHQUFHLENBQzFEO0VBQ0VqRCxFQUFFLEVBQUUsTUFBTTtFQUNWQyxLQUFLLEVBQUUsTUFBTTtFQUNiMkMsR0FBRyxFQUFFLG9EQUFvRDtFQUN6REMsSUFBSSxLQUFBSixNQUFBLENBQUs3RSxtQkFBbUIsc0JBQW1CO0VBQy9Da0YsV0FBVyxFQUFFNUIsb0JBQW9CO0VBQ2pDNkIsU0FBUyxFQUFFcEIsb0JBQW9CLENBQUNFLElBQUk7RUFDcENxQixvQkFBb0IsRUFBRTtBQUN4QixDQUFDLEVBQ0Q7RUFDRWxELEVBQUUsRUFBRSxPQUFPO0VBQ1hDLEtBQUssRUFBRSxPQUFPO0VBQ2QyQyxHQUFHLEVBQUUsb0RBQW9EO0VBQ3pEQyxJQUFJLEtBQUFKLE1BQUEsQ0FBSzdFLG1CQUFtQix1QkFBb0I7RUFDaERrRixXQUFXLEVBQUU1QixvQkFBb0I7RUFDakM2QixTQUFTLEVBQUVwQixvQkFBb0IsQ0FBQ0csS0FBSztFQUNyQ29CLG9CQUFvQixFQUFFO0FBQ3hCLENBQUMsRUFDRDtFQUNFbEQsRUFBRSxFQUFFLE9BQU87RUFDWEMsS0FBSyxFQUFFLGFBQWE7RUFDcEIyQyxHQUFHLEVBQUUsb0RBQW9EO0VBQ3pEQyxJQUFJLEtBQUFKLE1BQUEsQ0FBSzdFLG1CQUFtQiwwQkFBdUI7RUFDbkRrRixXQUFXLEVBQUU1QixvQkFBb0I7RUFDakM2QixTQUFTLEVBQUVwQixvQkFBb0IsQ0FBQ0csS0FBSztFQUNyQ29CLG9CQUFvQixFQUFFO0FBQ3hCLENBQUMsRUFDRDtFQUNFbEQsRUFBRSxFQUFFLGFBQWE7RUFDakJDLEtBQUssRUFBRSxhQUFhO0VBQ3BCMkMsR0FBRyxFQUFFLG9EQUFvRDtFQUN6REMsSUFBSSxLQUFBSixNQUFBLENBQUs3RSxtQkFBbUIsMEJBQXVCO0VBQ25Ea0YsV0FBVyxFQUFFNUIsb0JBQW9CO0VBQ2pDNkIsU0FBUyxFQUFFcEIsb0JBQW9CLENBQUNFLElBQUk7RUFDcENxQixvQkFBb0IsRUFBRTtBQUN4QixDQUFDLENBQ0Y7QUFFTSxJQUFNQyw4QkFBcUQsR0FBQXpGLE9BQUEsQ0FBQXlGLDhCQUFBLEdBQUcsQ0FDbkU7RUFDRW5ELEVBQUUsRUFBRSxXQUFXO0VBQ2ZDLEtBQUssRUFBRSx3QkFBd0I7RUFDL0IyQyxHQUFHLGdEQUFnRDtFQUNuREMsSUFBSSxLQUFBSixNQUFBLENBQUs3RSxtQkFBbUIsd0JBQXFCO0VBQ2pEa0YsV0FBVyxFQUFFNUIsb0JBQW9CO0VBQ2pDNkIsU0FBUyxFQUFFcEIsb0JBQW9CLENBQUNDO0FBQ2xDLENBQUMsQ0FDRjtBQUVNLElBQU13Qix1QkFBOEMsR0FBQTFGLE9BQUEsQ0FBQTBGLHVCQUFBLEdBQUcsQ0FDNUQ7RUFDRXBELEVBQUUsRUFBRSxhQUFhO0VBQ2pCQyxLQUFLLEVBQUUsWUFBWTtFQUNuQjJDLEdBQUcsRUFBRSxrRUFBa0U7RUFDdkVDLElBQUksS0FBQUosTUFBQSxDQUFLN0UsbUJBQW1CLG9CQUFpQjtFQUM3Q2tGLFdBQVcsRUFBRTVCLG9CQUFvQjtFQUNqQzZCLFNBQVMsRUFBRXBCLG9CQUFvQixDQUFDRSxJQUFJO0VBQ3BDcUIsb0JBQW9CLEVBQUU7QUFDeEIsQ0FBQyxFQUNEO0VBQ0VsRCxFQUFFLEVBQUUsVUFBVTtFQUNkQyxLQUFLLEVBQUUsVUFBVTtFQUNqQjJDLEdBQUcsRUFBRSwrREFBK0Q7RUFDcEVDLElBQUksS0FBQUosTUFBQSxDQUFLN0UsbUJBQW1CLGtCQUFlO0VBQzNDa0YsV0FBVyxFQUFFNUIsb0JBQW9CO0VBQ2pDNkIsU0FBUyxFQUFFcEIsb0JBQW9CLENBQUNHLEtBQUs7RUFDckNvQixvQkFBb0IsRUFBRTtBQUN4QixDQUFDLEVBQ0Q7RUFDRWxELEVBQUUsRUFBRSxTQUFTO0VBQ2JDLEtBQUssRUFBRSxTQUFTO0VBQ2hCMkMsR0FBRyxFQUFFLDhEQUE4RDtFQUNuRUMsSUFBSSxLQUFBSixNQUFBLENBQUs3RSxtQkFBbUIsaUJBQWM7RUFDMUNrRixXQUFXLEVBQUU1QixvQkFBb0I7RUFDakM2QixTQUFTLEVBQUVwQixvQkFBb0IsQ0FBQ0csS0FBSztFQUNyQ29CLG9CQUFvQixFQUFFO0FBQ3hCLENBQUMsQ0FDRjtBQUVNLElBQU1HLGtCQUFrQixHQUFBM0YsT0FBQSxDQUFBMkYsa0JBQUEsSUFDN0JWLHdCQUF3QixFQUFBRixNQUFBLENBQ3JCVyx1QkFBdUIsRUFDdkJELDhCQUE4QixFQUM5QkYscUJBQXFCLENBQ3pCO0FBRU0sSUFBTUssY0FBYyxHQUFBNUYsT0FBQSxDQUFBNEYsY0FBQSxHQUFHO0VBQzVCQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLFNBQVM7QUFDL0MsQ0FBQztBQUVNLElBQU1DLFdBQVcsR0FBQTlGLE9BQUEsQ0FBQThGLFdBQUEsR0FBRztFQUN6QlgsSUFBSSxFQUFFLENBQUMsTUFBTTtBQUNmLENBQUM7QUFFTSxJQUFNWSxpQkFBcUMsR0FBQS9GLE9BQUEsQ0FBQStGLGlCQUFBLEdBQUcsQ0FDbkQsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQ2QsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQ2QsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQ2YsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQzFCO0FBRU0sSUFBTUMsZUFBZSxHQUFBaEcsT0FBQSxDQUFBZ0csZUFBQSxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztBQUMzQyxJQUFNQyxlQUFlLEdBQUFqRyxPQUFBLENBQUFpRyxlQUFBLEdBQUc7RUFDN0JDLElBQUksRUFBRSxXQUFXO0VBQ2pCQyxJQUFJLEVBQUUsV0FBVztFQUNqQkMsSUFBSSxFQUFFLFNBQVM7RUFDZkMsSUFBSSxFQUFFO0FBQ1IsQ0FBQztBQUVNLElBQU1DLFlBQVksR0FBQXRHLE9BQUEsQ0FBQXNHLFlBQUEsR0FBRyxJQUFBckUscUJBQVMsRUFBQztFQUNwQ3NFLEtBQUssRUFBRSxJQUFJO0VBQ1hDLE1BQU0sRUFBRSxJQUFJO0VBQ1pDLEtBQUssRUFBRSxJQUFJO0VBQ1hDLFNBQVMsRUFBRSxJQUFJO0VBQ2ZDLFdBQVcsRUFBRSxJQUFJO0VBQ2pCQyxPQUFPLEVBQUU7QUFDWCxDQUFDLENBQUM7QUFFSyxJQUFNQyxpQkFBaUIsR0FBQTdHLE9BQUEsQ0FBQTZHLGlCQUFBLEdBQUcsSUFBQTVFLHFCQUFTLEVBQUM7RUFDekM2RSxJQUFJLEVBQUUsSUFBSTtFQUNWQyxRQUFRLEVBQUUsSUFBSTtFQUNkQyxRQUFRLEVBQUU7QUFDWixDQUFDLENBQUM7QUFFSyxJQUFNQyx3QkFBd0IsR0FBQWpILE9BQUEsQ0FBQWlILHdCQUFBLEdBQUdKLGlCQUFpQixDQUFDQyxJQUFJO0FBZXZELElBQU1JLFdBQTRCLEdBQUFsSCxPQUFBLENBQUFrSCxXQUFBLEdBQUcsSUFBQWpGLHFCQUFTLEVBQUM7RUFDcERrRixPQUFPLEVBQUUsSUFBSTtFQUNiQyxRQUFRLEVBQUUsSUFBSTtFQUNkQyxRQUFRLEVBQUUsSUFBSTtFQUNkQyxNQUFNLEVBQUUsSUFBSTtFQUNaQyxJQUFJLEVBQUUsSUFBSTtFQUNWQyxHQUFHLEVBQUUsSUFBSTtFQUNUQyxTQUFTLEVBQUUsSUFBSTtFQUNmQyxNQUFNLEVBQUUsSUFBSTtFQUNaQyxhQUFhLEVBQUUsSUFBSTtFQUNuQjtFQUNBQyxLQUFLLEVBQUU7QUFDVCxDQUFDLENBQUM7QUFDSyxJQUFNQyxnQkFBMEQsR0FBQTdILE9BQUEsQ0FBQTZILGdCQUFBLEdBQUc7RUFDeEVWLE9BQU8sRUFBRSxTQUFTO0VBQ2xCQyxRQUFRLEVBQUUsVUFBVTtFQUNwQkMsUUFBUSxFQUFFLFVBQVU7RUFDcEJDLE1BQU0sRUFBRSxRQUFRO0VBQ2hCQyxJQUFJLEVBQUUsTUFBTTtFQUNaQyxHQUFHLEVBQUUsS0FBSztFQUNWQyxTQUFTLEVBQUUsV0FBVztFQUN0QkMsTUFBTSxFQUFFLGVBQWU7RUFDdkJDLGFBQWEsRUFBRSxnQkFBZ0I7RUFDL0JDLEtBQUssRUFBRTtBQUNULENBQUM7QUFNTSxJQUFNRSxVQUFVLEdBQUE5SCxPQUFBLENBQUE4SCxVQUFBLE9BQUFuSSxnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFDcEJ1SCxXQUFXLENBQUNJLE1BQU0sRUFBR1Msb0JBQVcsR0FDaENiLFdBQVcsQ0FBQ0csUUFBUSxFQUFHVyxzQkFBYSxHQUNwQ2QsV0FBVyxDQUFDRSxRQUFRLEVBQUdhLHNCQUFhLEdBQ3BDZixXQUFXLENBQUNDLE9BQU8sRUFBR2UscUJBQVksR0FDbENoQixXQUFXLENBQUNLLElBQUksRUFBR1ksa0JBQVMsR0FDNUJqQixXQUFXLENBQUNNLEdBQUcsRUFBR1ksaUJBQVEsR0FDMUJsQixXQUFXLENBQUNVLEtBQUssRUFBR1MsbUJBQVUsR0FDOUJuQixXQUFXLENBQUNPLFNBQVMsRUFBR2EsdUJBQWMsR0FDdENwQixXQUFXLENBQUNRLE1BQU0sRUFBR1ksdUJBQWMsR0FDbkNwQixXQUFXLENBQUNTLGFBQWEsRUFBR08scUJBQVksQ0FDMUM7QUFFTSxJQUFNSyxlQUFlLEdBQUF2SSxPQUFBLENBQUF1SSxlQUFBLEdBQUcsSUFBQXRHLHFCQUFTLEVBQUM7RUFDdkMsV0FBUyxJQUFJO0VBQ2J1RyxJQUFJLEVBQUUsSUFBSTtFQUNWM0MsT0FBTyxFQUFFLElBQUk7RUFDYjRDLE9BQU8sRUFBRSxJQUFJO0VBQ2JDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLE1BQU0sRUFBRSxJQUFJO0VBQ1pDLFNBQVMsRUFBRSxJQUFJO0VBQ2ZoQixLQUFLLEVBQUUsSUFBSTtFQUNYaUIsS0FBSyxFQUFFLElBQUk7RUFDWEMsTUFBTSxFQUFFLElBQUk7RUFDWkMsUUFBUSxFQUFFLElBQUk7RUFDZEMsRUFBRSxFQUFFO0FBQ04sQ0FBQyxDQUFDOztBQUVGO0FBQ08sSUFBTUMsVUFBVSxHQUFBakosT0FBQSxDQUFBaUosVUFBQSxHQUFHLElBQUFoSCxxQkFBUyxFQUFDO0VBQ2xDaUgsU0FBUyxFQUFFLElBQUk7RUFDZkMsVUFBVSxFQUFFLElBQUk7RUFDaEJDLE1BQU0sRUFBRTtBQUNWLENBQUMsQ0FBQztBQUVLLElBQU1DLFlBQVksR0FBQXJKLE9BQUEsQ0FBQXFKLFlBQUEsR0FBRyxJQUFBcEgscUJBQVMsRUFBQztFQUNwQ3FILFFBQVEsRUFBRSxJQUFJO0VBQ2RDLFFBQVEsRUFBRSxJQUFJO0VBQ2RILE1BQU0sRUFBRSxJQUFJO0VBQ1pJLEdBQUcsRUFBRSxJQUFJO0VBQ1RDLEtBQUssRUFBRSxJQUFJO0VBQ1hDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLGFBQWEsRUFBRTtBQUNqQixDQUFDLENBQUM7QUFRSyxJQUFNQyxpQkFBZ0MsR0FBQTVKLE9BQUEsQ0FBQTRKLGlCQUFBLEdBQUcsQ0FDOUM7RUFDRUMsS0FBSyxFQUFFUixZQUFZLENBQUNDLFFBQVE7RUFDNUJRLE9BQU8sRUFBRSxnQkFBZ0I7RUFDekIzRSxJQUFJLEVBQUUsU0FBUztFQUNmNEUsU0FBUyxFQUFFLFNBQVhBLFNBQVNBLENBQUVDLEtBQUs7SUFBQSxPQUFJQSxLQUFLLENBQUNDLGVBQWUsSUFBSUQsS0FBSyxDQUFDRSxRQUFRLEtBQUtqQixVQUFVLENBQUNDLFNBQVM7RUFBQTtBQUN0RixDQUFDLEVBQ0Q7RUFDRVcsS0FBSyxFQUFFUixZQUFZLENBQUNFLFFBQVE7RUFDNUJPLE9BQU8sRUFBRSxpQkFBaUI7RUFDMUIzRSxJQUFJLEVBQUUsV0FBVztFQUNqQjRFLFNBQVMsRUFBRSxTQUFYQSxTQUFTQSxDQUFFQyxLQUFLO0lBQUEsT0FBSUEsS0FBSyxDQUFDQyxlQUFlLElBQUlELEtBQUssQ0FBQ0UsUUFBUSxLQUFLakIsVUFBVSxDQUFDRSxVQUFVO0VBQUE7QUFDdkYsQ0FBQyxFQUNEO0VBQ0VVLEtBQUssRUFBRVIsWUFBWSxDQUFDRCxNQUFNO0VBQzFCVSxPQUFPLEVBQUUsZUFBZTtFQUN4QjNFLElBQUksRUFBRSxRQUFRO0VBQ2Q0RSxTQUFTLEVBQUUsU0FBWEEsU0FBU0EsQ0FBRUMsS0FBSztJQUFBLE9BQUlBLEtBQUssQ0FBQ0csUUFBUTtFQUFBO0FBQ3BDLENBQUMsRUFDRDtFQUNFTixLQUFLLEVBQUVSLFlBQVksQ0FBQ0csR0FBRztFQUN2Qk0sT0FBTyxFQUFFLFlBQVk7RUFDckIzRSxJQUFJLEVBQUUsS0FBSztFQUNYNEUsU0FBUyxFQUFFLFNBQVhBLFNBQVNBLENBQUVDLEtBQUs7SUFBQSxPQUFJLENBQUNBLEtBQUssQ0FBQ0ksUUFBUTtFQUFBO0FBQ3JDLENBQUMsRUFDRDtFQUNFUCxLQUFLLEVBQUVSLFlBQVksQ0FBQ0ksS0FBSztFQUN6QkssT0FBTyxFQUFFLGNBQWM7RUFDdkIzRSxJQUFJLEVBQUUsUUFBUTtFQUNkNEUsU0FBUyxFQUFFLFNBQVhBLFNBQVNBLENBQUVDLEtBQUs7SUFBQSxPQUFJQSxLQUFLLENBQUNJLFFBQVE7RUFBQTtBQUNwQyxDQUFDLEVBQ0Q7RUFBQ1AsS0FBSyxFQUFFUixZQUFZLENBQUNLLElBQUk7RUFBRUksT0FBTyxFQUFFLGFBQWE7RUFBRTNFLElBQUksRUFBRTtBQUFXLENBQUMsRUFDckU7RUFDRTBFLEtBQUssRUFBRVIsWUFBWSxDQUFDTSxhQUFhO0VBQ2pDRyxPQUFPLEVBQUUsZUFBZTtFQUN4QjNFLElBQUksRUFBRSxNQUFNO0VBQ1o0RSxTQUFTLEVBQUUsU0FBWEEsU0FBU0EsQ0FBRUMsS0FBSztJQUFBLE9BQUlBLEtBQUssQ0FBQ0ssZ0JBQWdCO0VBQUE7QUFDNUMsQ0FBQyxDQUNGO0FBRUQsSUFBTUMsTUFBTSxHQUFHLGNBQWM7QUFDN0IsSUFBTUMsSUFBSSxHQUFHLGVBQWU7QUFDNUIsSUFBTUMsTUFBTSxHQUFHLGVBQWU7QUFDOUIsSUFBTUMsSUFBSSxHQUFHLGVBQWU7QUFDNUIsSUFBTUMsS0FBSyxHQUFHLGVBQWU7QUFDN0IsSUFBTUMsS0FBSyxHQUFHLGFBQWE7QUFDM0IsSUFBTUMsS0FBSyxHQUFHLGNBQWM7QUFDNUIsSUFBTUMsTUFBTSxHQUFHLGNBQWM7QUFDN0IsSUFBTUMsR0FBRyxHQUFHLGNBQWM7QUFDMUIsSUFBTUMsTUFBTSxHQUFHLGNBQWM7QUFFdEIsSUFBTUMsa0JBQWtCLEdBQUFoTCxPQUFBLENBQUFnTCxrQkFBQSxJQUFBeE0sbUJBQUEsV0FBQW1CLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQUFBLGdCQUFBLGFBQUFuQixtQkFBQSxFQUM1QitKLGVBQWUsV0FBUSxFQUFHO0VBQ3pCaEcsS0FBSyxFQUFFLE1BQU07RUFDYjBJLEtBQUssRUFBRVY7QUFDVCxDQUFDLEdBQ0FoQyxlQUFlLENBQUNDLElBQUksRUFBRztFQUN0QmpHLEtBQUssRUFBRSxNQUFNO0VBQ2IwSSxLQUFLLEVBQUVUO0FBQ1QsQ0FBQyxHQUNBakMsZUFBZSxDQUFDMUMsT0FBTyxFQUFHO0VBQ3pCdEQsS0FBSyxFQUFFLEtBQUs7RUFDWjBJLEtBQUssRUFBRVA7QUFDVCxDQUFDLEdBQ0FuQyxlQUFlLENBQUNRLFFBQVEsRUFBRztFQUMxQnhHLEtBQUssRUFBRSxLQUFLO0VBQ1owSSxLQUFLLEVBQUVQO0FBQ1QsQ0FBQyxHQUNBbkMsZUFBZSxDQUFDRSxPQUFPLEVBQUc7RUFDekJsRyxLQUFLLEVBQUUsS0FBSztFQUNaMEksS0FBSyxFQUFFWDtBQUNULENBQUMsR0FDQS9CLGVBQWUsQ0FBQ0csSUFBSSxFQUFHO0VBQ3RCbkcsS0FBSyxFQUFFLE9BQU87RUFDZDBJLEtBQUssRUFBRVg7QUFDVCxDQUFDLEdBQ0EvQixlQUFlLENBQUNJLE1BQU0sRUFBRztFQUN4QnBHLEtBQUssRUFBRSxRQUFRO0VBQ2YwSSxLQUFLLEVBQUVSO0FBQ1QsQ0FBQyxHQUNBbEMsZUFBZSxDQUFDSyxTQUFTLEVBQUc7RUFDM0JyRyxLQUFLLEVBQUUsTUFBTTtFQUNiMEksS0FBSyxFQUFFTDtBQUNULENBQUMsR0FFQXJDLGVBQWUsQ0FBQ1gsS0FBSyxFQUFHO0VBQ3ZCckYsS0FBSyxFQUFFLE9BQU87RUFDZDBJLEtBQUssRUFBRU47QUFDVCxDQUFDLEdBQ0FwQyxlQUFlLENBQUNNLEtBQUssRUFBRztFQUN2QnRHLEtBQUssRUFBRSxPQUFPO0VBQ2QwSSxLQUFLLEVBQUVGO0FBQ1QsQ0FBQyxPQUFBcEwsZ0JBQUEsaUJBQUFBLGdCQUFBLGFBQUFuQixtQkFBQSxFQUNBK0osZUFBZSxDQUFDTyxNQUFNLEVBQUc7RUFDeEJ2RyxLQUFLLEVBQUUsUUFBUTtFQUNmMEksS0FBSyxFQUFFSjtBQUNULENBQUMsR0FDQXRDLGVBQWUsQ0FBQ1MsRUFBRSxFQUFHO0VBQ3BCekcsS0FBSyxFQUFFLElBQUk7RUFDWDBJLEtBQUssRUFBRVI7QUFDVCxDQUFDLEVBQ0Y7QUFFTSxJQUFNUyxZQUFZLEdBQUFsTCxPQUFBLENBQUFrTCxZQUFBLEdBQUc7RUFDMUIsV0FBU0o7QUFDWCxDQUFDO0FBQ00sSUFBTUssaUJBQTRCLEdBQUFuTCxPQUFBLENBQUFtTCxpQkFBQSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3hELElBQU1DLGNBQWMsR0FBQXBMLE9BQUEsQ0FBQW9MLGNBQUEsR0FBRyxJQUFBbkoscUJBQVMsRUFBQztFQUN0Q2dKLEtBQUssRUFBRSxJQUFJO0VBQ1hJLE1BQU0sRUFBRSxJQUFJO0VBQ1pDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLFNBQVMsRUFBRSxJQUFJO0VBQ2ZDLFFBQVEsRUFBRSxJQUFJO0VBQ2RDLEtBQUssRUFBRTtBQUNULENBQUMsQ0FBQztBQUVLLElBQU1DLGlCQWNaLEdBQUExTCxPQUFBLENBQUEwTCxpQkFBQSxHQUFHO0VBQ0Y7RUFDQUMsS0FBSyxFQUFFLE9BQU87RUFDZDtFQUNBQyxPQUFPLEVBQUUsU0FBUztFQUNsQkMsT0FBTyxFQUFFLFNBQVM7RUFDbEJDLE9BQU8sRUFBRSxTQUFTO0VBQ2xCQyxNQUFNLEVBQUUsUUFBUTtFQUNoQkMsS0FBSyxFQUFFLE9BQU87RUFDZEMsR0FBRyxFQUFFLEtBQUs7RUFDVkMsUUFBUSxFQUFFLFVBQVU7RUFDcEI7RUFDQUMsSUFBSSxFQUFFLE1BQU07RUFDWkMsV0FBVyxFQUFFO0FBQ2YsQ0FBQztBQUVNLElBQU1DLHdCQUF1RCxHQUFBck0sT0FBQSxDQUFBcU0sd0JBQUEsR0FBR3ZOLE1BQU0sQ0FBQ3dOLE9BQU8sQ0FDbkZaLGlCQUNGLENBQUMsQ0FBQ2EsR0FBRyxDQUFDLFVBQUFDLEtBQUE7RUFBQSxJQUFBQyxLQUFBLE9BQUFDLGVBQUEsYUFBQUYsS0FBQTtJQUFFRyxHQUFHLEdBQUFGLEtBQUE7SUFBRTVDLEtBQUssR0FBQTRDLEtBQUE7RUFBQSxPQUFPO0lBQ3ZCbkssRUFBRSxFQUFFcUssR0FBRztJQUNQcEssS0FBSyxFQUNIb0ssR0FBRyxLQUFLLE9BQU8sR0FDWCxlQUFlLEdBQ2ZBLEdBQUcsS0FBSyxhQUFhLEdBQ3JCLGNBQWMsR0FDZCxPQUFPOUMsS0FBSyxLQUFLLFFBQVEsR0FDekJBLEtBQUssQ0FBQytDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUMsR0FBR2hELEtBQUssQ0FBQ2lELEtBQUssQ0FBQyxDQUFDLENBQUMsR0FDOUNqRDtFQUNSLENBQUM7QUFBQSxDQUFDLENBQUM7QUFFSSxJQUFNa0QseUJBQXlCLEdBQUEvTSxPQUFBLENBQUErTSx5QkFBQSxPQUFBcE4sZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQ25DeUwsY0FBYyxDQUFDSCxLQUFLLEVBQUcsQ0FBQy9ELFdBQVcsQ0FBQ0csUUFBUSxFQUFFSCxXQUFXLENBQUNFLFFBQVEsRUFBRUYsV0FBVyxDQUFDUSxNQUFNLENBQUMsR0FDdkYwRCxjQUFjLENBQUNDLE1BQU0sRUFBRyxDQUFDbkUsV0FBVyxDQUFDSyxJQUFJLENBQUMsR0FDMUM2RCxjQUFjLENBQUNFLElBQUksRUFBRyxDQUFDcEUsV0FBVyxDQUFDSSxNQUFNLEVBQUVKLFdBQVcsQ0FBQ0ssSUFBSSxFQUFFTCxXQUFXLENBQUNNLEdBQUcsQ0FBQyxHQUM3RTRELGNBQWMsQ0FBQ0ssS0FBSyxFQUFHLENBQUN2RSxXQUFXLENBQUNJLE1BQU0sQ0FBQyxDQUM3QztBQUVELElBQU0wRixnQ0FBZ0MsR0FBRyxDQUN2QzlGLFdBQVcsQ0FBQ0csUUFBUSxFQUNwQkgsV0FBVyxDQUFDRSxRQUFRLEVBQ3BCRixXQUFXLENBQUNRLE1BQU0sQ0FDbkI7QUFFTSxJQUFNdUYsNkJBQTZCLEdBQUFqTixPQUFBLENBQUFpTiw2QkFBQSxPQUFBdE4sZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUN2Q3lMLGNBQWMsQ0FBQ0csU0FBUyxFQUFHLENBQzFCRyxpQkFBaUIsQ0FBQ0UsT0FBTyxFQUN6QkYsaUJBQWlCLENBQUNHLE9BQU8sRUFDekJILGlCQUFpQixDQUFDSSxPQUFPLEVBQ3pCSixpQkFBaUIsQ0FBQ0ssTUFBTSxFQUN4QkwsaUJBQWlCLENBQUNNLEtBQUssRUFDdkJOLGlCQUFpQixDQUFDTyxHQUFHLEVBQ3JCUCxpQkFBaUIsQ0FBQ1EsUUFBUSxFQUMxQlIsaUJBQWlCLENBQUNDLEtBQUssQ0FDeEIsQ0FBQ3VCLE1BQU0sQ0FBQyxVQUFDQyxJQUFJLEVBQUVDLEdBQUcsRUFBSztFQUN0QkQsSUFBSSxDQUFDQyxHQUFHLENBQUMsR0FBR0osZ0NBQWdDO0VBQzVDLE9BQU9HLElBQUk7QUFDYixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FFTC9CLGNBQWMsQ0FBQ0ksUUFBUSxNQUFBN0wsZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQ3JCK0wsaUJBQWlCLENBQUNFLE9BQU8sRUFBRyxDQUFDMUUsV0FBVyxDQUFDSSxNQUFNLEVBQUVKLFdBQVcsQ0FBQ0ssSUFBSSxFQUFFTCxXQUFXLENBQUNNLEdBQUcsQ0FBQyxHQUNuRmtFLGlCQUFpQixDQUFDRyxPQUFPLEVBQUcsQ0FBQzNFLFdBQVcsQ0FBQ0ksTUFBTSxFQUFFSixXQUFXLENBQUNLLElBQUksRUFBRUwsV0FBVyxDQUFDTSxHQUFHLENBQUMsR0FDbkZrRSxpQkFBaUIsQ0FBQ0ksT0FBTyxFQUFHLENBQUM1RSxXQUFXLENBQUNJLE1BQU0sRUFBRUosV0FBVyxDQUFDSyxJQUFJLEVBQUVMLFdBQVcsQ0FBQ00sR0FBRyxDQUFDLEdBQ25Ga0UsaUJBQWlCLENBQUNLLE1BQU0sRUFBRyxDQUFDN0UsV0FBVyxDQUFDSSxNQUFNLEVBQUVKLFdBQVcsQ0FBQ0ssSUFBSSxFQUFFTCxXQUFXLENBQUNNLEdBQUcsQ0FBQyxHQUNsRmtFLGlCQUFpQixDQUFDTSxLQUFLLEVBQUcsQ0FBQzlFLFdBQVcsQ0FBQ0ksTUFBTSxFQUFFSixXQUFXLENBQUNLLElBQUksRUFBRUwsV0FBVyxDQUFDTSxHQUFHLENBQUMsR0FDakZrRSxpQkFBaUIsQ0FBQ08sR0FBRyxFQUFHLENBQUMvRSxXQUFXLENBQUNJLE1BQU0sRUFBRUosV0FBVyxDQUFDSyxJQUFJLEVBQUVMLFdBQVcsQ0FBQ00sR0FBRyxDQUFDLEdBQy9Fa0UsaUJBQWlCLENBQUNRLFFBQVEsRUFBRyxDQUFDaEYsV0FBVyxDQUFDSSxNQUFNLEVBQUVKLFdBQVcsQ0FBQ0ssSUFBSSxFQUFFTCxXQUFXLENBQUNNLEdBQUcsQ0FBQyxFQUV4RjtBQUVNLElBQU02RiwwQkFBMEIsR0FBQXJOLE9BQUEsQ0FBQXFOLDBCQUFBLE9BQUExTixnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUNwQ3lMLGNBQWMsQ0FBQ0gsS0FBSyxFQUFHLENBQUMvRCxXQUFXLENBQUNDLE9BQU8sRUFBRUQsV0FBVyxDQUFDUyxhQUFhLENBQUMsR0FDdkV5RCxjQUFjLENBQUNDLE1BQU0sRUFBRyxDQUFDbkUsV0FBVyxDQUFDVSxLQUFLLENBQUMsR0FDM0N3RCxjQUFjLENBQUNFLElBQUksRUFBRyxDQUFDcEUsV0FBVyxDQUFDVSxLQUFLLENBQUMsQ0FDM0M7QUFFTSxJQUFNMEYsOEJBQThCLEdBQUF0TixPQUFBLENBQUFzTiw4QkFBQSxPQUFBM04sZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUV4Q3lMLGNBQWMsQ0FBQ0csU0FBUyxNQUFBNUwsZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUN0QitMLGlCQUFpQixDQUFDUyxJQUFJLEVBQUcsQ0FBQ2pGLFdBQVcsQ0FBQ0MsT0FBTyxDQUFDLEdBQzlDdUUsaUJBQWlCLENBQUNVLFdBQVcsRUFBRyxDQUFDbEYsV0FBVyxDQUFDRyxRQUFRLEVBQUVILFdBQVcsQ0FBQ0UsUUFBUSxDQUFDLElBSTlFZ0UsY0FBYyxDQUFDSSxRQUFRLEVBQUcsQ0FBQyxDQUFDLENBQzlCO0FBRU0sSUFBTStCLHFCQUFxQixHQUFBdk4sT0FBQSxDQUFBdU4scUJBQUEsT0FBQTVOLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQy9CeUwsY0FBYyxDQUFDSCxLQUFLLEVBQUcsRUFBRSxHQUN6QkcsY0FBYyxDQUFDQyxNQUFNLEVBQUcsRUFBRSxHQUMxQkQsY0FBYyxDQUFDRSxJQUFJLEVBQUcsRUFBRSxDQUMxQjtBQUVNLElBQU1rQyxrQkFBa0IsR0FBQXhOLE9BQUEsQ0FBQXdOLGtCQUFBLE9BQUE3TixnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQzVCeUwsY0FBYyxDQUFDRyxTQUFTLEVBQUcsQ0FBQyxDQUFDLEdBQzdCSCxjQUFjLENBQUNJLFFBQVEsRUFBRyxDQUFDLENBQUMsQ0FDOUI7O0FBRUQ7QUFDQTtBQUNBO0FBQ08sSUFBTWlDLG1CQUFtQixHQUFBek4sT0FBQSxDQUFBeU4sbUJBQUEsT0FBQTlOLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFDN0J5TCxjQUFjLENBQUNHLFNBQVMsTUFBQTVMLGdCQUFBLGlCQUN0QitMLGlCQUFpQixDQUFDQyxLQUFLLEVBQUdxQixnQ0FBZ0MsSUFFNUQ1QixjQUFjLENBQUNJLFFBQVEsTUFBQTdMLGdCQUFBLGlCQUNyQitMLGlCQUFpQixDQUFDQyxLQUFLLEVBQUcsQ0FBQ3pFLFdBQVcsQ0FBQ0ksTUFBTSxFQUFFSixXQUFXLENBQUNLLElBQUksRUFBRUwsV0FBVyxDQUFDTSxHQUFHLENBQUMsRUFFckY7O0FBRUQ7QUFDQTtBQUNBO0FBQ08sSUFBTWtHLFVBQVUsR0FBQTFOLE9BQUEsQ0FBQTBOLFVBQUEsSUFBQWpQLFdBQUEsV0FBQWtCLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQUFBLGdCQUFBLGFBQUFsQixXQUFBLEVBQ3BCOEosZUFBZSxDQUFDSSxNQUFNLEVBQUc7RUFDeEJqRixJQUFJLEVBQUUsYUFBYTtFQUNuQmlLLEtBQUssRUFBQXBPLGFBQUEsQ0FBQUEsYUFBQSxLQUNBOE4sMEJBQTBCLEdBQzFCQyw4QkFBOEIsQ0FDbEM7RUFDRE0sTUFBTSxFQUFFO0lBQ05DLE1BQU0sRUFBRSxTQUFSQSxNQUFNQSxDQUFFQyxDQUFDO01BQUEsT0FBSUEsQ0FBQztJQUFBO0lBQ2RDLE9BQU8sRUFBRTtFQUNYO0FBQ0YsQ0FBQyxHQUNBeEYsZUFBZSxDQUFDRyxJQUFJLEVBQUc7RUFDdEJoRixJQUFJLEVBQUUsV0FBVztFQUNqQmlLLEtBQUssRUFBQXBPLGFBQUEsQ0FBQUEsYUFBQSxLQUNBd04seUJBQXlCLEdBQ3pCRSw2QkFBNkIsQ0FDakM7RUFDRFcsTUFBTSxFQUFFO0lBQ05DLE1BQU0sRUFBRSxTQUFSQSxNQUFNQSxDQUFFQyxDQUFDO01BQUEsT0FBSUEsQ0FBQztJQUFBO0lBQ2RDLE9BQU8sRUFBRSxDQUNQQyw2QkFBb0IsQ0FBQzlKLElBQUksRUFDekI4Siw2QkFBb0IsQ0FBQ0MsT0FBTyxFQUM1QkQsNkJBQW9CLENBQUNFLFVBQVU7RUFFbkM7QUFDRixDQUFDLEdBQ0EzRixlQUFlLENBQUNLLFNBQVMsRUFBRztFQUMzQmxGLElBQUksRUFBRSxNQUFNO0VBQ1ppSyxLQUFLLEVBQUFwTyxhQUFBLENBQUFBLGFBQUEsS0FDQXdOLHlCQUF5QixHQUN6QlMsa0JBQWtCLENBQ3RCO0VBQ0RJLE1BQU0sRUFBRTtJQUNOQyxNQUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBRUMsQ0FBQztNQUFBLE9BQUlBLENBQUM7SUFBQTtJQUNkQyxPQUFPLEVBQUUsQ0FDUEMsNkJBQW9CLENBQUM5SixJQUFJLEVBQ3pCOEosNkJBQW9CLENBQUNHLElBQUksRUFDekJILDZCQUFvQixDQUFDSSxTQUFTO0VBRWxDO0FBQ0YsQ0FBQyxHQUNBN0YsZUFBZSxDQUFDRSxPQUFPLEVBQUc7RUFDekIvRSxJQUFJLEVBQUUsV0FBVztFQUNqQmlLLEtBQUssRUFBQXBPLGFBQUEsQ0FBQUEsYUFBQSxLQUFBQSxhQUFBLENBQUFBLGFBQUEsS0FFRXdOLHlCQUF5QixXQUFBcE4sZ0JBQUEsaUJBQzNCeUwsY0FBYyxDQUFDSCxLQUFLLEtBQUFsRyxNQUFBLEtBQUFzSixtQkFBQSxhQUNoQnRCLHlCQUF5QixDQUFDM0IsY0FBYyxDQUFDSCxLQUFLLENBQUMsSUFDbEQvRCxXQUFXLENBQUNTLGFBQWEsT0FHMUJzRiw2QkFBNkIsQ0FDakM7RUFDRFcsTUFBTSxFQUFFO0lBQ05DLE1BQU0sRUFBRSxTQUFSQSxNQUFNQSxDQUFFQyxDQUFDO01BQUEsT0FBSUEsQ0FBQztJQUFBO0lBQ2RDLE9BQU8sRUFBRSxDQUNQQyw2QkFBb0IsQ0FBQzlKLElBQUksRUFDekI4Siw2QkFBb0IsQ0FBQ0MsT0FBTyxFQUM1QkQsNkJBQW9CLENBQUNFLFVBQVU7RUFFbkM7QUFDRixDQUFDLEdBQ0EzRixlQUFlLFdBQVEsRUFBRztFQUN6QjdFLElBQUksRUFBRSxTQUFTO0VBQ2ZpSyxLQUFLLEVBQUFwTyxhQUFBLENBQUFBLGFBQUEsS0FDQThOLDBCQUEwQixHQUMxQkMsOEJBQThCLENBQ2xDO0VBQ0RNLE1BQU0sRUFBRTtJQUNOQyxNQUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBRUMsQ0FBQztNQUFBLE9BQUlBLENBQUM7SUFBQTtJQUNkQyxPQUFPLEVBQUUsQ0FBQ0MsNkJBQW9CLENBQUM5SixJQUFJLEVBQUU4Siw2QkFBb0IsQ0FBQ00sT0FBTztFQUNuRTtBQUNGLENBQUMsR0FDQS9GLGVBQWUsQ0FBQ0MsSUFBSSxFQUFHO0VBQ3RCOUUsSUFBSSxFQUFFLE1BQU07RUFDWmlLLEtBQUssRUFBQXBPLGFBQUEsQ0FBQUEsYUFBQSxLQUNBOE4sMEJBQTBCLEdBQzFCQyw4QkFBOEIsQ0FDbEM7RUFDRE0sTUFBTSxFQUFFO0lBQ05DLE1BQU0sRUFBRSxTQUFSQSxNQUFNQSxDQUFFQyxDQUFDO01BQUEsT0FBSUEsQ0FBQztJQUFBO0lBQ2RDLE9BQU8sRUFBRSxDQUFDQyw2QkFBb0IsQ0FBQzlKLElBQUksRUFBRThKLDZCQUFvQixDQUFDRyxJQUFJO0VBQ2hFO0FBQ0YsQ0FBQyxHQUNBNUYsZUFBZSxDQUFDMUMsT0FBTyxFQUFHO0VBQ3pCbkMsSUFBSSxFQUFFLFVBQVU7RUFDaEJpSyxLQUFLLEVBQUFwTyxhQUFBLENBQUFBLGFBQUEsS0FDQWdPLHFCQUFxQixHQUNyQkMsa0JBQWtCLENBQ3RCO0VBQ0RJLE1BQU0sRUFBRTtJQUNOQyxNQUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBQTtNQUFBLE9BQVEsS0FBSztJQUFBO0lBQ25CRSxPQUFPLEVBQUU7RUFDWDtBQUNGLENBQUMsR0FDQXhGLGVBQWUsQ0FBQ1EsUUFBUSxFQUFHO0VBQzFCckYsSUFBSSxFQUFFLFVBQVU7RUFDaEJpSyxLQUFLLEVBQUFwTyxhQUFBLENBQUFBLGFBQUEsS0FDQWdPLHFCQUFxQixHQUNyQkMsa0JBQWtCLENBQ3RCO0VBQ0RJLE1BQU0sRUFBRTtJQUNOQyxNQUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBQTtNQUFBLE9BQVEsS0FBSztJQUFBO0lBQ25CRSxPQUFPLEVBQUU7RUFDWDtBQUNGLENBQUMsR0FDQXhGLGVBQWUsQ0FBQ08sTUFBTSxFQUFHO0VBQ3hCcEYsSUFBSSxFQUFFLFdBQVc7RUFDakJpSyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0VBQ1RDLE1BQU0sRUFBRTtJQUNOQyxNQUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBQTtNQUFBLE9BQVEsS0FBSztJQUFBO0lBQ25CRSxPQUFPLEVBQUU7RUFDWDtBQUNGLENBQUMsR0FDQXhGLGVBQWUsQ0FBQ00sS0FBSyxFQUFHO0VBQ3ZCbkYsSUFBSSxFQUFFLFdBQVc7RUFDakJpSyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0VBQ1RDLE1BQU0sRUFBRTtJQUNOQyxNQUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBQTtNQUFBLE9BQVEsS0FBSztJQUFBO0lBQ25CRSxPQUFPLEVBQUU7RUFDWDtBQUNGLENBQUMsT0FBQXBPLGdCQUFBLGFBQUFsQixXQUFBLEVBQ0E4SixlQUFlLENBQUNTLEVBQUUsRUFBRztFQUNwQnRGLElBQUksRUFBRSxJQUFJO0VBQ1ZpSyxLQUFLLEVBQUFwTyxhQUFBLENBQUFBLGFBQUEsS0FDQWdPLHFCQUFxQixHQUNyQkMsa0JBQWtCLENBQ3RCO0VBQ0RJLE1BQU0sRUFBRTtJQUNOQyxNQUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBQTtNQUFBLE9BQVEsS0FBSztJQUFBO0lBQ25CRSxPQUFPLEVBQUU7RUFDWDtBQUNGLENBQUMsRUFDRjtBQUVNLElBQU1RLDhCQUE4QixHQUFBdk8sT0FBQSxDQUFBdU8sOEJBQUEsR0FBR3pQLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDcU0sY0FBYyxDQUFDLENBQUM4QixNQUFNLENBQzlFLFVBQUNzQixJQUFJLEVBQUU3QixHQUFHO0VBQUEsT0FBQXBOLGFBQUEsQ0FBQUEsYUFBQSxLQUNMaVAsSUFBSSxXQUFBN08sZ0JBQUEsaUJBQ05nTixHQUFHLEVBQUc3TixNQUFNLENBQUNDLElBQUksQ0FBQzJPLFVBQVUsQ0FBQyxDQUFDeE8sTUFBTSxDQUNuQyxVQUFBdVAsRUFBRTtJQUFBLE9BQUlmLFVBQVUsQ0FBQ2UsRUFBRSxDQUFDLENBQUNkLEtBQUssQ0FBQ2hCLEdBQUcsQ0FBQyxJQUFJN04sTUFBTSxDQUFDQyxJQUFJLENBQUMyTyxVQUFVLENBQUNlLEVBQUUsQ0FBQyxDQUFDZCxLQUFLLENBQUNoQixHQUFHLENBQUMsQ0FBQyxDQUFDbE4sTUFBTTtFQUFBLENBQ2xGLENBQUM7QUFBQSxDQUNELEVBQ0YsQ0FBQyxDQUNILENBQUM7QUFFTSxJQUFNaVAsbUJBQW1CLEdBQUExTyxPQUFBLENBQUEwTyxtQkFBQSxHQUFHO0VBQ2pDQyxPQUFPLEVBQUUsU0FBUztFQUNsQkMsYUFBYSxFQUFFLFNBQVM7RUFDeEJDLFdBQVcsRUFBRSxTQUFTO0VBQ3RCQyxXQUFXLEVBQUU7QUFDZixDQUFDO0FBRU0sSUFBTUMsMkJBQTJCLEdBQUEvTyxPQUFBLENBQUErTywyQkFBQSxHQUFHLGdCQUFnQjtBQUNwRCxJQUFNQyxpQ0FBaUMsR0FBQWhQLE9BQUEsQ0FBQWdQLGlDQUFBLEdBQUcsQ0FBQzs7QUFFbEQ7QUFDTyxJQUFNQyxzQkFBNkIsR0FBQWpQLE9BQUEsQ0FBQWlQLHNCQUFBLEdBQUcsRUFBRTtBQUV4QyxJQUFNQyxjQUF5QixHQUFBbFAsT0FBQSxDQUFBa1AsY0FBQSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JEO0FBQ08sSUFBTUMsbUJBQThCLEdBQUFuUCxPQUFBLENBQUFtUCxtQkFBQSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBRTNELElBQU1DLHNCQUFzQixHQUFBcFAsT0FBQSxDQUFBb1Asc0JBQUEsR0FBRyxDQUFDO0FBRWhDLElBQU1DLGlCQUFpQixHQUFBclAsT0FBQSxDQUFBcVAsaUJBQUEsR0FBRztFQUMvQkMsTUFBTSxFQUFFO0lBQ04vTSxLQUFLLEVBQUUsd0JBQXdCO0lBQy9Cc0gsS0FBSyxFQUFFO0VBQ1QsQ0FBQztFQUNEMEYsTUFBTSxFQUFFO0lBQ05oTixLQUFLLEVBQUUsd0JBQXdCO0lBQy9Cc0gsS0FBSyxFQUFFO0VBQ1QsQ0FBQztFQUNEMkYsTUFBTSxFQUFFO0lBQ05qTixLQUFLLEVBQUUsd0JBQXdCO0lBQy9Cc0gsS0FBSyxFQUFFO0VBQ1Q7QUFDRixDQUFDO0FBRU0sSUFBTTRGLGVBQWUsR0FBQXpQLE9BQUEsQ0FBQXlQLGVBQUEsR0FBRztFQUM3QkMsUUFBUSxFQUFFO0lBQ1JuTixLQUFLLEVBQUUsd0JBQXdCO0lBQy9Cb04sU0FBUyxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUNyQ0MsYUFBYSxFQUFFO0VBQ2pCLENBQUM7RUFDRE4sTUFBTSxFQUFFO0lBQ047SUFDQTtJQUNBL00sS0FBSyxFQUFFLHNCQUFzQjtJQUM3Qm9OLFNBQVMsRUFBRSxDQUFDLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUscUJBQXFCLENBQUM7SUFDN0VDLGFBQWEsRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVO0VBQ3hDLENBQUM7RUFDREMsV0FBVyxFQUFFO0lBQ1h0TixLQUFLLEVBQUUsMkJBQTJCO0lBQ2xDb04sU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDbkVDLGFBQWEsRUFBRSxDQUFDLGVBQWUsRUFBRSxVQUFVO0VBQzdDO0FBQ0YsQ0FBQztBQUVNLElBQU1FLG9CQUFvQixHQUFBOVAsT0FBQSxDQUFBOFAsb0JBQUEsR0FBRyxDQUFDO0FBRTlCLElBQU1DLFdBQVcsR0FBQS9QLE9BQUEsQ0FBQStQLFdBQUEsR0FBRyxJQUFBOU4scUJBQVMsRUFBQztFQUNuQytOLEtBQUssRUFBRSxJQUFJO0VBQ1hDLEtBQUssRUFBRTtBQUNULENBQUMsQ0FBQztBQUVLLElBQU1DLGlCQUFpQixHQUFBbFEsT0FBQSxDQUFBa1EsaUJBQUEsR0FBRyxJQUFBak8scUJBQVMsRUFBQztFQUN6Q2tPLE1BQU0sRUFBRSxJQUFJO0VBQ1pDLGFBQWEsRUFBRSxJQUFJO0VBQ25CQyxlQUFlLEVBQUUsSUFBSTtFQUNyQkMsTUFBTSxFQUFFO0FBQ1YsQ0FBQyxDQUFDO0FBU0ssSUFBTUMsaUJBQW1DLEdBQUF2USxPQUFBLENBQUF1USxpQkFBQSxHQUFHO0VBQ2pEak8sRUFBRSxFQUFFNE4saUJBQWlCLENBQUNDLE1BQU07RUFDNUI1TixLQUFLLEVBQUUsdUNBQXVDO0VBQzlDaU8sT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUdDLE9BQU8sRUFBRUMsT0FBTztJQUFBLE9BQU07TUFBQ3JQLEtBQUssRUFBRW9QLE9BQU87TUFBRUUsTUFBTSxFQUFFRDtJQUFPLENBQUM7RUFBQTtBQUNuRSxDQUFDO0FBQ00sSUFBTUUsaUJBQW1DLEdBQUE1USxPQUFBLENBQUE0USxpQkFBQSxHQUFHO0VBQ2pEdE8sRUFBRSxFQUFFNE4saUJBQWlCLENBQUNJLE1BQU07RUFDNUJPLE1BQU0sRUFBRSxJQUFJO0VBQ1p0TyxLQUFLLEVBQUUsK0JBQStCO0VBQ3RDaU8sT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUdNLElBQUksRUFBRUMsSUFBSTtJQUFBLE9BQU07TUFBQzFQLEtBQUssRUFBRXlQLElBQUk7TUFBRUgsTUFBTSxFQUFFSTtJQUFJLENBQUM7RUFBQTtBQUN2RCxDQUFDO0FBQ00sSUFBTUMsc0JBQXdDLEdBQUFoUixPQUFBLENBQUFnUixzQkFBQSxHQUFHO0VBQ3REMU8sRUFBRSxFQUFFNE4saUJBQWlCLENBQUNFLGFBQWE7RUFDbkM3TixLQUFLLEVBQUUsNEJBQTRCO0VBQ25DaU8sT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUVDLE9BQU87SUFBQSxPQUFLO01BQ25CcFAsS0FBSyxFQUFFb1AsT0FBTztNQUNkRSxNQUFNLEVBQUVNLElBQUksQ0FBQ0MsS0FBSyxDQUFDVCxPQUFPLEdBQUcsSUFBSTtJQUNuQyxDQUFDO0VBQUE7QUFDSCxDQUFDO0FBQ00sSUFBTVUsd0JBQTBDLEdBQUFuUixPQUFBLENBQUFtUix3QkFBQSxHQUFHO0VBQ3hEN08sRUFBRSxFQUFFNE4saUJBQWlCLENBQUNHLGVBQWU7RUFDckM5TixLQUFLLEVBQUUsNkJBQTZCO0VBQ3BDaU8sT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUVDLE9BQU87SUFBQSxPQUFLO01BQ25CcFAsS0FBSyxFQUFFb1AsT0FBTztNQUNkRSxNQUFNLEVBQUVNLElBQUksQ0FBQ0MsS0FBSyxDQUFDVCxPQUFPLEdBQUcsTUFBTTtJQUNyQyxDQUFDO0VBQUE7QUFDSCxDQUFDO0FBRU0sSUFBTVcsd0JBQXlELEdBQUFwUixPQUFBLENBQUFvUix3QkFBQSxHQUFHLENBQ3ZFYixpQkFBaUIsRUFDakJTLHNCQUFzQixFQUN0Qkcsd0JBQXdCLEVBQ3hCUCxpQkFBaUIsQ0FDbEI7QUFxQk0sSUFBTVMsb0JBQTJDLEdBQUFyUixPQUFBLENBQUFxUixvQkFBQSxHQUFHO0VBQ3pEL08sRUFBRSxFQUFFeU4sV0FBVyxDQUFDQyxLQUFLO0VBQ3JCek4sS0FBSyxFQUFFLElBQUk7RUFDWCtPLFNBQVMsRUFBRSxJQUFJO0VBQ2YzRCxLQUFLLEVBQUUsQ0FBQztFQUNSNkMsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUdDLE9BQU8sRUFBRUMsT0FBTztJQUFBLE9BQU07TUFDOUJyUCxLQUFLLEVBQUVvUCxPQUFPO01BQ2RFLE1BQU0sRUFBRUQ7SUFDVixDQUFDO0VBQUE7QUFDSCxDQUFDO0FBRU0sSUFBTWEsb0JBQTJDLEdBQUF2UixPQUFBLENBQUF1UixvQkFBQSxHQUFHO0VBQ3pEalAsRUFBRSxFQUFFeU4sV0FBVyxDQUFDRSxLQUFLO0VBQ3JCMU4sS0FBSyxFQUFFLElBQUk7RUFDWCtPLFNBQVMsRUFBRSxJQUFJO0VBQ2YzRCxLQUFLLEVBQUUsQ0FBQztFQUNSNkMsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUdDLE9BQU8sRUFBRUMsT0FBTztJQUFBLE9BQU07TUFDOUJyUCxLQUFLLEVBQUVvUCxPQUFPLEdBQUcsQ0FBQztNQUNsQkUsTUFBTSxFQUFFRCxPQUFPLEdBQUc7SUFDcEIsQ0FBQztFQUFBO0FBQ0gsQ0FBQzs7QUFFRDtBQUNPLElBQU1jLHlCQUFnRCxHQUFBeFIsT0FBQSxDQUFBd1IseUJBQUEsR0FBRztFQUM5RGxQLEVBQUUsRUFBRSxXQUFXO0VBQ2ZDLEtBQUssRUFBRSxvQkFBb0I7RUFDM0IrTyxTQUFTLEVBQUUsSUFBSTtFQUNmZCxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtJQUFBLE9BQVM7TUFBQ25QLEtBQUssRUFBRSxJQUFJO01BQUVzUCxNQUFNLEVBQUU7SUFBSSxDQUFDO0VBQUE7QUFDN0MsQ0FBQztBQUVNLElBQU1jLHdCQUErQyxHQUFBelIsT0FBQSxDQUFBeVIsd0JBQUEsR0FBRztFQUM3RG5QLEVBQUUsRUFBRSxVQUFVO0VBQ2RDLEtBQUssRUFBRSxtQkFBbUI7RUFDMUIrTyxTQUFTLEVBQUUsSUFBSTtFQUNmZCxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtJQUFBLE9BQVM7TUFBQ25QLEtBQUssRUFBRSxJQUFJO01BQUVzUCxNQUFNLEVBQUU7SUFBRyxDQUFDO0VBQUE7QUFDNUMsQ0FBQztBQUVNLElBQU1lLHlCQUFnRCxHQUFBMVIsT0FBQSxDQUFBMFIseUJBQUEsR0FBRztFQUM5RHBQLEVBQUUsRUFBRSxXQUFXO0VBQ2ZDLEtBQUssRUFBRSxvQkFBb0I7RUFDM0IrTyxTQUFTLEVBQUUsSUFBSTtFQUNmZCxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtJQUFBLE9BQVM7TUFBQ25QLEtBQUssRUFBRSxJQUFJO01BQUVzUCxNQUFNLEVBQUU7SUFBSSxDQUFDO0VBQUE7QUFDN0MsQ0FBQztBQUVNLElBQU1nQix3QkFBK0MsR0FBQTNSLE9BQUEsQ0FBQTJSLHdCQUFBLEdBQUc7RUFDN0RyUCxFQUFFLEVBQUUsVUFBVTtFQUNkQyxLQUFLLEVBQUUsbUJBQW1CO0VBQzFCK08sU0FBUyxFQUFFLElBQUk7RUFDZmQsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7SUFBQSxPQUFTO01BQUNuUCxLQUFLLEVBQUUsSUFBSTtNQUFFc1AsTUFBTSxFQUFFO0lBQUcsQ0FBQztFQUFBO0FBQzVDLENBQUM7QUFFTSxJQUFNaUIsd0JBQStDLEdBQUE1UixPQUFBLENBQUE0Uix3QkFBQSxHQUFHO0VBQzdEdFAsRUFBRSxFQUFFLFVBQVU7RUFDZEMsS0FBSyxFQUFFLGtCQUFrQjtFQUN6QitPLFNBQVMsRUFBRSxJQUFJO0VBQ2ZkLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO0lBQUEsT0FBUztNQUFDblAsS0FBSyxFQUFFLElBQUk7TUFBRXNQLE1BQU0sRUFBRTtJQUFHLENBQUM7RUFBQTtBQUM1QyxDQUFDO0FBRU0sSUFBTWtCLHdCQUErQyxHQUFBN1IsT0FBQSxDQUFBNlIsd0JBQUEsR0FBRztFQUM3RHZQLEVBQUUsRUFBRSxVQUFVO0VBQ2RDLEtBQUssRUFBRSxrQkFBa0I7RUFDekIrTyxTQUFTLEVBQUUsSUFBSTtFQUNmZCxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtJQUFBLE9BQVM7TUFBQ25QLEtBQUssRUFBRSxJQUFJO01BQUVzUCxNQUFNLEVBQUU7SUFBRyxDQUFDO0VBQUE7QUFDNUMsQ0FBQztBQUVNLElBQU1tQix5QkFBZ0QsR0FBQTlSLE9BQUEsQ0FBQThSLHlCQUFBLEdBQUc7RUFDOUR4UCxFQUFFLEVBQUUsV0FBVztFQUNmQyxLQUFLLEVBQUUsbUJBQW1CO0VBQzFCK08sU0FBUyxFQUFFLElBQUk7RUFDZmQsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7SUFBQSxPQUFTO01BQUNuUCxLQUFLLEVBQUUsSUFBSTtNQUFFc1AsTUFBTSxFQUFFO0lBQUksQ0FBQztFQUFBO0FBQzdDLENBQUM7QUFFTSxJQUFNb0IseUJBQWdELEdBQUEvUixPQUFBLENBQUErUix5QkFBQSxHQUFHO0VBQzlEelAsRUFBRSxFQUFFLFdBQVc7RUFDZkMsS0FBSyxFQUFFLG1CQUFtQjtFQUMxQitPLFNBQVMsRUFBRSxJQUFJO0VBQ2ZkLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO0lBQUEsT0FBUztNQUFDblAsS0FBSyxFQUFFLElBQUk7TUFBRXNQLE1BQU0sRUFBRTtJQUFJLENBQUM7RUFBQTtBQUM3QyxDQUFDO0FBRU0sSUFBTXFCLDZCQUFtRSxHQUFBaFMsT0FBQSxDQUFBZ1MsNkJBQUEsR0FBRyxDQUNqRlgsb0JBQW9CLEVBQ3BCRSxvQkFBb0IsRUFDcEJFLHdCQUF3QixFQUN4QkQseUJBQXlCLEVBQ3pCRSx5QkFBeUIsRUFDekJDLHdCQUF3QixFQUN4QkMsd0JBQXdCLEVBQ3hCQyx3QkFBd0IsRUFDeEJDLHlCQUF5QixFQUN6QkMseUJBQXlCLENBQzFCO0FBRU0sSUFBTUUsZ0JBQWdCLEdBQUFqUyxPQUFBLENBQUFpUyxnQkFBQSxHQUFHLElBQUFoUSxxQkFBUyxFQUFDO0VBQ3hDaVEsR0FBRyxFQUFFO0VBQ0w7RUFDQTtFQUNBO0VBQ0E7QUFDRixDQUFDLENBQUM7QUFFSyxJQUFNQyx3QkFBd0IsR0FBQW5TLE9BQUEsQ0FBQW1TLHdCQUFBLEdBQUcsQ0FDdEM7RUFDRTdQLEVBQUUsRUFBRTJQLGdCQUFnQixDQUFDQyxHQUFHO0VBQ3hCM1AsS0FBSyxFQUFFMFAsZ0JBQWdCLENBQUNDLEdBQUcsQ0FBQ0UsV0FBVyxDQUFDLENBQUM7RUFDekNkLFNBQVMsRUFBRTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBLENBQ0Q7O0FBRUQ7QUFDTyxJQUFNZSxrQkFBa0IsR0FBQXJTLE9BQUEsQ0FBQXFTLGtCQUFBLEdBQUcsSUFBQXBRLHFCQUFTLEVBQUM7RUFDMUNxUSxJQUFJLEVBQUUsSUFBSTtFQUNWQyxJQUFJLEVBQUU7QUFDUixDQUFDLENBQUM7QUFFSyxJQUFNQyxxQkFBcUIsR0FBQXhTLE9BQUEsQ0FBQXdTLHFCQUFBLEdBQUcsSUFBQXZRLHFCQUFTLEVBQUM7RUFDN0N3USxJQUFJLEVBQUUsSUFBSTtFQUNWQyxJQUFJLEVBQUU7QUFDUixDQUFDLENBQUM7O0FBRUY7QUFDTyxJQUFNQyx5QkFBeUIsR0FBQTNTLE9BQUEsQ0FBQTJTLHlCQUFBLEdBQUc3VCxNQUFNLENBQUN3TixPQUFPLENBQUMrRixrQkFBa0IsQ0FBQyxDQUFDOUYsR0FBRyxDQUM3RSxVQUFDcUcsS0FBb0I7RUFBQSxPQUFNO0lBQ3pCdFEsRUFBRSxFQUFFc1EsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNaclEsS0FBSyxFQUFFcVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDUixXQUFXLENBQUMsQ0FBQztJQUM3QmQsU0FBUyxFQUFFO0VBQ2IsQ0FBQztBQUFBLENBQ0gsQ0FBQztBQUVNLFNBQVN1QixxQkFBcUJBLENBQUMxRyxJQUFZLEVBQVU7RUFDMUQsNEVBQUFwSCxNQUFBLENBQTRFb0gsSUFBSSxDQUFDaUcsV0FBVyxDQUFDLENBQUM7QUFDaEc7QUFFTyxJQUFNVSw0QkFBNEIsR0FBQTlTLE9BQUEsQ0FBQThTLDRCQUFBLEdBQUdoVSxNQUFNLENBQUN3TixPQUFPLENBQUNrRyxxQkFBcUIsQ0FBQyxDQUFDakcsR0FBRyxDQUNuRixVQUFDcUcsS0FBb0I7RUFBQSxPQUFNO0lBQ3pCdFEsRUFBRSxFQUFFc1EsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNaclEsS0FBSywwQkFBQXdDLE1BQUEsQ0FBMEI2TixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUNSLFdBQVcsQ0FBQyxDQUFDLENBQUU7SUFDdkRkLFNBQVMsRUFBRSxJQUFJO0lBQ2ZwTSxHQUFHLEVBQUUyTixxQkFBcUIsQ0FBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQztFQUNyQyxDQUFDO0FBQUEsQ0FDSCxDQUFDO0FBRU0sSUFBTUcsa0JBQWtCLEdBQUEvUyxPQUFBLENBQUErUyxrQkFBQSxHQUFHLENBQUM7QUFFNUIsSUFBTUMsNEJBQTRCLEdBQUFoVCxPQUFBLENBQUFnVCw0QkFBQSxHQUFHLHNCQUFzQjtBQUUzRCxJQUFNQywwQkFBMEIsR0FBQWpULE9BQUEsQ0FBQWlULDBCQUFBLEdBQUcsSUFBQWhSLHFCQUFTLEVBQUM7RUFDbERpUixJQUFJLEVBQUUsSUFBSTtFQUNWQyxLQUFLLEVBQUUsSUFBSTtFQUNYQyxPQUFPLEVBQUUsSUFBSTtFQUNiQyxPQUFPLEVBQUU7QUFDWCxDQUFDLENBQUM7QUFFSyxJQUFNQywyQkFBMkIsR0FBQXRULE9BQUEsQ0FBQXNULDJCQUFBLEdBQUcsSUFBQXJSLHFCQUFTLEVBQUM7RUFDbkRzUixNQUFNLEVBQUUsSUFBSTtFQUNaQyxJQUFJLEVBQUU7QUFDUixDQUFDLENBQUM7O0FBRUY7QUFDTyxJQUFNQywwQkFBMEIsR0FBQXpULE9BQUEsQ0FBQXlULDBCQUFBLEdBQUcsR0FBRzs7QUFFN0M7QUFDTyxJQUFNQyxVQUFVLEdBQUExVCxPQUFBLENBQUEwVCxVQUFBLEdBQUcsR0FBRztBQUN0QixJQUFNQyxHQUFHLEdBQUEzVCxPQUFBLENBQUEyVCxHQUFBLEdBQUcsRUFBRTs7QUFFckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxnQkFBZ0IsR0FBQTVULE9BQUEsQ0FBQTRULGdCQUFBLEdBQUcsSUFBQTNSLHFCQUFTLEVBQUM7RUFDeEM0UixJQUFJLEVBQUUsSUFBSTtFQUNWQyxXQUFXLEVBQUUsSUFBSTtFQUNqQmxNLEtBQUssRUFBRSxJQUFJO0VBQ1htTSxRQUFRLEVBQUU7QUFDWixDQUFDLENBQUM7QUFDSyxJQUFNQyxtQkFBbUIsR0FBQWhVLE9BQUEsQ0FBQWdVLG1CQUFBLEdBQUcsb0JBQW9CO0FBQ2hELElBQU1DLG1CQUFxQyxHQUFBalUsT0FBQSxDQUFBaVUsbUJBQUEsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDckQsSUFBTUMsa0JBQWtCLEdBQUFsVSxPQUFBLENBQUFrVSxrQkFBQSxHQUFHLEtBQUs7O0FBRXZDO0FBQ08sSUFBTUMscUJBQXFCLEdBQUFuVSxPQUFBLENBQUFtVSxxQkFBQSxHQUFHLGtCQUFrQjtBQUNoRCxJQUFNQyxpQkFBaUIsR0FBQXBVLE9BQUEsQ0FBQW9VLGlCQUFBLEdBQUcsZ0JBQWdCO0FBQzFDLElBQU1DLG1CQUFtQixHQUFBclUsT0FBQSxDQUFBcVUsbUJBQUEsR0FBRyxJQUFJO0FBQ2hDLElBQU1DLG1CQUE2QyxHQUFBdFUsT0FBQSxDQUFBc1UsbUJBQUEsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFO0FBQ0E7QUFDQTtBQUNPLElBQU1DLGtCQUFrQixHQUFBdlUsT0FBQSxDQUFBdVUsa0JBQUEsR0FBRyxHQUFHOztBQUVyQztBQUNPLElBQU1DLGVBQWUsR0FBQXhVLE9BQUEsQ0FBQXdVLGVBQUEsR0FBRyxxQkFBcUI7QUFDN0MsSUFBTUMsMkJBQTJCLEdBQUF6VSxPQUFBLENBQUF5VSwyQkFBQSxHQUFHLENBQUM7QUFDckMsSUFBTUMsWUFBWSxHQUFBMVUsT0FBQSxDQUFBMFUsWUFBQSxHQUFHO0VBQzFCQyxZQUFZLEVBQUUsY0FBYztFQUM1QkMsY0FBYyxFQUFFLGdCQUFnQjtFQUNoQ0MsV0FBVyxFQUFFLGFBQWE7RUFDMUJDLGVBQWUsRUFBRSxpQkFBaUI7RUFDbENDLFVBQVUsRUFBRSxZQUFZO0VBQ3hCckMsSUFBSSxFQUFFO0FBQ1IsQ0FBQztBQUVNLElBQU1zQyxpQkFBMkIsR0FBQWhWLE9BQUEsQ0FBQWdWLGlCQUFBLEdBQUcsQ0FDekNOLFlBQVksQ0FBQ0MsWUFBWSxFQUN6QkQsWUFBWSxDQUFDRSxjQUFjLEVBQzNCRixZQUFZLENBQUNHLFdBQVcsRUFDeEJILFlBQVksQ0FBQ0ksZUFBZSxFQUM1QkosWUFBWSxDQUFDSyxVQUFVLENBQ3hCO0FBRU0sSUFBTUUsVUFBVSxHQUFBalYsT0FBQSxDQUFBaVYsVUFBQSxHQUFHLElBQUFoVCxxQkFBUyxFQUFDO0VBQ2xDaVQsU0FBUyxFQUFFLElBQUk7RUFDZkMsU0FBUyxFQUFFO0FBQ2IsQ0FBQyxDQUFDOztBQUVGO0FBQ08sSUFBTUMsNkJBQTZCLEdBQUFwVixPQUFBLENBQUFvViw2QkFBQSxHQUFHLEdBQUc7O0FBRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsZUFBZSxHQUFBclYsT0FBQSxDQUFBcVYsZUFBQSxHQUFHLENBQUM7QUFDekIsSUFBTUMsdUJBQXVCLEdBQUF0VixPQUFBLENBQUFzVix1QkFBQSxHQUFHO0VBQ3JDalUsS0FBSyxFQUFFLEdBQUc7RUFDVnNQLE1BQU0sRUFBRTtBQUNWLENBQUM7QUFFTSxJQUFNNEUsa0JBQWtCLEdBQUF2VixPQUFBLENBQUF1VixrQkFBQSxHQUFHO0VBQ2hDQyxLQUFLLEVBQUUsR0FBRztFQUNWQyxXQUFXLEVBQUU7QUFDZixDQUFDOztBQUVEO0FBQ08sSUFBTUMsZUFBZSxHQUFBMVYsT0FBQSxDQUFBMFYsZUFBQSxHQUFHLElBQUF6VCxxQkFBUyxFQUFDO0VBQ3ZDMFQsTUFBTSxFQUFFLElBQUk7RUFDWkMsT0FBTyxFQUFFLElBQUk7RUFDYkMsT0FBTyxFQUFFO0FBQ1gsQ0FBQyxDQUFDO0FBRUssSUFBTUMscUJBQXFCLEdBQUE5VixPQUFBLENBQUE4VixxQkFBQSxHQUFHLENBQUMsQ0FBQztBQUVoQyxJQUFNQyxlQUFlLEdBQUEvVixPQUFBLENBQUErVixlQUFBLEdBQUcsSUFBQTlULHFCQUFTLEVBQUM7RUFDdkMrVCxHQUFHLEVBQUUsSUFBSTtFQUNUblEsT0FBTyxFQUFFLElBQUk7RUFDYm9RLEdBQUcsRUFBRSxJQUFJO0VBQ1RDLFFBQVEsRUFBRSxJQUFJO0VBQ2RDLEtBQUssRUFBRSxJQUFJO0VBQ1hDLE1BQU0sRUFBRTtBQUNWLENBQUMsQ0FBQztBQUVLLElBQU1DLFlBQVksR0FBQXJXLE9BQUEsQ0FBQXFXLFlBQUEsR0FBRyxJQUFBcFUscUJBQVMsRUFBQztFQUNwQ3FVLGFBQWEsRUFBRSxJQUFJO0VBQ25CeFUsU0FBUyxFQUFFLElBQUk7RUFDZnlVLFFBQVEsRUFBRSxJQUFJO0VBQ2RDLFFBQVEsRUFBRSxJQUFJO0VBQ2RDLE9BQU8sRUFBRSxJQUFJO0VBQ2JDLFNBQVMsRUFBRSxJQUFJO0VBQ2ZDLFFBQVEsRUFBRSxJQUFJO0VBQ2RDLE1BQU0sRUFBRSxJQUFJO0VBQ1pDLFVBQVUsRUFBRTtBQUNkLENBQUMsQ0FBQztBQUFDLElBRVNDLFdBQVcsR0FBQTlXLE9BQUEsQ0FBQThXLFdBQUEsMEJBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBQSxPQUFYQSxXQUFXO0FBQUE7QUFNdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1DLGNBQWMsR0FBQS9XLE9BQUEsQ0FBQStXLGNBQUEsR0FBRyxDQUFDOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsY0FBYyxHQUFBaFgsT0FBQSxDQUFBZ1gsY0FBQSxHQUFHLEVBQUU7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1DLGtCQUFrQixHQUFBalgsT0FBQSxDQUFBaVgsa0JBQUEsR0FBRyxFQUFFO0FBc0M3QixJQUFNQyxvQkFBaUMsR0FBQWxYLE9BQUEsQ0FBQWtYLG9CQUFBLEdBQUc7RUFDL0NDLFVBQVUsRUFBRSxJQUFJO0VBQ2hCQyxRQUFRLEVBQUUsSUFBSTtFQUNkQyxjQUFjLEVBQUUsR0FBRztFQUNuQkMsZUFBZSxFQUFFLEdBQUc7RUFDcEJDLE9BQU8sRUFBRSxLQUFLO0VBQ2RDLFlBQVksRUFBRSxFQUFFO0VBQ2hCQyxVQUFVLEVBQUUsSUFBSTtFQUNoQkMsaUJBQWlCLEVBQUUsSUFBSTtFQUN2QkMsT0FBTyxFQUFFLElBQUk7RUFDYkMsTUFBTSxFQUFFLEtBQUs7RUFDYkMsV0FBVyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7RUFDckNDLFVBQVUsRUFBRSxJQUFJO0VBQ2hCQyxlQUFlLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztFQUM3QkMsS0FBSyxFQUFFLElBQUk7RUFDWEMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7RUFDeEJDLE9BQU8sRUFBRSxJQUFJO0VBQ2JDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0VBQ3pCO0VBQ0E7RUFDQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7RUFDM0I7RUFDQUMsS0FBSyxFQUFFO0FBQ1QsQ0FBQztBQUVNLElBQU1DLHNCQUErQyxHQUFBdFksT0FBQSxDQUFBc1ksc0JBQUEsR0FBRztFQUM3RDFRLEtBQUssRUFBRSxJQUFJO0VBQ1gyUSxHQUFHLEVBQUUsSUFBSTtFQUNUQyxJQUFJLEVBQUUsSUFBSTtFQUNWQyxPQUFPLEVBQUUsSUFBSTtFQUNiNVMsT0FBTyxFQUFFLElBQUk7RUFDYjZTLE9BQU8sRUFBRSxJQUFJO0VBQ2J2VCxJQUFJLEVBQUUsSUFBSTtFQUNWd1QsU0FBUyxFQUFFLElBQUk7RUFDZixJQUFJLEVBQUUsSUFBSTtFQUNWQyxVQUFVLEVBQUUsSUFBSTtFQUNoQkMsT0FBTyxFQUFFLElBQUk7RUFDYkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsSUFBSSxFQUFFLElBQUk7RUFDVkMsVUFBVSxFQUFFLElBQUk7RUFDaEJDLE9BQU8sRUFBRSxJQUFJO0VBQ2JDLEVBQUUsRUFBRSxLQUFLO0VBQ1RDLE1BQU0sRUFBRSxLQUFLO0VBQ2I7RUFDQTtFQUNBQyxJQUFJLEVBQUU7QUFDUixDQUFDO0FBQUMsSUFFVUMsWUFBWSxHQUFBclosT0FBQSxDQUFBcVosWUFBQSwwQkFBWkEsWUFBWTtFQUFaQSxZQUFZO0VBQVpBLFlBQVk7RUFBWkEsWUFBWTtFQUFBLE9BQVpBLFlBQVk7QUFBQTtBQU14QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsK0JBQStCLEdBQUF0WixPQUFBLENBQUFzWiwrQkFBQSxHQUFHLENBQUMsR0FBRyxDQUFDOztBQUVwRDtBQUNBO0FBQ0E7QUFDTyxJQUFNQyx1QkFBdUIsR0FBQXZaLE9BQUEsQ0FBQXVaLHVCQUFBLEdBQUcsQ0FBQztBQUVqQyxJQUFNQyxXQUFtQyxHQUFBeFosT0FBQSxDQUFBd1osV0FBQSxHQUFHO0VBQ2pEQyxRQUFRLEVBQUUsV0FBVztFQUNyQkMsV0FBVyxFQUFFLGNBQWM7RUFDM0JDLFNBQVMsRUFBRSxZQUFZO0VBQ3ZCQyxXQUFXLEVBQUUsY0FBYztFQUMzQkMsYUFBYSxFQUFFLGdCQUFnQjtFQUMvQkMsb0JBQW9CLEVBQUUsd0JBQXdCO0VBQzlDQyxpQkFBaUIsRUFBRSxxQkFBcUI7RUFDeENDLGVBQWUsRUFBRSxtQkFBbUI7RUFDcENDLGdCQUFnQixFQUFFLHNCQUFzQjtFQUN4Q0MsaUJBQWlCLEVBQUUscUJBQXFCO0VBQ3hDQyxVQUFVLEVBQUUsYUFBYTtFQUN6QkMsa0JBQWtCLEVBQUUsc0JBQXNCO0VBQzFDQyxnQkFBZ0IsRUFBRSxvQkFBb0I7RUFDdENDLGVBQWUsRUFBRSxrQkFBa0I7RUFDbkNDLG9CQUFvQixFQUFFLHlCQUF5QjtFQUMvQ0MsY0FBYyxFQUFFLGlCQUFpQjtFQUNqQ0MsV0FBVyxFQUFFLGNBQWM7RUFDM0JDLGdCQUFnQixFQUFFO0FBQ3BCLENBQUM7O0FBRUQ7QUFDTyxJQUFNQyxnQkFBZ0IsR0FBQTNhLE9BQUEsQ0FBQTJhLGdCQUFBLEdBQUcsS0FBSztBQUM5QixJQUFNQyxtQ0FBbUMsR0FBQTVhLE9BQUEsQ0FBQTRhLG1DQUFBLEdBQUcsS0FBSztBQUVqRCxJQUFNQyxtQkFBNkMsR0FBQTdhLE9BQUEsQ0FBQTZhLG1CQUFBLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNyRSxJQUFNQyx1QkFBdUIsR0FBQTlhLE9BQUEsQ0FBQThhLHVCQUFBLEdBQUcsQ0FBQztBQUNqQyxJQUFNQyx3QkFBd0IsR0FBQS9hLE9BQUEsQ0FBQSthLHdCQUFBLEdBQUcsR0FBRztBQUNwQyxJQUFNQyxvQkFBOEMsR0FBQWhiLE9BQUEsQ0FBQWdiLG9CQUFBLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUVoRSxJQUFNQyxrQ0FBa0MsR0FBQWpiLE9BQUEsQ0FBQWliLGtDQUFBLEdBQUc7RUFDaERDLElBQUksRUFBRSxNQUFlO0VBQ3JCQyxPQUFPLEVBQUUsU0FBa0I7RUFDM0JDLFNBQVMsRUFBRTtBQUNiLENBQUM7QUFFTSxJQUFNQyw4QkFTWixHQUFBcmIsT0FBQSxDQUFBcWIsOEJBQUEsR0FBRztFQUNGelMsU0FBUyxFQUFFMFMsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztFQUNyQkMsUUFBUSxFQUFFUCxrQ0FBa0MsQ0FBQ0MsSUFBb0M7RUFDakZPLGVBQWUsRUFBRVYsd0JBQXdCO0VBQ3pDVyxXQUFXLEtBQUEzVyxNQUFBLENBQU1pVyxvQkFBb0IsQ0FBNkI7RUFDbEVXLGFBQWEsS0FBQTVXLE1BQUEsQ0FBTThWLG1CQUFtQixDQUE2QjtFQUNuRWUsaUJBQWlCLEVBQUVkLHVCQUF1QjtFQUMxQ2UsaUJBQWlCLEtBQUE5VyxNQUFBLENBQU04VixtQkFBbUIsQ0FBNkI7RUFDdkVpQixxQkFBcUIsRUFBRWhCO0FBQ3pCLENBQUM7QUFFTSxJQUFNaUIsdUJBQTBDLEdBQUEvYixPQUFBLENBQUErYix1QkFBQSxHQUFHO0VBQ3hEclksSUFBSSxFQUFFLGdCQUFnQjtFQUN0QnNZLElBQUksRUFBRSxnQkFBZ0I7RUFDdEJ2RyxXQUFXLEVBQUUsa0NBQWtDO0VBQy9Dd0csVUFBVSxFQUFFLENBQ1Y7SUFBQ0QsSUFBSSxFQUFFLFdBQVc7SUFBRUUsR0FBRyxFQUFFLENBQUM7SUFBRUMsR0FBRyxFQUFFQyxNQUFNLENBQUNDO0VBQWdCLENBQUMsRUFDekQ7SUFBQ0wsSUFBSSxFQUFFLGlCQUFpQjtJQUFFRSxHQUFHLEVBQUUsQ0FBQztJQUFFQyxHQUFHLEVBQUUsQ0FBQztJQUFFRyxZQUFZLEVBQUV2QjtFQUF3QixDQUFDLEVBQ2pGO0lBQUNpQixJQUFJLEVBQUUsbUJBQW1CO0lBQUVFLEdBQUcsRUFBRSxDQUFDO0lBQUVDLEdBQUcsRUFBRSxDQUFDO0lBQUVHLFlBQVksRUFBRXhCO0VBQXVCLENBQUMsRUFDbEY7SUFBQ2tCLElBQUksRUFBRSx1QkFBdUI7SUFBRUUsR0FBRyxFQUFFLENBQUM7SUFBRUMsR0FBRyxFQUFFLENBQUM7SUFBRUcsWUFBWSxFQUFFeEI7RUFBdUIsQ0FBQyxFQUN0RjtJQUFDa0IsSUFBSSxFQUFFLGFBQWE7SUFBRXRZLElBQUksRUFBRSxPQUFPO0lBQUV3WSxHQUFHLEVBQUUsQ0FBQztJQUFFQyxHQUFHLEVBQUUsR0FBRztJQUFFRyxZQUFZLEVBQUV0QjtFQUFvQixDQUFDLEVBQzFGO0lBQUNnQixJQUFJLEVBQUUsZUFBZTtJQUFFdFksSUFBSSxFQUFFLE9BQU87SUFBRXdZLEdBQUcsRUFBRSxDQUFDO0lBQUVDLEdBQUcsRUFBRSxHQUFHO0lBQUVHLFlBQVksRUFBRXpCO0VBQW1CLENBQUMsRUFDM0Y7SUFBQ21CLElBQUksRUFBRSxtQkFBbUI7SUFBRXRZLElBQUksRUFBRSxPQUFPO0lBQUV3WSxHQUFHLEVBQUUsQ0FBQztJQUFFQyxHQUFHLEVBQUUsR0FBRztJQUFFRyxZQUFZLEVBQUV6QjtFQUFtQixDQUFDO0FBRW5HLENBQUM7QUFFTSxJQUFNMEIsaUJBQWlCLEdBQUF2YyxPQUFBLENBQUF1YyxpQkFBQSxHQUFHLGFBQWE7QUFDdkMsSUFBTUMsZ0JBQWdCLEdBQUF4YyxPQUFBLENBQUF3YyxnQkFBQSxHQUFHLFlBQVk7QUFFckMsSUFBTUMsc0JBQTBELEdBQUF6YyxPQUFBLENBQUF5YyxzQkFBQSxHQUFHO0VBQ3hFQyxHQUFHLEVBQUU7SUFDSGhaLElBQUksRUFBRSxLQUFLO0lBQ1hzWSxJQUFJLEVBQUUsS0FBSztJQUNYdkcsV0FBVyxFQUFFLHVCQUF1QjtJQUNwQ3dHLFVBQVUsRUFBRSxDQUFDO01BQUNELElBQUksRUFBRSxVQUFVO01BQUVFLEdBQUcsRUFBRSxDQUFDO01BQUVDLEdBQUcsRUFBRTtJQUFDLENBQUM7RUFDakQsQ0FBQztFQUNEUSxrQkFBa0IsRUFBRTtJQUNsQmpaLElBQUksRUFBRSxvQkFBb0I7SUFDMUJzWSxJQUFJLEVBQUUsdUJBQXVCO0lBQzdCdkcsV0FBVyxFQUFFLHNDQUFzQztJQUNuRHdHLFVBQVUsRUFBRSxDQUNWO01BQUNELElBQUksRUFBRSxZQUFZO01BQUVFLEdBQUcsRUFBRSxDQUFDLENBQUM7TUFBRUMsR0FBRyxFQUFFO0lBQUMsQ0FBQyxFQUNyQztNQUFDSCxJQUFJLEVBQUUsVUFBVTtNQUFFRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO01BQUVDLEdBQUcsRUFBRTtJQUFDLENBQUM7RUFFdkMsQ0FBQztFQUNEUyxhQUFhLEVBQUU7SUFDYmxaLElBQUksRUFBRSxlQUFlO0lBQ3JCc1ksSUFBSSxFQUFFLGtCQUFrQjtJQUN4QnZHLFdBQVcsRUFBRSxpQ0FBaUM7SUFDOUN3RyxVQUFVLEVBQUUsQ0FDVjtNQUFDRCxJQUFJLEVBQUUsS0FBSztNQUFFRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO01BQUVDLEdBQUcsRUFBRTtJQUFDLENBQUMsRUFDOUI7TUFBQ0gsSUFBSSxFQUFFLFlBQVk7TUFBRU0sWUFBWSxFQUFFLElBQUk7TUFBRUosR0FBRyxFQUFFLENBQUMsQ0FBQztNQUFFQyxHQUFHLEVBQUU7SUFBQyxDQUFDO0VBRTdELENBQUM7RUFDRFUsUUFBUSxFQUFFO0lBQ1JuWixJQUFJLEVBQUUsVUFBVTtJQUNoQnNZLElBQUksRUFBRSxVQUFVO0lBQ2hCdkcsV0FBVyxFQUFFLDRCQUE0QjtJQUN6Q3dHLFVBQVUsRUFBRSxDQUFDO01BQUNELElBQUksRUFBRSxRQUFRO01BQUVNLFlBQVksRUFBRSxHQUFHO01BQUVKLEdBQUcsRUFBRSxDQUFDLENBQUM7TUFBRUMsR0FBRyxFQUFFO0lBQUMsQ0FBQztFQUNuRSxDQUFDO0VBQ0RXLEtBQUssRUFBRTtJQUNMcFosSUFBSSxFQUFFLE9BQU87SUFDYnNZLElBQUksRUFBRSxPQUFPO0lBQ2J2RyxXQUFXLEVBQUUseUJBQXlCO0lBQ3RDd0csVUFBVSxFQUFFLENBQUM7TUFBQ0QsSUFBSSxFQUFFLFFBQVE7TUFBRUUsR0FBRyxFQUFFLENBQUM7TUFBRUMsR0FBRyxFQUFFO0lBQUMsQ0FBQztFQUMvQyxDQUFDO0VBQ0RZLFNBQVMsRUFBRTtJQUNUclosSUFBSSxFQUFFLFdBQVc7SUFDakJzWSxJQUFJLEVBQUUsWUFBWTtJQUNsQnZHLFdBQVcsRUFBRSw2QkFBNkI7SUFDMUN3RyxVQUFVLEVBQUUsQ0FDVjtNQUNFRCxJQUFJLEVBQUUsT0FBTztNQUNiRSxHQUFHLEVBQUUsQ0FBQztNQUNOQyxHQUFHLEVBQUVsTCxJQUFJLENBQUMrTCxFQUFFLEdBQUc7SUFDakIsQ0FBQyxFQUNEO01BQ0VoQixJQUFJLEVBQUUsTUFBTTtNQUNaRSxHQUFHLEVBQUUsQ0FBQztNQUNOQyxHQUFHLEVBQUU7SUFDUCxDQUFDLEVBQ0Q7TUFDRUgsSUFBSSxFQUFFLFFBQVE7TUFDZHRZLElBQUksRUFBRSxPQUFPO01BQ2JuQixLQUFLLEVBQUUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDO01BQy9CK1osWUFBWSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztNQUN4QkosR0FBRyxFQUFFLENBQUM7TUFDTkMsR0FBRyxFQUFFO0lBQ1AsQ0FBQztFQUVMLENBQUM7RUFDRGMsYUFBYSxFQUFFO0lBQ2J2WixJQUFJLEVBQUUsZUFBZTtJQUNyQnNZLElBQUksRUFBRSxnQkFBZ0I7SUFDdEJ2RyxXQUFXLEVBQUUsaUNBQWlDO0lBQzlDd0csVUFBVSxFQUFFLENBQ1Y7TUFDRUQsSUFBSSxFQUFFLE9BQU87TUFDYkUsR0FBRyxFQUFFLENBQUM7TUFDTkMsR0FBRyxFQUFFbEwsSUFBSSxDQUFDK0wsRUFBRSxHQUFHO0lBQ2pCLENBQUMsRUFDRDtNQUNFaEIsSUFBSSxFQUFFLE1BQU07TUFDWkUsR0FBRyxFQUFFLENBQUM7TUFDTkMsR0FBRyxFQUFFO0lBQ1AsQ0FBQyxFQUNEO01BQ0VILElBQUksRUFBRSxRQUFRO01BQ2R0WSxJQUFJLEVBQUUsT0FBTztNQUNibkIsS0FBSyxFQUFFLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQztNQUMvQitaLFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7TUFDeEJKLEdBQUcsRUFBRSxDQUFDO01BQ05DLEdBQUcsRUFBRTtJQUNQLENBQUM7RUFFTCxDQUFDO0VBQ0RlLEtBQUssRUFBRTtJQUNMeFosSUFBSSxFQUFFLE9BQU87SUFDYnNZLElBQUksRUFBRSxPQUFPO0lBQ2J2RyxXQUFXLEVBQUUseUJBQXlCO0lBQ3RDd0csVUFBVSxFQUFFLENBQUM7TUFBQ0QsSUFBSSxFQUFFLFFBQVE7TUFBRUUsR0FBRyxFQUFFLENBQUM7TUFBRUMsR0FBRyxFQUFFO0lBQUMsQ0FBQztFQUMvQyxDQUFDO0VBQ0RnQixZQUFZLEVBQUU7SUFDWnpaLElBQUksRUFBRSxjQUFjO0lBQ3BCc1ksSUFBSSxFQUFFLGlCQUFpQjtJQUN2QnZHLFdBQVcsRUFBRSxnQ0FBZ0M7SUFDN0N3RyxVQUFVLEVBQUUsQ0FBQztNQUFDRCxJQUFJLEVBQUUsUUFBUTtNQUFFRSxHQUFHLEVBQUUsQ0FBQztNQUFFQyxHQUFHLEVBQUU7SUFBRyxDQUFDO0VBQ2pELENBQUM7RUFDRGlCLFFBQVEsRUFBRTtJQUNSMVosSUFBSSxFQUFFLFVBQVU7SUFDaEJzWSxJQUFJLEVBQUUsYUFBYTtJQUNuQnZHLFdBQVcsRUFBRSw0QkFBNEI7SUFDekN3RyxVQUFVLEVBQUUsQ0FDVjtNQUNFRCxJQUFJLEVBQUUsVUFBVTtNQUNoQk0sWUFBWSxFQUFFLElBQUk7TUFDbEJKLEdBQUcsRUFBRSxDQUFDO01BQ05DLEdBQUcsRUFBRTtJQUNQLENBQUMsRUFDRDtNQUNFSCxJQUFJLEVBQUUsUUFBUTtNQUNkdFksSUFBSSxFQUFFLE9BQU87TUFDYm5CLEtBQUssRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUM7TUFDL0IrWixZQUFZLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO01BQ3hCSixHQUFHLEVBQUUsQ0FBQztNQUNOQyxHQUFHLEVBQUU7SUFDUCxDQUFDO0VBRUwsQ0FBQztFQUNEa0IsU0FBUyxFQUFFO0lBQ1QzWixJQUFJLEVBQUUsV0FBVztJQUNqQnNZLElBQUksRUFBRSxtQkFBbUI7SUFDekJ2RyxXQUFXLEVBQUUsNkJBQTZCO0lBQzFDd0csVUFBVSxFQUFFLENBQ1Y7TUFDRUQsSUFBSSxFQUFFLFlBQVk7TUFDbEJ6WixLQUFLLEVBQUUsTUFBTTtNQUNiMlosR0FBRyxFQUFFLENBQUM7TUFDTkMsR0FBRyxFQUFFO0lBQ1AsQ0FBQyxFQUNEO01BQ0VILElBQUksRUFBRSxnQkFBZ0I7TUFDdEJ6WixLQUFLLEVBQUUsVUFBVTtNQUNqQjJaLEdBQUcsRUFBRSxDQUFDO01BQ05DLEdBQUcsRUFBRTtJQUNQLENBQUMsRUFDRDtNQUNFSCxJQUFJLEVBQUUsT0FBTztNQUNidFksSUFBSSxFQUFFLE9BQU87TUFDYm5CLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7TUFDdkIrWixZQUFZLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO01BQ3hCSixHQUFHLEVBQUUsQ0FBQztNQUNOQyxHQUFHLEVBQUU7SUFDUCxDQUFDLEVBQ0Q7TUFDRUgsSUFBSSxFQUFFLEtBQUs7TUFDWHRZLElBQUksRUFBRSxPQUFPO01BQ2JuQixLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO01BQ3JCK1osWUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztNQUNwQkosR0FBRyxFQUFFLENBQUM7TUFDTkMsR0FBRyxFQUFFO0lBQ1AsQ0FBQztFQUVMLENBQUM7RUFDRG1CLFFBQVEsRUFBRTtJQUNSNVosSUFBSSxFQUFFLFVBQVU7SUFDaEJzWSxJQUFJLEVBQUUsV0FBVztJQUNqQnZHLFdBQVcsRUFBRSw0QkFBNEI7SUFDekN3RyxVQUFVLEVBQUUsQ0FBQztNQUFDRCxJQUFJLEVBQUUsUUFBUTtNQUFFRSxHQUFHLEVBQUUsQ0FBQztNQUFFQyxHQUFHLEVBQUU7SUFBRSxDQUFDO0VBQ2hELENBQUM7RUFDRG9CLFFBQVEsRUFBRTtJQUNSN1osSUFBSSxFQUFFLFVBQVU7SUFDaEJzWSxJQUFJLEVBQUUsVUFBVTtJQUNoQnZHLFdBQVcsRUFBRSw0QkFBNEI7SUFDekN3RyxVQUFVLEVBQUUsQ0FDVjtNQUFDRCxJQUFJLEVBQUUsUUFBUTtNQUFFRSxHQUFHLEVBQUUsQ0FBQztNQUFFQyxHQUFHLEVBQUU7SUFBQyxDQUFDLEVBQ2hDO01BQUNILElBQUksRUFBRSxRQUFRO01BQUVFLEdBQUcsRUFBRSxDQUFDO01BQUVDLEdBQUcsRUFBRTtJQUFDLENBQUM7RUFFcEMsQ0FBQztFQUNEcUIsT0FBTyxFQUFFO0lBQ1A5WixJQUFJLEVBQUUsU0FBUztJQUNmc1ksSUFBSSxFQUFFLFNBQVM7SUFDZnZHLFdBQVcsRUFBRSwyQkFBMkI7SUFDeEN3RyxVQUFVLEVBQUUsQ0FDVjtNQUNFRCxJQUFJLEVBQUUsVUFBVTtNQUNoQnRZLElBQUksRUFBRSxPQUFPO01BQ2JuQixLQUFLLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDO01BQ25DK1osWUFBWSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztNQUN4QkosR0FBRyxFQUFFLENBQUM7TUFDTkMsR0FBRyxFQUFFO0lBQ1AsQ0FBQyxFQUNEO01BQ0VILElBQUksRUFBRSxjQUFjO01BQ3BCelosS0FBSyxFQUFFLE1BQU07TUFDYjJaLEdBQUcsRUFBRSxFQUFFO01BQ1BDLEdBQUcsRUFBRTtJQUNQLENBQUMsRUFDRDtNQUNFSCxJQUFJLEVBQUUsTUFBTTtNQUNaRSxHQUFHLEVBQUUsR0FBRztNQUNSQyxHQUFHLEVBQUU7SUFDUCxDQUFDLEVBQ0Q7TUFDRUgsSUFBSSxFQUFFLG1CQUFtQjtNQUN6QnpaLEtBQUssRUFBRSxjQUFjO01BQ3JCK1osWUFBWSxFQUFFLENBQUM7TUFDZkosR0FBRyxFQUFFLENBQUM7TUFDTkMsR0FBRyxFQUFFO0lBQ1AsQ0FBQztFQUVMLENBQUM7RUFDRHNCLGlCQUFpQixFQUFFO0lBQ2pCL1osSUFBSSxFQUFFLG1CQUFtQjtJQUN6QnNZLElBQUksRUFBRSxvQkFBb0I7SUFDMUJ2RyxXQUFXLEVBQUUscUNBQXFDO0lBQ2xEd0csVUFBVSxFQUFFLENBQUM7TUFBQ0QsSUFBSSxFQUFFLE9BQU87TUFBRU0sWUFBWSxFQUFFLEVBQUU7TUFBRUosR0FBRyxFQUFFLENBQUM7TUFBRUMsR0FBRyxFQUFFO0lBQUUsQ0FBQztFQUNqRSxDQUFDO0VBQ0R1QixXQUFXLEVBQUU7SUFDWGhhLElBQUksRUFBRTZZLGlCQUFpQjtJQUN2QlAsSUFBSSxFQUFFLGNBQWM7SUFDcEJ2RyxXQUFXLEVBQUUsK0JBQStCO0lBQzVDd0csVUFBVSxFQUFFLENBQ1Y7TUFBQ0QsSUFBSSxFQUFFLFNBQVM7TUFBRU0sWUFBWSxFQUFFLEdBQUc7TUFBRUosR0FBRyxFQUFFLENBQUM7TUFBRUMsR0FBRyxFQUFFO0lBQUMsQ0FBQyxFQUNwRDtNQUFDSCxJQUFJLEVBQUUsVUFBVTtNQUFFelosS0FBSyxFQUFFLE9BQU87TUFBRStaLFlBQVksRUFBRSxHQUFHO01BQUVKLEdBQUcsRUFBRSxDQUFDO01BQUVDLEdBQUcsRUFBRTtJQUFDLENBQUMsRUFDckU7TUFBQ0gsSUFBSSxFQUFFLFVBQVU7TUFBRXpaLEtBQUssRUFBRSxPQUFPO01BQUUrWixZQUFZLEVBQUUsR0FBRztNQUFFSixHQUFHLEVBQUUsSUFBSTtNQUFFQyxHQUFHLEVBQUU7SUFBQyxDQUFDLEVBQ3hFO01BQUNILElBQUksRUFBRSxVQUFVO01BQUV0WSxJQUFJLEVBQUUsT0FBTztNQUFFd1ksR0FBRyxFQUFFLENBQUM7TUFBRUMsR0FBRyxFQUFFLEdBQUc7TUFBRUcsWUFBWSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQUMsQ0FBQztFQUV0RixDQUFDO0VBQ0RxQixVQUFVLEVBQUU7SUFDVmphLElBQUksRUFBRThZLGdCQUFnQjtJQUN0QlIsSUFBSSxFQUFFLGFBQWE7SUFDbkJ2RyxXQUFXLEVBQUUsOEJBQThCO0lBQzNDd0csVUFBVSxFQUFFLENBQ1Y7TUFBQ0QsSUFBSSxFQUFFLFNBQVM7TUFBRU0sWUFBWSxFQUFFLEdBQUc7TUFBRUosR0FBRyxFQUFFLENBQUM7TUFBRUMsR0FBRyxFQUFFO0lBQUMsQ0FBQyxFQUNwRDtNQUFDSCxJQUFJLEVBQUUsUUFBUTtNQUFFelosS0FBSyxFQUFFLGVBQWU7TUFBRStaLFlBQVksRUFBRSxFQUFFO01BQUVKLEdBQUcsRUFBRSxDQUFDLEdBQUc7TUFBRUMsR0FBRyxFQUFFO0lBQUksQ0FBQyxFQUNoRjtNQUNFSCxJQUFJLEVBQUUsZUFBZTtNQUNyQnRZLElBQUksRUFBRSxVQUFVO01BQ2hCbkIsS0FBSyxFQUFFLG1CQUFtQjtNQUMxQndMLE9BQU8sRUFDTCx1RkFBdUY7TUFDekZ1TyxZQUFZLEVBQUUsS0FBSztNQUNuQkosR0FBRyxFQUFFLENBQUM7TUFDTkMsR0FBRyxFQUFFO0lBQ1AsQ0FBQyxFQUNEO01BQUNILElBQUksRUFBRSxXQUFXO01BQUV6WixLQUFLLEVBQUUsbUJBQW1CO01BQUUrWixZQUFZLEVBQUUsR0FBRztNQUFFSixHQUFHLEVBQUUsQ0FBQyxHQUFHO01BQUVDLEdBQUcsRUFBRTtJQUFJLENBQUMsRUFDeEY7TUFDRUgsSUFBSSxFQUFFLGNBQWM7TUFDcEJ0WSxJQUFJLEVBQUUsVUFBVTtNQUNoQm5CLEtBQUssRUFBRSxlQUFlO01BQ3RCd0wsT0FBTyxFQUNMLHNGQUFzRjtNQUN4RnVPLFlBQVksRUFBRSxLQUFLO01BQ25CSixHQUFHLEVBQUUsQ0FBQztNQUNOQyxHQUFHLEVBQUU7SUFDUCxDQUFDLEVBQ0Q7TUFBQ0gsSUFBSSxFQUFFLFdBQVc7TUFBRXpaLEtBQUssRUFBRSxnQkFBZ0I7TUFBRStaLFlBQVksRUFBRSxFQUFFO01BQUVKLEdBQUcsRUFBRSxDQUFDO01BQUVDLEdBQUcsRUFBRTtJQUFJLENBQUMsRUFDakY7TUFDRUgsSUFBSSxFQUFFLFVBQVU7TUFDaEJ0WSxJQUFJLEVBQUUsT0FBTztNQUNibkIsS0FBSyxFQUFFLFdBQVc7TUFDbEIyWixHQUFHLEVBQUUsQ0FBQztNQUNOQyxHQUFHLEVBQUUsR0FBRztNQUNSRyxZQUFZLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7SUFDOUIsQ0FBQyxFQUNEO01BQ0VOLElBQUksRUFBRSxTQUFTO01BQ2Z0WSxJQUFJLEVBQUUsVUFBVTtNQUNoQm5CLEtBQUssRUFBRSxTQUFTO01BQ2hCd0wsT0FBTyxFQUFFLHNFQUFzRTtNQUMvRXVPLFlBQVksRUFBRSxLQUFLO01BQ25CSixHQUFHLEVBQUUsQ0FBQztNQUNOQyxHQUFHLEVBQUU7SUFDUCxDQUFDO0VBRUw7QUFDRixDQUFDO0FBRU0sSUFBTXlCLG1CQUF3QyxHQUFBNWQsT0FBQSxDQUFBNGQsbUJBQUEsSUFDbkQ3Qix1QkFBdUIsRUFBQWhYLE1BQUEsS0FBQXNKLG1CQUFBLGFBQ3BCdlAsTUFBTSxDQUFDQyxJQUFJLENBQUMwZCxzQkFBc0IsQ0FBQyxDQUFDbFEsR0FBRyxDQUFDLFVBQUFzUixPQUFPO0VBQUEsT0FBSXBCLHNCQUFzQixDQUFDb0IsT0FBTyxDQUFDO0FBQUEsRUFBQyxFQUN2RjtBQXNCTSxJQUFNQyxtQkFBcUQsR0FBQTlkLE9BQUEsQ0FBQThkLG1CQUFBLEdBQUc7RUFDbkVDLEtBQUssRUFBRSxDQUFDO0VBQ1JDLEdBQUcsRUFBRTtBQUNQLENBQUM7QUFFTSxJQUFNQyxxQkFBcUIsR0FBQWplLE9BQUEsQ0FBQWllLHFCQUFBLEdBQUcsc0JBQXNCOztBQUUzRDtBQUNBO0FBQ0E7QUFGQSxJQUdZQyxtQkFBbUIsR0FBQWxlLE9BQUEsQ0FBQWtlLG1CQUFBLDBCQUFuQkEsbUJBQW1CO0VBQW5CQSxtQkFBbUI7RUFBbkJBLG1CQUFtQjtFQUFuQkEsbUJBQW1CO0VBQW5CQSxtQkFBbUI7RUFBbkJBLG1CQUFtQjtFQUFuQkEsbUJBQW1CO0VBQW5CQSxtQkFBbUI7RUFBQSxPQUFuQkEsbUJBQW1CO0FBQUE7QUFVeEIsSUFBTUMsbUJBQW1CLEdBQUFuZSxPQUFBLENBQUFtZSxtQkFBQSxHQUFHLE9BQU87QUFDbkMsSUFBTUMsZUFBZSxHQUFBcGUsT0FBQSxDQUFBb2UsZUFBQSxHQUFHLCtCQUErQjtBQUV2RCxJQUFNQyxnQkFBZ0IsR0FBQXJlLE9BQUEsQ0FBQXFlLGdCQUFBLEdBQUcsU0FBbkJBLGdCQUFnQkEsQ0FBQSxFQUFTO0VBQ3BDLE9BQU87SUFDTEMsR0FBRyxFQUFFO01BQ0hDLFNBQVMsS0FBQXhaLE1BQUEsQ0FBS3FaLGVBQWUsV0FBQXJaLE1BQUEsQ0FBUW9aLG1CQUFtQjtJQUMxRCxDQUFDO0lBQ0QsZ0JBQWdCLEVBQUU7TUFDaEJJLFNBQVMsS0FBQXhaLE1BQUEsQ0FBS3FaLGVBQWUsZUFBQXJaLE1BQUEsQ0FBWW9aLG1CQUFtQjtJQUM5RCxDQUFDO0lBQ0RLLEdBQUcsRUFBRTtNQUNIRCxTQUFTLEtBQUF4WixNQUFBLENBQUtxWixlQUFlLGdCQUFBclosTUFBQSxDQUFhb1osbUJBQW1CO0lBQy9EO0VBQ0YsQ0FBQztBQUNILENBQUM7QUFFTSxJQUFNTSwwQkFBMEIsR0FBQXplLE9BQUEsQ0FBQXllLDBCQUFBLEdBQUcsUUFBUTtBQUNsRCxJQUFNQyxlQUFlLEdBQ25CLGlGQUFpRjtBQUU1RSxJQUFNQyw0QkFPVixHQUFBM2UsT0FBQSxDQUFBMmUsNEJBQUEsR0FBRyxDQUNKO0VBQ0VyYyxFQUFFLEVBQUUsVUFBVTtFQUNkQyxLQUFLLEVBQUUsVUFBVTtFQUNqQjRDLElBQUksRUFBRSxJQUFJO0VBQ1ZELEdBQUcsS0FBQUgsTUFBQSxDQUFLMlosZUFBZSxlQUFZO0VBQ25DRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUNqQmpSLEtBQUssRUFBRTtBQUNULENBQUMsRUFDRDtFQUNFckwsRUFBRSxFQUFFLFdBQVc7RUFDZkMsS0FBSyxFQUFFLFVBQVU7RUFDakI0QyxJQUFJLEVBQUUsSUFBSTtFQUNWRCxHQUFHLEtBQUFILE1BQUEsQ0FBSzJaLGVBQWUsa0JBQWU7RUFDdENFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0VBQ2pCalIsS0FBSyxFQUFFO0FBQ1QsQ0FBQyxFQUNEO0VBQ0VyTCxFQUFFLEVBQUUsWUFBWTtFQUNoQkMsS0FBSyxFQUFFLE1BQU07RUFDYjRDLElBQUksRUFBRSxJQUFJO0VBQ1ZELEdBQUcsS0FBQUgsTUFBQSxDQUFLMlosZUFBZSxlQUFZO0VBQ25DRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUNqQmpSLEtBQUssRUFBRTtBQUNULENBQUMsRUFDRDtFQUNFckwsRUFBRSxFQUFFLGFBQWE7RUFDakJDLEtBQUssRUFBRSxRQUFRO0VBQ2Y0QyxJQUFJLEVBQUUsSUFBSTtFQUNWRCxHQUFHLEtBQUFILE1BQUEsQ0FBSzJaLGVBQWUsb0JBQWlCO0VBQ3hDRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUNqQmpSLEtBQUssRUFBRTtBQUNULENBQUMsRUFDRDtFQUNFckwsRUFBRSxFQUFFLFlBQVk7RUFDaEJDLEtBQUssRUFBRSxZQUFZO0VBQ25CNEMsSUFBSSxFQUFFLElBQUk7RUFDVkQsR0FBRyxLQUFBSCxNQUFBLENBQUsyWixlQUFlLG9CQUFpQjtFQUN4Q0UsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7RUFDakJqUixLQUFLLEVBQUU7QUFDVCxDQUFDLEVBQ0Q7RUFDRXJMLEVBQUUsRUFBRSxTQUFTO0VBQ2JDLEtBQUssRUFBRSxTQUFTO0VBQ2hCNEMsSUFBSSxFQUFFLElBQUk7RUFDVkQsR0FBRyxLQUFBSCxNQUFBLENBQUsyWixlQUFlLGlCQUFjO0VBQ3JDRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUNqQmpSLEtBQUssRUFBRTtBQUNULENBQUMsRUFDRDtFQUNFckwsRUFBRSxFQUFFLFNBQVM7RUFDYkMsS0FBSyxFQUFFLFNBQVM7RUFDaEI0QyxJQUFJLEVBQUUsSUFBSTtFQUNWRCxHQUFHLEtBQUFILE1BQUEsQ0FBSzJaLGVBQWUsaUJBQWM7RUFDckNFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0VBQ2pCalIsS0FBSyxFQUFFO0FBQ1QsQ0FBQyxFQUNEO0VBQ0VyTCxFQUFFLEVBQUUsS0FBSztFQUNUQyxLQUFLLEVBQUUsS0FBSztFQUNaNEMsSUFBSSxFQUFFLElBQUk7RUFDVkQsR0FBRyxLQUFBSCxNQUFBLENBQUsyWixlQUFlLGFBQVU7RUFDakNFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0VBQ2pCalIsS0FBSyxFQUFFO0FBQ1QsQ0FBQyxFQUNEO0VBQ0VyTCxFQUFFLEVBQUUsT0FBTztFQUNYQyxLQUFLLEVBQUUsT0FBTztFQUNkNEMsSUFBSSxFQUFFLElBQUk7RUFDVkQsR0FBRyxLQUFBSCxNQUFBLENBQUsyWixlQUFlLGVBQVk7RUFDbkNFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0VBQ2pCalIsS0FBSyxFQUFFO0FBQ1QsQ0FBQyxFQUNEO0VBQ0VyTCxFQUFFLEVBQUUsV0FBVztFQUNmQyxLQUFLLEVBQUUsV0FBVztFQUNsQjRDLElBQUksRUFBRSxJQUFJO0VBQ1ZELEdBQUcsS0FBQUgsTUFBQSxDQUFLMlosZUFBZSxtQkFBZ0I7RUFDdkNFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0VBQ2pCalIsS0FBSyxFQUFFO0FBQ1QsQ0FBQyxFQUNEO0VBQ0VyTCxFQUFFLEVBQUUsV0FBVztFQUNmQyxLQUFLLEVBQUUsV0FBVztFQUNsQjRDLElBQUksRUFBRSxJQUFJO0VBQ1ZELEdBQUcsS0FBQUgsTUFBQSxDQUFLMlosZUFBZSxtQkFBZ0I7RUFDdkNFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0VBQ2pCalIsS0FBSyxFQUFFO0FBQ1QsQ0FBQyxFQUNEO0VBQ0VyTCxFQUFFLEVBQUVtYywwQkFBMEI7RUFDOUJsYyxLQUFLLEVBQUUsUUFBUTtFQUNmNEMsSUFBSSxFQUFFLElBQUk7RUFDVkQsR0FBRyxFQUFFLElBQUk7RUFDVDBaLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0VBQ2pCalIsS0FBSyxFQUFFO0FBQ1QsQ0FBQyxDQUNGIiwiaWdub3JlTGlzdCI6W119