hart-estate-widget 0.0.66 → 0.0.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/build/assets/css/index.css +2 -0
- package/build/assets/img/floor-dark.jpg +0 -0
- package/build/assets/img/floor-white.jpg +0 -0
- package/build/assets/img/grass.jpg +0 -0
- package/build/bundle.js +2 -0
- package/build/components/Application.js +2 -135
- package/build/components/Buttons/FullScreenButton.js +2 -50
- package/build/components/Buttons/TabButton.js +2 -24
- package/build/components/Instructions.js +2 -54
- package/build/components/Loader.js +2 -22
- package/build/components/ModelTab.js +2 -213
- package/build/components/PanoramaTab.js +2 -620
- package/build/components/RotationTab/DefaultView.js +2 -124
- package/build/components/RotationTab/ThreesixtyView.js +2 -45
- package/build/components/RotationTab/index.js +2 -194
- package/build/components/Widget.js +2 -110
- package/build/config/defaultConfig.js +2 -32
- package/build/enums/deviceOrientationStatuses.js +2 -11
- package/build/enums/deviceWidth.js +2 -21
- package/build/enums/imageExtentions.js +2 -16
- package/build/enums/rotationModes.js +2 -11
- package/build/index.css +1 -1
- package/build/index.js +2 -75
- package/build/locale/index.js +2 -71
- package/build/store/apiStore.js +2 -231
- package/build/store/deviceStore.js +2 -60
- package/build/store/fullScreenStore.js +2 -159
- package/build/store/houseStore.js +2 -952
- package/build/store/index.js +2 -124
- package/build/store/modelStore.js +2 -338
- package/build/threesixty/events.js +2 -220
- package/build/threesixty/index.js +2 -264
- package/build/utils/csg/csg-lib.js +2 -472
- package/build/utils/csg/csg-worker.js +2 -84
- package/build/utils/csg/three-csg.js +2 -277
- package/build/utils/helpers.js +2 -12
- package/build/utils/modelHelpers.js +2 -161
- package/build/utils/panoramaHelpers.js +2 -117
- package/package.json +17 -5
- package/build/assets/css/app.css +0 -1
- package/build/assets/css/app.css.map +0 -1
- package/build/assets/img/floor-dark.png +0 -0
- package/build/assets/img/floor-white.png +0 -0
- package/build/assets/img/grass.png +0 -0
package/build/store/index.js
CHANGED
@@ -1,124 +1,2 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
4
|
-
value: true
|
5
|
-
});
|
6
|
-
exports.default = void 0;
|
7
|
-
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
9
|
-
|
10
|
-
var _locale = _interopRequireDefault(require("../locale"));
|
11
|
-
|
12
|
-
var _mobx = require("mobx");
|
13
|
-
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
15
|
-
|
16
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
17
|
-
|
18
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
19
|
-
|
20
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
21
|
-
|
22
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
23
|
-
|
24
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
25
|
-
|
26
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
27
|
-
|
28
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
29
|
-
|
30
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
31
|
-
|
32
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
33
|
-
|
34
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
35
|
-
|
36
|
-
(0, _mobx.configure)({
|
37
|
-
useProxies: 'never'
|
38
|
-
});
|
39
|
-
var LivingRoomType = 'Living';
|
40
|
-
|
41
|
-
var Store = /*#__PURE__*/function () {
|
42
|
-
function Store() {
|
43
|
-
_classCallCheck(this, Store);
|
44
|
-
|
45
|
-
_defineProperty(this, "config", null);
|
46
|
-
|
47
|
-
_defineProperty(this, "listeners", {
|
48
|
-
'resize': []
|
49
|
-
});
|
50
|
-
|
51
|
-
_defineProperty(this, "controlsVisible", true);
|
52
|
-
|
53
|
-
(0, _mobx.makeAutoObservable)(this);
|
54
|
-
}
|
55
|
-
|
56
|
-
_createClass(Store, [{
|
57
|
-
key: "initialPanoramaRoomId",
|
58
|
-
get: function get() {
|
59
|
-
var json = this.config.json;
|
60
|
-
if (!json) return null;
|
61
|
-
var Rooms = json.Floors[0].Units[0].Rooms;
|
62
|
-
var livingRoom = Rooms.find(function (_ref) {
|
63
|
-
var Type = _ref.Type;
|
64
|
-
return Type === LivingRoomType;
|
65
|
-
});
|
66
|
-
|
67
|
-
var biggestRoom = _toConsumableArray(Rooms).sort(function (a, b) {
|
68
|
-
return b.Area - a.Area;
|
69
|
-
})[0];
|
70
|
-
|
71
|
-
return (livingRoom === null || livingRoom === void 0 ? void 0 : livingRoom.ID) || (biggestRoom === null || biggestRoom === void 0 ? void 0 : biggestRoom.ID) || null;
|
72
|
-
}
|
73
|
-
}, {
|
74
|
-
key: "isTabIncluded",
|
75
|
-
value: function isTabIncluded(value) {
|
76
|
-
return this.config.tabs.find(function (tab) {
|
77
|
-
return tab === value;
|
78
|
-
});
|
79
|
-
}
|
80
|
-
}, {
|
81
|
-
key: "setConfig",
|
82
|
-
value: function setConfig(config) {
|
83
|
-
this.config = config;
|
84
|
-
|
85
|
-
_locale.default.setCurrentLocale(config.locale);
|
86
|
-
|
87
|
-
this.dispatchEvent('resize', {
|
88
|
-
width: config.width,
|
89
|
-
height: config.height
|
90
|
-
});
|
91
|
-
}
|
92
|
-
}, {
|
93
|
-
key: "hideControls",
|
94
|
-
value: function hideControls() {
|
95
|
-
this.controlsVisible = false;
|
96
|
-
}
|
97
|
-
}, {
|
98
|
-
key: "showControls",
|
99
|
-
value: function showControls() {
|
100
|
-
this.controlsVisible = true;
|
101
|
-
}
|
102
|
-
}, {
|
103
|
-
key: "addEventListener",
|
104
|
-
value: function addEventListener(event, callback) {
|
105
|
-
if (!this.listeners[event]) return;
|
106
|
-
this.listeners[event].push(callback);
|
107
|
-
}
|
108
|
-
}, {
|
109
|
-
key: "dispatchEvent",
|
110
|
-
value: function dispatchEvent(event) {
|
111
|
-
var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
112
|
-
if (!this.listeners[event]) return;
|
113
|
-
this.listeners[event].forEach(function (callback) {
|
114
|
-
return callback(value);
|
115
|
-
});
|
116
|
-
}
|
117
|
-
}]);
|
118
|
-
|
119
|
-
return Store;
|
120
|
-
}();
|
121
|
-
|
122
|
-
var _default = new Store();
|
123
|
-
|
124
|
-
exports.default = _default;
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _react=_interopRequireDefault(require("react")),_locale=_interopRequireDefault(require("../locale")),_mobx=require("mobx");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,r){if(e){if("string"==typeof e)return _arrayLikeToArray(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Map"===(t="Object"===t&&e.constructor?e.constructor.name:t)||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(e,r):void 0}}function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayLikeToArray(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function _classCallCheck(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var n=r[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}(0,_mobx.configure)({useProxies:"never"});var LivingRoomType="Living",Store=function(){function e(){_classCallCheck(this,e),_defineProperty(this,"config",null),_defineProperty(this,"listeners",{resize:[]}),_defineProperty(this,"controlsVisible",!0),(0,_mobx.makeAutoObservable)(this)}return _createClass(e,[{key:"initialPanoramaRoomId",get:function(){var e=this.config.json;if(!e)return null;var e=e.Floors[0].Units[0].Rooms,r=e.find(function(e){return e.Type===LivingRoomType}),e=_toConsumableArray(e).sort(function(e,r){return r.Area-e.Area})[0];return(null==r?void 0:r.ID)||(null==e?void 0:e.ID)||null}},{key:"isTabIncluded",value:function(r){return this.config.tabs.find(function(e){return e===r})}},{key:"setConfig",value:function(e){this.config=e,_locale.default.setCurrentLocale(e.locale),this.dispatchEvent("resize",{width:e.width,height:e.height})}},{key:"hideControls",value:function(){this.controlsVisible=!1}},{key:"showControls",value:function(){this.controlsVisible=!0}},{key:"addEventListener",value:function(e,r){this.listeners[e]&&this.listeners[e].push(r)}},{key:"dispatchEvent",value:function(e){var r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;this.listeners[e]&&this.listeners[e].forEach(function(e){return e(r)})}}]),e}(),_default=new Store;exports.default=_default;
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3JlL2luZGV4LmpzIl0sIm5hbWVzIjpbIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2xvY2FsZSIsIl9tb2J4IiwiY29uZmlndXJlIiwidXNlUHJveGllcyIsIkxpdmluZ1Jvb21UeXBlIiwiU3RvcmUiLCJfY2xhc3NDYWxsQ2hlY2siLCJ0aGlzIiwiX2RlZmluZVByb3BlcnR5IiwicmVzaXplIiwibWFrZUF1dG9PYnNlcnZhYmxlIiwianNvbiIsImNvbmZpZyIsIlJvb21zIiwiRmxvb3JzIiwiVW5pdHMiLCJsaXZpbmdSb29tIiwiZmluZCIsIl9yZWYiLCJUeXBlIiwiYmlnZ2VzdFJvb20iLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJzb3J0IiwiYSIsImIiLCJBcmVhIiwiSUQiLCJ2YWx1ZSIsInRhYnMiLCJ0YWIiLCJsb2NhbGVTdG9yZSIsInNldEN1cnJlbnRMb2NhbGUiLCJsb2NhbGUiLCJkaXNwYXRjaEV2ZW50Iiwid2lkdGgiLCJoZWlnaHQiLCJjb250cm9sc1Zpc2libGUiLCJldmVudCIsImNhbGxiYWNrIiwibGlzdGVuZXJzIiwicHVzaCIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6IjJGQUFBLElBQUFBLE9BQUFDLHVCQUFBQyxRQUFBLFVBQ0FDLFFBQUFGLHVCQUFBQyxRQUFBLGNBQ0FFLE1BQUFGLFFBQUEsUSwwbURBRUEsRUFBQUcsTUFBQUEsV0FBVSxDQUFFQyxXQUFZLFVBRXhCLElBQU1DLGVBQWlCLFNBRWpCQyxNLFdBU0osU0FBQUEsSUFBY0MsZ0JBQUFDLEtBQUFGLEdBQUFHLGdCQUFBRCxLQUFBLFNBaEJoQixNQWdCZ0JDLGdCQUFBRCxLQUFBLFlBZmhCLENBVUlFLE9BQVUsS0FLRUQsZ0JBQUFELEtBQUEsbUJBRkksSUFHaEIsRUFBQUcsTUFBQUEsb0JBQW1CSCxNLHdEQUdyQixXQUNFLElBQVFJLEVBQVNKLEtBQUtLLE9BQWRELEtBRVIsSUFBS0EsRUFBTSxPQUFPLEtBRWxCLElBQVFFLEVBQVVGLEVBQUtHLE9BQU8sR0FBR0MsTUFBTSxHQUEvQkYsTUFDRkcsRUFBYUgsRUFBTUksS0FBSyxTQUFBQyxHQUFBLE9BQUFBLEVBQUdDLE9BQW9CZixpQkFDL0NnQixFQUFjQyxtQkFBSVIsR0FBT1MsS0FBSyxTQUFDQyxFQUFHQyxHQUFKLE9BQVVBLEVBQUVDLEtBQU9GLEVBQUVFLE9BQU0sR0FFL0QsT0FBT1QsTUFBQUEsT0FBQSxFQUFBQSxFQUFZVSxNQUFNTixNQUFBQSxPQUFsQixFQUFrQkEsRUFBYU0sS0FBTSxPLDJCQUc5QyxTQUFjQyxHQUNaLE9BQU9wQixLQUFLSyxPQUFPZ0IsS0FBS1gsS0FBSyxTQUFDWSxHQUFELE9BQVNBLElBQVFGLE0sdUJBOUJsRCxTQUFBZixHQUVNUixLQUFBQSxPQUFjUSxFQWlDaEJrQixRQUFBQSxRQUFZQyxpQkFBaUJuQixFQUFPb0IsUUEvQmxDM0IsS0FnQ0c0QixjQUFjLFNBQVUsQ0FBRUMsTUFBT3RCLEVBQU9zQixNQUFPQyxPQUFRdkIsRUFBT3VCLFcsMEJBR3JFLFdBMUJjNUIsS0FBQTZCLGlCQUFBLEksMEJBOEJkLFdBcENZN0IsS0FNRTZCLGlCQUFBLEksOEJBa0NkLFNBQWlCQyxFQUFPQyxHQWpDdEI1QixLQUFBQSxVQUFBQSxJQUNESCxLQUFBZ0MsVUFBQUYsR0FBQUcsS0FBQUYsSywyQkFxQ0QsU0FBY0QsR0FBcUIsSUFBZFYsRUFBYyxFQUFBYyxVQUFBQyxhQUFBQyxJQUFBRixVQUFBLEdBQUFBLFVBQUEsR0FBTixLQW5DN0JsQyxLQUFBZ0MsVUFBNEJGLElBcUMxQjlCLEtBcENBZ0MsVUFBaUJGLEdBQUt6QixRQUF0QixTQUFBMEIsR0FBQSxPQUFBQSxFQUFBWCxTLGNBS2lDUixJQUFIZCIsImZpbGUiOiJzdG9yZS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbG9jYWxlU3RvcmUgZnJvbSAnLi4vbG9jYWxlJztcbmltcG9ydCB7IGNvbmZpZ3VyZSwgbWFrZUF1dG9PYnNlcnZhYmxlIH0gZnJvbSAnbW9ieCc7XG5cbmNvbmZpZ3VyZSh7IHVzZVByb3hpZXM6ICduZXZlcicgfSk7XG5cbmNvbnN0IExpdmluZ1Jvb21UeXBlID0gJ0xpdmluZyc7XG5cbmNsYXNzIFN0b3JlIHtcbiAgY29uZmlnID0gbnVsbDtcblxuICBsaXN0ZW5lcnMgPSB7XG4gICAgJ3Jlc2l6ZSc6IFtdLFxuICB9O1xuXG4gIGNvbnRyb2xzVmlzaWJsZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgbWFrZUF1dG9PYnNlcnZhYmxlKHRoaXMpO1xuICB9XG5cbiAgZ2V0IGluaXRpYWxQYW5vcmFtYVJvb21JZCgpIHtcbiAgICBjb25zdCB7IGpzb24gfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgaWYgKCFqc29uKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IHsgUm9vbXMgfSA9IGpzb24uRmxvb3JzWzBdLlVuaXRzWzBdO1xuICAgIGNvbnN0IGxpdmluZ1Jvb20gPSBSb29tcy5maW5kKCh7IFR5cGUgfSkgPT4gVHlwZSA9PT0gTGl2aW5nUm9vbVR5cGUpO1xuICAgIGNvbnN0IGJpZ2dlc3RSb29tID0gWy4uLlJvb21zXS5zb3J0KChhLCBiKSA9PiBiLkFyZWEgLSBhLkFyZWEpWzBdO1xuXG4gICAgcmV0dXJuIGxpdmluZ1Jvb20/LklEIHx8IGJpZ2dlc3RSb29tPy5JRCB8fCBudWxsO1xuICB9XG5cbiAgaXNUYWJJbmNsdWRlZCh2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy50YWJzLmZpbmQoKHRhYikgPT4gdGFiID09PSB2YWx1ZSk7XG4gIH1cblxuICBzZXRDb25maWcoY29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgbG9jYWxlU3RvcmUuc2V0Q3VycmVudExvY2FsZShjb25maWcubG9jYWxlKTtcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQoJ3Jlc2l6ZScsIHsgd2lkdGg6IGNvbmZpZy53aWR0aCwgaGVpZ2h0OiBjb25maWcuaGVpZ2h0IH0pO1xuICB9XG5cbiAgaGlkZUNvbnRyb2xzKCkge1xuICAgIHRoaXMuY29udHJvbHNWaXNpYmxlID0gZmFsc2U7XG4gIH1cblxuICBzaG93Q29udHJvbHMoKSB7XG4gICAgdGhpcy5jb250cm9sc1Zpc2libGUgPSB0cnVlO1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2spIHtcbiAgICBpZiAoIXRoaXMubGlzdGVuZXJzW2V2ZW50XSkgcmV0dXJuO1xuICAgIHRoaXMubGlzdGVuZXJzW2V2ZW50XS5wdXNoKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGRpc3BhdGNoRXZlbnQoZXZlbnQsIHZhbHVlID0gbnVsbCkge1xuICAgIGlmICghdGhpcy5saXN0ZW5lcnNbZXZlbnRdKSByZXR1cm47XG4gICAgdGhpcy5saXN0ZW5lcnNbZXZlbnRdLmZvckVhY2goKGNhbGxiYWNrKSA9PiBjYWxsYmFjayh2YWx1ZSkpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBTdG9yZSgpO1xuIl19
|
@@ -1,338 +1,2 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
4
|
-
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
6
|
-
value: true
|
7
|
-
});
|
8
|
-
exports.default = void 0;
|
9
|
-
|
10
|
-
var _react = _interopRequireDefault(require("react"));
|
11
|
-
|
12
|
-
var _mobx = require("mobx");
|
13
|
-
|
14
|
-
var THREE = _interopRequireWildcard(require("three"));
|
15
|
-
|
16
|
-
var _cameraControls = _interopRequireDefault(require("camera-controls"));
|
17
|
-
|
18
|
-
var _store = _interopRequireDefault(require("../store"));
|
19
|
-
|
20
|
-
var _houseStore = _interopRequireDefault(require("../store/houseStore"));
|
21
|
-
|
22
|
-
var _grass = _interopRequireDefault(require("../assets/img/grass.png"));
|
23
|
-
|
24
|
-
var _modelHelpers = require("../utils/modelHelpers");
|
25
|
-
|
26
|
-
var _defaultConfig = _interopRequireDefault(require("../config/defaultConfig"));
|
27
|
-
|
28
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
29
|
-
|
30
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
31
|
-
|
32
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
33
|
-
|
34
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
35
|
-
|
36
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
37
|
-
|
38
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
39
|
-
|
40
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
41
|
-
|
42
|
-
(0, _mobx.configure)({
|
43
|
-
useProxies: 'never'
|
44
|
-
});
|
45
|
-
|
46
|
-
var ModelStore = /*#__PURE__*/function () {
|
47
|
-
function ModelStore() {
|
48
|
-
var _this = this;
|
49
|
-
|
50
|
-
_classCallCheck(this, ModelStore);
|
51
|
-
|
52
|
-
_defineProperty(this, "json", null);
|
53
|
-
|
54
|
-
_defineProperty(this, "initialized", false);
|
55
|
-
|
56
|
-
_defineProperty(this, "textureLoader", new THREE.TextureLoader());
|
57
|
-
|
58
|
-
_defineProperty(this, "clock", new THREE.Clock());
|
59
|
-
|
60
|
-
_defineProperty(this, "scene", null);
|
61
|
-
|
62
|
-
_defineProperty(this, "renderer", null);
|
63
|
-
|
64
|
-
_defineProperty(this, "camera", null);
|
65
|
-
|
66
|
-
_defineProperty(this, "controls", null);
|
67
|
-
|
68
|
-
_defineProperty(this, "houseStore", null);
|
69
|
-
|
70
|
-
_defineProperty(this, "sceneScale", 0.025);
|
71
|
-
|
72
|
-
_defineProperty(this, "wallsHeight", 280 * this.sceneScale);
|
73
|
-
|
74
|
-
_defineProperty(this, "currentControlsType", 'orbit');
|
75
|
-
|
76
|
-
_defineProperty(this, "isJoystickActive", false);
|
77
|
-
|
78
|
-
_defineProperty(this, "joystickDirections", []);
|
79
|
-
|
80
|
-
_defineProperty(this, "init", function (json) {
|
81
|
-
_this.json = json;
|
82
|
-
_this.initialized = true;
|
83
|
-
_this.houseStore = new _houseStore.default(_this);
|
84
|
-
|
85
|
-
_this.scene.add(_this.houseStore.houseGroup);
|
86
|
-
});
|
87
|
-
|
88
|
-
_defineProperty(this, "removeHouse", function () {
|
89
|
-
var selectedObject = _this.scene.getObjectByName('House-Group');
|
90
|
-
|
91
|
-
_this.scene.remove(selectedObject);
|
92
|
-
|
93
|
-
_this.initialized = false;
|
94
|
-
});
|
95
|
-
|
96
|
-
_defineProperty(this, "setJoystickState", function (value) {
|
97
|
-
_this.isJoystickActive = value;
|
98
|
-
});
|
99
|
-
|
100
|
-
_defineProperty(this, "setJoystickDirections", function (directions) {
|
101
|
-
_this.joystickDirections = directions;
|
102
|
-
});
|
103
|
-
|
104
|
-
_defineProperty(this, "setContainer", function (container) {
|
105
|
-
_this.container = container;
|
106
|
-
|
107
|
-
_this.updateRendererSize();
|
108
|
-
|
109
|
-
_this.updateCameraSize();
|
110
|
-
});
|
111
|
-
|
112
|
-
_defineProperty(this, "createScene", function () {
|
113
|
-
_this.scene = new THREE.Scene();
|
114
|
-
_this.scene.rotation.x = -Math.PI / 2;
|
115
|
-
_this.scene.scale.y = -1;
|
116
|
-
_this.scene.background = new THREE.Color('#E7E7E7');
|
117
|
-
_this.scene.fog = new THREE.Fog('#E7E7E7', 5, 200);
|
118
|
-
|
119
|
-
_this.createGround();
|
120
|
-
|
121
|
-
return _this;
|
122
|
-
});
|
123
|
-
|
124
|
-
_defineProperty(this, "createGround", function () {
|
125
|
-
var textures = {};
|
126
|
-
var assets = [new Promise(function (resolve) {
|
127
|
-
return _this.loadTexture(_grass.default, [75, 75], function (texture) {
|
128
|
-
textures.map = texture;
|
129
|
-
resolve();
|
130
|
-
});
|
131
|
-
})];
|
132
|
-
Promise.all(assets).then(function () {
|
133
|
-
var groundMaterial = new THREE.MeshStandardMaterial({
|
134
|
-
map: textures.map,
|
135
|
-
normalMap: textures.normalMap,
|
136
|
-
envMap: textures.envMap,
|
137
|
-
color: 0xe7e7e7
|
138
|
-
});
|
139
|
-
var groundMesh = new THREE.Mesh(new THREE.CircleGeometry(250, 100), groundMaterial);
|
140
|
-
groundMesh.position.z = -0.01;
|
141
|
-
groundMesh.receiveShadow = true;
|
142
|
-
|
143
|
-
_this.scene.add(groundMesh);
|
144
|
-
});
|
145
|
-
return _this;
|
146
|
-
});
|
147
|
-
|
148
|
-
_defineProperty(this, "createRenderer", function () {
|
149
|
-
_this.renderer = new THREE.WebGLRenderer();
|
150
|
-
|
151
|
-
_this.renderer.setPixelRatio(window.devicePixelRatio);
|
152
|
-
|
153
|
-
_this.updateRendererSize();
|
154
|
-
|
155
|
-
_this.renderer.localClippingEnabled = true;
|
156
|
-
_this.renderer.shadowMap.enabled = true;
|
157
|
-
_this.renderer.shadowMap.type = THREE.PCFSoftShadowMap;
|
158
|
-
return _this;
|
159
|
-
});
|
160
|
-
|
161
|
-
_defineProperty(this, "updateRendererSize", function () {
|
162
|
-
_this.renderer.setSize(_this.width, _this.height);
|
163
|
-
});
|
164
|
-
|
165
|
-
_defineProperty(this, "createCamera", function () {
|
166
|
-
_this.camera = new THREE.PerspectiveCamera(75, _this.width / _this.height, 0.1, 1000);
|
167
|
-
|
168
|
-
_this.camera.position.set(0, 0, 0);
|
169
|
-
|
170
|
-
_store.default.addEventListener('resize', function () {
|
171
|
-
_this.updateCameraSize();
|
172
|
-
|
173
|
-
_this.updateRendererSize();
|
174
|
-
});
|
175
|
-
|
176
|
-
return _this;
|
177
|
-
});
|
178
|
-
|
179
|
-
_defineProperty(this, "updateCameraSize", function () {
|
180
|
-
_this.camera.aspect = _this.width / _this.height;
|
181
|
-
|
182
|
-
_this.camera.updateProjectionMatrix();
|
183
|
-
});
|
184
|
-
|
185
|
-
_defineProperty(this, "createControls", function () {
|
186
|
-
_this.controls = new _cameraControls.default(_this.camera, _this.renderer.domElement);
|
187
|
-
_this.controls.minDistance = 0.5;
|
188
|
-
_this.controls.maxDistance = 50;
|
189
|
-
_this.controls.maxPolarAngle = Math.PI / 2.1;
|
190
|
-
|
191
|
-
_this.setDefaultControls(Math.PI / 4);
|
192
|
-
|
193
|
-
_this.controls.verticalDragToForward = true;
|
194
|
-
_this.currentControlsType = 'orbit';
|
195
|
-
|
196
|
-
var animate = function animate() {
|
197
|
-
_this.controls.update(_this.clock.getDelta());
|
198
|
-
|
199
|
-
window.requestAnimationFrame(animate);
|
200
|
-
var distance = 0.2;
|
201
|
-
|
202
|
-
if (_this.isJoystickActive) {
|
203
|
-
if (_this.joystickDirections.some(function (direction) {
|
204
|
-
return direction === 'forward';
|
205
|
-
})) {
|
206
|
-
_this.controls.forward(distance, true);
|
207
|
-
}
|
208
|
-
|
209
|
-
if (_this.joystickDirections.some(function (direction) {
|
210
|
-
return direction === 'backward';
|
211
|
-
})) {
|
212
|
-
_this.controls.forward(-distance, true);
|
213
|
-
}
|
214
|
-
|
215
|
-
if (_this.joystickDirections.some(function (direction) {
|
216
|
-
return direction === 'right';
|
217
|
-
})) {
|
218
|
-
_this.controls.truck(distance, 0, true);
|
219
|
-
}
|
220
|
-
|
221
|
-
if (_this.joystickDirections.some(function (direction) {
|
222
|
-
return direction === 'left';
|
223
|
-
})) {
|
224
|
-
_this.controls.truck(-distance, 0, true);
|
225
|
-
}
|
226
|
-
}
|
227
|
-
|
228
|
-
_this.renderer.render(_this.scene, _this.camera);
|
229
|
-
};
|
230
|
-
|
231
|
-
animate();
|
232
|
-
return _this;
|
233
|
-
});
|
234
|
-
|
235
|
-
_defineProperty(this, "setDefaultControls", function (angle) {
|
236
|
-
_this.controls.dollyTo(20, true);
|
237
|
-
|
238
|
-
_this.controls.moveTo(0, 0, 0, true);
|
239
|
-
|
240
|
-
_this.controls.mouseButtons.wheel = _cameraControls.default.ACTION.DOLLY;
|
241
|
-
_this.controls.touches.two = _cameraControls.default.ACTION.TOUCH_DOLLY_TRUCK;
|
242
|
-
|
243
|
-
_this.controls.rotateTo(0, angle, true);
|
244
|
-
});
|
245
|
-
|
246
|
-
_defineProperty(this, "setCurrentControlsType", function (type) {
|
247
|
-
_this.currentControlsType = type;
|
248
|
-
var EPS = 1e-5;
|
249
|
-
|
250
|
-
if (type === 'orbit') {
|
251
|
-
_this.controls.maxPolarAngle = Math.PI / 2.1;
|
252
|
-
|
253
|
-
_this.setDefaultControls(Math.PI / 4);
|
254
|
-
|
255
|
-
return;
|
256
|
-
}
|
257
|
-
|
258
|
-
if (type === 'plan') {
|
259
|
-
_this.setDefaultControls(0);
|
260
|
-
|
261
|
-
_this.controls.maxPolarAngle = 0;
|
262
|
-
return;
|
263
|
-
}
|
264
|
-
|
265
|
-
if (type === 'wasd') {
|
266
|
-
_this.camera.position.set(0, 0, EPS);
|
267
|
-
|
268
|
-
_this.controls.maxPolarAngle = Math.PI;
|
269
|
-
|
270
|
-
_this.controls.dollyTo(0, true);
|
271
|
-
|
272
|
-
_this.controls.moveTo(0, _this.wallsHeight / 2, 0, true);
|
273
|
-
|
274
|
-
_this.controls.rotateTo(0, Math.PI / 2, true);
|
275
|
-
|
276
|
-
_this.controls.mouseButtons.wheel = _cameraControls.default.ACTION.NONE;
|
277
|
-
_this.controls.touches.two = _cameraControls.default.ACTION.NONE;
|
278
|
-
}
|
279
|
-
});
|
280
|
-
|
281
|
-
_defineProperty(this, "addKeyEvents", function () {
|
282
|
-
var keyEvents = (0, _modelHelpers.getKeyEvents)(_this.controls);
|
283
|
-
keyEvents.forEach(function (_ref) {
|
284
|
-
var keys = _ref.keys,
|
285
|
-
callback = _ref.callback;
|
286
|
-
keys.forEach(function (key) {
|
287
|
-
return key.addEventListener('holding', function () {
|
288
|
-
if (_this.currentControlsType !== 'wasd') return;
|
289
|
-
callback();
|
290
|
-
});
|
291
|
-
});
|
292
|
-
});
|
293
|
-
return _this;
|
294
|
-
});
|
295
|
-
|
296
|
-
(0, _mobx.makeAutoObservable)(this);
|
297
|
-
|
298
|
-
_cameraControls.default.install({
|
299
|
-
THREE: THREE
|
300
|
-
});
|
301
|
-
|
302
|
-
this.createScene().createRenderer().createCamera().createControls().addKeyEvents();
|
303
|
-
}
|
304
|
-
|
305
|
-
_createClass(ModelStore, [{
|
306
|
-
key: "width",
|
307
|
-
get: function get() {
|
308
|
-
var _store$config;
|
309
|
-
|
310
|
-
return ((_store$config = _store.default.config) === null || _store$config === void 0 ? void 0 : _store$config.width) || _defaultConfig.default.width;
|
311
|
-
}
|
312
|
-
}, {
|
313
|
-
key: "height",
|
314
|
-
get: function get() {
|
315
|
-
var _store$config2;
|
316
|
-
|
317
|
-
return ((_store$config2 = _store.default.config) === null || _store$config2 === void 0 ? void 0 : _store$config2.height) || _defaultConfig.default.height;
|
318
|
-
}
|
319
|
-
}, {
|
320
|
-
key: "loadTexture",
|
321
|
-
value: function loadTexture(img) {
|
322
|
-
var repeat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [1, 1];
|
323
|
-
var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};
|
324
|
-
this.textureLoader.load(img, function (texture) {
|
325
|
-
texture.wrapS = texture.wrapT = THREE.RepeatWrapping;
|
326
|
-
texture.repeat.set(repeat[0], repeat[1]);
|
327
|
-
texture.flipY = false;
|
328
|
-
callback(texture);
|
329
|
-
});
|
330
|
-
}
|
331
|
-
}]);
|
332
|
-
|
333
|
-
return ModelStore;
|
334
|
-
}();
|
335
|
-
|
336
|
-
var _default = new ModelStore();
|
337
|
-
|
338
|
-
exports.default = _default;
|
1
|
+
"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _react=_interopRequireDefault(require("react")),_mobx=require("mobx"),THREE=_interopRequireWildcard(require("three")),_cameraControls=_interopRequireDefault(require("camera-controls")),_store=_interopRequireDefault(require("../store")),_houseStore=_interopRequireDefault(require("../store/houseStore")),_grass=_interopRequireDefault(require("../assets/img/grass.jpg")),_modelHelpers=require("../utils/modelHelpers"),_defaultConfig=_interopRequireDefault(require("../config/defaultConfig"));function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(_getRequireWildcardCache=function(e){return e?r:t})(e)}function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==_typeof(e)&&"function"!=typeof e)return{default:e};t=_getRequireWildcardCache(t);if(t&&t.has(e))return t.get(e);var r,o,n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&((o=i?Object.getOwnPropertyDescriptor(e,r):null)&&(o.get||o.set)?Object.defineProperty(n,r,o):n[r]=e[r]);return n.default=e,t&&t.set(e,n),n}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}(0,_mobx.configure)({useProxies:"never"});var ModelStore=function(){function e(){var o=this;_classCallCheck(this,e),_defineProperty(this,"json",null),_defineProperty(this,"initialized",!1),_defineProperty(this,"textureLoader",new THREE.TextureLoader),_defineProperty(this,"clock",new THREE.Clock),_defineProperty(this,"scene",null),_defineProperty(this,"renderer",null),_defineProperty(this,"camera",null),_defineProperty(this,"controls",null),_defineProperty(this,"houseStore",null),_defineProperty(this,"sceneScale",.025),_defineProperty(this,"wallsHeight",280*this.sceneScale),_defineProperty(this,"currentControlsType","orbit"),_defineProperty(this,"isJoystickActive",!1),_defineProperty(this,"joystickDirections",[]),_defineProperty(this,"init",function(e){o.json=e,o.initialized=!0,o.houseStore=new _houseStore.default(o),o.scene.add(o.houseStore.houseGroup)}),_defineProperty(this,"removeHouse",function(){var e=o.scene.getObjectByName("House-Group");o.scene.remove(e),o.initialized=!1}),_defineProperty(this,"setJoystickState",function(e){o.isJoystickActive=e}),_defineProperty(this,"setJoystickDirections",function(e){o.joystickDirections=e}),_defineProperty(this,"setContainer",function(e){o.container=e,o.updateRendererSize(),o.updateCameraSize()}),_defineProperty(this,"createScene",function(){return o.scene=new THREE.Scene,o.scene.rotation.x=-Math.PI/2,o.scene.scale.y=-1,o.scene.background=new THREE.Color("#E7E7E7"),o.scene.fog=new THREE.Fog("#E7E7E7",5,200),o.createGround(),o}),_defineProperty(this,"createGround",function(){var r={},e=[new Promise(function(t){return o.loadTexture(_grass.default,[75,75],function(e){r.map=e,t()})})];return Promise.all(e).then(function(){var e=new THREE.MeshStandardMaterial({map:r.map,normalMap:r.normalMap,envMap:r.envMap,color:15198183}),e=new THREE.Mesh(new THREE.CircleGeometry(250,100),e);e.position.z=-.01,e.receiveShadow=!0,o.scene.add(e)}),o}),_defineProperty(this,"createRenderer",function(){return o.renderer=new THREE.WebGLRenderer,o.renderer.setPixelRatio(window.devicePixelRatio),o.updateRendererSize(),o.renderer.localClippingEnabled=!0,o.renderer.shadowMap.enabled=!0,o.renderer.shadowMap.type=THREE.PCFSoftShadowMap,o}),_defineProperty(this,"updateRendererSize",function(){o.renderer.setSize(o.width,o.height)}),_defineProperty(this,"createCamera",function(){return o.camera=new THREE.PerspectiveCamera(75,o.width/o.height,.1,1e3),o.camera.position.set(0,0,0),_store.default.addEventListener("resize",function(){o.updateCameraSize(),o.updateRendererSize()}),o}),_defineProperty(this,"updateCameraSize",function(){o.camera.aspect=o.width/o.height,o.camera.updateProjectionMatrix()}),_defineProperty(this,"createControls",function(){return o.controls=new _cameraControls.default(o.camera,o.renderer.domElement),o.controls.minDistance=.5,o.controls.maxDistance=50,o.controls.maxPolarAngle=Math.PI/2.1,o.setDefaultControls(Math.PI/4),o.controls.verticalDragToForward=!0,o.currentControlsType="orbit",function e(){o.controls.update(o.clock.getDelta()),window.requestAnimationFrame(e);o.isJoystickActive&&(o.joystickDirections.some(function(e){return"forward"===e})&&o.controls.forward(.2,!0),o.joystickDirections.some(function(e){return"backward"===e})&&o.controls.forward(-.2,!0),o.joystickDirections.some(function(e){return"right"===e})&&o.controls.truck(.2,0,!0),o.joystickDirections.some(function(e){return"left"===e})&&o.controls.truck(-.2,0,!0)),o.renderer.render(o.scene,o.camera)}(),o}),_defineProperty(this,"setDefaultControls",function(e){o.controls.dollyTo(20,!0),o.controls.moveTo(0,0,0,!0),o.controls.mouseButtons.wheel=_cameraControls.default.ACTION.DOLLY,o.controls.touches.two=_cameraControls.default.ACTION.TOUCH_DOLLY_TRUCK,o.controls.rotateTo(0,e,!0)}),_defineProperty(this,"setCurrentControlsType",function(e){return"orbit"===(o.currentControlsType=e)?(o.controls.maxPolarAngle=Math.PI/2.1,void o.setDefaultControls(Math.PI/4)):"plan"===e?(o.setDefaultControls(0),void(o.controls.maxPolarAngle=0)):void("wasd"===e&&(o.camera.position.set(0,0,1e-5),o.controls.maxPolarAngle=Math.PI,o.controls.dollyTo(0,!0),o.controls.moveTo(0,o.wallsHeight/2,0,!0),o.controls.rotateTo(0,Math.PI/2,!0),o.controls.mouseButtons.wheel=_cameraControls.default.ACTION.NONE,o.controls.touches.two=_cameraControls.default.ACTION.NONE))}),_defineProperty(this,"addKeyEvents",function(){return(0,_modelHelpers.getKeyEvents)(o.controls).forEach(function(e){var t=e.keys,r=e.callback;t.forEach(function(e){return e.addEventListener("holding",function(){"wasd"===o.currentControlsType&&r()})})}),o}),(0,_mobx.makeAutoObservable)(this),_cameraControls.default.install({THREE:THREE}),this.createScene().createRenderer().createCamera().createControls().addKeyEvents()}return _createClass(e,[{key:"width",get:function(){var e;return(null==(e=_store.default.config)?void 0:e.width)||_defaultConfig.default.width}},{key:"height",get:function(){var e;return(null==(e=_store.default.config)?void 0:e.height)||_defaultConfig.default.height}},{key:"loadTexture",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[1,1],r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:function(){};this.textureLoader.load(e,function(e){e.wrapS=e.wrapT=THREE.RepeatWrapping,e.repeat.set(t[0],t[1]),e.flipY=!1,r(e)})}}]),e}(),_default=new ModelStore;exports.default=_default;
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3JlL21vZGVsU3RvcmUuanMiXSwibmFtZXMiOlsiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbW9ieCIsIlRIUkVFIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfY2FtZXJhQ29udHJvbHMiLCJfc3RvcmUiLCJfaG91c2VTdG9yZSIsIl9ncmFzcyIsIl9tb2RlbEhlbHBlcnMiLCJfZGVmYXVsdENvbmZpZyIsImNvbmZpZ3VyZSIsInVzZVByb3hpZXMiLCJNb2RlbFN0b3JlIiwiX3RoaXMiLCJ0aGlzIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2RlZmluZVByb3BlcnR5IiwiVGV4dHVyZUxvYWRlciIsIkNsb2NrIiwic2NlbmVTY2FsZSIsImpzb24iLCJpbml0aWFsaXplZCIsImhvdXNlU3RvcmUiLCJIb3VzZVN0b3JlIiwic2NlbmUiLCJhZGQiLCJob3VzZUdyb3VwIiwic2VsZWN0ZWRPYmplY3QiLCJnZXRPYmplY3RCeU5hbWUiLCJyZW1vdmUiLCJ2YWx1ZSIsImlzSm95c3RpY2tBY3RpdmUiLCJkaXJlY3Rpb25zIiwiam95c3RpY2tEaXJlY3Rpb25zIiwiY29udGFpbmVyIiwidXBkYXRlUmVuZGVyZXJTaXplIiwidXBkYXRlQ2FtZXJhU2l6ZSIsIlNjZW5lIiwicm90YXRpb24iLCJ4IiwiTWF0aCIsIlBJIiwic2NhbGUiLCJ5IiwiYmFja2dyb3VuZCIsIkNvbG9yIiwiRm9nIiwiY3JlYXRlR3JvdW5kIiwidGV4dHVyZXMiLCJhc3NldHMiLCJQcm9taXNlIiwicmVzb2x2ZSIsImxvYWRUZXh0dXJlIiwiR3JvdW5kVGV4dHVyZSIsInRleHR1cmUiLCJtYXAiLCJncm91bmRNYXRlcmlhbCIsIk1lc2hTdGFuZGFyZE1hdGVyaWFsIiwibm9ybWFsTWFwIiwiZW52TWFwIiwiY29sb3IiLCJncm91bmRNZXNoIiwiTWVzaCIsIkNpcmNsZUdlb21ldHJ5IiwicG9zaXRpb24iLCJyZWNlaXZlU2hhZG93IiwicmVuZGVyZXIiLCJXZWJHTFJlbmRlcmVyIiwic2V0UGl4ZWxSYXRpbyIsIndpbmRvdyIsImRldmljZVBpeGVsUmF0aW8iLCJsb2NhbENsaXBwaW5nRW5hYmxlZCIsInNoYWRvd01hcCIsIndpZHRoIiwiY2FtZXJhIiwiUGVyc3BlY3RpdmVDYW1lcmEiLCJoZWlnaHQiLCJzZXQiLCJzdG9yZSIsInVwZGF0ZVByb2plY3Rpb25NYXRyaXgiLCJjb250cm9scyIsIkNhbWVyYUNvbnRyb2xzIiwiZG9tRWxlbWVudCIsImVuYWJsZWQiLCJ0eXBlIiwiUENGU29mdFNoYWRvd01hcCIsInNldERlZmF1bHRDb250cm9scyIsInZlcnRpY2FsRHJhZ1RvRm9yd2FyZCIsImN1cnJlbnRDb250cm9sc1R5cGUiLCJhbmltYXRlIiwidXBkYXRlIiwiY2xvY2siLCJnZXREZWx0YSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInNvbWUiLCJkaXJlY3Rpb24iLCJhZGRFdmVudExpc3RlbmVyIiwidHJ1Y2siLCJyZW5kZXIiLCJhbmdsZSIsIm1vdmVUbyIsIkFDVElPTiIsIkRPTExZIiwiVE9VQ0hfRE9MTFlfVFJVQ0siLCJyb3RhdGVUbyIsIm1heFBvbGFyQW5nbGUiLCJmb3J3YXJkIiwiZGlzdGFuY2UiLCJkb2xseVRvIiwibW91c2VCdXR0b25zIiwid2hlZWwiLCJOT05FIiwiZ2V0S2V5RXZlbnRzIiwiZm9yRWFjaCIsIl9yZWYiLCJrZXlzIiwiY2FsbGJhY2siLCJrZXkiLCJpbnN0YWxsIiwiY3JlYXRlUmVuZGVyZXIiLCJjcmVhdGVDYW1lcmEiLCJjcmVhdGVDb250cm9scyIsImFkZEtleUV2ZW50cyIsIl9zdG9yZSRjb25maWciLCJjb25maWciLCJkZWZhdWx0Q29uZmlnIiwiX3N0b3JlJGNvbmZpZzIiLCJpbWciLCJyZXBlYXQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJ0ZXh0dXJlTG9hZGVyIiwid3JhcFMiLCJ3cmFwVCIsIlJlcGVhdFdyYXBwaW5nIiwiZmxpcFkiXSwibWFwcGluZ3MiOiI0VUFBQSxJQUFBQSxPQUFBQyx1QkFBQUMsUUFBQSxVQUNBQyxNQUFBRCxRQUFBLFFBQ0FFLE1BQUFDLHdCQUFBSCxRQUFBLFVBQ0FJLGdCQUFBTCx1QkFBQUMsUUFBQSxvQkFDQUssT0FBQU4sdUJBQUFDLFFBQUEsYUFDQU0sWUFBQVAsdUJBQUFDLFFBQUEsd0JBQ0FPLE9BQUFSLHVCQUFBQyxRQUFBLDRCQUNBUSxjQUFBUixRQUFBLHlCQUNBUyxlQUFBVix1QkFBQUMsUUFBQSw0QiwweENBRUEsRUFBQVUsTUFBQUEsV0FBVSxDQUFFQyxXQUFZLFUsSUFFbEJDLFcsV0E0QkosU0FBQUEsSUFBYyxJQUFBQyxFQUFBQyxLQUFBQyxnQkFBQUQsS0FBQUYsR0FBQUksZ0JBQUFGLEtBQUEsT0F0Q2hCLE1Bc0NnQkUsZ0JBQUFGLEtBQUEsZUFyQ2hCLEdBcUNnQkUsZ0JBQUFGLEtBQUEsZ0JBcENoQixJQUFBWixNQUFBZSxlQW9DZ0JELGdCQUFBRixLQUFBLFFBbkNoQixJQUFBWixNQUFBZ0IsT0FtQ2dCRixnQkFBQUYsS0FBQSxRQWxDaEIsTUFrQ2dCRSxnQkFBQUYsS0FBQSxXQWpDaEIsTUFpQ2dCRSxnQkFBQUYsS0FBQSxTQWhDaEIsTUFnQ2dCRSxnQkFBQUYsS0FBQSxXQWJILE1BYUdFLGdCQUFBRixLQUFBLGFBWEQsTUFXQ0UsZ0JBQUFGLEtBQUEsYUFURCxNQVNDRSxnQkFBQUYsS0FBQSxjQVBBLElBQU1BLEtBQUtLLFlBT1hILGdCQUFBRixLQUFBLHNCQUxRLFNBS1JFLGdCQUFBRixLQUFBLG9CQUhLLEdBR0xFLGdCQUFBRixLQUFBLHFCQUZPLElBRVBFLGdCQUFBRixLQUFBLE9BZ0JQLFNBQUNNLEdBaEJNUCxFQUFBTyxLQUFBQSxFQWtCWlAsRUFBS1EsYUFBYyxFQWxCUFIsRUFBQVMsV0FBQSxJQUFBQyxZQUFBQSxRQW5CTlYsR0F1Q05BLEVBQUtXLE1BQU1DLElBQUlaLEVBQUtTLFdBQVdJLGNBcEJuQlYsZ0JBQUFGLEtBQUEsY0FBQSxXQXdCWixJQUFNYSxFQUFpQmQsRUFBS1csTUFBTUksZ0JBQWdCLGVBeEJ0Q2YsRUFBQVcsTUFBQUssT0FBQUYsR0EwQlpkLEVBQUtRLGFBQWMsSUExQlBMLGdCQUFBRixLQUFBLG1CQUFBLFNBQUFnQixHQThCWmpCLEVBQUtrQixpQkFBbUJELElBOUJaZCxnQkFBQUYsS0FBQSx3QkFBQSxTQUFBa0IsR0FrQ1puQixFQUFLb0IsbUJBQXFCRCxJQWxDZGhCLGdCQUFBRixLQUFBLGVBQUEsU0FBQW9CLEdBc0NackIsRUFBS3FCLFVBQVlBLEVBdENMckIsRUFBQXNCLHFCQXdDWnRCLEVBdkJBdUIscUJBakJZcEIsZ0JBQUFGLEtBQUEsY0EyQ0EsV0FTWixPQVJBRCxFQXhCQVcsTUFBQSxJQUFBdEIsTUFBbUJtQyxNQUNwQnhCLEVBckJhVyxNQUFBYyxTQUFBQyxHQUFBQyxLQUFBQyxHQUFBLEVBOENaNUIsRUFBS1csTUFBTWtCLE1BQU1DLEdBQUssRUE5Q1Y5QixFQUFBVyxNQUFBb0IsV0FBQSxJQUFBMUMsTUFBQTJDLE1BdUJBLFdBeUJaaEMsRUF4QkFXLE1BQU1HLElBQUFBLElBQWN6QixNQUFHNEMsSUFBS3RCLFVBQU1JLEVBQUFBLEtBMEJsQ2YsRUF6QkFrQyxlQUNJbEMsSUExQlFHLGdCQUFBRixLQUFBLGVBQUEsV0F3RFosSUExQkFrQyxFQUFLakIsR0E5Qk9rQixFQUFBLENBMERWLElBQUlDLFFBQVEsU0FBQ0MsR0FBRCxPQUFhdEMsRUFBS3VDLFlBQVlDLE9BQUFBLFFBQWUsQ0FBQyxHQUFJLElBQUssU0FBQ0MsR0ExRDFETixFQUFBTyxJQUFBRCxFQWtDWkgsU0EyQ0EsT0FiQUQsUUExQktoQixJQUFBQSxHQUFZQSxLQUFBQSxXQTJCZixJQUFJc0IsRUFBaUIsSUFBSXRELE1BQU11RCxxQkFBcUIsQ0ExQnRERixJQUFLcEIsRUFBQUEsSUE0QkR1QixVQUFXVixFQUFTVSxVQTNCeEJDLE9BQUt2QixFQUFBQSxPQXhDT3dCLE1BQUEsV0FBQUMsRUFBQSxJQUFBM0QsTUFBQTRELEtBQUEsSUEyQ0E1RCxNQUFBNkQsZUFBTSxJQUFBLEtBQUFQLEdBQ2xCSyxFQUFBRyxTQUFpQjlELEdBQU1tQyxJQUN2QndCLEVBQUFJLGVBQXlCekIsRUFDekIzQixFQUFJVyxNQUFKQyxJQUFXaUIsS0ErQko3QixJQTdFS0csZ0JBQUFGLEtBQUEsaUJBb0RaLFdBb0NBLE9BbkNERCxFQXJEYXFELFNBQUEsSUFBQWhFLE1BQUFpRSxjQWtGWnRELEVBQUtxRCxTQUFTRSxjQUFjQyxPQUFPQyxrQkFsRnZCekQsRUFBQXNCLHFCQW9GWnRCLEVBNUJBcUQsU0FBY0ssc0JBQWQsRUE2QkExRCxFQTVCQXFELFNBQVlNLFVBQ050QixTQUFRLEVBNEJkckMsRUE1QmNxRCxTQUFhTSxVQUFLcEIsS0FBWUMsTUFBQUEsaUJBRXhDRixJQTVEUW5DLGdCQUFBRixLQUFBLHFCQWdFQW1DLFdBNEJacEMsRUEzQkVxRCxTQUFJVixRQUFjM0MsRUFBRzRELE1BQVM1RCxFQUFDNEMsVUFqRXJCekMsZ0JBQUFGLEtBQUEsZUFvRUYsV0FvQ1YsT0FSQUQsRUFBSzZELE9BM0JNLElBQUF4RSxNQUFBeUUsa0JBQUEsR0FBQTlELEVBQUE0RCxNQUFBNUQsRUFBQStELE9BQUEsR0FBQSxLQTRCWC9ELEVBaEN1QjZELE9BQXJCVixTQUFBYSxJQUFBLEVBQUEsRUFBQSxHQWtDRkMsT0FBQUEsUUEzQkVqQixpQkFBQSxTQUFBLFdBNEJBaEQsRUEzQkFnRCxtQkE0QkFoRCxFQUFLc0IsdUJBeEJQdEIsSUE3RVlHLGdCQUFBRixLQUFBLG1CQUFBLFdBNEdaRCxFQTNCQTZELE9BQUtSLE9BQVdyRCxFQUFJWCxNQUFNaUUsRUFBQUEsT0E0QjFCdEQsRUFBSzZELE9BQU9LLDJCQTdHQS9ELGdCQUFBRixLQUFBLGlCQW1GUHFCLFdBK0RMLE9BakNBdEIsRUFBS21FLFNBQVcsSUFBSUMsZ0JBQUFBLFFBQWVwRSxFQUFLNkQsT0FBUTdELEVBQUtxRCxTQUFTZ0IsWUFDOURyRSxFQTlCQW1FLFNBQUtkLFlBQVNLLEdBK0JkMUQsRUE5QkFtRSxTQUFLZCxZQUFtQmlCLEdBK0J4QnRFLEVBOUJBbUUsU0FBS2QsY0FBbUJrQixLQUFPbEYsR0FBTW1GLElBK0JyQ3hFLEVBN0JBeUUsbUJBQUE5QyxLQUFBQyxHQUFBLEdBQ0Q1QixFQXpGYW1FLFNBQUFPLHVCQUFBLEVBdUhaMUUsRUFBSzJFLG9CQUFzQixRQTNCM0IsU0FBQUMsSUE1Rlk1RSxFQUFBbUUsU0FBQVUsT0FBQTdFLEVBQUE4RSxNQUFBQyxZQTJIVnZCLE9BQU93QixzQkFBc0JKLEdBMUIvQjVFLEVBQUs2RCxtQkErQkc3RCxFQUFLb0IsbUJBQW1CNkQsS0FBSyxTQUFDQyxHQUFELE1BQTZCLFlBQWRBLEtBN0JwRGpCLEVBQUFBLFNBQU1rQixRQUhRLElBR1MsR0FnQ2ZuRixFQUFLb0IsbUJBQW1CNkQsS0FBSyxTQUFDQyxHQUFELE1BQTZCLGFBQWRBLEtBOUJsRGxGLEVBQUtzQixTQUFBQSxTQUxPLElBS1osR0FpQ010QixFQUFLb0IsbUJBQW1CNkQsS0FBSyxTQUFDQyxHQUFELE1BQTZCLFVBQWRBLEtBOUJwRGxGLEVBQU9tRSxTQUFQaUIsTUFSYyxHQVFkLEdBQUEsR0FpQ1FwRixFQUFLb0IsbUJBQW1CNkQsS0FBSyxTQUFDQyxHQUFELE1BQTZCLFNBQWRBLEtBekl4Q2xGLEVBQUFtRSxTQUFBaUIsT0FnR0UsR0FoR0YsR0FBQSxJQUFBcEYsRUFBQXFELFNBQUFnQyxPQUFBckYsRUFBQVcsTUFBQVgsRUFBQTZELFFBQUFlLEdBa0hSNUUsSUFsSFFHLGdCQUFBRixLQUFBLHFCQXFKTyxTQUFDcUYsR0FDcEJ0RixFQWpDQW1FLFNBQUtNLFFBQUFBLElBQUwsR0FrQ0F6RSxFQUFLbUUsU0FBU29CLE9BQU8sRUFBRyxFQUFHLEdBQUcsR0FDOUJ2RixFQWxDQW1FLFNBQUtBLGFBQVNPLE1BQUFBLGdCQUFBQSxRQUFkYyxPQUFBQyxNQW1DQXpGLEVBbENBbUUsU0FBS1EsUUFBQUEsSUFBTFAsZ0JBQUFBLFFBQUFvQixPQUFBRSxrQkFtQ0ExRixFQUFLbUUsU0FBU3dCLFNBQVMsRUFBR0wsR0FBTyxLQTFKckJuRixnQkFBQUYsS0FBQSx5QkE2SlcsU0FBQ3NFLEdBR3hCLE1BQWEsV0FGYnZFLEVBbkNFd0Qsb0JBQU93QixJQXNDUGhGLEVBbENBbUUsU0FBU2pELGNBQWtCUyxLQUFBQyxHQUFBLFNBbUMzQjVCLEVBbENFeUUsbUJBQVNyRCxLQUFBQSxHQUFtQjZELElBQ3RCLFNBb0NOVixHQUNGdkUsRUFwQ0d5RSxtQkFBQSxRQXFDSHpFLEVBQUttRSxTQUFTeUIsY0FBZ0IsU0FwQytDLFNBdUMzRXJCLElBQ0Z2RSxFQUFLNkQsT0F2Q0lNLFNBQVMwQixJQUFBQSxFQUFkLEVBUEVDLE1BK0NOOUYsRUF2Q0dtRSxTQUFBeUIsY0FBQWpFLEtBQUFDLEdBd0NINUIsRUFBS21FLFNBQVM0QixRQUFRLEdBQUcsR0FDekIvRixFQXhDRW1FLFNBQVMvQyxPQUFBQSxFQUFBQSxFQUFBQSxZQUF3QixFQUFBLEdBQUM4RCxHQXlDcENsRixFQUFLbUUsU0F6QzZDZSxTQUFTLEVBQUF2RCxLQUFLQyxHQUE3QixHQUFBLEdBMENuQzVCLEVBMUNNbUUsU0FBb0U2QixhQUFBQyxNQUFBN0IsZ0JBQUFBLFFBQUFvQixPQUFBVSxLQTJDMUVsRyxFQUFLbUUsU0ExQ0lBLFFBQVNpQixJQUFNVSxnQkFBQUEsUUFBYU4sT0FBakNVLFNBdklNL0YsZ0JBQUFGLEtBQUEsZUF5SXlCLFdBc0RyQyxPQXREMkUsRUFBQWtHLGNBQUFBLGNBQUFuRyxFQUFBbUUsVUFFdEVpQyxRQUFBLFNBQUFDLEdBQUEsSUFBQUMsRUFBQUQsRUFBQUMsS0FBQUMsRUFBQUYsRUFBQUUsU0E4Q0hELEVBN0NDRixRQUFBLFNBQUFJLEdBQUEsT0FBQUEsRUFBQXJCLGlCQUFBLFVBQUEsV0E4Q2tDLFNBQTdCbkYsRUFBSzJFLHFCQTVDWDRCLFVBSUZ2RyxLQWhMSkgsRUFBQUEsTUFBQUEsb0JBQVVJLE1BQVZtRSxnQkFBQUEsUUFBQXFDLFFBQUEsQ0FBQXBILE1BQUFBLFFBRU1VLEtBQUFBLGNBaUNpQjJHLGlCQUFpQkMsZUFBZUMsaUJBQWlCQyxlLHdDQUd0RSxXQUFZLElBQUFDLEVBUkUsT0FBQSxPQUFBQSxFQUFBN0MsT0FBQUEsUUFBQThDLGFBQUEsRUFBQUQsRUFBQWxELFFBQUFvRCxlQUFBQSxRQUFBcEQsUSxrQkFZZCxXQUFhLElBQUFxRCxFQVpDLE9BQUEsT0FBQUEsRUFBQWhELE9BQUFBLFFBQUE4QyxhQUFBLEVBQUFFLEVBQUFsRCxTQUFBaUQsZUFBQUEsUUFBQWpELFMseUJBa01kLFNBbE1jbUQsR0FxSk8sSUFySlBDLEVBcUpPLEVBQUFDLFVBQUFDLGFBQUFDLElBQUFGLFVBQUEsR0FBQUEsVUFBQSxHQXJKUCxDQUFBLEVBQUEsR0FBQWIsRUFxSk8sRUFBQWEsVUFBQUMsYUFBQUMsSUFBQUYsVUFBQSxHQUFBQSxVQUFBLEdBckpQLGFBbU1abkgsS0E3Q0FzSCxjQUFjeEIsS0FBZG1CLEVBQTBCLFNBQUF6RSxHQThDeEJBLEVBQVErRSxNQUFRL0UsRUFBUWdGLE1BQVFwSSxNQUFNcUksZUE3Q3hDakYsRUFBSzBCLE9BQVNvQixJQUFBQSxFQUFkLEdBQUE0QixFQUFBLElBK0NFMUUsRUFBUWtGLE9BQVEsRUE3Q2xCcEIsRUFBS3BDLFMsY0F6Sk8sSUFBQXBFIiwiZmlsZSI6InN0b3JlL21vZGVsU3RvcmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY29uZmlndXJlLCBtYWtlQXV0b09ic2VydmFibGUgfSBmcm9tICdtb2J4JztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCBDYW1lcmFDb250cm9scyBmcm9tICdjYW1lcmEtY29udHJvbHMnO1xuaW1wb3J0IHN0b3JlIGZyb20gJy4uL3N0b3JlJztcbmltcG9ydCBIb3VzZVN0b3JlIGZyb20gJy4uL3N0b3JlL2hvdXNlU3RvcmUnO1xuaW1wb3J0IEdyb3VuZFRleHR1cmUgZnJvbSAnLi4vYXNzZXRzL2ltZy9ncmFzcy5qcGcnO1xuaW1wb3J0IHsgZ2V0S2V5RXZlbnRzIH0gZnJvbSAnLi4vdXRpbHMvbW9kZWxIZWxwZXJzJztcbmltcG9ydCBkZWZhdWx0Q29uZmlnIGZyb20gJy4uL2NvbmZpZy9kZWZhdWx0Q29uZmlnJztcblxuY29uZmlndXJlKHsgdXNlUHJveGllczogJ25ldmVyJyB9KTtcblxuY2xhc3MgTW9kZWxTdG9yZSB7XG4gIGpzb24gPSBudWxsO1xuXG4gIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgdGV4dHVyZUxvYWRlciA9IG5ldyBUSFJFRS5UZXh0dXJlTG9hZGVyKCk7XG5cbiAgY2xvY2sgPSBuZXcgVEhSRUUuQ2xvY2soKTtcblxuICBzY2VuZSA9IG51bGw7XG5cbiAgcmVuZGVyZXIgPSBudWxsO1xuXG4gIGNhbWVyYSA9IG51bGw7XG5cbiAgY29udHJvbHMgPSBudWxsO1xuXG4gIGhvdXNlU3RvcmUgPSBudWxsO1xuXG4gIHNjZW5lU2NhbGUgPSAwLjAyNTtcblxuICB3YWxsc0hlaWdodCA9IDI4MCAqIHRoaXMuc2NlbmVTY2FsZTtcblxuICBjdXJyZW50Q29udHJvbHNUeXBlID0gJ29yYml0JztcblxuICBpc0pveXN0aWNrQWN0aXZlID0gZmFsc2U7XG4gIGpveXN0aWNrRGlyZWN0aW9ucyA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIG1ha2VBdXRvT2JzZXJ2YWJsZSh0aGlzKTtcblxuICAgIENhbWVyYUNvbnRyb2xzLmluc3RhbGwoeyBUSFJFRTogVEhSRUUgfSk7XG5cbiAgICB0aGlzLmNyZWF0ZVNjZW5lKCkuY3JlYXRlUmVuZGVyZXIoKS5jcmVhdGVDYW1lcmEoKS5jcmVhdGVDb250cm9scygpLmFkZEtleUV2ZW50cygpO1xuICB9XG5cbiAgZ2V0IHdpZHRoKCkge1xuICAgIHJldHVybiBzdG9yZS5jb25maWc/LndpZHRoIHx8IGRlZmF1bHRDb25maWcud2lkdGg7XG4gIH1cblxuICBnZXQgaGVpZ2h0KCkge1xuICAgIHJldHVybiBzdG9yZS5jb25maWc/LmhlaWdodCB8fCBkZWZhdWx0Q29uZmlnLmhlaWdodDtcbiAgfVxuXG4gIGluaXQgPSAoanNvbikgPT4ge1xuICAgIHRoaXMuanNvbiA9IGpzb247XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy5ob3VzZVN0b3JlID0gbmV3IEhvdXNlU3RvcmUodGhpcyk7XG4gICAgdGhpcy5zY2VuZS5hZGQodGhpcy5ob3VzZVN0b3JlLmhvdXNlR3JvdXApO1xuICB9O1xuXG4gIHJlbW92ZUhvdXNlID0gKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkT2JqZWN0ID0gdGhpcy5zY2VuZS5nZXRPYmplY3RCeU5hbWUoJ0hvdXNlLUdyb3VwJyk7XG4gICAgdGhpcy5zY2VuZS5yZW1vdmUoc2VsZWN0ZWRPYmplY3QpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgfTtcblxuICBzZXRKb3lzdGlja1N0YXRlID0gKHZhbHVlKSA9PiB7XG4gICAgdGhpcy5pc0pveXN0aWNrQWN0aXZlID0gdmFsdWU7XG4gIH07XG5cbiAgc2V0Sm95c3RpY2tEaXJlY3Rpb25zID0gKGRpcmVjdGlvbnMpID0+IHtcbiAgICB0aGlzLmpveXN0aWNrRGlyZWN0aW9ucyA9IGRpcmVjdGlvbnM7XG4gIH07XG5cbiAgc2V0Q29udGFpbmVyID0gKGNvbnRhaW5lcikgPT4ge1xuICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIHRoaXMudXBkYXRlUmVuZGVyZXJTaXplKCk7XG4gICAgdGhpcy51cGRhdGVDYW1lcmFTaXplKCk7XG4gIH07XG5cbiAgY3JlYXRlU2NlbmUgPSAoKSA9PiB7XG4gICAgdGhpcy5zY2VuZSA9IG5ldyBUSFJFRS5TY2VuZSgpO1xuICAgIHRoaXMuc2NlbmUucm90YXRpb24ueCA9IC1NYXRoLlBJIC8gMjtcbiAgICB0aGlzLnNjZW5lLnNjYWxlLnkgPSAtMTtcbiAgICB0aGlzLnNjZW5lLmJhY2tncm91bmQgPSBuZXcgVEhSRUUuQ29sb3IoJyNFN0U3RTcnKTtcbiAgICB0aGlzLnNjZW5lLmZvZyA9IG5ldyBUSFJFRS5Gb2coJyNFN0U3RTcnLCA1LCAyMDApO1xuXG4gICAgdGhpcy5jcmVhdGVHcm91bmQoKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIGNyZWF0ZUdyb3VuZCA9ICgpID0+IHtcbiAgICBjb25zdCB0ZXh0dXJlcyA9IHt9O1xuICAgIGNvbnN0IGFzc2V0cyA9IFtcbiAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB0aGlzLmxvYWRUZXh0dXJlKEdyb3VuZFRleHR1cmUsIFs3NSwgNzVdLCAodGV4dHVyZSkgPT4ge1xuICAgICAgICB0ZXh0dXJlcy5tYXAgPSB0ZXh0dXJlO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KSksXG4gICAgXTtcblxuICAgIFByb21pc2UuYWxsKGFzc2V0cykudGhlbigoKSA9PiB7XG4gICAgICBsZXQgZ3JvdW5kTWF0ZXJpYWwgPSBuZXcgVEhSRUUuTWVzaFN0YW5kYXJkTWF0ZXJpYWwoe1xuICAgICAgICBtYXA6IHRleHR1cmVzLm1hcCxcbiAgICAgICAgbm9ybWFsTWFwOiB0ZXh0dXJlcy5ub3JtYWxNYXAsXG4gICAgICAgIGVudk1hcDogdGV4dHVyZXMuZW52TWFwLFxuICAgICAgICBjb2xvcjogMHhlN2U3ZTcsXG4gICAgICB9KTtcbiAgICAgIGxldCBncm91bmRNZXNoID0gbmV3IFRIUkVFLk1lc2gobmV3IFRIUkVFLkNpcmNsZUdlb21ldHJ5KDI1MCwgMTAwKSwgZ3JvdW5kTWF0ZXJpYWwpO1xuICAgICAgZ3JvdW5kTWVzaC5wb3NpdGlvbi56ID0gLTAuMDE7XG4gICAgICBncm91bmRNZXNoLnJlY2VpdmVTaGFkb3cgPSB0cnVlO1xuICAgICAgdGhpcy5zY2VuZS5hZGQoZ3JvdW5kTWVzaCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBjcmVhdGVSZW5kZXJlciA9ICgpID0+IHtcbiAgICB0aGlzLnJlbmRlcmVyID0gbmV3IFRIUkVFLldlYkdMUmVuZGVyZXIoKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFBpeGVsUmF0aW8od2luZG93LmRldmljZVBpeGVsUmF0aW8pO1xuICAgIHRoaXMudXBkYXRlUmVuZGVyZXJTaXplKCk7XG4gICAgdGhpcy5yZW5kZXJlci5sb2NhbENsaXBwaW5nRW5hYmxlZCA9IHRydWU7XG4gICAgdGhpcy5yZW5kZXJlci5zaGFkb3dNYXAuZW5hYmxlZCA9IHRydWU7XG4gICAgdGhpcy5yZW5kZXJlci5zaGFkb3dNYXAudHlwZSA9IFRIUkVFLlBDRlNvZnRTaGFkb3dNYXA7XG4gIFxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIHVwZGF0ZVJlbmRlcmVyU2l6ZSA9ICgpID0+IHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFNpemUodGhpcy53aWR0aCwgdGhpcy5oZWlnaHQpO1xuICB9O1xuXG4gIGNyZWF0ZUNhbWVyYSA9ICgpID0+IHtcbiAgICB0aGlzLmNhbWVyYSA9IG5ldyBUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYSg3NSwgdGhpcy53aWR0aCAvIHRoaXMuaGVpZ2h0LCAwLjEsIDEwMDApO1xuICAgIHRoaXMuY2FtZXJhLnBvc2l0aW9uLnNldCgwLCAwLCAwKTtcblxuICAgIHN0b3JlLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlQ2FtZXJhU2l6ZSgpO1xuICAgICAgdGhpcy51cGRhdGVSZW5kZXJlclNpemUoKTtcbiAgICB9KTtcbiAgXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgdXBkYXRlQ2FtZXJhU2l6ZSA9ICgpID0+IHtcbiAgICB0aGlzLmNhbWVyYS5hc3BlY3QgPSB0aGlzLndpZHRoIC8gdGhpcy5oZWlnaHQ7XG4gICAgdGhpcy5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xuICB9O1xuXG4gIGNyZWF0ZUNvbnRyb2xzID0gKCkgPT4ge1xuICAgIHRoaXMuY29udHJvbHMgPSBuZXcgQ2FtZXJhQ29udHJvbHModGhpcy5jYW1lcmEsIHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudCk7XG4gICAgdGhpcy5jb250cm9scy5taW5EaXN0YW5jZSA9IDAuNTtcbiAgICB0aGlzLmNvbnRyb2xzLm1heERpc3RhbmNlID0gNTA7XG4gICAgdGhpcy5jb250cm9scy5tYXhQb2xhckFuZ2xlID0gTWF0aC5QSSAvIDIuMTtcbiAgICB0aGlzLnNldERlZmF1bHRDb250cm9scyhNYXRoLlBJIC8gNCk7XG4gICAgdGhpcy5jb250cm9scy52ZXJ0aWNhbERyYWdUb0ZvcndhcmQgPSB0cnVlO1xuICAgIHRoaXMuY3VycmVudENvbnRyb2xzVHlwZSA9ICdvcmJpdCc7XG5cbiAgICBjb25zdCBhbmltYXRlID0gKCkgPT4ge1xuICAgICAgdGhpcy5jb250cm9scy51cGRhdGUodGhpcy5jbG9jay5nZXREZWx0YSgpKTtcbiAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7XG5cbiAgICAgIGNvbnN0IGRpc3RhbmNlID0gMC4yO1xuXG4gICAgICBpZiAodGhpcy5pc0pveXN0aWNrQWN0aXZlKSB7XG4gICAgICAgIGlmICh0aGlzLmpveXN0aWNrRGlyZWN0aW9ucy5zb21lKChkaXJlY3Rpb24pID0+IGRpcmVjdGlvbiA9PT0gJ2ZvcndhcmQnKSkge1xuICAgICAgICAgIHRoaXMuY29udHJvbHMuZm9yd2FyZChkaXN0YW5jZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuam95c3RpY2tEaXJlY3Rpb25zLnNvbWUoKGRpcmVjdGlvbikgPT4gZGlyZWN0aW9uID09PSAnYmFja3dhcmQnKSkge1xuICAgICAgICAgIHRoaXMuY29udHJvbHMuZm9yd2FyZCgtZGlzdGFuY2UsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmpveXN0aWNrRGlyZWN0aW9ucy5zb21lKChkaXJlY3Rpb24pID0+IGRpcmVjdGlvbiA9PT0gJ3JpZ2h0JykpIHtcbiAgICAgICAgICB0aGlzLmNvbnRyb2xzLnRydWNrKGRpc3RhbmNlLCAwLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5qb3lzdGlja0RpcmVjdGlvbnMuc29tZSgoZGlyZWN0aW9uKSA9PiBkaXJlY3Rpb24gPT09ICdsZWZ0JykpIHtcbiAgICAgICAgICB0aGlzLmNvbnRyb2xzLnRydWNrKC1kaXN0YW5jZSwgMCwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5yZW5kZXJlci5yZW5kZXIodGhpcy5zY2VuZSwgdGhpcy5jYW1lcmEpO1xuICAgIH07XG4gICAgYW5pbWF0ZSgpO1xuICBcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBzZXREZWZhdWx0Q29udHJvbHMgPSAoYW5nbGUpID0+IHtcbiAgICB0aGlzLmNvbnRyb2xzLmRvbGx5VG8oMjAsIHRydWUpO1xuICAgIHRoaXMuY29udHJvbHMubW92ZVRvKDAsIDAsIDAsIHRydWUpO1xuICAgIHRoaXMuY29udHJvbHMubW91c2VCdXR0b25zLndoZWVsID0gQ2FtZXJhQ29udHJvbHMuQUNUSU9OLkRPTExZO1xuICAgIHRoaXMuY29udHJvbHMudG91Y2hlcy50d28gPSBDYW1lcmFDb250cm9scy5BQ1RJT04uVE9VQ0hfRE9MTFlfVFJVQ0s7XG4gICAgdGhpcy5jb250cm9scy5yb3RhdGVUbygwLCBhbmdsZSwgdHJ1ZSk7XG4gIH07XG5cbiAgc2V0Q3VycmVudENvbnRyb2xzVHlwZSA9ICh0eXBlKSA9PiB7XG4gICAgdGhpcy5jdXJyZW50Q29udHJvbHNUeXBlID0gdHlwZTtcbiAgICBjb25zdCBFUFMgPSAxZS01O1xuICAgIGlmICh0eXBlID09PSAnb3JiaXQnKSB7XG4gICAgICB0aGlzLmNvbnRyb2xzLm1heFBvbGFyQW5nbGUgPSBNYXRoLlBJIC8gMi4xO1xuICAgICAgdGhpcy5zZXREZWZhdWx0Q29udHJvbHMoTWF0aC5QSSAvIDQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ3BsYW4nKSB7XG4gICAgICB0aGlzLnNldERlZmF1bHRDb250cm9scygwKTtcbiAgICAgIHRoaXMuY29udHJvbHMubWF4UG9sYXJBbmdsZSA9IDA7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAnd2FzZCcpIHtcbiAgICAgIHRoaXMuY2FtZXJhLnBvc2l0aW9uLnNldCgwLCAwLCBFUFMpO1xuICAgICAgdGhpcy5jb250cm9scy5tYXhQb2xhckFuZ2xlID0gTWF0aC5QSTtcbiAgICAgIHRoaXMuY29udHJvbHMuZG9sbHlUbygwLCB0cnVlKTtcbiAgICAgIHRoaXMuY29udHJvbHMubW92ZVRvKDAsIHRoaXMud2FsbHNIZWlnaHQgLyAyLCAwLCB0cnVlKTtcbiAgICAgIHRoaXMuY29udHJvbHMucm90YXRlVG8oMCwgTWF0aC5QSSAvIDIsIHRydWUpO1xuICAgICAgdGhpcy5jb250cm9scy5tb3VzZUJ1dHRvbnMud2hlZWwgPSBDYW1lcmFDb250cm9scy5BQ1RJT04uTk9ORTtcbiAgICAgIHRoaXMuY29udHJvbHMudG91Y2hlcy50d28gPSBDYW1lcmFDb250cm9scy5BQ1RJT04uTk9ORTtcbiAgICB9XG4gIH07XG5cbiAgYWRkS2V5RXZlbnRzID0gKCkgPT4ge1xuICAgIGNvbnN0IGtleUV2ZW50cyA9IGdldEtleUV2ZW50cyh0aGlzLmNvbnRyb2xzKTtcbiAgXG4gICAga2V5RXZlbnRzLmZvckVhY2goKHsga2V5cywgY2FsbGJhY2sgfSkgPT4ge1xuICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IGtleS5hZGRFdmVudExpc3RlbmVyKCdob2xkaW5nJywgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50Q29udHJvbHNUeXBlICE9PSAnd2FzZCcpIHJldHVybjtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIGxvYWRUZXh0dXJlKGltZywgcmVwZWF0ID0gWzEsIDFdLCBjYWxsYmFjayA9ICgpID0+IHt9KSB7XG4gICAgdGhpcy50ZXh0dXJlTG9hZGVyLmxvYWQoaW1nLCAodGV4dHVyZSkgPT4ge1xuICAgICAgdGV4dHVyZS53cmFwUyA9IHRleHR1cmUud3JhcFQgPSBUSFJFRS5SZXBlYXRXcmFwcGluZztcbiAgICAgIHRleHR1cmUucmVwZWF0LnNldChyZXBlYXRbMF0sIHJlcGVhdFsxXSk7XG4gICAgICB0ZXh0dXJlLmZsaXBZID0gZmFsc2U7XG5cbiAgICAgIGNhbGxiYWNrKHRleHR1cmUpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBNb2RlbFN0b3JlKCk7XG4iXX0=
|