@pie-element/multiple-choice 7.6.1-beta.1 → 7.6.1-beta.3
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/configure/package.json +3 -3
- package/package.json +3 -3
- package/configure/lib/__tests__/root.test.js +0 -271
- package/configure/lib/defaults.js +0 -120
- package/configure/lib/index.js +0 -212
- package/configure/lib/main.js +0 -492
- package/configure/lib/utils.js +0 -18
- package/controller/lib/__tests__/index.test.js +0 -864
- package/controller/lib/__tests__/utils.test.js +0 -8
- package/controller/lib/defaults.js +0 -18
- package/controller/lib/index.js +0 -305
- package/controller/lib/utils.js +0 -36
- package/docs/demo/pie.manifest.json +0 -11
- package/lib/__tests__/choice-input-test.js +0 -124
- package/lib/__tests__/index-test.js +0 -22
- package/lib/__tests__/multiple-choice-test.js +0 -237
- package/lib/__tests__/session-updater-test.js +0 -72
- package/lib/choice-input.js +0 -298
- package/lib/choice.js +0 -157
- package/lib/feedback-tick.js +0 -174
- package/lib/index.js +0 -151
- package/lib/main.js +0 -100
- package/lib/multiple-choice.js +0 -263
- package/lib/print.js +0 -129
- package/lib/session-updater.js +0 -35
package/configure/lib/index.js
DELETED
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports["default"] = void 0;
|
|
9
|
-
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
-
|
|
16
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
-
|
|
18
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
-
|
|
20
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
-
|
|
22
|
-
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
23
|
-
|
|
24
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
-
|
|
26
|
-
var _react = _interopRequireDefault(require("react"));
|
|
27
|
-
|
|
28
|
-
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
29
|
-
|
|
30
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
31
|
-
|
|
32
|
-
var _pieConfigureEvents = require("@pie-framework/pie-configure-events");
|
|
33
|
-
|
|
34
|
-
var _main = _interopRequireDefault(require("./main"));
|
|
35
|
-
|
|
36
|
-
var _configUi = require("@pie-lib/config-ui");
|
|
37
|
-
|
|
38
|
-
var _defaults = _interopRequireDefault(require("lodash/defaults"));
|
|
39
|
-
|
|
40
|
-
var _defaults2 = _interopRequireDefault(require("./defaults"));
|
|
41
|
-
|
|
42
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
43
|
-
|
|
44
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
45
|
-
|
|
46
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
47
|
-
|
|
48
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
49
|
-
|
|
50
|
-
var log = (0, _debug["default"])('multiple-choice:configure');
|
|
51
|
-
|
|
52
|
-
var generateFormattedChoices = function generateFormattedChoices(choices) {
|
|
53
|
-
var choiceCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
54
|
-
|
|
55
|
-
if (!choices || choices.length === 0) {
|
|
56
|
-
var formattedChoices = [];
|
|
57
|
-
|
|
58
|
-
for (var i = 0; i < choiceCount; i++) {
|
|
59
|
-
formattedChoices.push({
|
|
60
|
-
value: "".concat(i),
|
|
61
|
-
label: '',
|
|
62
|
-
feedback: {
|
|
63
|
-
type: 'none',
|
|
64
|
-
value: ''
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return formattedChoices;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
return choices;
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
var prepareCustomizationObject = function prepareCustomizationObject(config, model) {
|
|
76
|
-
var configuration = (0, _defaults["default"])(config, _defaults2["default"].configuration);
|
|
77
|
-
return {
|
|
78
|
-
configuration: configuration,
|
|
79
|
-
model: _objectSpread(_objectSpread({}, model), {}, {
|
|
80
|
-
choices: generateFormattedChoices(model && model.choices || [], configuration && configuration.answerChoiceCount)
|
|
81
|
-
})
|
|
82
|
-
};
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
var MultipleChoice = /*#__PURE__*/function (_HTMLElement) {
|
|
86
|
-
(0, _inherits2["default"])(MultipleChoice, _HTMLElement);
|
|
87
|
-
|
|
88
|
-
var _super = _createSuper(MultipleChoice);
|
|
89
|
-
|
|
90
|
-
function MultipleChoice() {
|
|
91
|
-
var _this;
|
|
92
|
-
|
|
93
|
-
(0, _classCallCheck2["default"])(this, MultipleChoice);
|
|
94
|
-
_this = _super.call(this);
|
|
95
|
-
_this._model = MultipleChoice.createDefaultModel();
|
|
96
|
-
_this._configuration = _defaults2["default"].configuration;
|
|
97
|
-
_this.onModelChanged = _this.onModelChanged.bind((0, _assertThisInitialized2["default"])(_this));
|
|
98
|
-
_this.onConfigurationChanged = _this.onConfigurationChanged.bind((0, _assertThisInitialized2["default"])(_this));
|
|
99
|
-
return _this;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
(0, _createClass2["default"])(MultipleChoice, [{
|
|
103
|
-
key: "model",
|
|
104
|
-
set: function set(s) {
|
|
105
|
-
this._model = MultipleChoice.createDefaultModel(s);
|
|
106
|
-
|
|
107
|
-
this._render();
|
|
108
|
-
}
|
|
109
|
-
}, {
|
|
110
|
-
key: "configuration",
|
|
111
|
-
set: function set(c) {
|
|
112
|
-
var info = prepareCustomizationObject(c, this._model);
|
|
113
|
-
this.onModelChanged(info.model);
|
|
114
|
-
this._configuration = info.configuration;
|
|
115
|
-
|
|
116
|
-
this._render();
|
|
117
|
-
}
|
|
118
|
-
}, {
|
|
119
|
-
key: "disableSidePanel",
|
|
120
|
-
set: function set(s) {
|
|
121
|
-
this._disableSidePanel = s;
|
|
122
|
-
|
|
123
|
-
this._render();
|
|
124
|
-
}
|
|
125
|
-
}, {
|
|
126
|
-
key: "dispatchModelUpdated",
|
|
127
|
-
value: function dispatchModelUpdated(reset) {
|
|
128
|
-
var resetValue = !!reset;
|
|
129
|
-
this.dispatchEvent(new _pieConfigureEvents.ModelUpdatedEvent(this._model, resetValue));
|
|
130
|
-
}
|
|
131
|
-
}, {
|
|
132
|
-
key: "onModelChanged",
|
|
133
|
-
value: function onModelChanged(m, reset) {
|
|
134
|
-
this._model = m;
|
|
135
|
-
|
|
136
|
-
this._render();
|
|
137
|
-
|
|
138
|
-
this.dispatchModelUpdated(reset);
|
|
139
|
-
}
|
|
140
|
-
}, {
|
|
141
|
-
key: "onConfigurationChanged",
|
|
142
|
-
value: function onConfigurationChanged(c) {
|
|
143
|
-
this._configuration = prepareCustomizationObject(c, this._model).configuration;
|
|
144
|
-
|
|
145
|
-
if (this._model) {
|
|
146
|
-
this.onModelChanged(this._model);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
this._render();
|
|
150
|
-
}
|
|
151
|
-
/** @param {done, progress, file} handler */
|
|
152
|
-
|
|
153
|
-
}, {
|
|
154
|
-
key: "insertImage",
|
|
155
|
-
value: function insertImage(handler) {
|
|
156
|
-
this.dispatchEvent(new _pieConfigureEvents.InsertImageEvent(handler));
|
|
157
|
-
}
|
|
158
|
-
}, {
|
|
159
|
-
key: "onDeleteImage",
|
|
160
|
-
value: function onDeleteImage(src, done) {
|
|
161
|
-
this.dispatchEvent(new _pieConfigureEvents.DeleteImageEvent(src, done));
|
|
162
|
-
}
|
|
163
|
-
}, {
|
|
164
|
-
key: "insertSound",
|
|
165
|
-
value: function insertSound(handler) {
|
|
166
|
-
this.dispatchEvent(new _pieConfigureEvents.InsertSoundEvent(handler));
|
|
167
|
-
}
|
|
168
|
-
}, {
|
|
169
|
-
key: "onDeleteSound",
|
|
170
|
-
value: function onDeleteSound(src, done) {
|
|
171
|
-
this.dispatchEvent(new _pieConfigureEvents.DeleteSoundEvent(src, done));
|
|
172
|
-
}
|
|
173
|
-
}, {
|
|
174
|
-
key: "_render",
|
|
175
|
-
value: function _render() {
|
|
176
|
-
log('_render');
|
|
177
|
-
|
|
178
|
-
var element = /*#__PURE__*/_react["default"].createElement(_main["default"], {
|
|
179
|
-
model: this._model,
|
|
180
|
-
configuration: this._configuration,
|
|
181
|
-
onModelChanged: this.onModelChanged,
|
|
182
|
-
onConfigurationChanged: this.onConfigurationChanged,
|
|
183
|
-
disableSidePanel: this._disableSidePanel,
|
|
184
|
-
imageSupport: {
|
|
185
|
-
add: this.insertImage.bind(this),
|
|
186
|
-
"delete": this.onDeleteImage.bind(this)
|
|
187
|
-
},
|
|
188
|
-
uploadSoundSupport: {
|
|
189
|
-
add: this.insertSound.bind(this),
|
|
190
|
-
"delete": this.onDeleteSound.bind(this)
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
_reactDom["default"].render(element, this);
|
|
195
|
-
}
|
|
196
|
-
}]);
|
|
197
|
-
return MultipleChoice;
|
|
198
|
-
}( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
|
|
199
|
-
|
|
200
|
-
exports["default"] = MultipleChoice;
|
|
201
|
-
(0, _defineProperty2["default"])(MultipleChoice, "createDefaultModel", function () {
|
|
202
|
-
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
203
|
-
|
|
204
|
-
var normalizedModel = _configUi.choiceUtils.normalizeChoices(_objectSpread(_objectSpread(_objectSpread({}, _defaults2["default"].model), model), {}, {
|
|
205
|
-
choices: generateFormattedChoices(model && model.choices || [])
|
|
206
|
-
})); // This is used for offering support for old models which have the property "verticalMode"
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
normalizedModel.choicesLayout = model.choicesLayout || model.verticalMode === false && 'horizontal' || _defaults2["default"].model.choicesLayout;
|
|
210
|
-
return normalizedModel;
|
|
211
|
-
});
|
|
212
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJsb2ciLCJnZW5lcmF0ZUZvcm1hdHRlZENob2ljZXMiLCJjaG9pY2VzIiwiY2hvaWNlQ291bnQiLCJsZW5ndGgiLCJmb3JtYXR0ZWRDaG9pY2VzIiwiaSIsInB1c2giLCJ2YWx1ZSIsImxhYmVsIiwiZmVlZGJhY2siLCJ0eXBlIiwicHJlcGFyZUN1c3RvbWl6YXRpb25PYmplY3QiLCJjb25maWciLCJtb2RlbCIsImNvbmZpZ3VyYXRpb24iLCJzZW5zaWJsZURlZmF1bHRzIiwiYW5zd2VyQ2hvaWNlQ291bnQiLCJNdWx0aXBsZUNob2ljZSIsIl9tb2RlbCIsImNyZWF0ZURlZmF1bHRNb2RlbCIsIl9jb25maWd1cmF0aW9uIiwib25Nb2RlbENoYW5nZWQiLCJiaW5kIiwib25Db25maWd1cmF0aW9uQ2hhbmdlZCIsInMiLCJfcmVuZGVyIiwiYyIsImluZm8iLCJfZGlzYWJsZVNpZGVQYW5lbCIsInJlc2V0IiwicmVzZXRWYWx1ZSIsImRpc3BhdGNoRXZlbnQiLCJNb2RlbFVwZGF0ZWRFdmVudCIsIm0iLCJkaXNwYXRjaE1vZGVsVXBkYXRlZCIsImhhbmRsZXIiLCJJbnNlcnRJbWFnZUV2ZW50Iiwic3JjIiwiZG9uZSIsIkRlbGV0ZUltYWdlRXZlbnQiLCJJbnNlcnRTb3VuZEV2ZW50IiwiRGVsZXRlU291bmRFdmVudCIsImVsZW1lbnQiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJNYWluIiwiZGlzYWJsZVNpZGVQYW5lbCIsImltYWdlU3VwcG9ydCIsImFkZCIsImluc2VydEltYWdlIiwib25EZWxldGVJbWFnZSIsInVwbG9hZFNvdW5kU3VwcG9ydCIsImluc2VydFNvdW5kIiwib25EZWxldGVTb3VuZCIsIlJlYWN0RE9NIiwicmVuZGVyIiwiSFRNTEVsZW1lbnQiLCJub3JtYWxpemVkTW9kZWwiLCJ1dGlscyIsIm5vcm1hbGl6ZUNob2ljZXMiLCJjaG9pY2VzTGF5b3V0IiwidmVydGljYWxNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBUUE7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxHQUFHLEdBQUcsdUJBQU0sMkJBQU4sQ0FBWjs7QUFFQSxJQUFNQyx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQTJCLENBQUNDLE9BQUQsRUFBOEI7QUFBQSxNQUFwQkMsV0FBb0IsdUVBQU4sQ0FBTTs7QUFDN0QsTUFBSSxDQUFDRCxPQUFELElBQVlBLE9BQU8sQ0FBQ0UsTUFBUixLQUFtQixDQUFuQyxFQUFzQztBQUNwQyxRQUFJQyxnQkFBZ0IsR0FBRyxFQUF2Qjs7QUFFQSxTQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdILFdBQXBCLEVBQWlDRyxDQUFDLEVBQWxDLEVBQXNDO0FBQ3BDRCxNQUFBQSxnQkFBZ0IsQ0FBQ0UsSUFBakIsQ0FBc0I7QUFDcEJDLFFBQUFBLEtBQUssWUFBS0YsQ0FBTCxDQURlO0FBRXBCRyxRQUFBQSxLQUFLLEVBQUUsRUFGYTtBQUdwQkMsUUFBQUEsUUFBUSxFQUFFO0FBQ1JDLFVBQUFBLElBQUksRUFBRSxNQURFO0FBRVJILFVBQUFBLEtBQUssRUFBRTtBQUZDO0FBSFUsT0FBdEI7QUFRRDs7QUFFRCxXQUFPSCxnQkFBUDtBQUNEOztBQUVELFNBQU9ILE9BQVA7QUFDRCxDQW5CRDs7QUFxQkEsSUFBTVUsMEJBQTBCLEdBQUcsU0FBN0JBLDBCQUE2QixDQUFDQyxNQUFELEVBQVNDLEtBQVQsRUFBbUI7QUFDcEQsTUFBTUMsYUFBYSxHQUFHLDBCQUFTRixNQUFULEVBQWlCRyxzQkFBaUJELGFBQWxDLENBQXRCO0FBRUEsU0FBTztBQUNMQSxJQUFBQSxhQUFhLEVBQWJBLGFBREs7QUFFTEQsSUFBQUEsS0FBSyxrQ0FDQUEsS0FEQTtBQUVIWixNQUFBQSxPQUFPLEVBQUVELHdCQUF3QixDQUM5QmEsS0FBSyxJQUFJQSxLQUFLLENBQUNaLE9BQWhCLElBQTRCLEVBREcsRUFFL0JhLGFBQWEsSUFBSUEsYUFBYSxDQUFDRSxpQkFGQTtBQUY5QjtBQUZBLEdBQVA7QUFVRCxDQWJEOztJQWVxQkMsYzs7Ozs7QUFlbkIsNEJBQWM7QUFBQTs7QUFBQTtBQUNaO0FBQ0EsVUFBS0MsTUFBTCxHQUFjRCxjQUFjLENBQUNFLGtCQUFmLEVBQWQ7QUFDQSxVQUFLQyxjQUFMLEdBQXNCTCxzQkFBaUJELGFBQXZDO0FBQ0EsVUFBS08sY0FBTCxHQUFzQixNQUFLQSxjQUFMLENBQW9CQyxJQUFwQixnREFBdEI7QUFDQSxVQUFLQyxzQkFBTCxHQUE4QixNQUFLQSxzQkFBTCxDQUE0QkQsSUFBNUIsZ0RBQTlCO0FBTFk7QUFNYjs7OztTQUVELGFBQVVFLENBQVYsRUFBYTtBQUNYLFdBQUtOLE1BQUwsR0FBY0QsY0FBYyxDQUFDRSxrQkFBZixDQUFrQ0ssQ0FBbEMsQ0FBZDs7QUFFQSxXQUFLQyxPQUFMO0FBQ0Q7OztTQUVELGFBQWtCQyxDQUFsQixFQUFxQjtBQUNuQixVQUFNQyxJQUFJLEdBQUdoQiwwQkFBMEIsQ0FBQ2UsQ0FBRCxFQUFJLEtBQUtSLE1BQVQsQ0FBdkM7QUFFQSxXQUFLRyxjQUFMLENBQW9CTSxJQUFJLENBQUNkLEtBQXpCO0FBQ0EsV0FBS08sY0FBTCxHQUFzQk8sSUFBSSxDQUFDYixhQUEzQjs7QUFDQSxXQUFLVyxPQUFMO0FBQ0Q7OztTQUVELGFBQXFCRCxDQUFyQixFQUF3QjtBQUN0QixXQUFLSSxpQkFBTCxHQUF5QkosQ0FBekI7O0FBQ0EsV0FBS0MsT0FBTDtBQUNEOzs7V0FFRCw4QkFBcUJJLEtBQXJCLEVBQTRCO0FBQzFCLFVBQU1DLFVBQVUsR0FBRyxDQUFDLENBQUNELEtBQXJCO0FBRUEsV0FBS0UsYUFBTCxDQUFtQixJQUFJQyxxQ0FBSixDQUFzQixLQUFLZCxNQUEzQixFQUFtQ1ksVUFBbkMsQ0FBbkI7QUFDRDs7O1dBRUQsd0JBQWVHLENBQWYsRUFBa0JKLEtBQWxCLEVBQXlCO0FBQ3ZCLFdBQUtYLE1BQUwsR0FBY2UsQ0FBZDs7QUFDQSxXQUFLUixPQUFMOztBQUVBLFdBQUtTLG9CQUFMLENBQTBCTCxLQUExQjtBQUNEOzs7V0FFRCxnQ0FBdUJILENBQXZCLEVBQTBCO0FBQ3hCLFdBQUtOLGNBQUwsR0FBc0JULDBCQUEwQixDQUFDZSxDQUFELEVBQUksS0FBS1IsTUFBVCxDQUExQixDQUEyQ0osYUFBakU7O0FBRUEsVUFBSSxLQUFLSSxNQUFULEVBQWlCO0FBQ2YsYUFBS0csY0FBTCxDQUFvQixLQUFLSCxNQUF6QjtBQUNEOztBQUVELFdBQUtPLE9BQUw7QUFDRDtBQUVEOzs7O1dBQ0EscUJBQVlVLE9BQVosRUFBcUI7QUFDbkIsV0FBS0osYUFBTCxDQUFtQixJQUFJSyxvQ0FBSixDQUFxQkQsT0FBckIsQ0FBbkI7QUFDRDs7O1dBRUQsdUJBQWNFLEdBQWQsRUFBbUJDLElBQW5CLEVBQXlCO0FBQ3ZCLFdBQUtQLGFBQUwsQ0FBbUIsSUFBSVEsb0NBQUosQ0FBcUJGLEdBQXJCLEVBQTBCQyxJQUExQixDQUFuQjtBQUNEOzs7V0FFRCxxQkFBWUgsT0FBWixFQUFxQjtBQUNuQixXQUFLSixhQUFMLENBQW1CLElBQUlTLG9DQUFKLENBQXFCTCxPQUFyQixDQUFuQjtBQUNEOzs7V0FFRCx1QkFBY0UsR0FBZCxFQUFtQkMsSUFBbkIsRUFBeUI7QUFDdkIsV0FBS1AsYUFBTCxDQUFtQixJQUFJVSxvQ0FBSixDQUFxQkosR0FBckIsRUFBMEJDLElBQTFCLENBQW5CO0FBQ0Q7OztXQUVELG1CQUFVO0FBQ1J2QyxNQUFBQSxHQUFHLENBQUMsU0FBRCxDQUFIOztBQUNBLFVBQUkyQyxPQUFPLGdCQUFHQyxrQkFBTUMsYUFBTixDQUFvQkMsZ0JBQXBCLEVBQTBCO0FBQ3RDaEMsUUFBQUEsS0FBSyxFQUFFLEtBQUtLLE1BRDBCO0FBRXRDSixRQUFBQSxhQUFhLEVBQUUsS0FBS00sY0FGa0I7QUFHdENDLFFBQUFBLGNBQWMsRUFBRSxLQUFLQSxjQUhpQjtBQUl0Q0UsUUFBQUEsc0JBQXNCLEVBQUUsS0FBS0Esc0JBSlM7QUFLdEN1QixRQUFBQSxnQkFBZ0IsRUFBRSxLQUFLbEIsaUJBTGU7QUFNdENtQixRQUFBQSxZQUFZLEVBQUU7QUFDWkMsVUFBQUEsR0FBRyxFQUFFLEtBQUtDLFdBQUwsQ0FBaUIzQixJQUFqQixDQUFzQixJQUF0QixDQURPO0FBRVosb0JBQVEsS0FBSzRCLGFBQUwsQ0FBbUI1QixJQUFuQixDQUF3QixJQUF4QjtBQUZJLFNBTndCO0FBVXRDNkIsUUFBQUEsa0JBQWtCLEVBQUU7QUFDbEJILFVBQUFBLEdBQUcsRUFBRSxLQUFLSSxXQUFMLENBQWlCOUIsSUFBakIsQ0FBc0IsSUFBdEIsQ0FEYTtBQUVsQixvQkFBUSxLQUFLK0IsYUFBTCxDQUFtQi9CLElBQW5CLENBQXdCLElBQXhCO0FBRlU7QUFWa0IsT0FBMUIsQ0FBZDs7QUFnQkFnQywyQkFBU0MsTUFBVCxDQUFnQmIsT0FBaEIsRUFBeUIsSUFBekI7QUFDRDs7O2tEQXJHeUNjLFc7OztpQ0FBdkJ2QyxjLHdCQUNTLFlBQWdCO0FBQUEsTUFBZkosS0FBZSx1RUFBUCxFQUFPOztBQUMxQyxNQUFNNEMsZUFBZSxHQUFHQyxzQkFBTUMsZ0JBQU4sK0NBQ25CNUMsc0JBQWlCRixLQURFLEdBRW5CQSxLQUZtQjtBQUd0QlosSUFBQUEsT0FBTyxFQUFFRCx3QkFBd0IsQ0FBRWEsS0FBSyxJQUFJQSxLQUFLLENBQUNaLE9BQWhCLElBQTRCLEVBQTdCO0FBSFgsS0FBeEIsQ0FEMEMsQ0FPMUM7OztBQUNBd0QsRUFBQUEsZUFBZSxDQUFDRyxhQUFoQixHQUNFL0MsS0FBSyxDQUFDK0MsYUFBTixJQUF3Qi9DLEtBQUssQ0FBQ2dELFlBQU4sS0FBdUIsS0FBdkIsSUFBZ0MsWUFBeEQsSUFBeUU5QyxzQkFBaUJGLEtBQWpCLENBQXVCK0MsYUFEbEc7QUFHQSxTQUFPSCxlQUFQO0FBQ0QsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge1xuICBEZWxldGVJbWFnZUV2ZW50LFxuICBJbnNlcnRJbWFnZUV2ZW50LFxuICBNb2RlbFVwZGF0ZWRFdmVudCxcbiAgSW5zZXJ0U291bmRFdmVudCxcbiAgRGVsZXRlU291bmRFdmVudCxcbn0gZnJvbSAnQHBpZS1mcmFtZXdvcmsvcGllLWNvbmZpZ3VyZS1ldmVudHMnO1xuXG5pbXBvcnQgTWFpbiBmcm9tICcuL21haW4nO1xuaW1wb3J0IHsgY2hvaWNlVXRpbHMgYXMgdXRpbHMgfSBmcm9tICdAcGllLWxpYi9jb25maWctdWknO1xuaW1wb3J0IGRlZmF1bHRzIGZyb20gJ2xvZGFzaC9kZWZhdWx0cyc7XG5cbmltcG9ydCBzZW5zaWJsZURlZmF1bHRzIGZyb20gJy4vZGVmYXVsdHMnO1xuXG5jb25zdCBsb2cgPSBkZWJ1ZygnbXVsdGlwbGUtY2hvaWNlOmNvbmZpZ3VyZScpO1xuXG5jb25zdCBnZW5lcmF0ZUZvcm1hdHRlZENob2ljZXMgPSAoY2hvaWNlcywgY2hvaWNlQ291bnQgPSAwKSA9PiB7XG4gIGlmICghY2hvaWNlcyB8fCBjaG9pY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgIGxldCBmb3JtYXR0ZWRDaG9pY2VzID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNob2ljZUNvdW50OyBpKyspIHtcbiAgICAgIGZvcm1hdHRlZENob2ljZXMucHVzaCh7XG4gICAgICAgIHZhbHVlOiBgJHtpfWAsXG4gICAgICAgIGxhYmVsOiAnJyxcbiAgICAgICAgZmVlZGJhY2s6IHtcbiAgICAgICAgICB0eXBlOiAnbm9uZScsXG4gICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdHRlZENob2ljZXM7XG4gIH1cblxuICByZXR1cm4gY2hvaWNlcztcbn07XG5cbmNvbnN0IHByZXBhcmVDdXN0b21pemF0aW9uT2JqZWN0ID0gKGNvbmZpZywgbW9kZWwpID0+IHtcbiAgY29uc3QgY29uZmlndXJhdGlvbiA9IGRlZmF1bHRzKGNvbmZpZywgc2Vuc2libGVEZWZhdWx0cy5jb25maWd1cmF0aW9uKTtcblxuICByZXR1cm4ge1xuICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgbW9kZWw6IHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgY2hvaWNlczogZ2VuZXJhdGVGb3JtYXR0ZWRDaG9pY2VzKFxuICAgICAgICAobW9kZWwgJiYgbW9kZWwuY2hvaWNlcykgfHwgW10sXG4gICAgICAgIGNvbmZpZ3VyYXRpb24gJiYgY29uZmlndXJhdGlvbi5hbnN3ZXJDaG9pY2VDb3VudCxcbiAgICAgICksXG4gICAgfSxcbiAgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE11bHRpcGxlQ2hvaWNlIGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICBzdGF0aWMgY3JlYXRlRGVmYXVsdE1vZGVsID0gKG1vZGVsID0ge30pID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVkTW9kZWwgPSB1dGlscy5ub3JtYWxpemVDaG9pY2VzKHtcbiAgICAgIC4uLnNlbnNpYmxlRGVmYXVsdHMubW9kZWwsXG4gICAgICAuLi5tb2RlbCxcbiAgICAgIGNob2ljZXM6IGdlbmVyYXRlRm9ybWF0dGVkQ2hvaWNlcygobW9kZWwgJiYgbW9kZWwuY2hvaWNlcykgfHwgW10pLFxuICAgIH0pO1xuXG4gICAgLy8gVGhpcyBpcyB1c2VkIGZvciBvZmZlcmluZyBzdXBwb3J0IGZvciBvbGQgbW9kZWxzIHdoaWNoIGhhdmUgdGhlIHByb3BlcnR5IFwidmVydGljYWxNb2RlXCJcbiAgICBub3JtYWxpemVkTW9kZWwuY2hvaWNlc0xheW91dCA9XG4gICAgICBtb2RlbC5jaG9pY2VzTGF5b3V0IHx8IChtb2RlbC52ZXJ0aWNhbE1vZGUgPT09IGZhbHNlICYmICdob3Jpem9udGFsJykgfHwgc2Vuc2libGVEZWZhdWx0cy5tb2RlbC5jaG9pY2VzTGF5b3V0O1xuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRNb2RlbDtcbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX21vZGVsID0gTXVsdGlwbGVDaG9pY2UuY3JlYXRlRGVmYXVsdE1vZGVsKCk7XG4gICAgdGhpcy5fY29uZmlndXJhdGlvbiA9IHNlbnNpYmxlRGVmYXVsdHMuY29uZmlndXJhdGlvbjtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2VkID0gdGhpcy5vbk1vZGVsQ2hhbmdlZC5iaW5kKHRoaXMpO1xuICAgIHRoaXMub25Db25maWd1cmF0aW9uQ2hhbmdlZCA9IHRoaXMub25Db25maWd1cmF0aW9uQ2hhbmdlZC5iaW5kKHRoaXMpO1xuICB9XG5cbiAgc2V0IG1vZGVsKHMpIHtcbiAgICB0aGlzLl9tb2RlbCA9IE11bHRpcGxlQ2hvaWNlLmNyZWF0ZURlZmF1bHRNb2RlbChzKTtcblxuICAgIHRoaXMuX3JlbmRlcigpO1xuICB9XG5cbiAgc2V0IGNvbmZpZ3VyYXRpb24oYykge1xuICAgIGNvbnN0IGluZm8gPSBwcmVwYXJlQ3VzdG9taXphdGlvbk9iamVjdChjLCB0aGlzLl9tb2RlbCk7XG5cbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2VkKGluZm8ubW9kZWwpO1xuICAgIHRoaXMuX2NvbmZpZ3VyYXRpb24gPSBpbmZvLmNvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5fcmVuZGVyKCk7XG4gIH1cblxuICBzZXQgZGlzYWJsZVNpZGVQYW5lbChzKSB7XG4gICAgdGhpcy5fZGlzYWJsZVNpZGVQYW5lbCA9IHM7XG4gICAgdGhpcy5fcmVuZGVyKCk7XG4gIH1cblxuICBkaXNwYXRjaE1vZGVsVXBkYXRlZChyZXNldCkge1xuICAgIGNvbnN0IHJlc2V0VmFsdWUgPSAhIXJlc2V0O1xuXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBNb2RlbFVwZGF0ZWRFdmVudCh0aGlzLl9tb2RlbCwgcmVzZXRWYWx1ZSkpO1xuICB9XG5cbiAgb25Nb2RlbENoYW5nZWQobSwgcmVzZXQpIHtcbiAgICB0aGlzLl9tb2RlbCA9IG07XG4gICAgdGhpcy5fcmVuZGVyKCk7XG5cbiAgICB0aGlzLmRpc3BhdGNoTW9kZWxVcGRhdGVkKHJlc2V0KTtcbiAgfVxuXG4gIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQoYykge1xuICAgIHRoaXMuX2NvbmZpZ3VyYXRpb24gPSBwcmVwYXJlQ3VzdG9taXphdGlvbk9iamVjdChjLCB0aGlzLl9tb2RlbCkuY29uZmlndXJhdGlvbjtcblxuICAgIGlmICh0aGlzLl9tb2RlbCkge1xuICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlZCh0aGlzLl9tb2RlbCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmVuZGVyKCk7XG4gIH1cblxuICAvKiogQHBhcmFtIHtkb25lLCBwcm9ncmVzcywgZmlsZX0gaGFuZGxlciAqL1xuICBpbnNlcnRJbWFnZShoYW5kbGVyKSB7XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBJbnNlcnRJbWFnZUV2ZW50KGhhbmRsZXIpKTtcbiAgfVxuXG4gIG9uRGVsZXRlSW1hZ2Uoc3JjLCBkb25lKSB7XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBEZWxldGVJbWFnZUV2ZW50KHNyYywgZG9uZSkpO1xuICB9XG5cbiAgaW5zZXJ0U291bmQoaGFuZGxlcikge1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSW5zZXJ0U291bmRFdmVudChoYW5kbGVyKSk7XG4gIH1cblxuICBvbkRlbGV0ZVNvdW5kKHNyYywgZG9uZSkge1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRGVsZXRlU291bmRFdmVudChzcmMsIGRvbmUpKTtcbiAgfVxuXG4gIF9yZW5kZXIoKSB7XG4gICAgbG9nKCdfcmVuZGVyJyk7XG4gICAgbGV0IGVsZW1lbnQgPSBSZWFjdC5jcmVhdGVFbGVtZW50KE1haW4sIHtcbiAgICAgIG1vZGVsOiB0aGlzLl9tb2RlbCxcbiAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuX2NvbmZpZ3VyYXRpb24sXG4gICAgICBvbk1vZGVsQ2hhbmdlZDogdGhpcy5vbk1vZGVsQ2hhbmdlZCxcbiAgICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQ6IHRoaXMub25Db25maWd1cmF0aW9uQ2hhbmdlZCxcbiAgICAgIGRpc2FibGVTaWRlUGFuZWw6IHRoaXMuX2Rpc2FibGVTaWRlUGFuZWwsXG4gICAgICBpbWFnZVN1cHBvcnQ6IHtcbiAgICAgICAgYWRkOiB0aGlzLmluc2VydEltYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGRlbGV0ZTogdGhpcy5vbkRlbGV0ZUltYWdlLmJpbmQodGhpcyksXG4gICAgICB9LFxuICAgICAgdXBsb2FkU291bmRTdXBwb3J0OiB7XG4gICAgICAgIGFkZDogdGhpcy5pbnNlcnRTb3VuZC5iaW5kKHRoaXMpLFxuICAgICAgICBkZWxldGU6IHRoaXMub25EZWxldGVTb3VuZC5iaW5kKHRoaXMpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIFJlYWN0RE9NLnJlbmRlcihlbGVtZW50LCB0aGlzKTtcbiAgfVxufVxuIl19
|