highmark-cli 0.0.174 → 0.0.175

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 (90) hide show
  1. package/README.md +20 -2
  2. package/bin/abbreviations.js +6 -9
  3. package/bin/action/help.js +3 -3
  4. package/bin/action/publish.js +3 -4
  5. package/bin/action/server.js +2 -2
  6. package/bin/constants.js +2 -6
  7. package/bin/defaults.js +4 -6
  8. package/bin/main.js +7 -9
  9. package/bin/operation/copyFonts.js +5 -23
  10. package/bin/operation/html.js +5 -71
  11. package/bin/options.js +4 -6
  12. package/package.json +2 -26
  13. package/.swcrc +0 -11
  14. package/bin/utilities/client.js +0 -38
  15. package/checkmark.svg +0 -12
  16. package/client.js +0 -39623
  17. package/css/loading.css +0 -59
  18. package/lib/client.js +0 -74
  19. package/lib/constants.js +0 -70
  20. package/lib/createMethods.js +0 -84
  21. package/lib/customEventTypes.js +0 -74
  22. package/lib/localStorage.js +0 -41
  23. package/lib/migrate.js +0 -34
  24. package/lib/selectors.js +0 -26
  25. package/lib/state/version_1.js +0 -39
  26. package/lib/state.js +0 -153
  27. package/lib/styles.js +0 -82
  28. package/lib/utilities/element.js +0 -62
  29. package/lib/utilities/orientation.js +0 -39
  30. package/lib/versions.js +0 -13
  31. package/lib/view/button/closeMenu.js +0 -121
  32. package/lib/view/button/zoomMenuIn.js +0 -121
  33. package/lib/view/button/zoomMenuOut.js +0 -121
  34. package/lib/view/button.js +0 -160
  35. package/lib/view/checkbox.js +0 -193
  36. package/lib/view/div/buttons.js +0 -213
  37. package/lib/view/div/checkbox/fullScreen.js +0 -155
  38. package/lib/view/div/checkbox/invertColours.js +0 -154
  39. package/lib/view/div/checkbox/nativeGestures.js +0 -154
  40. package/lib/view/div/checkbox.js +0 -220
  41. package/lib/view/div/checkboxes.js +0 -213
  42. package/lib/view/div/menu.js +0 -301
  43. package/lib/view/div/overlay.js +0 -685
  44. package/lib/view/div/preloader.js +0 -204
  45. package/lib/view/div.js +0 -227
  46. package/lib/view/element.js +0 -164
  47. package/lib/view/span.js +0 -182
  48. package/lib/view/svg/closeMenu.js +0 -138
  49. package/lib/view/svg/zoomMenuIn.js +0 -146
  50. package/lib/view/svg/zoomMenuOut.js +0 -141
  51. package/lib/view/svg.js +0 -184
  52. package/lib/view.js +0 -247
  53. package/src/client.js +0 -70
  54. package/src/constants.js +0 -16
  55. package/src/createMethods.js +0 -105
  56. package/src/customEventTypes.js +0 -17
  57. package/src/localStorage.js +0 -40
  58. package/src/migrate.js +0 -19
  59. package/src/selectors.js +0 -5
  60. package/src/state/version_1.js +0 -32
  61. package/src/state.js +0 -152
  62. package/src/styles.js +0 -19
  63. package/src/utilities/element.js +0 -66
  64. package/src/utilities/orientation.js +0 -34
  65. package/src/versions.js +0 -3
  66. package/src/view/button/closeMenu.js +0 -16
  67. package/src/view/button/zoomMenuIn.js +0 -16
  68. package/src/view/button/zoomMenuOut.js +0 -16
  69. package/src/view/button.js +0 -38
  70. package/src/view/checkbox.js +0 -68
  71. package/src/view/div/buttons.js +0 -37
  72. package/src/view/div/checkbox/fullScreen.js +0 -40
  73. package/src/view/div/checkbox/invertColours.js +0 -37
  74. package/src/view/div/checkbox/nativeGestures.js +0 -38
  75. package/src/view/div/checkbox.js +0 -45
  76. package/src/view/div/checkboxes.js +0 -38
  77. package/src/view/div/menu.js +0 -88
  78. package/src/view/div/overlay.js +0 -602
  79. package/src/view/div/preloader.js +0 -25
  80. package/src/view/div.js +0 -47
  81. package/src/view/element.js +0 -16
  82. package/src/view/span.js +0 -20
  83. package/src/view/svg/closeMenu.js +0 -19
  84. package/src/view/svg/zoomMenuIn.js +0 -20
  85. package/src/view/svg/zoomMenuOut.js +0 -19
  86. package/src/view/svg.js +0 -24
  87. package/src/view.js +0 -64
  88. package/template/client.html +0 -4
  89. package/template/default.html +0 -71
  90. package/template/loading.html +0 -17
@@ -1,685 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- var _easywithstyle = /*#__PURE__*/ _interop_require_default(require("easy-with-style"));
12
- var _easy = require("easy");
13
- var _necessary = require("necessary");
14
- var _fragmented = require("fragmented");
15
- var _easymobile = require("easy-mobile");
16
- var _div = /*#__PURE__*/ _interop_require_default(require("../div"));
17
- var _element = /*#__PURE__*/ _interop_require_default(require("../element"));
18
- var _element1 = require("../../utilities/element");
19
- var _state = require("../../state");
20
- var _constants = require("../../constants");
21
- function _array_like_to_array(arr, len) {
22
- if (len == null || len > arr.length) len = arr.length;
23
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
24
- return arr2;
25
- }
26
- function _array_without_holes(arr) {
27
- if (Array.isArray(arr)) return _array_like_to_array(arr);
28
- }
29
- function _assert_this_initialized(self) {
30
- if (self === void 0) {
31
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
32
- }
33
- return self;
34
- }
35
- function _class_call_check(instance, Constructor) {
36
- if (!(instance instanceof Constructor)) {
37
- throw new TypeError("Cannot call a class as a function");
38
- }
39
- }
40
- function _construct(Parent, args, Class) {
41
- if (_is_native_reflect_construct()) {
42
- _construct = Reflect.construct;
43
- } else {
44
- _construct = function construct(Parent, args, Class) {
45
- var a = [
46
- null
47
- ];
48
- a.push.apply(a, args);
49
- var Constructor = Function.bind.apply(Parent, a);
50
- var instance = new Constructor();
51
- if (Class) _set_prototype_of(instance, Class.prototype);
52
- return instance;
53
- };
54
- }
55
- return _construct.apply(null, arguments);
56
- }
57
- function _defineProperties(target, props) {
58
- for(var i = 0; i < props.length; i++){
59
- var descriptor = props[i];
60
- descriptor.enumerable = descriptor.enumerable || false;
61
- descriptor.configurable = true;
62
- if ("value" in descriptor) descriptor.writable = true;
63
- Object.defineProperty(target, descriptor.key, descriptor);
64
- }
65
- }
66
- function _create_class(Constructor, protoProps, staticProps) {
67
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
68
- if (staticProps) _defineProperties(Constructor, staticProps);
69
- return Constructor;
70
- }
71
- function _define_property(obj, key, value) {
72
- if (key in obj) {
73
- Object.defineProperty(obj, key, {
74
- value: value,
75
- enumerable: true,
76
- configurable: true,
77
- writable: true
78
- });
79
- } else {
80
- obj[key] = value;
81
- }
82
- return obj;
83
- }
84
- function _get_prototype_of(o) {
85
- _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
86
- return o.__proto__ || Object.getPrototypeOf(o);
87
- };
88
- return _get_prototype_of(o);
89
- }
90
- function _inherits(subClass, superClass) {
91
- if (typeof superClass !== "function" && superClass !== null) {
92
- throw new TypeError("Super expression must either be null or a function");
93
- }
94
- subClass.prototype = Object.create(superClass && superClass.prototype, {
95
- constructor: {
96
- value: subClass,
97
- writable: true,
98
- configurable: true
99
- }
100
- });
101
- if (superClass) _set_prototype_of(subClass, superClass);
102
- }
103
- function _interop_require_default(obj) {
104
- return obj && obj.__esModule ? obj : {
105
- default: obj
106
- };
107
- }
108
- function _is_native_function(fn) {
109
- return Function.toString.call(fn).indexOf("[native code]") !== -1;
110
- }
111
- function _iterable_to_array(iter) {
112
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
113
- }
114
- function _non_iterable_spread() {
115
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
116
- }
117
- function _possible_constructor_return(self, call) {
118
- if (call && (_type_of(call) === "object" || typeof call === "function")) {
119
- return call;
120
- }
121
- return _assert_this_initialized(self);
122
- }
123
- function _set_prototype_of(o, p) {
124
- _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
125
- o.__proto__ = p;
126
- return o;
127
- };
128
- return _set_prototype_of(o, p);
129
- }
130
- function _tagged_template_literal(strings, raw) {
131
- if (!raw) {
132
- raw = strings.slice(0);
133
- }
134
- return Object.freeze(Object.defineProperties(strings, {
135
- raw: {
136
- value: Object.freeze(raw)
137
- }
138
- }));
139
- }
140
- function _to_consumable_array(arr) {
141
- return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
142
- }
143
- function _type_of(obj) {
144
- "@swc/helpers - typeof";
145
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
146
- }
147
- function _unsupported_iterable_to_array(o, minLen) {
148
- if (!o) return;
149
- if (typeof o === "string") return _array_like_to_array(o, minLen);
150
- var n = Object.prototype.toString.call(o).slice(8, -1);
151
- if (n === "Object" && o.constructor) n = o.constructor.name;
152
- if (n === "Map" || n === "Set") return Array.from(n);
153
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
154
- }
155
- function _wrap_native_super(Class) {
156
- var _cache = typeof Map === "function" ? new Map() : undefined;
157
- _wrap_native_super = function wrapNativeSuper(Class) {
158
- if (Class === null || !_is_native_function(Class)) return Class;
159
- if (typeof Class !== "function") {
160
- throw new TypeError("Super expression must either be null or a function");
161
- }
162
- if (typeof _cache !== "undefined") {
163
- if (_cache.has(Class)) return _cache.get(Class);
164
- _cache.set(Class, Wrapper);
165
- }
166
- function Wrapper() {
167
- return _construct(Class, arguments, _get_prototype_of(this).constructor);
168
- }
169
- Wrapper.prototype = Object.create(Class.prototype, {
170
- constructor: {
171
- value: Wrapper,
172
- enumerable: false,
173
- writable: true,
174
- configurable: true
175
- }
176
- });
177
- return _set_prototype_of(Wrapper, Class);
178
- };
179
- return _wrap_native_super(Class);
180
- }
181
- function _is_native_reflect_construct() {
182
- if (typeof Reflect === "undefined" || !Reflect.construct) return false;
183
- if (Reflect.construct.sham) return false;
184
- if (typeof Proxy === "function") return true;
185
- try {
186
- Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
187
- return true;
188
- } catch (e) {
189
- return false;
190
- }
191
- }
192
- function _create_super(Derived) {
193
- var hasNativeReflectConstruct = _is_native_reflect_construct();
194
- return function _createSuperInternal() {
195
- var Super = _get_prototype_of(Derived), result;
196
- if (hasNativeReflectConstruct) {
197
- var NewTarget = _get_prototype_of(this).constructor;
198
- result = Reflect.construct(Super, arguments, NewTarget);
199
- } else {
200
- result = Super.apply(this, arguments);
201
- }
202
- return _possible_constructor_return(this, result);
203
- };
204
- }
205
- function _templateObject() {
206
- var data = _tagged_template_literal([
207
- "\n \n width: 100%;\n height: 100%;\n\n overflow: hidden;\n touch-action: none;\n \n .native-gestures {\n overflow: scroll;\n touch-action: auto;\n }\n \n .inverted-colours {\n filter: invert(1);\n }\n \n"
208
- ]);
209
- _templateObject = function _templateObject() {
210
- return data;
211
- };
212
- return data;
213
- }
214
- var isFullScreen = _easymobile.fullScreenUtilities.isFullScreen, ENTER_KEY_CODE = _necessary.keyCodes.ENTER_KEY_CODE, ESCAPE_KEY_CODE = _necessary.keyCodes.ESCAPE_KEY_CODE, BACKSPACE_KEY_CODE = _necessary.keyCodes.BACKSPACE_KEY_CODE, ARROW_UP_KEY_CODE = _necessary.keyCodes.ARROW_UP_KEY_CODE, ARROW_DOWN_KEY_CODE = _necessary.keyCodes.ARROW_DOWN_KEY_CODE, ARROW_LEFT_KEY_CODE = _necessary.keyCodes.ARROW_LEFT_KEY_CODE, ARROW_RIGHT_KEY_CODE = _necessary.keyCodes.ARROW_RIGHT_KEY_CODE;
215
- var OverlayDiv = /*#__PURE__*/ function(Element) {
216
- _inherits(OverlayDiv, Element);
217
- var _super = _create_super(OverlayDiv);
218
- function OverlayDiv() {
219
- _class_call_check(this, OverlayDiv);
220
- var _this;
221
- _this = _super.apply(this, arguments);
222
- _define_property(_assert_this_initialized(_this), "fullScreenChangeCustomHandler", function(event, element) {
223
- controller.updateFullScreen();
224
- _this.updateOverlayZoom();
225
- });
226
- _define_property(_assert_this_initialized(_this), "singleTapCustomHandler", function(event, element, top, left) {
227
- var height = _this.getHeight(), bottom = height - top;
228
- if (bottom < _constants.OPEN_MENU_TAP_AREA_HEIGHT) {
229
- controller.openMenu();
230
- }
231
- });
232
- _define_property(_assert_this_initialized(_this), "doubleTapCustomHandler", function(event, element, top, left) {
233
- var fullScreen = isFullScreen();
234
- if (fullScreen) {
235
- controller.exitFullScreen();
236
- return;
237
- }
238
- var nativeGesturesRestored = (0, _state.areNativeGesturesRestored)();
239
- nativeGesturesRestored ? controller.suppressNativeGestures() : controller.restoreNativeGestures();
240
- });
241
- _define_property(_assert_this_initialized(_this), "pinchStartCustomHandler", function(event, element) {
242
- var zoom = (0, _state.getOverlayZoom)(), startZoom = zoom; ///
243
- _this.setStartZoom(startZoom);
244
- });
245
- _define_property(_assert_this_initialized(_this), "pinchMoveCustomHandler", function(event, element, ratio) {
246
- var startZoom = _this.getStartZoom(), overlayZoom = startZoom * Math.sqrt(ratio); ///
247
- controller.zoomOverlay(overlayZoom);
248
- });
249
- _define_property(_assert_this_initialized(_this), "swipeRightCustomHandler", function(event, element, top, left, spped) {
250
- _this.showLeftDiv();
251
- });
252
- _define_property(_assert_this_initialized(_this), "swipeLeftCustomHandler", function(event, element, top, left, spped) {
253
- _this.showRightDiv();
254
- });
255
- _define_property(_assert_this_initialized(_this), "swipeDownCustomHandler", function(event, element, top, left, speed) {
256
- var direction = _constants.DOWN_DIRECTION;
257
- _this.startScrolling(speed, direction);
258
- });
259
- _define_property(_assert_this_initialized(_this), "swipeUpCustomHandler", function(event, element, top, left, speed) {
260
- var direction = _constants.UP_DIRECTION;
261
- _this.startScrolling(speed, direction);
262
- });
263
- _define_property(_assert_this_initialized(_this), "dragStartCustomHandler", function(event, element, top, left) {
264
- var scrollTop = _this.getScrollTop(), startScrollTop = scrollTop; ///
265
- _this.setStartScrollTop(startScrollTop);
266
- });
267
- _define_property(_assert_this_initialized(_this), "dragDownCustomHandler", function(event, element, top, left) {
268
- var startScrollTop = _this.getStartScrollTop();
269
- if (startScrollTop === null) {
270
- return;
271
- }
272
- var scrollTop = startScrollTop - top;
273
- _this.setScrollTop(scrollTop);
274
- });
275
- _define_property(_assert_this_initialized(_this), "dragUpCustomHandler", function(event, element, top, left) {
276
- var startScrollTop = _this.getStartScrollTop();
277
- if (startScrollTop === null) {
278
- return;
279
- }
280
- var scrollTop = startScrollTop - top;
281
- _this.setScrollTop(scrollTop);
282
- });
283
- _define_property(_assert_this_initialized(_this), "keyDownHandler", function(event, element) {
284
- var keyCode = event.keyCode;
285
- switch(keyCode){
286
- case ENTER_KEY_CODE:
287
- case ARROW_RIGHT_KEY_CODE:
288
- {
289
- _this.showRightDiv();
290
- break;
291
- }
292
- case BACKSPACE_KEY_CODE:
293
- case ARROW_LEFT_KEY_CODE:
294
- {
295
- _this.showLeftDiv();
296
- break;
297
- }
298
- case ESCAPE_KEY_CODE:
299
- {
300
- var fullScreen = isFullScreen();
301
- if (fullScreen) {
302
- controller.exitFullScreen();
303
- }
304
- controller.closeMenu();
305
- break;
306
- }
307
- case ARROW_UP_KEY_CODE:
308
- {
309
- _this.showFirstDiv();
310
- break;
311
- }
312
- case ARROW_DOWN_KEY_CODE:
313
- {
314
- _this.showLastDiv();
315
- break;
316
- }
317
- }
318
- });
319
- return _this;
320
- }
321
- _create_class(OverlayDiv, [
322
- {
323
- key: "scrollToAnchor",
324
- value: function scrollToAnchor(anchorId) {
325
- var div;
326
- div = (0, _element1.findDivByAnchorId)(anchorId);
327
- var nextDiv = div; ///
328
- div = this.findDiv();
329
- var previousDiv = div; ///
330
- var divs = this.getDivs(), nextIndex = divs.indexOf(nextDiv), previousIndex = divs.indexOf(previousDiv); ///
331
- this.showNextDiv(nextIndex, previousIndex, function() {
332
- (0, _element1.scrollToAnchor)(anchorId);
333
- });
334
- }
335
- },
336
- {
337
- key: "scrollToTop",
338
- value: function scrollToTop() {
339
- var scrollTop = 0;
340
- this.setScrollTop(scrollTop);
341
- }
342
- },
343
- {
344
- key: "stopScrolling",
345
- value: function stopScrolling() {
346
- var interval = this.getInterval();
347
- if (interval !== null) {
348
- clearInterval(interval);
349
- interval = null;
350
- this.setInterval(interval);
351
- }
352
- }
353
- },
354
- {
355
- key: "startScrolling",
356
- value: function startScrolling(speed, direction) {
357
- var _this = this;
358
- var scrollTop = this.getScrollTop();
359
- scrollTop += speed * _constants.SCROLL_DELAY;
360
- this.setScrollTop(scrollTop);
361
- var interval = this.getInterval();
362
- if (interval !== null) {
363
- clearInterval(interval);
364
- }
365
- interval = setInterval(function() {
366
- speed = speed - direction * _constants.DECELERATION;
367
- if (speed * direction < 0) {
368
- clearInterval(interval);
369
- interval = null;
370
- _this.setInterval(interval);
371
- }
372
- var scrollTop = _this.getScrollTop();
373
- scrollTop += speed * _constants.SCROLL_DELAY;
374
- _this.setScrollTop(scrollTop);
375
- }, _constants.SCROLL_DELAY);
376
- this.setInterval(interval);
377
- }
378
- },
379
- {
380
- key: "enterFullScreen",
381
- value: function enterFullScreen() {
382
- this.requestFullScreen();
383
- }
384
- },
385
- {
386
- key: "updateOverlayZoom",
387
- value: function updateOverlayZoom() {
388
- var div = this.findDiv(), zoom = (0, _state.getOverlayZoom)();
389
- div.zoom(zoom);
390
- }
391
- },
392
- {
393
- key: "updateOverlayColours",
394
- value: function updateOverlayColours() {
395
- var coloursInverted = (0, _state.areColoursInverted)();
396
- coloursInverted ? this.addClass("inverted-colours") : this.removeClass("inverted-colours");
397
- }
398
- },
399
- {
400
- key: "updateNativeGestures",
401
- value: function updateNativeGestures() {
402
- var nativeGesturesRestored = (0, _state.areNativeGesturesRestored)();
403
- nativeGesturesRestored ? this.addClass("native-gestures") : this.removeClass("native-gestures");
404
- nativeGesturesRestored ? this.disableCustomGestures() : this.enableCustomGestures();
405
- }
406
- },
407
- {
408
- key: "enableCustomGestures",
409
- value: function enableCustomGestures() {
410
- var nativeGesturedEnabled = this.areNativeGesturesEnabled();
411
- if (nativeGesturedEnabled) {
412
- return;
413
- }
414
- this.onCustomDragUp(this.dragUpCustomHandler);
415
- this.onCustomDragDown(this.dragDownCustomHandler);
416
- this.onCustomDragStart(this.dragStartCustomHandler);
417
- this.onCustomSwipeUp(this.swipeUpCustomHandler);
418
- this.onCustomSwipeDown(this.swipeDownCustomHandler);
419
- this.onCustomSwipeLeft(this.swipeLeftCustomHandler);
420
- this.onCustomSwipeRight(this.swipeRightCustomHandler);
421
- this.onCustomPinchMove(this.pinchMoveCustomHandler);
422
- this.onCustomPinchStart(this.pinchStartCustomHandler);
423
- this.onCustomDoubleTap(this.doubleTapCustomHandler);
424
- nativeGesturedEnabled = true;
425
- this.setNativeGesturesEnabled(nativeGesturedEnabled);
426
- }
427
- },
428
- {
429
- key: "disableCustomGestures",
430
- value: function disableCustomGestures() {
431
- var nativeGesturedEnabled = this.areNativeGesturesEnabled();
432
- if (!nativeGesturedEnabled) {
433
- return;
434
- }
435
- this.offCustomDragUp(this.dragUpCustomHandler);
436
- this.offCustomDragDown(this.dragDownCustomHandler);
437
- this.offCustomDragStart(this.dragStartCustomHandler);
438
- this.offCustomSwipeUp(this.swipeUpCustomHandler);
439
- this.offCustomSwipeDown(this.swipeDownCustomHandler);
440
- this.offCustomSwipeLeft(this.swipeLeftCustomHandler);
441
- this.offCustomSwipeRight(this.swipeRightCustomHandler);
442
- this.offCustomPinchMove(this.pinchMoveCustomHandler);
443
- this.offCustomPinchStart(this.pinchStartCustomHandler);
444
- this.offCustomDoubleTap(this.doubleTapCustomHandler);
445
- nativeGesturedEnabled = false;
446
- this.setNativeGesturesEnabled(nativeGesturedEnabled);
447
- }
448
- },
449
- {
450
- key: "areNativeGesturesRestored",
451
- value: function areNativeGesturesRestored() {
452
- var nativeGesturesRestored = this.hasClass("native-gestures");
453
- return nativeGesturesRestored;
454
- }
455
- },
456
- {
457
- key: "showRightDiv",
458
- value: function showRightDiv() {
459
- var div = this.findDiv(), divs = this.getDivs(), divsLength = divs.length, index = divs.indexOf(div), nextIndex = index + 1, previousIndex = index; ///
460
- if (nextIndex === divsLength) {
461
- return;
462
- }
463
- this.showNextDiv(nextIndex, previousIndex);
464
- }
465
- },
466
- {
467
- key: "showLeftDiv",
468
- value: function showLeftDiv() {
469
- var div = this.findDiv(), divs = this.getDivs(), index = divs.indexOf(div), nextIndex = index - 1, previousIndex = index; ///
470
- if (nextIndex === -1) {
471
- return;
472
- }
473
- this.showNextDiv(nextIndex, previousIndex);
474
- }
475
- },
476
- {
477
- key: "showLastDiv",
478
- value: function showLastDiv() {
479
- var div = this.findDiv(), divs = this.getDivs(), divsLength = divs.length, index = div === null ? -1 : divs.indexOf(div), nextIndex = divsLength - 1, previousIndex = index; ///
480
- if (nextIndex === previousIndex) {
481
- return;
482
- }
483
- this.showNextDiv(nextIndex, previousIndex);
484
- }
485
- },
486
- {
487
- key: "showFirstDiv",
488
- value: function showFirstDiv() {
489
- var div = this.findDiv(), divs = this.getDivs(), index = div === null ? -1 : divs.indexOf(div), nextIndex = 0, previousIndex = index; ///
490
- if (nextIndex === previousIndex) {
491
- return;
492
- }
493
- this.showNextDiv(nextIndex, previousIndex);
494
- }
495
- },
496
- {
497
- key: "showNextDiv",
498
- value: function showNextDiv(nextIndex, previousIndex) {
499
- var _this = this;
500
- var done = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : function() {};
501
- (0, _fragmented.resetFragment)();
502
- var divs = this.getDivs();
503
- if (previousIndex !== -1) {
504
- var previousDiv = divs[previousIndex];
505
- previousDiv.hide();
506
- }
507
- var zoom = (0, _state.getOverlayZoom)(), nextDiv = divs[nextIndex];
508
- this.stopScrolling();
509
- this.scrollToTop();
510
- nextDiv.zoom(zoom);
511
- nextDiv.show();
512
- defer(function() {
513
- var backgroundColour = nextDiv.getBackgroundColour();
514
- _this.setBackgroundColour(backgroundColour);
515
- done();
516
- });
517
- }
518
- },
519
- {
520
- key: "setBackgroundColour",
521
- value: function setBackgroundColour(backgroundColour) {
522
- var backgroundColor = backgroundColour, css = {
523
- backgroundColor: backgroundColor
524
- };
525
- this.css(css);
526
- }
527
- },
528
- {
529
- key: "findDiv",
530
- value: function findDiv() {
531
- var divs = this.getDivs(), div = divs.find(function(div) {
532
- var showing = div.isShowing();
533
- if (showing) {
534
- return true;
535
- }
536
- }) || null;
537
- return div;
538
- }
539
- },
540
- {
541
- key: "getDivs",
542
- value: function getDivs() {
543
- var childElements = this.getChildElements(), divs = childElements; ///
544
- return divs;
545
- }
546
- },
547
- {
548
- key: "getInterval",
549
- value: function getInterval() {
550
- var interval = this.getState().interval;
551
- return interval;
552
- }
553
- },
554
- {
555
- key: "setInterval",
556
- value: function setInterval1(interval) {
557
- this.updateState({
558
- interval: interval
559
- });
560
- }
561
- },
562
- {
563
- key: "getStartZoom",
564
- value: function getStartZoom() {
565
- var startZoom = this.getState().startZoom;
566
- return startZoom;
567
- }
568
- },
569
- {
570
- key: "setStartZoom",
571
- value: function setStartZoom(startZoom) {
572
- this.updateState({
573
- startZoom: startZoom
574
- });
575
- }
576
- },
577
- {
578
- key: "getStartScrollTop",
579
- value: function getStartScrollTop() {
580
- var startScrollTop = this.getState().startScrollTop;
581
- return startScrollTop;
582
- }
583
- },
584
- {
585
- key: "setStartScrollTop",
586
- value: function setStartScrollTop(startScrollTop) {
587
- this.updateState({
588
- startScrollTop: startScrollTop
589
- });
590
- }
591
- },
592
- {
593
- key: "areNativeGesturesEnabled",
594
- value: function areNativeGesturesEnabled() {
595
- var nativeGesturesEnabled = this.getState().nativeGesturesEnabled;
596
- return nativeGesturesEnabled;
597
- }
598
- },
599
- {
600
- key: "setNativeGesturesEnabled",
601
- value: function setNativeGesturesEnabled(nativeGesturesEnabled) {
602
- this.updateState({
603
- nativeGesturesEnabled: nativeGesturesEnabled
604
- });
605
- }
606
- },
607
- {
608
- key: "setInitialState",
609
- value: function setInitialState() {
610
- var interval = null, startZoom = null, startScrollTop = null, nativeGesturesEnabled = false;
611
- this.setState({
612
- interval: interval,
613
- startZoom: startZoom,
614
- startScrollTop: startScrollTop,
615
- nativeGesturesEnabled: nativeGesturesEnabled
616
- });
617
- }
618
- },
619
- {
620
- key: "didMount",
621
- value: function didMount() {
622
- _easy.window.onKeyDown(this.keyDownHandler);
623
- this.onCustomSingleTap(this.singleTapCustomHandler);
624
- this.onCustomFullScreenChange(this.fullScreenChangeCustomHandler);
625
- this.enableFullScreen();
626
- this.enableTouch();
627
- }
628
- },
629
- {
630
- key: "willUnmount",
631
- value: function willUnmount() {
632
- this.disableTouch();
633
- this.disableFullScreen();
634
- this.offCustomFullScreenChange(this.fullScreenChangeCustomHandler);
635
- this.offCustomSingleTap(this.singleTapCustomHandler);
636
- _easy.window.offKeyDown(this.keyDownHandler);
637
- }
638
- },
639
- {
640
- key: "childElements",
641
- value: function childElements() {
642
- var divDOMElements = this.properties.divDOMElements, divs = (0, _element1.elementsFromDOMElements)(divDOMElements, _div.default), childElements = _to_consumable_array(divs);
643
- return childElements;
644
- }
645
- },
646
- {
647
- key: "parentContext",
648
- value: function parentContext() {
649
- var showFirstDiv = this.showFirstDiv.bind(this), scrollToAnchor = this.scrollToAnchor.bind(this), exitFullScreen = this.exitFullScreen.bind(this), enterFullScreen = this.enterFullScreen.bind(this), updateOverlayZoom = this.updateOverlayZoom.bind(this), updateOverlayColours = this.updateOverlayColours.bind(this), updateNativeGestures = this.updateNativeGestures.bind(this);
650
- return {
651
- showFirstDiv: showFirstDiv,
652
- scrollToAnchor: scrollToAnchor,
653
- exitFullScreen: exitFullScreen,
654
- enterFullScreen: enterFullScreen,
655
- updateOverlayZoom: updateOverlayZoom,
656
- updateOverlayColours: updateOverlayColours,
657
- updateNativeGestures: updateNativeGestures
658
- };
659
- }
660
- },
661
- {
662
- key: "initialise",
663
- value: function initialise() {
664
- this.assignContext();
665
- this.setInitialState();
666
- }
667
- }
668
- ]);
669
- return OverlayDiv;
670
- }(_wrap_native_super(_element.default));
671
- _define_property(OverlayDiv, "tagName", "div");
672
- _define_property(OverlayDiv, "ignoredProperties", [
673
- "divDOMElements"
674
- ]);
675
- _define_property(OverlayDiv, "defaultProperties", {
676
- className: "overlay"
677
- });
678
- Object.assign(OverlayDiv.prototype, _easymobile.touchMixins);
679
- Object.assign(OverlayDiv.prototype, _easymobile.fullScreenMixins);
680
- var _default = (0, _easywithstyle.default)(OverlayDiv)(_templateObject());
681
- function defer(func) {
682
- setTimeout(func, 0);
683
- }
684
-
685
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aWV3L2Rpdi9vdmVybGF5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgd2l0aFN0eWxlIGZyb20gXCJlYXN5LXdpdGgtc3R5bGVcIjsgIC8vL1xuXG5pbXBvcnQgeyB3aW5kb3cgfSBmcm9tIFwiZWFzeVwiO1xuaW1wb3J0IHsga2V5Q29kZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyByZXNldEZyYWdtZW50IH0gZnJvbSBcImZyYWdtZW50ZWRcIjtcbmltcG9ydCB7IHRvdWNoTWl4aW5zLCBmdWxsU2NyZWVuTWl4aW5zLCBmdWxsU2NyZWVuVXRpbGl0aWVzIH0gZnJvbSBcImVhc3ktbW9iaWxlXCI7XG5cbmltcG9ydCBEaXYgZnJvbSBcIi4uL2RpdlwiO1xuaW1wb3J0IEVsZW1lbnQgZnJvbSBcIi4uL2VsZW1lbnRcIjtcblxuaW1wb3J0IHsgZWxlbWVudHNGcm9tRE9NRWxlbWVudHMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IHNjcm9sbFRvQW5jaG9yLCBmaW5kRGl2QnlBbmNob3JJZCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgZ2V0T3ZlcmxheVpvb20gYXMgZ2V0Wm9vbSwgYXJlQ29sb3Vyc0ludmVydGVkLCBhcmVOYXRpdmVHZXN0dXJlc1Jlc3RvcmVkIH0gZnJvbSBcIi4uLy4uL3N0YXRlXCI7XG5pbXBvcnQgeyBTQ1JPTExfREVMQVksIFVQX0RJUkVDVElPTiwgREVDRUxFUkFUSU9OLCBET1dOX0RJUkVDVElPTiwgT1BFTl9NRU5VX1RBUF9BUkVBX0hFSUdIVCB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBpc0Z1bGxTY3JlZW4gfSA9IGZ1bGxTY3JlZW5VdGlsaXRpZXMsXG4gICAgICB7IEVOVEVSX0tFWV9DT0RFLFxuICAgICAgICBFU0NBUEVfS0VZX0NPREUsXG4gICAgICAgIEJBQ0tTUEFDRV9LRVlfQ09ERSxcbiAgICAgICAgQVJST1dfVVBfS0VZX0NPREUsXG4gICAgICAgIEFSUk9XX0RPV05fS0VZX0NPREUsXG4gICAgICAgIEFSUk9XX0xFRlRfS0VZX0NPREUsXG4gICAgICAgIEFSUk9XX1JJR0hUX0tFWV9DT0RFIH0gPSBrZXlDb2RlcztcblxuY2xhc3MgT3ZlcmxheURpdiBleHRlbmRzIEVsZW1lbnQge1xuICBmdWxsU2NyZWVuQ2hhbmdlQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xuICAgIGNvbnRyb2xsZXIudXBkYXRlRnVsbFNjcmVlbigpO1xuXG4gICAgdGhpcy51cGRhdGVPdmVybGF5Wm9vbSgpO1xuICB9XG5cbiAgc2luZ2xlVGFwQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0KSA9PiB7XG4gICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5nZXRIZWlnaHQoKSxcbiAgICAgICAgICBib3R0b20gPSBoZWlnaHQgLSB0b3A7XG5cbiAgICBpZiAoYm90dG9tIDwgT1BFTl9NRU5VX1RBUF9BUkVBX0hFSUdIVCkge1xuICAgICAgY29udHJvbGxlci5vcGVuTWVudSgpO1xuICAgIH1cbiAgfVxuXG4gIGRvdWJsZVRhcEN1c3RvbUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQsIHRvcCwgbGVmdCkgPT4ge1xuICAgIGNvbnN0IGZ1bGxTY3JlZW4gPSBpc0Z1bGxTY3JlZW4oKTtcblxuICAgIGlmIChmdWxsU2NyZWVuKSB7XG4gICAgICBjb250cm9sbGVyLmV4aXRGdWxsU2NyZWVuKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuYXRpdmVHZXN0dXJlc1Jlc3RvcmVkID0gYXJlTmF0aXZlR2VzdHVyZXNSZXN0b3JlZCgpO1xuXG4gICAgbmF0aXZlR2VzdHVyZXNSZXN0b3JlZCA/XG4gICAgICBjb250cm9sbGVyLnN1cHByZXNzTmF0aXZlR2VzdHVyZXMoKSA6XG4gICAgICAgIGNvbnRyb2xsZXIucmVzdG9yZU5hdGl2ZUdlc3R1cmVzKCk7XG4gIH1cblxuICBwaW5jaFN0YXJ0Q3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHpvb20gPSBnZXRab29tKCksXG4gICAgICAgICAgc3RhcnRab29tID0gem9vbTsgLy8vXG5cbiAgICB0aGlzLnNldFN0YXJ0Wm9vbShzdGFydFpvb20pO1xuICB9XG5cbiAgcGluY2hNb3ZlQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgcmF0aW8pID0+IHtcbiAgICBjb25zdCBzdGFydFpvb20gPSB0aGlzLmdldFN0YXJ0Wm9vbSgpLFxuICAgICAgICAgIG92ZXJsYXlab29tID0gc3RhcnRab29tICogTWF0aC5zcXJ0KHJhdGlvKTsgIC8vL1xuXG4gICAgY29udHJvbGxlci56b29tT3ZlcmxheShvdmVybGF5Wm9vbSk7XG4gIH1cblxuICBzd2lwZVJpZ2h0Q3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0LCBzcHBlZCkgPT4ge1xuICAgIHRoaXMuc2hvd0xlZnREaXYoKTtcbiAgfVxuXG4gIHN3aXBlTGVmdEN1c3RvbUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQsIHRvcCwgbGVmdCwgc3BwZWQpID0+IHtcbiAgICB0aGlzLnNob3dSaWdodERpdigpO1xuICB9XG5cbiAgc3dpcGVEb3duQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0LCBzcGVlZCkgPT4ge1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9IERPV05fRElSRUNUSU9OO1xuXG4gICAgdGhpcy5zdGFydFNjcm9sbGluZyhzcGVlZCwgZGlyZWN0aW9uKTtcbiAgfVxuXG4gIHN3aXBlVXBDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQsIHNwZWVkKSA9PiB7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gVVBfRElSRUNUSU9OO1xuXG4gICAgdGhpcy5zdGFydFNjcm9sbGluZyhzcGVlZCwgZGlyZWN0aW9uKTtcbiAgfVxuXG4gIGRyYWdTdGFydEN1c3RvbUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQsIHRvcCwgbGVmdCkgPT4ge1xuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuZ2V0U2Nyb2xsVG9wKCksXG4gICAgICAgICAgc3RhcnRTY3JvbGxUb3AgPSBzY3JvbGxUb3A7IC8vL1xuXG4gICAgdGhpcy5zZXRTdGFydFNjcm9sbFRvcChzdGFydFNjcm9sbFRvcCk7XG4gIH1cblxuICBkcmFnRG93bkN1c3RvbUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQsIHRvcCwgbGVmdCkgPT4ge1xuICAgIGNvbnN0IHN0YXJ0U2Nyb2xsVG9wID0gdGhpcy5nZXRTdGFydFNjcm9sbFRvcCgpO1xuXG4gICAgaWYgKHN0YXJ0U2Nyb2xsVG9wID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gc3RhcnRTY3JvbGxUb3AgLSB0b3A7XG5cbiAgICB0aGlzLnNldFNjcm9sbFRvcChzY3JvbGxUb3ApO1xuICB9XG5cbiAgZHJhZ1VwQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0KSA9PiB7XG4gICAgY29uc3Qgc3RhcnRTY3JvbGxUb3AgPSB0aGlzLmdldFN0YXJ0U2Nyb2xsVG9wKCk7XG5cbiAgICBpZiAoc3RhcnRTY3JvbGxUb3AgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzY3JvbGxUb3AgPSBzdGFydFNjcm9sbFRvcCAtIHRvcDtcblxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHNjcm9sbFRvcCk7XG4gIH1cblxuICBrZXlEb3duSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHsga2V5Q29kZSB9ID0gZXZlbnQ7XG5cbiAgICBzd2l0Y2ggKGtleUNvZGUpIHtcbiAgICAgIGNhc2UgRU5URVJfS0VZX0NPREU6XG4gICAgICBjYXNlIEFSUk9XX1JJR0hUX0tFWV9DT0RFOiB7XG4gICAgICAgIHRoaXMuc2hvd1JpZ2h0RGl2KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgQkFDS1NQQUNFX0tFWV9DT0RFOlxuICAgICAgY2FzZSBBUlJPV19MRUZUX0tFWV9DT0RFOiB7XG4gICAgICAgIHRoaXMuc2hvd0xlZnREaXYoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBFU0NBUEVfS0VZX0NPREU6IHtcbiAgICAgICAgY29uc3QgZnVsbFNjcmVlbiA9IGlzRnVsbFNjcmVlbigpO1xuXG4gICAgICAgIGlmIChmdWxsU2NyZWVuKSB7XG4gICAgICAgICAgY29udHJvbGxlci5leGl0RnVsbFNjcmVlbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udHJvbGxlci5jbG9zZU1lbnUoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBBUlJPV19VUF9LRVlfQ09ERToge1xuICAgICAgICB0aGlzLnNob3dGaXJzdERpdigpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEFSUk9XX0RPV05fS0VZX0NPREU6IHtcbiAgICAgICAgdGhpcy5zaG93TGFzdERpdigpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNjcm9sbFRvQW5jaG9yKGFuY2hvcklkKSB7XG4gICAgbGV0IGRpdjtcblxuICAgIGRpdiA9IGZpbmREaXZCeUFuY2hvcklkKGFuY2hvcklkKTtcblxuICAgIGNvbnN0IG5leHREaXYgPSBkaXY7ICAvLy9cblxuICAgIGRpdiA9IHRoaXMuZmluZERpdigpO1xuXG4gICAgY29uc3QgcHJldmlvdXNEaXYgPSBkaXY7ICAvLy9cblxuICAgIGNvbnN0IGRpdnMgPSB0aGlzLmdldERpdnMoKSxcbiAgICAgICAgICBuZXh0SW5kZXggPSBkaXZzLmluZGV4T2YobmV4dERpdiksICAvLy9cbiAgICAgICAgICBwcmV2aW91c0luZGV4ID0gZGl2cy5pbmRleE9mKHByZXZpb3VzRGl2KTsgIC8vL1xuXG4gICAgdGhpcy5zaG93TmV4dERpdihuZXh0SW5kZXgsIHByZXZpb3VzSW5kZXgsICgpID0+IHtcbiAgICAgIHNjcm9sbFRvQW5jaG9yKGFuY2hvcklkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNjcm9sbFRvVG9wKCkge1xuICAgIGNvbnN0IHNjcm9sbFRvcCA9IDA7XG5cbiAgICB0aGlzLnNldFNjcm9sbFRvcChzY3JvbGxUb3ApO1xuICB9XG5cbiAgc3RvcFNjcm9sbGluZygpIHtcbiAgICBsZXQgaW50ZXJ2YWwgPSB0aGlzLmdldEludGVydmFsKCk7XG5cbiAgICBpZiAoaW50ZXJ2YWwgIT09IG51bGwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuXG4gICAgICBpbnRlcnZhbCA9IG51bGw7XG5cbiAgICAgIHRoaXMuc2V0SW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXJ0U2Nyb2xsaW5nKHNwZWVkLCBkaXJlY3Rpb24pIHtcbiAgICBsZXQgc2Nyb2xsVG9wID0gdGhpcy5nZXRTY3JvbGxUb3AoKTtcblxuICAgIHNjcm9sbFRvcCArPSBzcGVlZCAqIFNDUk9MTF9ERUxBWTtcblxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHNjcm9sbFRvcCk7XG5cbiAgICBsZXQgaW50ZXJ2YWwgPSB0aGlzLmdldEludGVydmFsKCk7XG5cbiAgICBpZiAoaW50ZXJ2YWwgIT09IG51bGwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgIH1cblxuICAgIGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgc3BlZWQgPSBzcGVlZCAtIGRpcmVjdGlvbiAqIERFQ0VMRVJBVElPTjtcblxuICAgICAgaWYgKChzcGVlZCAqIGRpcmVjdGlvbikgPCAwKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuXG4gICAgICAgIGludGVydmFsID0gbnVsbDtcblxuICAgICAgICB0aGlzLnNldEludGVydmFsKGludGVydmFsKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHNjcm9sbFRvcCA9IHRoaXMuZ2V0U2Nyb2xsVG9wKCk7XG5cbiAgICAgIHNjcm9sbFRvcCArPSBzcGVlZCAqIFNDUk9MTF9ERUxBWTtcblxuICAgICAgdGhpcy5zZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wKTtcbiAgICB9LCBTQ1JPTExfREVMQVkpO1xuXG4gICAgdGhpcy5zZXRJbnRlcnZhbChpbnRlcnZhbCk7XG4gIH1cblxuICBlbnRlckZ1bGxTY3JlZW4oKSB7XG4gICAgdGhpcy5yZXF1ZXN0RnVsbFNjcmVlbigpO1xuICB9XG5cbiAgdXBkYXRlT3ZlcmxheVpvb20oKSB7XG4gICAgY29uc3QgZGl2ID0gdGhpcy5maW5kRGl2KCksXG4gICAgICAgICAgem9vbSA9IGdldFpvb20oKTtcblxuICAgIGRpdi56b29tKHpvb20pO1xuICB9XG5cbiAgdXBkYXRlT3ZlcmxheUNvbG91cnMoKSB7XG4gICAgY29uc3QgY29sb3Vyc0ludmVydGVkID0gYXJlQ29sb3Vyc0ludmVydGVkKCk7XG5cbiAgICBjb2xvdXJzSW52ZXJ0ZWQgP1xuICAgICAgdGhpcy5hZGRDbGFzcyhcImludmVydGVkLWNvbG91cnNcIikgOlxuICAgICAgICB0aGlzLnJlbW92ZUNsYXNzKFwiaW52ZXJ0ZWQtY29sb3Vyc1wiKTtcbiAgfVxuXG4gIHVwZGF0ZU5hdGl2ZUdlc3R1cmVzKCkge1xuICAgIGNvbnN0IG5hdGl2ZUdlc3R1cmVzUmVzdG9yZWQgPSBhcmVOYXRpdmVHZXN0dXJlc1Jlc3RvcmVkKCk7XG5cbiAgICBuYXRpdmVHZXN0dXJlc1Jlc3RvcmVkID9cbiAgICAgIHRoaXMuYWRkQ2xhc3MoXCJuYXRpdmUtZ2VzdHVyZXNcIikgOlxuICAgICAgICB0aGlzLnJlbW92ZUNsYXNzKFwibmF0aXZlLWdlc3R1cmVzXCIpO1xuXG4gICAgbmF0aXZlR2VzdHVyZXNSZXN0b3JlZCA/XG4gICAgICB0aGlzLmRpc2FibGVDdXN0b21HZXN0dXJlcygpIDpcbiAgICAgICAgdGhpcy5lbmFibGVDdXN0b21HZXN0dXJlcygpO1xuICB9XG5cbiAgZW5hYmxlQ3VzdG9tR2VzdHVyZXMoKSB7XG4gICAgbGV0IG5hdGl2ZUdlc3R1cmVkRW5hYmxlZCA9IHRoaXMuYXJlTmF0aXZlR2VzdHVyZXNFbmFibGVkKCk7XG5cbiAgICBpZiAobmF0aXZlR2VzdHVyZWRFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbkN1c3RvbURyYWdVcCh0aGlzLmRyYWdVcEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub25DdXN0b21EcmFnRG93bih0aGlzLmRyYWdEb3duQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vbkN1c3RvbURyYWdTdGFydCh0aGlzLmRyYWdTdGFydEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub25DdXN0b21Td2lwZVVwKHRoaXMuc3dpcGVVcEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub25DdXN0b21Td2lwZURvd24odGhpcy5zd2lwZURvd25DdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9uQ3VzdG9tU3dpcGVMZWZ0KHRoaXMuc3dpcGVMZWZ0Q3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vbkN1c3RvbVN3aXBlUmlnaHQodGhpcy5zd2lwZVJpZ2h0Q3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vbkN1c3RvbVBpbmNoTW92ZSh0aGlzLnBpbmNoTW92ZUN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub25DdXN0b21QaW5jaFN0YXJ0KHRoaXMucGluY2hTdGFydEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub25DdXN0b21Eb3VibGVUYXAodGhpcy5kb3VibGVUYXBDdXN0b21IYW5kbGVyKTtcblxuICAgIG5hdGl2ZUdlc3R1cmVkRW5hYmxlZCA9IHRydWU7XG5cbiAgICB0aGlzLnNldE5hdGl2ZUdlc3R1cmVzRW5hYmxlZChuYXRpdmVHZXN0dXJlZEVuYWJsZWQpO1xuICB9XG5cbiAgZGlzYWJsZUN1c3RvbUdlc3R1cmVzKCkge1xuICAgIGxldCBuYXRpdmVHZXN0dXJlZEVuYWJsZWQgPSB0aGlzLmFyZU5hdGl2ZUdlc3R1cmVzRW5hYmxlZCgpO1xuXG4gICAgaWYgKCFuYXRpdmVHZXN0dXJlZEVuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9mZkN1c3RvbURyYWdVcCh0aGlzLmRyYWdVcEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub2ZmQ3VzdG9tRHJhZ0Rvd24odGhpcy5kcmFnRG93bkN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub2ZmQ3VzdG9tRHJhZ1N0YXJ0KHRoaXMuZHJhZ1N0YXJ0Q3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21Td2lwZVVwKHRoaXMuc3dpcGVVcEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub2ZmQ3VzdG9tU3dpcGVEb3duKHRoaXMuc3dpcGVEb3duQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21Td2lwZUxlZnQodGhpcy5zd2lwZUxlZnRDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9mZkN1c3RvbVN3aXBlUmlnaHQodGhpcy5zd2lwZVJpZ2h0Q3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21QaW5jaE1vdmUodGhpcy5waW5jaE1vdmVDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9mZkN1c3RvbVBpbmNoU3RhcnQodGhpcy5waW5jaFN0YXJ0Q3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21Eb3VibGVUYXAodGhpcy5kb3VibGVUYXBDdXN0b21IYW5kbGVyKTtcblxuICAgIG5hdGl2ZUdlc3R1cmVkRW5hYmxlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5zZXROYXRpdmVHZXN0dXJlc0VuYWJsZWQobmF0aXZlR2VzdHVyZWRFbmFibGVkKTtcbiAgfVxuXG4gIGFyZU5hdGl2ZUdlc3R1cmVzUmVzdG9yZWQoKSB7XG4gICAgY29uc3QgbmF0aXZlR2VzdHVyZXNSZXN0b3JlZCA9IHRoaXMuaGFzQ2xhc3MoXCJuYXRpdmUtZ2VzdHVyZXNcIik7XG5cbiAgICByZXR1cm4gbmF0aXZlR2VzdHVyZXNSZXN0b3JlZDtcbiAgfVxuXG4gIHNob3dSaWdodERpdigpIHtcbiAgICBjb25zdCBkaXYgPSB0aGlzLmZpbmREaXYoKSxcbiAgICAgICAgICBkaXZzID0gdGhpcy5nZXREaXZzKCksXG4gICAgICAgICAgZGl2c0xlbmd0aCA9IGRpdnMubGVuZ3RoLFxuICAgICAgICAgIGluZGV4ID0gZGl2cy5pbmRleE9mKGRpdiksXG4gICAgICAgICAgbmV4dEluZGV4ID0gaW5kZXggKyAxLFxuICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBpbmRleDsgIC8vL1xuXG4gICAgaWYgKG5leHRJbmRleCA9PT0gZGl2c0xlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd05leHREaXYobmV4dEluZGV4LCBwcmV2aW91c0luZGV4KTtcbiAgfVxuXG4gIHNob3dMZWZ0RGl2KCkge1xuICAgIGNvbnN0IGRpdiA9IHRoaXMuZmluZERpdigpLFxuICAgICAgICAgIGRpdnMgPSB0aGlzLmdldERpdnMoKSxcbiAgICAgICAgICBpbmRleCA9IGRpdnMuaW5kZXhPZihkaXYpLFxuICAgICAgICAgIG5leHRJbmRleCA9IGluZGV4IC0gMSxcbiAgICAgICAgICBwcmV2aW91c0luZGV4ID0gaW5kZXg7ICAvLy9cblxuICAgIGlmIChuZXh0SW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93TmV4dERpdihuZXh0SW5kZXgsIHByZXZpb3VzSW5kZXgpO1xuICB9XG5cbiAgc2hvd0xhc3REaXYoKSB7XG4gICAgY29uc3QgZGl2ID0gdGhpcy5maW5kRGl2KCksXG4gICAgICAgICAgZGl2cyA9IHRoaXMuZ2V0RGl2cygpLFxuICAgICAgICAgIGRpdnNMZW5ndGggPSBkaXZzLmxlbmd0aCxcbiAgICAgICAgICBpbmRleCA9IChkaXYgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgLTEgOlxuICAgICAgICAgICAgICAgICAgICAgIGRpdnMuaW5kZXhPZihkaXYpLFxuICAgICAgICAgIG5leHRJbmRleCA9IGRpdnNMZW5ndGggLSAxLFxuICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBpbmRleDsgIC8vL1xuXG4gICAgaWYgKG5leHRJbmRleCA9PT0gcHJldmlvdXNJbmRleCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd05leHREaXYobmV4dEluZGV4LCBwcmV2aW91c0luZGV4KTtcbiAgfVxuXG4gIHNob3dGaXJzdERpdigpIHtcbiAgICBjb25zdCBkaXYgPSB0aGlzLmZpbmREaXYoKSxcbiAgICAgICAgICBkaXZzID0gdGhpcy5nZXREaXZzKCksXG4gICAgICAgICAgaW5kZXggPSAoZGl2ID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgIC0xIDpcbiAgICAgICAgICAgICAgICAgICAgICBkaXZzLmluZGV4T2YoZGl2KSxcbiAgICAgICAgICBuZXh0SW5kZXggPSAwLFxuICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBpbmRleDsgIC8vL1xuXG4gICAgaWYgKG5leHRJbmRleCA9PT0gcHJldmlvdXNJbmRleCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd05leHREaXYobmV4dEluZGV4LCBwcmV2aW91c0luZGV4KTtcbiAgfVxuXG4gIHNob3dOZXh0RGl2KG5leHRJbmRleCwgcHJldmlvdXNJbmRleCwgZG9uZSA9ICgpID0+IHt9KSB7XG4gICAgcmVzZXRGcmFnbWVudCgpO1xuXG4gICAgY29uc3QgZGl2cyA9IHRoaXMuZ2V0RGl2cygpO1xuXG4gICAgaWYgKHByZXZpb3VzSW5kZXggIT09IC0xKSB7XG4gICAgICBjb25zdCBwcmV2aW91c0RpdiA9IGRpdnNbcHJldmlvdXNJbmRleF07XG5cbiAgICAgIHByZXZpb3VzRGl2LmhpZGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCB6b29tID0gZ2V0Wm9vbSgpLFxuICAgICAgICAgIG5leHREaXYgPSBkaXZzW25leHRJbmRleF07XG5cbiAgICB0aGlzLnN0b3BTY3JvbGxpbmcoKTtcblxuICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcblxuICAgIG5leHREaXYuem9vbSh6b29tKTtcblxuICAgIG5leHREaXYuc2hvdygpO1xuXG4gICAgZGVmZXIoKCkgPT4ge1xuICAgICAgY29uc3QgYmFja2dyb3VuZENvbG91ciA9IG5leHREaXYuZ2V0QmFja2dyb3VuZENvbG91cigpO1xuXG4gICAgICB0aGlzLnNldEJhY2tncm91bmRDb2xvdXIoYmFja2dyb3VuZENvbG91cik7XG5cbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldEJhY2tncm91bmRDb2xvdXIoYmFja2dyb3VuZENvbG91cikge1xuICAgIGNvbnN0IGJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvdXIsIC8vL1xuICAgICAgICAgIGNzcyA9IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvclxuICAgICAgICAgIH07XG5cbiAgICB0aGlzLmNzcyhjc3MpO1xuICB9XG5cbiAgZmluZERpdigpIHtcbiAgICBjb25zdCBkaXZzID0gdGhpcy5nZXREaXZzKCksXG4gICAgICAgICAgZGl2ID0gZGl2cy5maW5kKChkaXYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNob3dpbmcgPSBkaXYuaXNTaG93aW5nKCk7XG5cbiAgICAgICAgICAgIGlmIChzaG93aW5nKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZGl2O1xuICB9XG5cbiAgZ2V0RGl2cygpIHtcbiAgICBjb25zdCBjaGlsZEVsZW1lbnRzID0gdGhpcy5nZXRDaGlsZEVsZW1lbnRzKCksXG4gICAgICAgICAgZGl2cyA9IGNoaWxkRWxlbWVudHM7IC8vL1xuXG4gICAgcmV0dXJuIGRpdnM7XG4gIH1cblxuICBnZXRJbnRlcnZhbCgpIHtcbiAgICBjb25zdCB7IGludGVydmFsIH0gPSB0aGlzLmdldFN0YXRlKCk7XG5cbiAgICByZXR1cm4gaW50ZXJ2YWw7XG4gIH1cblxuICBzZXRJbnRlcnZhbChpbnRlcnZhbCkge1xuICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgaW50ZXJ2YWxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFN0YXJ0Wm9vbSgpIHtcbiAgICBjb25zdCB7IHN0YXJ0Wm9vbSB9ID0gdGhpcy5nZXRTdGF0ZSgpO1xuXG4gICAgcmV0dXJuIHN0YXJ0Wm9vbTtcbiAgfVxuXG4gIHNldFN0YXJ0Wm9vbShzdGFydFpvb20pIHtcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgIHN0YXJ0Wm9vbVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0U3RhcnRTY3JvbGxUb3AoKSB7XG4gICAgY29uc3QgeyBzdGFydFNjcm9sbFRvcCB9ID0gdGhpcy5nZXRTdGF0ZSgpO1xuXG4gICAgcmV0dXJuIHN0YXJ0U2Nyb2xsVG9wO1xuICB9XG5cbiAgc2V0U3RhcnRTY3JvbGxUb3Aoc3RhcnRTY3JvbGxUb3ApIHtcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgIHN0YXJ0U2Nyb2xsVG9wXG4gICAgfSk7XG4gIH1cblxuICBhcmVOYXRpdmVHZXN0dXJlc0VuYWJsZWQoKSB7XG4gICAgY29uc3QgeyBuYXRpdmVHZXN0dXJlc0VuYWJsZWQgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcblxuICAgIHJldHVybiBuYXRpdmVHZXN0dXJlc0VuYWJsZWQ7XG4gIH1cblxuICBzZXROYXRpdmVHZXN0dXJlc0VuYWJsZWQobmF0aXZlR2VzdHVyZXNFbmFibGVkKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICBuYXRpdmVHZXN0dXJlc0VuYWJsZWRcbiAgICB9KTtcbiAgfVxuXG4gIHNldEluaXRpYWxTdGF0ZSgpIHtcbiAgICBjb25zdCBpbnRlcnZhbCA9IG51bGwsXG4gICAgICAgICAgc3RhcnRab29tID0gbnVsbCxcbiAgICAgICAgICBzdGFydFNjcm9sbFRvcCA9IG51bGwsXG4gICAgICAgICAgbmF0aXZlR2VzdHVyZXNFbmFibGVkID0gZmFsc2U7XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGludGVydmFsLFxuICAgICAgc3RhcnRab29tLFxuICAgICAgc3RhcnRTY3JvbGxUb3AsXG4gICAgICBuYXRpdmVHZXN0dXJlc0VuYWJsZWRcbiAgICB9KTtcbiAgfVxuXG4gIGRpZE1vdW50KCkge1xuICAgIHdpbmRvdy5vbktleURvd24odGhpcy5rZXlEb3duSGFuZGxlcik7XG5cbiAgICB0aGlzLm9uQ3VzdG9tU2luZ2xlVGFwKHRoaXMuc2luZ2xlVGFwQ3VzdG9tSGFuZGxlcik7XG5cbiAgICB0aGlzLm9uQ3VzdG9tRnVsbFNjcmVlbkNoYW5nZSh0aGlzLmZ1bGxTY3JlZW5DaGFuZ2VDdXN0b21IYW5kbGVyKTtcblxuICAgIHRoaXMuZW5hYmxlRnVsbFNjcmVlbigpO1xuXG4gICAgdGhpcy5lbmFibGVUb3VjaCgpO1xuICB9XG5cbiAgd2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5kaXNhYmxlVG91Y2goKTtcblxuICAgIHRoaXMuZGlzYWJsZUZ1bGxTY3JlZW4oKTtcblxuICAgIHRoaXMub2ZmQ3VzdG9tRnVsbFNjcmVlbkNoYW5nZSh0aGlzLmZ1bGxTY3JlZW5DaGFuZ2VDdXN0b21IYW5kbGVyKTtcblxuICAgIHRoaXMub2ZmQ3VzdG9tU2luZ2xlVGFwKHRoaXMuc2luZ2xlVGFwQ3VzdG9tSGFuZGxlcik7XG5cbiAgICB3aW5kb3cub2ZmS2V5RG93bih0aGlzLmtleURvd25IYW5kbGVyKTtcbiAgfVxuXG4gIGNoaWxkRWxlbWVudHMoKSB7XG4gICAgY29uc3QgeyBkaXZET01FbGVtZW50cyB9ID0gdGhpcy5wcm9wZXJ0aWVzLFxuICAgICAgICAgIGRpdnMgPSBlbGVtZW50c0Zyb21ET01FbGVtZW50cyhkaXZET01FbGVtZW50cywgRGl2KSxcbiAgICAgICAgICBjaGlsZEVsZW1lbnRzID0gW1xuICAgICAgICAgICAgLi4uZGl2c1xuICAgICAgICAgIF07XG5cbiAgICByZXR1cm4gY2hpbGRFbGVtZW50cztcbiAgfVxuXG4gIHBhcmVudENvbnRleHQoKSB7XG4gICAgY29uc3Qgc2hvd0ZpcnN0RGl2ID0gdGhpcy5zaG93Rmlyc3REaXYuYmluZCh0aGlzKSxcbiAgICAgICAgICBzY3JvbGxUb0FuY2hvciA9IHRoaXMuc2Nyb2xsVG9BbmNob3IuYmluZCh0aGlzKSxcbiAgICAgICAgICBleGl0RnVsbFNjcmVlbiA9IHRoaXMuZXhpdEZ1bGxTY3JlZW4uYmluZCh0aGlzKSxcbiAgICAgICAgICBlbnRlckZ1bGxTY3JlZW4gPSB0aGlzLmVudGVyRnVsbFNjcmVlbi5iaW5kKHRoaXMpLFxuICAgICAgICAgIHVwZGF0ZU92ZXJsYXlab29tID0gdGhpcy51cGRhdGVPdmVybGF5Wm9vbS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHVwZGF0ZU92ZXJsYXlDb2xvdXJzID0gdGhpcy51cGRhdGVPdmVybGF5Q29sb3Vycy5iaW5kKHRoaXMpLFxuICAgICAgICAgIHVwZGF0ZU5hdGl2ZUdlc3R1cmVzID0gdGhpcy51cGRhdGVOYXRpdmVHZXN0dXJlcy5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuICh7XG4gICAgICBzaG93Rmlyc3REaXYsXG4gICAgICBzY3JvbGxUb0FuY2hvcixcbiAgICAgIGV4aXRGdWxsU2NyZWVuLFxuICAgICAgZW50ZXJGdWxsU2NyZWVuLFxuICAgICAgdXBkYXRlT3ZlcmxheVpvb20sXG4gICAgICB1cGRhdGVPdmVybGF5Q29sb3VycyxcbiAgICAgIHVwZGF0ZU5hdGl2ZUdlc3R1cmVzXG4gICAgfSk7XG4gIH1cblxuICBpbml0aWFsaXNlKCkge1xuICAgIHRoaXMuYXNzaWduQ29udGV4dCgpO1xuXG4gICAgdGhpcy5zZXRJbml0aWFsU3RhdGUoKTtcbiAgfVxuXG4gIHN0YXRpYyB0YWdOYW1lID0gXCJkaXZcIjtcblxuICBzdGF0aWMgaWdub3JlZFByb3BlcnRpZXMgPSBbXG4gICAgXCJkaXZET01FbGVtZW50c1wiXG4gIF07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wZXJ0aWVzID0ge1xuICAgIGNsYXNzTmFtZTogXCJvdmVybGF5XCJcbiAgfTtcbn1cblxuT2JqZWN0LmFzc2lnbihPdmVybGF5RGl2LnByb3RvdHlwZSwgdG91Y2hNaXhpbnMpO1xuT2JqZWN0LmFzc2lnbihPdmVybGF5RGl2LnByb3RvdHlwZSwgZnVsbFNjcmVlbk1peGlucyk7XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZShPdmVybGF5RGl2KWBcbiAgXG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdG91Y2gtYWN0aW9uOiBub25lO1xuICAgIFxuICAubmF0aXZlLWdlc3R1cmVzIHtcbiAgICBvdmVyZmxvdzogc2Nyb2xsO1xuICAgIHRvdWNoLWFjdGlvbjogYXV0bztcbiAgfVxuICBcbiAgLmludmVydGVkLWNvbG91cnMge1xuICAgIGZpbHRlcjogaW52ZXJ0KDEpO1xuICB9XG4gICAgXG5gO1xuXG5mdW5jdGlvbiBkZWZlcihmdW5jKSB7XG4gIHNldFRpbWVvdXQoZnVuYywgMCk7XG59XG4iXSwibmFtZXMiOlsiaXNGdWxsU2NyZWVuIiwiZnVsbFNjcmVlblV0aWxpdGllcyIsIkVOVEVSX0tFWV9DT0RFIiwia2V5Q29kZXMiLCJFU0NBUEVfS0VZX0NPREUiLCJCQUNLU1BBQ0VfS0VZX0NPREUiLCJBUlJPV19VUF9LRVlfQ09ERSIsIkFSUk9XX0RPV05fS0VZX0NPREUiLCJBUlJPV19MRUZUX0tFWV9DT0RFIiwiQVJST1dfUklHSFRfS0VZX0NPREUiLCJPdmVybGF5RGl2IiwiZnVsbFNjcmVlbkNoYW5nZUN1c3RvbUhhbmRsZXIiLCJldmVudCIsImVsZW1lbnQiLCJjb250cm9sbGVyIiwidXBkYXRlRnVsbFNjcmVlbiIsInVwZGF0ZU92ZXJsYXlab29tIiwic2luZ2xlVGFwQ3VzdG9tSGFuZGxlciIsInRvcCIsImxlZnQiLCJoZWlnaHQiLCJnZXRIZWlnaHQiLCJib3R0b20iLCJPUEVOX01FTlVfVEFQX0FSRUFfSEVJR0hUIiwib3Blbk1lbnUiLCJkb3VibGVUYXBDdXN0b21IYW5kbGVyIiwiZnVsbFNjcmVlbiIsImV4aXRGdWxsU2NyZWVuIiwibmF0aXZlR2VzdHVyZXNSZXN0b3JlZCIsImFyZU5hdGl2ZUdlc3R1cmVzUmVzdG9yZWQiLCJzdXBwcmVzc05hdGl2ZUdlc3R1cmVzIiwicmVzdG9yZU5hdGl2ZUdlc3R1cmVzIiwicGluY2hTdGFydEN1c3RvbUhhbmRsZXIiLCJ6b29tIiwiZ2V0Wm9vbSIsInN0YXJ0Wm9vbSIsInNldFN0YXJ0Wm9vbSIsInBpbmNoTW92ZUN1c3RvbUhhbmRsZXIiLCJyYXRpbyIsImdldFN0YXJ0Wm9vbSIsIm92ZXJsYXlab29tIiwiTWF0aCIsInNxcnQiLCJ6b29tT3ZlcmxheSIsInN3aXBlUmlnaHRDdXN0b21IYW5kbGVyIiwic3BwZWQiLCJzaG93TGVmdERpdiIsInN3aXBlTGVmdEN1c3RvbUhhbmRsZXIiLCJzaG93UmlnaHREaXYiLCJzd2lwZURvd25DdXN0b21IYW5kbGVyIiwic3BlZWQiLCJkaXJlY3Rpb24iLCJET1dOX0RJUkVDVElPTiIsInN0YXJ0U2Nyb2xsaW5nIiwic3dpcGVVcEN1c3RvbUhhbmRsZXIiLCJVUF9ESVJFQ1RJT04iLCJkcmFnU3RhcnRDdXN0b21IYW5kbGVyIiwic2Nyb2xsVG9wIiwiZ2V0U2Nyb2xsVG9wIiwic3RhcnRTY3JvbGxUb3AiLCJzZXRTdGFydFNjcm9sbFRvcCIsImRyYWdEb3duQ3VzdG9tSGFuZGxlciIsImdldFN0YXJ0U2Nyb2xsVG9wIiwic2V0U2Nyb2xsVG9wIiwiZHJhZ1VwQ3VzdG9tSGFuZGxlciIsImtleURvd25IYW5kbGVyIiwia2V5Q29kZSIsImNsb3NlTWVudSIsInNob3dGaXJzdERpdiIsInNob3dMYXN0RGl2Iiwic2Nyb2xsVG9BbmNob3IiLCJhbmNob3JJZCIsImRpdiIsImZpbmREaXZCeUFuY2hvcklkIiwibmV4dERpdiIsImZpbmREaXYiLCJwcmV2aW91c0RpdiIsImRpdnMiLCJnZXREaXZzIiwibmV4dEluZGV4IiwiaW5kZXhPZiIsInByZXZpb3VzSW5kZXgiLCJzaG93TmV4dERpdiIsInNjcm9sbFRvVG9wIiwic3RvcFNjcm9sbGluZyIsImludGVydmFsIiwiZ2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJTQ1JPTExfREVMQVkiLCJERUNFTEVSQVRJT04iLCJlbnRlckZ1bGxTY3JlZW4iLCJyZXF1ZXN0RnVsbFNjcmVlbiIsInVwZGF0ZU92ZXJsYXlDb2xvdXJzIiwiY29sb3Vyc0ludmVydGVkIiwiYXJlQ29sb3Vyc0ludmVydGVkIiwiYWRkQ2xhc3MiLCJyZW1vdmVDbGFzcyIsInVwZGF0ZU5hdGl2ZUdlc3R1cmVzIiwiZGlzYWJsZUN1c3RvbUdlc3R1cmVzIiwiZW5hYmxlQ3VzdG9tR2VzdHVyZXMiLCJuYXRpdmVHZXN0dXJlZEVuYWJsZWQiLCJhcmVOYXRpdmVHZXN0dXJlc0VuYWJsZWQiLCJvbkN1c3RvbURyYWdVcCIsIm9uQ3VzdG9tRHJhZ0Rvd24iLCJvbkN1c3RvbURyYWdTdGFydCIsIm9uQ3VzdG9tU3dpcGVVcCIsIm9uQ3VzdG9tU3dpcGVEb3duIiwib25DdXN0b21Td2lwZUxlZnQiLCJvbkN1c3RvbVN3aXBlUmlnaHQiLCJvbkN1c3RvbVBpbmNoTW92ZSIsIm9uQ3VzdG9tUGluY2hTdGFydCIsIm9uQ3VzdG9tRG91YmxlVGFwIiwic2V0TmF0aXZlR2VzdHVyZXNFbmFibGVkIiwib2ZmQ3VzdG9tRHJhZ1VwIiwib2ZmQ3VzdG9tRHJhZ0Rvd24iLCJvZmZDdXN0b21EcmFnU3RhcnQiLCJvZmZDdXN0b21Td2lwZVVwIiwib2ZmQ3VzdG9tU3dpcGVEb3duIiwib2ZmQ3VzdG9tU3dpcGVMZWZ0Iiwib2ZmQ3VzdG9tU3dpcGVSaWdodCIsIm9mZkN1c3RvbVBpbmNoTW92ZSIsIm9mZkN1c3RvbVBpbmNoU3RhcnQiLCJvZmZDdXN0b21Eb3VibGVUYXAiLCJoYXNDbGFzcyIsImRpdnNMZW5ndGgiLCJsZW5ndGgiLCJpbmRleCIsImRvbmUiLCJyZXNldEZyYWdtZW50IiwiaGlkZSIsInNob3ciLCJkZWZlciIsImJhY2tncm91bmRDb2xvdXIiLCJnZXRCYWNrZ3JvdW5kQ29sb3VyIiwic2V0QmFja2dyb3VuZENvbG91ciIsImJhY2tncm91bmRDb2xvciIsImNzcyIsImZpbmQiLCJzaG93aW5nIiwiaXNTaG93aW5nIiwiY2hpbGRFbGVtZW50cyIsImdldENoaWxkRWxlbWVudHMiLCJnZXRTdGF0ZSIsInVwZGF0ZVN0YXRlIiwibmF0aXZlR2VzdHVyZXNFbmFibGVkIiwic2V0SW5pdGlhbFN0YXRlIiwic2V0U3RhdGUiLCJkaWRNb3VudCIsIndpbmRvdyIsIm9uS2V5RG93biIsIm9uQ3VzdG9tU2luZ2xlVGFwIiwib25DdXN0b21GdWxsU2NyZWVuQ2hhbmdlIiwiZW5hYmxlRnVsbFNjcmVlbiIsImVuYWJsZVRvdWNoIiwid2lsbFVubW91bnQiLCJkaXNhYmxlVG91Y2giLCJkaXNhYmxlRnVsbFNjcmVlbiIsIm9mZkN1c3RvbUZ1bGxTY3JlZW5DaGFuZ2UiLCJvZmZDdXN0b21TaW5nbGVUYXAiLCJvZmZLZXlEb3duIiwiZGl2RE9NRWxlbWVudHMiLCJwcm9wZXJ0aWVzIiwiZWxlbWVudHNGcm9tRE9NRWxlbWVudHMiLCJEaXYiLCJwYXJlbnRDb250ZXh0IiwiYmluZCIsImluaXRpYWxpc2UiLCJhc3NpZ25Db250ZXh0IiwiRWxlbWVudCIsInRhZ05hbWUiLCJpZ25vcmVkUHJvcGVydGllcyIsImRlZmF1bHRQcm9wZXJ0aWVzIiwiY2xhc3NOYW1lIiwiT2JqZWN0IiwiYXNzaWduIiwicHJvdG90eXBlIiwidG91Y2hNaXhpbnMiLCJmdWxsU2NyZWVuTWl4aW5zIiwid2l0aFN0eWxlIiwiZnVuYyIsInNldFRpbWVvdXQiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBb2tCQTs7O2VBQUE7OztvRUFsa0JzQjtvQkFFQzt5QkFDRTswQkFDSzswQkFDcUM7MERBRW5EOzhEQUNJO3dCQUVvQjtxQkFFaUQ7eUJBQ1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXBHLElB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