@wppconnect/server 1.8.5 → 2.0.0
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/CHANGELOG.md +6 -0
- package/dist/config/upload.js +4 -4
- package/dist/config.js +78 -0
- package/dist/controller/catalogController.js +111 -22
- package/dist/controller/deviceController.js +324 -114
- package/dist/controller/encryptController.js +4 -2
- package/dist/controller/groupController.js +157 -44
- package/dist/controller/labelsController.js +46 -8
- package/dist/controller/messageController.js +104 -39
- package/dist/controller/orderController.js +19 -7
- package/dist/controller/sessionController.js +99 -34
- package/dist/controller/statusController.js +18 -10
- package/dist/index.js +47 -25
- package/dist/mapper/index.js +7 -5
- package/dist/mapper/tagone-chat.js +1 -1
- package/dist/mapper/tagone-device.js +1 -1
- package/dist/mapper/tagone-message-document.js +1 -1
- package/dist/mapper/tagone-message-image.js +1 -1
- package/dist/mapper/tagone-message-location.js +1 -1
- package/dist/mapper/tagone-message-video.js +1 -1
- package/dist/mapper/tagone-message.js +1 -1
- package/dist/mapper/tagone-onack.js +1 -1
- package/dist/mapper/tagone-return.js +4 -2
- package/dist/middleware/auth.js +29 -9
- package/dist/middleware/healthCheck.js +1 -1
- package/dist/middleware/statusConnection.js +9 -3
- package/dist/routes/index.js +618 -113
- package/dist/server.js +2 -2
- package/dist/types/Request.js +2 -0
- package/dist/types/ServerOptions.js +2 -0
- package/dist/types/WhatsAppServer.js +2 -0
- package/dist/util/chatWootClient.js +55 -22
- package/dist/util/createSessionUtil.js +65 -17
- package/dist/util/db/mongodb/db.js +10 -7
- package/dist/util/db/redis/db.js +7 -5
- package/dist/util/functions.js +81 -37
- package/dist/util/getAllTokens.js +1 -1
- package/dist/util/logger.js +2 -3
- package/dist/util/sessionUtil.js +5 -4
- package/dist/util/tokenStore/FileTokenStore/FileTokenStore.js +178 -0
- package/dist/util/tokenStore/factory.js +8 -11
- package/dist/util/tokenStore/fileTokenStory.js +21 -15
- package/dist/util/tokenStore/firebaseTokenStory.js +1 -1
- package/dist/util/tokenStore/model/token.js +7 -5
- package/dist/util/tokenStore/mongodbTokenStory.js +18 -11
- package/dist/util/tokenStore/redisTokenStory.js +39 -19
- package/dist/util/tokenStore/types.js +2 -0
- package/package.json +44 -22
- package/tsconfig.json +105 -0
- package/types.d.ts +2 -0
- package/dist/config/upload.js.map +0 -1
- package/dist/config.json +0 -77
- package/dist/controller/catalogController.js.map +0 -1
- package/dist/controller/deviceController.js.map +0 -1
- package/dist/controller/encryptController.js.map +0 -1
- package/dist/controller/groupController.js.map +0 -1
- package/dist/controller/labelsController.js.map +0 -1
- package/dist/controller/messageController.js.map +0 -1
- package/dist/controller/orderController.js.map +0 -1
- package/dist/controller/sessionController.js.map +0 -1
- package/dist/controller/statusController.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/mapper/index.js.map +0 -1
- package/dist/mapper/tagone-chat.js.map +0 -1
- package/dist/mapper/tagone-device.js.map +0 -1
- package/dist/mapper/tagone-message-document.js.map +0 -1
- package/dist/mapper/tagone-message-image.js.map +0 -1
- package/dist/mapper/tagone-message-location.js.map +0 -1
- package/dist/mapper/tagone-message-video.js.map +0 -1
- package/dist/mapper/tagone-message.js.map +0 -1
- package/dist/mapper/tagone-onack.js.map +0 -1
- package/dist/mapper/tagone-return.js.map +0 -1
- package/dist/middleware/auth.js.map +0 -1
- package/dist/middleware/healthCheck.js.map +0 -1
- package/dist/middleware/statusConnection.js.map +0 -1
- package/dist/routes/index.js.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/util/chatWootClient.js.map +0 -1
- package/dist/util/createSessionUtil.js.map +0 -1
- package/dist/util/db/mongodb/db.js.map +0 -1
- package/dist/util/db/redis/db.js.map +0 -1
- package/dist/util/functions.js.map +0 -1
- package/dist/util/getAllTokens.js.map +0 -1
- package/dist/util/logger.js.map +0 -1
- package/dist/util/sessionUtil.js.map +0 -1
- package/dist/util/tokenStore/factory.js.map +0 -1
- package/dist/util/tokenStore/fileTokenStory.js.map +0 -1
- package/dist/util/tokenStore/firebaseTokenStory.js.map +0 -1
- package/dist/util/tokenStore/model/token.js.map +0 -1
- package/dist/util/tokenStore/mongodbTokenStory.js.map +0 -1
- package/dist/util/tokenStore/redisTokenStory.js.map +0 -1
package/dist/routes/index.js
CHANGED
|
@@ -14,21 +14,22 @@
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
var _express = require("express");
|
|
17
|
-
var
|
|
17
|
+
var _multer = _interopRequireDefault(require("multer"));
|
|
18
|
+
var _swaggerUiExpress = _interopRequireDefault(require("swagger-ui-express"));
|
|
19
|
+
|
|
20
|
+
var _upload = _interopRequireDefault(require("../config/upload"));
|
|
18
21
|
var CatalogController = _interopRequireWildcard(require("../controller/catalogController"));
|
|
19
|
-
var MessageController = _interopRequireWildcard(require("../controller/messageController"));
|
|
20
|
-
var StatusController = _interopRequireWildcard(require("../controller/statusController"));
|
|
21
|
-
var LabelsController = _interopRequireWildcard(require("../controller/labelsController"));
|
|
22
|
-
var GroupController = _interopRequireWildcard(require("../controller/groupController"));
|
|
23
22
|
var DeviceController = _interopRequireWildcard(require("../controller/deviceController"));
|
|
24
|
-
var
|
|
23
|
+
var _encryptController = require("../controller/encryptController");
|
|
24
|
+
var GroupController = _interopRequireWildcard(require("../controller/groupController"));
|
|
25
|
+
var LabelsController = _interopRequireWildcard(require("../controller/labelsController"));
|
|
26
|
+
var MessageController = _interopRequireWildcard(require("../controller/messageController"));
|
|
25
27
|
var OrderController = _interopRequireWildcard(require("../controller/orderController"));
|
|
26
|
-
var
|
|
28
|
+
var SessionController = _interopRequireWildcard(require("../controller/sessionController"));
|
|
29
|
+
var StatusController = _interopRequireWildcard(require("../controller/statusController"));
|
|
27
30
|
var _auth = _interopRequireDefault(require("../middleware/auth"));
|
|
31
|
+
var HealthCheck = _interopRequireWildcard(require("../middleware/healthCheck"));
|
|
28
32
|
var _statusConnection = _interopRequireDefault(require("../middleware/statusConnection"));
|
|
29
|
-
var _multer = _interopRequireDefault(require("multer"));
|
|
30
|
-
var _upload = _interopRequireDefault(require("../config/upload"));
|
|
31
|
-
var _swaggerUiExpress = _interopRequireDefault(require("swagger-ui-express"));
|
|
32
33
|
var _swagger = _interopRequireDefault(require("../swagger.json"));function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function (nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}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;} /*
|
|
33
34
|
* Copyright 2021 WPPConnect Team
|
|
34
35
|
*
|
|
@@ -43,19 +44,63 @@ var _swagger = _interopRequireDefault(require("../swagger.json"));function _getR
|
|
|
43
44
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
44
45
|
* See the License for the specific language governing permissions and
|
|
45
46
|
* limitations under the License.
|
|
46
|
-
*/const upload = (0, _multer.default)(_upload.default);const routes =
|
|
47
|
+
*/const upload = (0, _multer.default)(_upload.default);const routes = (0, _express.Router)(); // Generate Token
|
|
47
48
|
routes.post('/api/:session/:secretkey/generate-token', _encryptController.encryptSession); // All Sessions
|
|
48
49
|
routes.get('/api/:secretkey/show-all-sessions', SessionController.showAllSessions);routes.post('/api/:secretkey/start-all', SessionController.startAllSessions); // Sessions
|
|
49
|
-
routes.get('/api/:session/check-connection-session',
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
routes.
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
routes.get('/api/:session/check-connection-session',
|
|
51
|
+
_auth.default,
|
|
52
|
+
SessionController.checkConnectionSession);
|
|
53
|
+
|
|
54
|
+
routes.get(
|
|
55
|
+
'/api/:session/get-media-by-message/:messageId',
|
|
56
|
+
_auth.default,
|
|
57
|
+
SessionController.getMediaByMessage);
|
|
58
|
+
|
|
59
|
+
routes.get(
|
|
60
|
+
'/api/:session/status-session',
|
|
61
|
+
_auth.default,
|
|
62
|
+
SessionController.getSessionState);
|
|
63
|
+
|
|
64
|
+
routes.get(
|
|
65
|
+
'/api/:session/qrcode-session',
|
|
66
|
+
_auth.default,
|
|
67
|
+
SessionController.getQrCode);
|
|
68
|
+
|
|
69
|
+
routes.post(
|
|
70
|
+
'/api/:session/start-session',
|
|
71
|
+
_auth.default,
|
|
72
|
+
SessionController.startSession);
|
|
73
|
+
|
|
74
|
+
routes.post(
|
|
75
|
+
'/api/:session/logout-session',
|
|
76
|
+
_auth.default,
|
|
77
|
+
_statusConnection.default,
|
|
78
|
+
SessionController.logOutSession);
|
|
79
|
+
|
|
80
|
+
routes.post(
|
|
81
|
+
'/api/:session/close-session',
|
|
82
|
+
_auth.default,
|
|
83
|
+
SessionController.closeSession);
|
|
84
|
+
|
|
85
|
+
routes.post(
|
|
86
|
+
'/api/:session/subscribe-presence',
|
|
87
|
+
_auth.default,
|
|
88
|
+
SessionController.subscribePresence);
|
|
89
|
+
|
|
90
|
+
routes.post(
|
|
91
|
+
'/api/:session/download-media',
|
|
92
|
+
_auth.default,
|
|
93
|
+
_statusConnection.default,
|
|
94
|
+
SessionController.downloadMediaByMessage);
|
|
95
|
+
|
|
56
96
|
|
|
57
97
|
// Messages
|
|
58
|
-
routes.post(
|
|
98
|
+
routes.post(
|
|
99
|
+
'/api/:session/send-message',
|
|
100
|
+
_auth.default,
|
|
101
|
+
_statusConnection.default,
|
|
102
|
+
MessageController.sendMessage);
|
|
103
|
+
|
|
59
104
|
routes.post(
|
|
60
105
|
'/api/:session/send-image',
|
|
61
106
|
upload.single('file'),
|
|
@@ -77,7 +122,12 @@ _auth.default,
|
|
|
77
122
|
_statusConnection.default,
|
|
78
123
|
MessageController.sendImageAsStickerGif);
|
|
79
124
|
|
|
80
|
-
routes.post(
|
|
125
|
+
routes.post(
|
|
126
|
+
'/api/:session/send-reply',
|
|
127
|
+
_auth.default,
|
|
128
|
+
_statusConnection.default,
|
|
129
|
+
MessageController.replyMessage);
|
|
130
|
+
|
|
81
131
|
routes.post(
|
|
82
132
|
'/api/:session/send-file',
|
|
83
133
|
upload.single('file'),
|
|
@@ -85,22 +135,92 @@ _auth.default,
|
|
|
85
135
|
_statusConnection.default,
|
|
86
136
|
MessageController.sendFile);
|
|
87
137
|
|
|
88
|
-
routes.post(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
routes.post(
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
138
|
+
routes.post(
|
|
139
|
+
'/api/:session/send-file-base64',
|
|
140
|
+
_auth.default,
|
|
141
|
+
_statusConnection.default,
|
|
142
|
+
MessageController.sendFile);
|
|
143
|
+
|
|
144
|
+
routes.post(
|
|
145
|
+
'/api/:session/send-voice',
|
|
146
|
+
_auth.default,
|
|
147
|
+
_statusConnection.default,
|
|
148
|
+
MessageController.sendVoice);
|
|
149
|
+
|
|
150
|
+
routes.post(
|
|
151
|
+
'/api/:session/send-voice-base64',
|
|
152
|
+
_auth.default,
|
|
153
|
+
_statusConnection.default,
|
|
154
|
+
MessageController.sendVoice64);
|
|
155
|
+
|
|
156
|
+
routes.post(
|
|
157
|
+
'/api/:session/send-status',
|
|
158
|
+
_auth.default,
|
|
159
|
+
_statusConnection.default,
|
|
160
|
+
MessageController.sendStatusText);
|
|
161
|
+
|
|
162
|
+
routes.post(
|
|
163
|
+
'/api/:session/send-link-preview',
|
|
164
|
+
_auth.default,
|
|
165
|
+
_statusConnection.default,
|
|
166
|
+
MessageController.sendLinkPreview);
|
|
167
|
+
|
|
168
|
+
routes.post(
|
|
169
|
+
'/api/:session/send-location',
|
|
170
|
+
_auth.default,
|
|
171
|
+
_statusConnection.default,
|
|
172
|
+
MessageController.sendLocation);
|
|
173
|
+
|
|
174
|
+
routes.post(
|
|
175
|
+
'/api/:session/send-mentioned',
|
|
176
|
+
_auth.default,
|
|
177
|
+
_statusConnection.default,
|
|
178
|
+
MessageController.sendMentioned);
|
|
179
|
+
|
|
180
|
+
routes.post(
|
|
181
|
+
'/api/:session/send-buttons',
|
|
182
|
+
_auth.default,
|
|
183
|
+
_statusConnection.default,
|
|
184
|
+
MessageController.sendButtons);
|
|
185
|
+
|
|
186
|
+
routes.post(
|
|
187
|
+
'/api/:session/send-list-message',
|
|
188
|
+
_auth.default,
|
|
189
|
+
_statusConnection.default,
|
|
190
|
+
MessageController.sendListMessage);
|
|
191
|
+
|
|
192
|
+
routes.post(
|
|
193
|
+
'/api/:session/send-poll-message',
|
|
194
|
+
_auth.default,
|
|
195
|
+
_statusConnection.default,
|
|
196
|
+
MessageController.sendPollMessage);
|
|
197
|
+
|
|
98
198
|
|
|
99
199
|
// Group
|
|
100
|
-
routes.get(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
200
|
+
routes.get(
|
|
201
|
+
'/api/:session/all-broadcast-list',
|
|
202
|
+
_auth.default,
|
|
203
|
+
_statusConnection.default,
|
|
204
|
+
GroupController.getAllBroadcastList);
|
|
205
|
+
|
|
206
|
+
routes.get(
|
|
207
|
+
'/api/:session/all-groups',
|
|
208
|
+
_auth.default,
|
|
209
|
+
_statusConnection.default,
|
|
210
|
+
GroupController.getAllGroups);
|
|
211
|
+
|
|
212
|
+
routes.get(
|
|
213
|
+
'/api/:session/group-members/:groupId',
|
|
214
|
+
_auth.default,
|
|
215
|
+
_statusConnection.default,
|
|
216
|
+
GroupController.getGroupMembers);
|
|
217
|
+
|
|
218
|
+
routes.get(
|
|
219
|
+
'/api/:session/group-admins/:groupId',
|
|
220
|
+
_auth.default,
|
|
221
|
+
_statusConnection.default,
|
|
222
|
+
GroupController.getGroupAdmins);
|
|
223
|
+
|
|
104
224
|
routes.get(
|
|
105
225
|
'/api/:session/group-invite-link/:groupId',
|
|
106
226
|
_auth.default,
|
|
@@ -119,28 +239,78 @@ _auth.default,
|
|
|
119
239
|
_statusConnection.default,
|
|
120
240
|
GroupController.getGroupMembersIds);
|
|
121
241
|
|
|
122
|
-
routes.post(
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
242
|
+
routes.post(
|
|
243
|
+
'/api/:session/create-group',
|
|
244
|
+
_auth.default,
|
|
245
|
+
_statusConnection.default,
|
|
246
|
+
GroupController.createGroup);
|
|
247
|
+
|
|
248
|
+
routes.post(
|
|
249
|
+
'/api/:session/leave-group',
|
|
250
|
+
_auth.default,
|
|
251
|
+
_statusConnection.default,
|
|
252
|
+
GroupController.leaveGroup);
|
|
253
|
+
|
|
254
|
+
routes.post(
|
|
255
|
+
'/api/:session/join-code',
|
|
256
|
+
_auth.default,
|
|
257
|
+
_statusConnection.default,
|
|
258
|
+
GroupController.joinGroupByCode);
|
|
259
|
+
|
|
260
|
+
routes.post(
|
|
261
|
+
'/api/:session/add-participant-group',
|
|
262
|
+
_auth.default,
|
|
263
|
+
_statusConnection.default,
|
|
264
|
+
GroupController.addParticipant);
|
|
265
|
+
|
|
266
|
+
routes.post(
|
|
267
|
+
'/api/:session/remove-participant-group',
|
|
268
|
+
_auth.default,
|
|
269
|
+
_statusConnection.default,
|
|
270
|
+
GroupController.removeParticipant);
|
|
271
|
+
|
|
127
272
|
routes.post(
|
|
128
273
|
'/api/:session/promote-participant-group',
|
|
129
274
|
_auth.default,
|
|
130
275
|
_statusConnection.default,
|
|
131
276
|
GroupController.promoteParticipant);
|
|
132
277
|
|
|
133
|
-
routes.post(
|
|
278
|
+
routes.post(
|
|
279
|
+
'/api/:session/demote-participant-group',
|
|
280
|
+
_auth.default,
|
|
281
|
+
_statusConnection.default,
|
|
282
|
+
GroupController.demoteParticipant);
|
|
283
|
+
|
|
134
284
|
routes.post(
|
|
135
285
|
'/api/:session/group-info-from-invite-link',
|
|
136
286
|
_auth.default,
|
|
137
287
|
_statusConnection.default,
|
|
138
288
|
GroupController.getGroupInfoFromInviteLink);
|
|
139
289
|
|
|
140
|
-
routes.post(
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
290
|
+
routes.post(
|
|
291
|
+
'/api/:session/group-description',
|
|
292
|
+
_auth.default,
|
|
293
|
+
_statusConnection.default,
|
|
294
|
+
GroupController.setGroupDescription);
|
|
295
|
+
|
|
296
|
+
routes.post(
|
|
297
|
+
'/api/:session/group-property',
|
|
298
|
+
_auth.default,
|
|
299
|
+
_statusConnection.default,
|
|
300
|
+
GroupController.setGroupProperty);
|
|
301
|
+
|
|
302
|
+
routes.post(
|
|
303
|
+
'/api/:session/group-subject',
|
|
304
|
+
_auth.default,
|
|
305
|
+
_statusConnection.default,
|
|
306
|
+
GroupController.setGroupSubject);
|
|
307
|
+
|
|
308
|
+
routes.post(
|
|
309
|
+
'/api/:session/messages-admins-only',
|
|
310
|
+
_auth.default,
|
|
311
|
+
_statusConnection.default,
|
|
312
|
+
GroupController.setMessagesAdminsOnly);
|
|
313
|
+
|
|
144
314
|
routes.post(
|
|
145
315
|
'/api/:session/group-pic',
|
|
146
316
|
upload.single('file'),
|
|
@@ -148,10 +318,20 @@ _auth.default,
|
|
|
148
318
|
_statusConnection.default,
|
|
149
319
|
GroupController.setGroupProfilePic);
|
|
150
320
|
|
|
151
|
-
routes.post(
|
|
321
|
+
routes.post(
|
|
322
|
+
'/api/:session/change-privacy-group',
|
|
323
|
+
_auth.default,
|
|
324
|
+
_statusConnection.default,
|
|
325
|
+
GroupController.changePrivacyGroup);
|
|
326
|
+
|
|
152
327
|
|
|
153
328
|
// Chat
|
|
154
|
-
routes.get(
|
|
329
|
+
routes.get(
|
|
330
|
+
'/api/:session/all-chats',
|
|
331
|
+
_auth.default,
|
|
332
|
+
_statusConnection.default,
|
|
333
|
+
DeviceController.getAllChats);
|
|
334
|
+
|
|
155
335
|
routes.get(
|
|
156
336
|
'/api/:session/all-chats-with-messages',
|
|
157
337
|
_auth.default,
|
|
@@ -164,69 +344,299 @@ _auth.default,
|
|
|
164
344
|
_statusConnection.default,
|
|
165
345
|
DeviceController.getAllMessagesInChat);
|
|
166
346
|
|
|
167
|
-
routes.get(
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
routes.get(
|
|
174
|
-
|
|
347
|
+
routes.get(
|
|
348
|
+
'/api/:session/all-new-messages',
|
|
349
|
+
_auth.default,
|
|
350
|
+
_statusConnection.default,
|
|
351
|
+
DeviceController.getAllNewMessages);
|
|
352
|
+
|
|
353
|
+
routes.get(
|
|
354
|
+
'/api/:session/unread-messages',
|
|
355
|
+
_auth.default,
|
|
356
|
+
_statusConnection.default,
|
|
357
|
+
DeviceController.getUnreadMessages);
|
|
358
|
+
|
|
359
|
+
routes.get(
|
|
360
|
+
'/api/:session/all-unread-messages',
|
|
361
|
+
_auth.default,
|
|
362
|
+
_statusConnection.default,
|
|
363
|
+
DeviceController.getAllUnreadMessages);
|
|
364
|
+
|
|
365
|
+
routes.get(
|
|
366
|
+
'/api/:session/chat-by-id/:phone',
|
|
367
|
+
_auth.default,
|
|
368
|
+
_statusConnection.default,
|
|
369
|
+
DeviceController.getChatById);
|
|
370
|
+
|
|
371
|
+
routes.get(
|
|
372
|
+
'/api/:session/message-by-id/:messageId',
|
|
373
|
+
_auth.default,
|
|
374
|
+
_statusConnection.default,
|
|
375
|
+
DeviceController.getMessageById);
|
|
376
|
+
|
|
377
|
+
routes.get(
|
|
378
|
+
'/api/:session/chat-is-online/:phone',
|
|
379
|
+
_auth.default,
|
|
380
|
+
_statusConnection.default,
|
|
381
|
+
DeviceController.getChatIsOnline);
|
|
382
|
+
|
|
383
|
+
routes.get(
|
|
384
|
+
'/api/:session/last-seen/:phone',
|
|
385
|
+
_auth.default,
|
|
386
|
+
_statusConnection.default,
|
|
387
|
+
DeviceController.getLastSeen);
|
|
388
|
+
|
|
389
|
+
routes.get(
|
|
390
|
+
'/api/:session/list-mutes/:type',
|
|
391
|
+
_auth.default,
|
|
392
|
+
_statusConnection.default,
|
|
393
|
+
DeviceController.getListMutes);
|
|
394
|
+
|
|
175
395
|
routes.get(
|
|
176
396
|
'/api/:session/load-messages-in-chat/:phone',
|
|
177
397
|
_auth.default,
|
|
178
398
|
_statusConnection.default,
|
|
179
399
|
DeviceController.loadAndGetAllMessagesInChat);
|
|
180
400
|
|
|
181
|
-
routes.get(
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
routes.post(
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
routes.post(
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
routes.post(
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
401
|
+
routes.get(
|
|
402
|
+
'/api/:session/get-messages/:phone',
|
|
403
|
+
_auth.default,
|
|
404
|
+
_statusConnection.default,
|
|
405
|
+
DeviceController.getMessages);
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
routes.post(
|
|
409
|
+
'/api/:session/archive-chat',
|
|
410
|
+
_auth.default,
|
|
411
|
+
_statusConnection.default,
|
|
412
|
+
DeviceController.archiveChat);
|
|
413
|
+
|
|
414
|
+
routes.post(
|
|
415
|
+
'/api/:session/archive-all-chats',
|
|
416
|
+
_auth.default,
|
|
417
|
+
_statusConnection.default,
|
|
418
|
+
DeviceController.archiveAllChats);
|
|
419
|
+
|
|
420
|
+
routes.post(
|
|
421
|
+
'/api/:session/clear-chat',
|
|
422
|
+
_auth.default,
|
|
423
|
+
_statusConnection.default,
|
|
424
|
+
DeviceController.clearChat);
|
|
425
|
+
|
|
426
|
+
routes.post(
|
|
427
|
+
'/api/:session/clear-all-chats',
|
|
428
|
+
_auth.default,
|
|
429
|
+
_statusConnection.default,
|
|
430
|
+
DeviceController.clearAllChats);
|
|
431
|
+
|
|
432
|
+
routes.post(
|
|
433
|
+
'/api/:session/delete-chat',
|
|
434
|
+
_auth.default,
|
|
435
|
+
_statusConnection.default,
|
|
436
|
+
DeviceController.deleteChat);
|
|
437
|
+
|
|
438
|
+
routes.post(
|
|
439
|
+
'/api/:session/delete-all-chats',
|
|
440
|
+
_auth.default,
|
|
441
|
+
_statusConnection.default,
|
|
442
|
+
DeviceController.deleteAllChats);
|
|
443
|
+
|
|
444
|
+
routes.post(
|
|
445
|
+
'/api/:session/delete-message',
|
|
446
|
+
_auth.default,
|
|
447
|
+
_statusConnection.default,
|
|
448
|
+
DeviceController.deleteMessage);
|
|
449
|
+
|
|
450
|
+
routes.post(
|
|
451
|
+
'/api/:session/react-message',
|
|
452
|
+
_auth.default,
|
|
453
|
+
_statusConnection.default,
|
|
454
|
+
DeviceController.reactMessage);
|
|
455
|
+
|
|
456
|
+
routes.post(
|
|
457
|
+
'/api/:session/forward-messages',
|
|
458
|
+
_auth.default,
|
|
459
|
+
_statusConnection.default,
|
|
460
|
+
DeviceController.forwardMessages);
|
|
461
|
+
|
|
462
|
+
routes.post(
|
|
463
|
+
'/api/:session/mark-unseen',
|
|
464
|
+
_auth.default,
|
|
465
|
+
_statusConnection.default,
|
|
466
|
+
DeviceController.markUnseenMessage);
|
|
467
|
+
|
|
468
|
+
routes.post(
|
|
469
|
+
'/api/:session/pin-chat',
|
|
470
|
+
_auth.default,
|
|
471
|
+
_statusConnection.default,
|
|
472
|
+
DeviceController.pinChat);
|
|
473
|
+
|
|
474
|
+
routes.post(
|
|
475
|
+
'/api/:session/contact-vcard',
|
|
476
|
+
_auth.default,
|
|
477
|
+
_statusConnection.default,
|
|
478
|
+
DeviceController.sendContactVcard);
|
|
479
|
+
|
|
480
|
+
routes.post(
|
|
481
|
+
'/api/:session/send-mute',
|
|
482
|
+
_auth.default,
|
|
483
|
+
_statusConnection.default,
|
|
484
|
+
DeviceController.sendMute);
|
|
485
|
+
|
|
486
|
+
routes.post(
|
|
487
|
+
'/api/:session/send-seen',
|
|
488
|
+
_auth.default,
|
|
489
|
+
_statusConnection.default,
|
|
490
|
+
DeviceController.sendSeen);
|
|
491
|
+
|
|
492
|
+
routes.post(
|
|
493
|
+
'/api/:session/chat-state',
|
|
494
|
+
_auth.default,
|
|
495
|
+
_statusConnection.default,
|
|
496
|
+
DeviceController.setChatState);
|
|
497
|
+
|
|
498
|
+
routes.post(
|
|
499
|
+
'/api/:session/temporary-messages',
|
|
500
|
+
_auth.default,
|
|
501
|
+
_statusConnection.default,
|
|
502
|
+
DeviceController.setTemporaryMessages);
|
|
503
|
+
|
|
504
|
+
routes.post(
|
|
505
|
+
'/api/:session/typing',
|
|
506
|
+
_auth.default,
|
|
507
|
+
_statusConnection.default,
|
|
508
|
+
DeviceController.setTyping);
|
|
509
|
+
|
|
510
|
+
routes.post(
|
|
511
|
+
'/api/:session/recording',
|
|
512
|
+
_auth.default,
|
|
513
|
+
_statusConnection.default,
|
|
514
|
+
DeviceController.setRecording);
|
|
515
|
+
|
|
516
|
+
routes.post(
|
|
517
|
+
'/api/:session/star-message',
|
|
518
|
+
_auth.default,
|
|
519
|
+
_statusConnection.default,
|
|
520
|
+
DeviceController.starMessage);
|
|
521
|
+
|
|
522
|
+
routes.get(
|
|
523
|
+
'/api/:session/reactions/:id',
|
|
524
|
+
_auth.default,
|
|
525
|
+
_statusConnection.default,
|
|
526
|
+
DeviceController.getReactions);
|
|
527
|
+
|
|
528
|
+
routes.get(
|
|
529
|
+
'/api/:session/votes/:id',
|
|
530
|
+
_auth.default,
|
|
531
|
+
_statusConnection.default,
|
|
532
|
+
DeviceController.getVotes);
|
|
533
|
+
|
|
534
|
+
routes.post(
|
|
535
|
+
'/api/:session/reject-call',
|
|
536
|
+
_auth.default,
|
|
537
|
+
_statusConnection.default,
|
|
538
|
+
DeviceController.rejectCall);
|
|
539
|
+
|
|
205
540
|
|
|
206
541
|
// Catalog
|
|
207
|
-
routes.get(
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
routes.
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
routes.post(
|
|
542
|
+
routes.get(
|
|
543
|
+
'/api/:session/get-products',
|
|
544
|
+
_auth.default,
|
|
545
|
+
_statusConnection.default,
|
|
546
|
+
CatalogController.getProducts);
|
|
547
|
+
|
|
548
|
+
routes.get(
|
|
549
|
+
'/api/:session/get-product-by-id',
|
|
550
|
+
_auth.default,
|
|
551
|
+
_statusConnection.default,
|
|
552
|
+
CatalogController.getProductById);
|
|
553
|
+
|
|
554
|
+
routes.post(
|
|
555
|
+
'/api/:session/add-product',
|
|
556
|
+
_auth.default,
|
|
557
|
+
_statusConnection.default,
|
|
558
|
+
CatalogController.addProduct);
|
|
559
|
+
|
|
560
|
+
routes.post(
|
|
561
|
+
'/api/:session/edit-product',
|
|
562
|
+
_auth.default,
|
|
563
|
+
_statusConnection.default,
|
|
564
|
+
CatalogController.editProduct);
|
|
565
|
+
|
|
566
|
+
routes.post(
|
|
567
|
+
'/api/:session/del-products',
|
|
568
|
+
_auth.default,
|
|
569
|
+
_statusConnection.default,
|
|
570
|
+
CatalogController.delProducts);
|
|
571
|
+
|
|
572
|
+
routes.post(
|
|
573
|
+
'/api/:session/change-product-image',
|
|
574
|
+
_auth.default,
|
|
575
|
+
_statusConnection.default,
|
|
576
|
+
CatalogController.changeProductImage);
|
|
577
|
+
|
|
578
|
+
routes.post(
|
|
579
|
+
'/api/:session/add-product-image',
|
|
580
|
+
_auth.default,
|
|
581
|
+
_statusConnection.default,
|
|
582
|
+
CatalogController.addProductImage);
|
|
583
|
+
|
|
584
|
+
routes.post(
|
|
585
|
+
'/api/:session/remove-product-image',
|
|
586
|
+
_auth.default,
|
|
587
|
+
_statusConnection.default,
|
|
588
|
+
CatalogController.removeProductImage);
|
|
589
|
+
|
|
590
|
+
routes.get(
|
|
591
|
+
'/api/:session/get-collections',
|
|
592
|
+
_auth.default,
|
|
593
|
+
_statusConnection.default,
|
|
594
|
+
CatalogController.getCollections);
|
|
595
|
+
|
|
596
|
+
routes.post(
|
|
597
|
+
'/api/:session/create-collection',
|
|
598
|
+
_auth.default,
|
|
599
|
+
_statusConnection.default,
|
|
600
|
+
CatalogController.createCollection);
|
|
601
|
+
|
|
602
|
+
routes.post(
|
|
603
|
+
'/api/:session/edit-collection',
|
|
604
|
+
_auth.default,
|
|
605
|
+
_statusConnection.default,
|
|
606
|
+
CatalogController.editCollection);
|
|
607
|
+
|
|
608
|
+
routes.post(
|
|
609
|
+
'/api/:session/del-collection',
|
|
610
|
+
_auth.default,
|
|
611
|
+
_statusConnection.default,
|
|
612
|
+
CatalogController.deleteCollection);
|
|
613
|
+
|
|
614
|
+
routes.post(
|
|
615
|
+
'/api/:session/send-link-catalog',
|
|
616
|
+
_auth.default,
|
|
617
|
+
_statusConnection.default,
|
|
618
|
+
CatalogController.sendLinkCatalog);
|
|
619
|
+
|
|
220
620
|
routes.post(
|
|
221
621
|
'/api/:session/set-product-visibility',
|
|
222
622
|
_auth.default,
|
|
223
623
|
_statusConnection.default,
|
|
224
624
|
CatalogController.setProductVisibility);
|
|
225
625
|
|
|
226
|
-
routes.post(
|
|
626
|
+
routes.post(
|
|
627
|
+
'/api/:session/set-cart-enabled',
|
|
628
|
+
_auth.default,
|
|
629
|
+
_statusConnection.default,
|
|
630
|
+
CatalogController.updateCartEnabled);
|
|
631
|
+
|
|
227
632
|
|
|
228
633
|
// Status
|
|
229
|
-
routes.post(
|
|
634
|
+
routes.post(
|
|
635
|
+
'/api/:session/send-text-storie',
|
|
636
|
+
_auth.default,
|
|
637
|
+
_statusConnection.default,
|
|
638
|
+
StatusController.sendTextStorie);
|
|
639
|
+
|
|
230
640
|
routes.post(
|
|
231
641
|
'/api/:session/send-image-storie',
|
|
232
642
|
upload.single('file'),
|
|
@@ -243,11 +653,36 @@ StatusController.sendVideoStorie);
|
|
|
243
653
|
|
|
244
654
|
|
|
245
655
|
// Labels
|
|
246
|
-
routes.post(
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
656
|
+
routes.post(
|
|
657
|
+
'/api/:session/add-new-label',
|
|
658
|
+
_auth.default,
|
|
659
|
+
_statusConnection.default,
|
|
660
|
+
LabelsController.addNewLabel);
|
|
661
|
+
|
|
662
|
+
routes.post(
|
|
663
|
+
'/api/:session/add-or-remove-label',
|
|
664
|
+
_auth.default,
|
|
665
|
+
_statusConnection.default,
|
|
666
|
+
LabelsController.addOrRemoveLabels);
|
|
667
|
+
|
|
668
|
+
routes.get(
|
|
669
|
+
'/api/:session/get-all-labels',
|
|
670
|
+
_auth.default,
|
|
671
|
+
_statusConnection.default,
|
|
672
|
+
LabelsController.getAllLabels);
|
|
673
|
+
|
|
674
|
+
routes.put(
|
|
675
|
+
'/api/:session/delete-all-labels',
|
|
676
|
+
_auth.default,
|
|
677
|
+
_statusConnection.default,
|
|
678
|
+
LabelsController.deleteAllLabels);
|
|
679
|
+
|
|
680
|
+
routes.put(
|
|
681
|
+
'/api/:session/delete-label/:id',
|
|
682
|
+
_auth.default,
|
|
683
|
+
_statusConnection.default,
|
|
684
|
+
LabelsController.deleteLabel);
|
|
685
|
+
|
|
251
686
|
|
|
252
687
|
// Contact
|
|
253
688
|
routes.get(
|
|
@@ -256,21 +691,76 @@ _auth.default,
|
|
|
256
691
|
_statusConnection.default,
|
|
257
692
|
DeviceController.checkNumberStatus);
|
|
258
693
|
|
|
259
|
-
routes.get(
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
694
|
+
routes.get(
|
|
695
|
+
'/api/:session/all-contacts',
|
|
696
|
+
_auth.default,
|
|
697
|
+
_statusConnection.default,
|
|
698
|
+
DeviceController.getAllContacts);
|
|
699
|
+
|
|
700
|
+
routes.get(
|
|
701
|
+
'/api/:session/contact/:phone',
|
|
702
|
+
_auth.default,
|
|
703
|
+
_statusConnection.default,
|
|
704
|
+
DeviceController.getContact);
|
|
705
|
+
|
|
706
|
+
routes.get(
|
|
707
|
+
'/api/:session/profile/:phone',
|
|
708
|
+
_auth.default,
|
|
709
|
+
_statusConnection.default,
|
|
710
|
+
DeviceController.getNumberProfile);
|
|
711
|
+
|
|
712
|
+
routes.get(
|
|
713
|
+
'/api/:session/profile-pic/:phone',
|
|
714
|
+
_auth.default,
|
|
715
|
+
_statusConnection.default,
|
|
716
|
+
DeviceController.getProfilePicFromServer);
|
|
717
|
+
|
|
718
|
+
routes.get(
|
|
719
|
+
'/api/:session/profile-status/:phone',
|
|
720
|
+
_auth.default,
|
|
721
|
+
_statusConnection.default,
|
|
722
|
+
DeviceController.getStatus);
|
|
723
|
+
|
|
264
724
|
|
|
265
725
|
// Blocklist
|
|
266
|
-
routes.get(
|
|
267
|
-
|
|
268
|
-
|
|
726
|
+
routes.get(
|
|
727
|
+
'/api/:session/blocklist',
|
|
728
|
+
_auth.default,
|
|
729
|
+
_statusConnection.default,
|
|
730
|
+
DeviceController.getBlockList);
|
|
731
|
+
|
|
732
|
+
routes.post(
|
|
733
|
+
'/api/:session/block-contact',
|
|
734
|
+
_auth.default,
|
|
735
|
+
_statusConnection.default,
|
|
736
|
+
DeviceController.blockContact);
|
|
737
|
+
|
|
738
|
+
routes.post(
|
|
739
|
+
'/api/:session/unblock-contact',
|
|
740
|
+
_auth.default,
|
|
741
|
+
_statusConnection.default,
|
|
742
|
+
DeviceController.unblockContact);
|
|
743
|
+
|
|
269
744
|
|
|
270
745
|
// Device
|
|
271
|
-
routes.get(
|
|
272
|
-
|
|
273
|
-
|
|
746
|
+
routes.get(
|
|
747
|
+
'/api/:session/get-battery-level',
|
|
748
|
+
_auth.default,
|
|
749
|
+
_statusConnection.default,
|
|
750
|
+
DeviceController.getBatteryLevel);
|
|
751
|
+
|
|
752
|
+
routes.get(
|
|
753
|
+
'/api/:session/host-device',
|
|
754
|
+
_auth.default,
|
|
755
|
+
_statusConnection.default,
|
|
756
|
+
DeviceController.getHostDevice);
|
|
757
|
+
|
|
758
|
+
routes.get(
|
|
759
|
+
'/api/:session/get-phone-number',
|
|
760
|
+
_auth.default,
|
|
761
|
+
_statusConnection.default,
|
|
762
|
+
DeviceController.getPhoneNumber);
|
|
763
|
+
|
|
274
764
|
|
|
275
765
|
// Profile
|
|
276
766
|
routes.post(
|
|
@@ -280,8 +770,18 @@ _auth.default,
|
|
|
280
770
|
_statusConnection.default,
|
|
281
771
|
DeviceController.setProfilePic);
|
|
282
772
|
|
|
283
|
-
routes.post(
|
|
284
|
-
|
|
773
|
+
routes.post(
|
|
774
|
+
'/api/:session/profile-status',
|
|
775
|
+
_auth.default,
|
|
776
|
+
_statusConnection.default,
|
|
777
|
+
DeviceController.setProfileStatus);
|
|
778
|
+
|
|
779
|
+
routes.post(
|
|
780
|
+
'/api/:session/change-username',
|
|
781
|
+
_auth.default,
|
|
782
|
+
_statusConnection.default,
|
|
783
|
+
DeviceController.setProfileName);
|
|
784
|
+
|
|
285
785
|
|
|
286
786
|
// Business
|
|
287
787
|
routes.get(
|
|
@@ -290,7 +790,12 @@ _auth.default,
|
|
|
290
790
|
_statusConnection.default,
|
|
291
791
|
OrderController.getBusinessProfilesProducts);
|
|
292
792
|
|
|
293
|
-
routes.get(
|
|
793
|
+
routes.get(
|
|
794
|
+
'/api/:session/get-order-by-messageId',
|
|
795
|
+
_auth.default,
|
|
796
|
+
_statusConnection.default,
|
|
797
|
+
OrderController.getOrderbyMsg);
|
|
798
|
+
|
|
294
799
|
|
|
295
800
|
routes.post('/api/:session/chatwoot', DeviceController.chatWoot);
|
|
296
801
|
|
|
@@ -303,4 +808,4 @@ routes.get('/healthz', HealthCheck.healthz);
|
|
|
303
808
|
routes.get('/unhealthy', HealthCheck.unhealthy);var _default =
|
|
304
809
|
|
|
305
810
|
routes;exports.default = _default;
|
|
306
|
-
//# sourceMappingURL=index.js.map
|
|
811
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXhwcmVzcyIsInJlcXVpcmUiLCJfbXVsdGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9zd2FnZ2VyVWlFeHByZXNzIiwiX3VwbG9hZCIsIkNhdGFsb2dDb250cm9sbGVyIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJEZXZpY2VDb250cm9sbGVyIiwiX2VuY3J5cHRDb250cm9sbGVyIiwiR3JvdXBDb250cm9sbGVyIiwiTGFiZWxzQ29udHJvbGxlciIsIk1lc3NhZ2VDb250cm9sbGVyIiwiT3JkZXJDb250cm9sbGVyIiwiU2Vzc2lvbkNvbnRyb2xsZXIiLCJTdGF0dXNDb250cm9sbGVyIiwiX2F1dGgiLCJIZWFsdGhDaGVjayIsIl9zdGF0dXNDb25uZWN0aW9uIiwiX3N3YWdnZXIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwidXBsb2FkIiwibXVsdGVyIiwidXBsb2FkQ29uZmlnIiwicm91dGVzIiwiUm91dGVyIiwicG9zdCIsImVuY3J5cHRTZXNzaW9uIiwic2hvd0FsbFNlc3Npb25zIiwic3RhcnRBbGxTZXNzaW9ucyIsInZlcmlmeVRva2VuIiwiY2hlY2tDb25uZWN0aW9uU2Vzc2lvbiIsImdldE1lZGlhQnlNZXNzYWdlIiwiZ2V0U2Vzc2lvblN0YXRlIiwiZ2V0UXJDb2RlIiwic3RhcnRTZXNzaW9uIiwic3RhdHVzQ29ubmVjdGlvbiIsImxvZ091dFNlc3Npb24iLCJjbG9zZVNlc3Npb24iLCJzdWJzY3JpYmVQcmVzZW5jZSIsImRvd25sb2FkTWVkaWFCeU1lc3NhZ2UiLCJzZW5kTWVzc2FnZSIsInNpbmdsZSIsInNlbmRGaWxlIiwic2VuZEltYWdlQXNTdGlja2VyIiwic2VuZEltYWdlQXNTdGlja2VyR2lmIiwicmVwbHlNZXNzYWdlIiwic2VuZFZvaWNlIiwic2VuZFZvaWNlNjQiLCJzZW5kU3RhdHVzVGV4dCIsInNlbmRMaW5rUHJldmlldyIsInNlbmRMb2NhdGlvbiIsInNlbmRNZW50aW9uZWQiLCJzZW5kQnV0dG9ucyIsInNlbmRMaXN0TWVzc2FnZSIsInNlbmRQb2xsTWVzc2FnZSIsImdldEFsbEJyb2FkY2FzdExpc3QiLCJnZXRBbGxHcm91cHMiLCJnZXRHcm91cE1lbWJlcnMiLCJnZXRHcm91cEFkbWlucyIsImdldEdyb3VwSW52aXRlTGluayIsInJldm9rZUdyb3VwSW52aXRlTGluayIsImdldEdyb3VwTWVtYmVyc0lkcyIsImNyZWF0ZUdyb3VwIiwibGVhdmVHcm91cCIsImpvaW5Hcm91cEJ5Q29kZSIsImFkZFBhcnRpY2lwYW50IiwicmVtb3ZlUGFydGljaXBhbnQiLCJwcm9tb3RlUGFydGljaXBhbnQiLCJkZW1vdGVQYXJ0aWNpcGFudCIsImdldEdyb3VwSW5mb0Zyb21JbnZpdGVMaW5rIiwic2V0R3JvdXBEZXNjcmlwdGlvbiIsInNldEdyb3VwUHJvcGVydHkiLCJzZXRHcm91cFN1YmplY3QiLCJzZXRNZXNzYWdlc0FkbWluc09ubHkiLCJzZXRHcm91cFByb2ZpbGVQaWMiLCJjaGFuZ2VQcml2YWN5R3JvdXAiLCJnZXRBbGxDaGF0cyIsImdldEFsbENoYXRzV2l0aE1lc3NhZ2VzIiwiZ2V0QWxsTWVzc2FnZXNJbkNoYXQiLCJnZXRBbGxOZXdNZXNzYWdlcyIsImdldFVucmVhZE1lc3NhZ2VzIiwiZ2V0QWxsVW5yZWFkTWVzc2FnZXMiLCJnZXRDaGF0QnlJZCIsImdldE1lc3NhZ2VCeUlkIiwiZ2V0Q2hhdElzT25saW5lIiwiZ2V0TGFzdFNlZW4iLCJnZXRMaXN0TXV0ZXMiLCJsb2FkQW5kR2V0QWxsTWVzc2FnZXNJbkNoYXQiLCJnZXRNZXNzYWdlcyIsImFyY2hpdmVDaGF0IiwiYXJjaGl2ZUFsbENoYXRzIiwiY2xlYXJDaGF0IiwiY2xlYXJBbGxDaGF0cyIsImRlbGV0ZUNoYXQiLCJkZWxldGVBbGxDaGF0cyIsImRlbGV0ZU1lc3NhZ2UiLCJyZWFjdE1lc3NhZ2UiLCJmb3J3YXJkTWVzc2FnZXMiLCJtYXJrVW5zZWVuTWVzc2FnZSIsInBpbkNoYXQiLCJzZW5kQ29udGFjdFZjYXJkIiwic2VuZE11dGUiLCJzZW5kU2VlbiIsInNldENoYXRTdGF0ZSIsInNldFRlbXBvcmFyeU1lc3NhZ2VzIiwic2V0VHlwaW5nIiwic2V0UmVjb3JkaW5nIiwic3Rhck1lc3NhZ2UiLCJnZXRSZWFjdGlvbnMiLCJnZXRWb3RlcyIsInJlamVjdENhbGwiLCJnZXRQcm9kdWN0cyIsImdldFByb2R1Y3RCeUlkIiwiYWRkUHJvZHVjdCIsImVkaXRQcm9kdWN0IiwiZGVsUHJvZHVjdHMiLCJjaGFuZ2VQcm9kdWN0SW1hZ2UiLCJhZGRQcm9kdWN0SW1hZ2UiLCJyZW1vdmVQcm9kdWN0SW1hZ2UiLCJnZXRDb2xsZWN0aW9ucyIsImNyZWF0ZUNvbGxlY3Rpb24iLCJlZGl0Q29sbGVjdGlvbiIsImRlbGV0ZUNvbGxlY3Rpb24iLCJzZW5kTGlua0NhdGFsb2ciLCJzZXRQcm9kdWN0VmlzaWJpbGl0eSIsInVwZGF0ZUNhcnRFbmFibGVkIiwic2VuZFRleHRTdG9yaWUiLCJzZW5kSW1hZ2VTdG9yaWUiLCJzZW5kVmlkZW9TdG9yaWUiLCJhZGROZXdMYWJlbCIsImFkZE9yUmVtb3ZlTGFiZWxzIiwiZ2V0QWxsTGFiZWxzIiwicHV0IiwiZGVsZXRlQWxsTGFiZWxzIiwiZGVsZXRlTGFiZWwiLCJjaGVja051bWJlclN0YXR1cyIsImdldEFsbENvbnRhY3RzIiwiZ2V0Q29udGFjdCIsImdldE51bWJlclByb2ZpbGUiLCJnZXRQcm9maWxlUGljRnJvbVNlcnZlciIsImdldFN0YXR1cyIsImdldEJsb2NrTGlzdCIsImJsb2NrQ29udGFjdCIsInVuYmxvY2tDb250YWN0IiwiZ2V0QmF0dGVyeUxldmVsIiwiZ2V0SG9zdERldmljZSIsImdldFBob25lTnVtYmVyIiwic2V0UHJvZmlsZVBpYyIsInNldFByb2ZpbGVTdGF0dXMiLCJzZXRQcm9maWxlTmFtZSIsImdldEJ1c2luZXNzUHJvZmlsZXNQcm9kdWN0cyIsImdldE9yZGVyYnlNc2ciLCJjaGF0V29vdCIsInVzZSIsInN3YWdnZXJVaSIsInNlcnZlIiwic2V0dXAiLCJzd2FnZ2VyRG9jdW1lbnQiLCJoZWFsdGh6IiwidW5oZWFsdGh5IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JvdXRlcy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjEgV1BQQ29ubmVjdCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBtdWx0ZXIgZnJvbSAnbXVsdGVyJztcbmltcG9ydCBzd2FnZ2VyVWkgZnJvbSAnc3dhZ2dlci11aS1leHByZXNzJztcblxuaW1wb3J0IHVwbG9hZENvbmZpZyBmcm9tICcuLi9jb25maWcvdXBsb2FkJztcbmltcG9ydCAqIGFzIENhdGFsb2dDb250cm9sbGVyIGZyb20gJy4uL2NvbnRyb2xsZXIvY2F0YWxvZ0NvbnRyb2xsZXInO1xuaW1wb3J0ICogYXMgRGV2aWNlQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL2RldmljZUNvbnRyb2xsZXInO1xuaW1wb3J0IHsgZW5jcnlwdFNlc3Npb24gfSBmcm9tICcuLi9jb250cm9sbGVyL2VuY3J5cHRDb250cm9sbGVyJztcbmltcG9ydCAqIGFzIEdyb3VwQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL2dyb3VwQ29udHJvbGxlcic7XG5pbXBvcnQgKiBhcyBMYWJlbHNDb250cm9sbGVyIGZyb20gJy4uL2NvbnRyb2xsZXIvbGFiZWxzQ29udHJvbGxlcic7XG5pbXBvcnQgKiBhcyBNZXNzYWdlQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL21lc3NhZ2VDb250cm9sbGVyJztcbmltcG9ydCAqIGFzIE9yZGVyQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL29yZGVyQ29udHJvbGxlcic7XG5pbXBvcnQgKiBhcyBTZXNzaW9uQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL3Nlc3Npb25Db250cm9sbGVyJztcbmltcG9ydCAqIGFzIFN0YXR1c0NvbnRyb2xsZXIgZnJvbSAnLi4vY29udHJvbGxlci9zdGF0dXNDb250cm9sbGVyJztcbmltcG9ydCB2ZXJpZnlUb2tlbiBmcm9tICcuLi9taWRkbGV3YXJlL2F1dGgnO1xuaW1wb3J0ICogYXMgSGVhbHRoQ2hlY2sgZnJvbSAnLi4vbWlkZGxld2FyZS9oZWFsdGhDaGVjayc7XG5pbXBvcnQgc3RhdHVzQ29ubmVjdGlvbiBmcm9tICcuLi9taWRkbGV3YXJlL3N0YXR1c0Nvbm5lY3Rpb24nO1xuaW1wb3J0IHN3YWdnZXJEb2N1bWVudCBmcm9tICcuLi9zd2FnZ2VyLmpzb24nO1xuXG5jb25zdCB1cGxvYWQgPSBtdWx0ZXIodXBsb2FkQ29uZmlnIGFzIGFueSk7XG5jb25zdCByb3V0ZXMgPSBSb3V0ZXIoKTtcblxuLy8gR2VuZXJhdGUgVG9rZW5cbnJvdXRlcy5wb3N0KCcvYXBpLzpzZXNzaW9uLzpzZWNyZXRrZXkvZ2VuZXJhdGUtdG9rZW4nLCBlbmNyeXB0U2Vzc2lvbik7XG5cbi8vIEFsbCBTZXNzaW9uc1xucm91dGVzLmdldChcbiAgJy9hcGkvOnNlY3JldGtleS9zaG93LWFsbC1zZXNzaW9ucycsXG4gIFNlc3Npb25Db250cm9sbGVyLnNob3dBbGxTZXNzaW9uc1xuKTtcbnJvdXRlcy5wb3N0KCcvYXBpLzpzZWNyZXRrZXkvc3RhcnQtYWxsJywgU2Vzc2lvbkNvbnRyb2xsZXIuc3RhcnRBbGxTZXNzaW9ucyk7XG5cbi8vIFNlc3Npb25zXG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9jaGVjay1jb25uZWN0aW9uLXNlc3Npb24nLFxuICB2ZXJpZnlUb2tlbixcbiAgU2Vzc2lvbkNvbnRyb2xsZXIuY2hlY2tDb25uZWN0aW9uU2Vzc2lvblxuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2dldC1tZWRpYS1ieS1tZXNzYWdlLzptZXNzYWdlSWQnLFxuICB2ZXJpZnlUb2tlbixcbiAgU2Vzc2lvbkNvbnRyb2xsZXIuZ2V0TWVkaWFCeU1lc3NhZ2Vcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9zdGF0dXMtc2Vzc2lvbicsXG4gIHZlcmlmeVRva2VuLFxuICBTZXNzaW9uQ29udHJvbGxlci5nZXRTZXNzaW9uU3RhdGVcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9xcmNvZGUtc2Vzc2lvbicsXG4gIHZlcmlmeVRva2VuLFxuICBTZXNzaW9uQ29udHJvbGxlci5nZXRRckNvZGVcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vc3RhcnQtc2Vzc2lvbicsXG4gIHZlcmlmeVRva2VuLFxuICBTZXNzaW9uQ29udHJvbGxlci5zdGFydFNlc3Npb25cbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vbG9nb3V0LXNlc3Npb24nLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgU2Vzc2lvbkNvbnRyb2xsZXIubG9nT3V0U2Vzc2lvblxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9jbG9zZS1zZXNzaW9uJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIFNlc3Npb25Db250cm9sbGVyLmNsb3NlU2Vzc2lvblxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9zdWJzY3JpYmUtcHJlc2VuY2UnLFxuICB2ZXJpZnlUb2tlbixcbiAgU2Vzc2lvbkNvbnRyb2xsZXIuc3Vic2NyaWJlUHJlc2VuY2Vcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vZG93bmxvYWQtbWVkaWEnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgU2Vzc2lvbkNvbnRyb2xsZXIuZG93bmxvYWRNZWRpYUJ5TWVzc2FnZVxuKTtcblxuLy8gTWVzc2FnZXNcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9zZW5kLW1lc3NhZ2UnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTWVzc2FnZUNvbnRyb2xsZXIuc2VuZE1lc3NhZ2Vcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vc2VuZC1pbWFnZScsXG4gIHVwbG9hZC5zaW5nbGUoJ2ZpbGUnKSxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIE1lc3NhZ2VDb250cm9sbGVyLnNlbmRGaWxlXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtc3RpY2tlcicsXG4gIHVwbG9hZC5zaW5nbGUoJ2ZpbGUnKSxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIE1lc3NhZ2VDb250cm9sbGVyLnNlbmRJbWFnZUFzU3RpY2tlclxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9zZW5kLXN0aWNrZXItZ2lmJyxcbiAgdXBsb2FkLnNpbmdsZSgnZmlsZScpLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTWVzc2FnZUNvbnRyb2xsZXIuc2VuZEltYWdlQXNTdGlja2VyR2lmXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtcmVwbHknLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTWVzc2FnZUNvbnRyb2xsZXIucmVwbHlNZXNzYWdlXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtZmlsZScsXG4gIHVwbG9hZC5zaW5nbGUoJ2ZpbGUnKSxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIE1lc3NhZ2VDb250cm9sbGVyLnNlbmRGaWxlXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtZmlsZS1iYXNlNjQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTWVzc2FnZUNvbnRyb2xsZXIuc2VuZEZpbGVcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vc2VuZC12b2ljZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBNZXNzYWdlQ29udHJvbGxlci5zZW5kVm9pY2Vcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vc2VuZC12b2ljZS1iYXNlNjQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTWVzc2FnZUNvbnRyb2xsZXIuc2VuZFZvaWNlNjRcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vc2VuZC1zdGF0dXMnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTWVzc2FnZUNvbnRyb2xsZXIuc2VuZFN0YXR1c1RleHRcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vc2VuZC1saW5rLXByZXZpZXcnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTWVzc2FnZUNvbnRyb2xsZXIuc2VuZExpbmtQcmV2aWV3XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtbG9jYXRpb24nLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTWVzc2FnZUNvbnRyb2xsZXIuc2VuZExvY2F0aW9uXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtbWVudGlvbmVkJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIE1lc3NhZ2VDb250cm9sbGVyLnNlbmRNZW50aW9uZWRcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vc2VuZC1idXR0b25zJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIE1lc3NhZ2VDb250cm9sbGVyLnNlbmRCdXR0b25zXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtbGlzdC1tZXNzYWdlJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIE1lc3NhZ2VDb250cm9sbGVyLnNlbmRMaXN0TWVzc2FnZVxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9zZW5kLXBvbGwtbWVzc2FnZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBNZXNzYWdlQ29udHJvbGxlci5zZW5kUG9sbE1lc3NhZ2Vcbik7XG5cbi8vIEdyb3VwXG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9hbGwtYnJvYWRjYXN0LWxpc3QnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLmdldEFsbEJyb2FkY2FzdExpc3Rcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9hbGwtZ3JvdXBzJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIEdyb3VwQ29udHJvbGxlci5nZXRBbGxHcm91cHNcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9ncm91cC1tZW1iZXJzLzpncm91cElkJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIEdyb3VwQ29udHJvbGxlci5nZXRHcm91cE1lbWJlcnNcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9ncm91cC1hZG1pbnMvOmdyb3VwSWQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLmdldEdyb3VwQWRtaW5zXG4pO1xucm91dGVzLmdldChcbiAgJy9hcGkvOnNlc3Npb24vZ3JvdXAtaW52aXRlLWxpbmsvOmdyb3VwSWQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLmdldEdyb3VwSW52aXRlTGlua1xuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2dyb3VwLXJldm9rZS1saW5rLzpncm91cElkJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIEdyb3VwQ29udHJvbGxlci5yZXZva2VHcm91cEludml0ZUxpbmtcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9ncm91cC1tZW1iZXJzLWlkcy86Z3JvdXBJZCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBHcm91cENvbnRyb2xsZXIuZ2V0R3JvdXBNZW1iZXJzSWRzXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2NyZWF0ZS1ncm91cCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBHcm91cENvbnRyb2xsZXIuY3JlYXRlR3JvdXBcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vbGVhdmUtZ3JvdXAnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLmxlYXZlR3JvdXBcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vam9pbi1jb2RlJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIEdyb3VwQ29udHJvbGxlci5qb2luR3JvdXBCeUNvZGVcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vYWRkLXBhcnRpY2lwYW50LWdyb3VwJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIEdyb3VwQ29udHJvbGxlci5hZGRQYXJ0aWNpcGFudFxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9yZW1vdmUtcGFydGljaXBhbnQtZ3JvdXAnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLnJlbW92ZVBhcnRpY2lwYW50XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3Byb21vdGUtcGFydGljaXBhbnQtZ3JvdXAnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLnByb21vdGVQYXJ0aWNpcGFudFxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9kZW1vdGUtcGFydGljaXBhbnQtZ3JvdXAnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLmRlbW90ZVBhcnRpY2lwYW50XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2dyb3VwLWluZm8tZnJvbS1pbnZpdGUtbGluaycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBHcm91cENvbnRyb2xsZXIuZ2V0R3JvdXBJbmZvRnJvbUludml0ZUxpbmtcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vZ3JvdXAtZGVzY3JpcHRpb24nLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLnNldEdyb3VwRGVzY3JpcHRpb25cbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vZ3JvdXAtcHJvcGVydHknLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLnNldEdyb3VwUHJvcGVydHlcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vZ3JvdXAtc3ViamVjdCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBHcm91cENvbnRyb2xsZXIuc2V0R3JvdXBTdWJqZWN0XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL21lc3NhZ2VzLWFkbWlucy1vbmx5JyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIEdyb3VwQ29udHJvbGxlci5zZXRNZXNzYWdlc0FkbWluc09ubHlcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vZ3JvdXAtcGljJyxcbiAgdXBsb2FkLnNpbmdsZSgnZmlsZScpLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgR3JvdXBDb250cm9sbGVyLnNldEdyb3VwUHJvZmlsZVBpY1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9jaGFuZ2UtcHJpdmFjeS1ncm91cCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBHcm91cENvbnRyb2xsZXIuY2hhbmdlUHJpdmFjeUdyb3VwXG4pO1xuXG4vLyBDaGF0XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9hbGwtY2hhdHMnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRBbGxDaGF0c1xuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2FsbC1jaGF0cy13aXRoLW1lc3NhZ2VzJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuZ2V0QWxsQ2hhdHNXaXRoTWVzc2FnZXNcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9hbGwtbWVzc2FnZXMtaW4tY2hhdC86cGhvbmUnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRBbGxNZXNzYWdlc0luQ2hhdFxuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2FsbC1uZXctbWVzc2FnZXMnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRBbGxOZXdNZXNzYWdlc1xuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL3VucmVhZC1tZXNzYWdlcycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldFVucmVhZE1lc3NhZ2VzXG4pO1xucm91dGVzLmdldChcbiAgJy9hcGkvOnNlc3Npb24vYWxsLXVucmVhZC1tZXNzYWdlcycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldEFsbFVucmVhZE1lc3NhZ2VzXG4pO1xucm91dGVzLmdldChcbiAgJy9hcGkvOnNlc3Npb24vY2hhdC1ieS1pZC86cGhvbmUnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRDaGF0QnlJZFxuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL21lc3NhZ2UtYnktaWQvOm1lc3NhZ2VJZCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldE1lc3NhZ2VCeUlkXG4pO1xucm91dGVzLmdldChcbiAgJy9hcGkvOnNlc3Npb24vY2hhdC1pcy1vbmxpbmUvOnBob25lJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuZ2V0Q2hhdElzT25saW5lXG4pO1xucm91dGVzLmdldChcbiAgJy9hcGkvOnNlc3Npb24vbGFzdC1zZWVuLzpwaG9uZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldExhc3RTZWVuXG4pO1xucm91dGVzLmdldChcbiAgJy9hcGkvOnNlc3Npb24vbGlzdC1tdXRlcy86dHlwZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldExpc3RNdXRlc1xuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2xvYWQtbWVzc2FnZXMtaW4tY2hhdC86cGhvbmUnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5sb2FkQW5kR2V0QWxsTWVzc2FnZXNJbkNoYXRcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9nZXQtbWVzc2FnZXMvOnBob25lJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuZ2V0TWVzc2FnZXNcbik7XG5cbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9hcmNoaXZlLWNoYXQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5hcmNoaXZlQ2hhdFxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9hcmNoaXZlLWFsbC1jaGF0cycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmFyY2hpdmVBbGxDaGF0c1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9jbGVhci1jaGF0JyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuY2xlYXJDaGF0XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2NsZWFyLWFsbC1jaGF0cycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmNsZWFyQWxsQ2hhdHNcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vZGVsZXRlLWNoYXQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5kZWxldGVDaGF0XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2RlbGV0ZS1hbGwtY2hhdHMnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5kZWxldGVBbGxDaGF0c1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9kZWxldGUtbWVzc2FnZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmRlbGV0ZU1lc3NhZ2Vcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vcmVhY3QtbWVzc2FnZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLnJlYWN0TWVzc2FnZVxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9mb3J3YXJkLW1lc3NhZ2VzJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuZm9yd2FyZE1lc3NhZ2VzXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL21hcmstdW5zZWVuJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIubWFya1Vuc2Vlbk1lc3NhZ2Vcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vcGluLWNoYXQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5waW5DaGF0XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2NvbnRhY3QtdmNhcmQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5zZW5kQ29udGFjdFZjYXJkXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtbXV0ZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLnNlbmRNdXRlXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtc2VlbicsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLnNlbmRTZWVuXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2NoYXQtc3RhdGUnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5zZXRDaGF0U3RhdGVcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vdGVtcG9yYXJ5LW1lc3NhZ2VzJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuc2V0VGVtcG9yYXJ5TWVzc2FnZXNcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vdHlwaW5nJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuc2V0VHlwaW5nXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3JlY29yZGluZycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLnNldFJlY29yZGluZ1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9zdGFyLW1lc3NhZ2UnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5zdGFyTWVzc2FnZVxuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL3JlYWN0aW9ucy86aWQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRSZWFjdGlvbnNcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi92b3Rlcy86aWQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRWb3Rlc1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9yZWplY3QtY2FsbCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLnJlamVjdENhbGxcbik7XG5cbi8vIENhdGFsb2dcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2dldC1wcm9kdWN0cycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBDYXRhbG9nQ29udHJvbGxlci5nZXRQcm9kdWN0c1xuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2dldC1wcm9kdWN0LWJ5LWlkJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIENhdGFsb2dDb250cm9sbGVyLmdldFByb2R1Y3RCeUlkXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2FkZC1wcm9kdWN0JyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIENhdGFsb2dDb250cm9sbGVyLmFkZFByb2R1Y3Rcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vZWRpdC1wcm9kdWN0JyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIENhdGFsb2dDb250cm9sbGVyLmVkaXRQcm9kdWN0XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2RlbC1wcm9kdWN0cycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBDYXRhbG9nQ29udHJvbGxlci5kZWxQcm9kdWN0c1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9jaGFuZ2UtcHJvZHVjdC1pbWFnZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBDYXRhbG9nQ29udHJvbGxlci5jaGFuZ2VQcm9kdWN0SW1hZ2Vcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vYWRkLXByb2R1Y3QtaW1hZ2UnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgQ2F0YWxvZ0NvbnRyb2xsZXIuYWRkUHJvZHVjdEltYWdlXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3JlbW92ZS1wcm9kdWN0LWltYWdlJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIENhdGFsb2dDb250cm9sbGVyLnJlbW92ZVByb2R1Y3RJbWFnZVxuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2dldC1jb2xsZWN0aW9ucycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBDYXRhbG9nQ29udHJvbGxlci5nZXRDb2xsZWN0aW9uc1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9jcmVhdGUtY29sbGVjdGlvbicsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBDYXRhbG9nQ29udHJvbGxlci5jcmVhdGVDb2xsZWN0aW9uXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2VkaXQtY29sbGVjdGlvbicsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBDYXRhbG9nQ29udHJvbGxlci5lZGl0Q29sbGVjdGlvblxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9kZWwtY29sbGVjdGlvbicsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBDYXRhbG9nQ29udHJvbGxlci5kZWxldGVDb2xsZWN0aW9uXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtbGluay1jYXRhbG9nJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIENhdGFsb2dDb250cm9sbGVyLnNlbmRMaW5rQ2F0YWxvZ1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9zZXQtcHJvZHVjdC12aXNpYmlsaXR5JyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIENhdGFsb2dDb250cm9sbGVyLnNldFByb2R1Y3RWaXNpYmlsaXR5XG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NldC1jYXJ0LWVuYWJsZWQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgQ2F0YWxvZ0NvbnRyb2xsZXIudXBkYXRlQ2FydEVuYWJsZWRcbik7XG5cbi8vIFN0YXR1c1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtdGV4dC1zdG9yaWUnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgU3RhdHVzQ29udHJvbGxlci5zZW5kVGV4dFN0b3JpZVxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9zZW5kLWltYWdlLXN0b3JpZScsXG4gIHVwbG9hZC5zaW5nbGUoJ2ZpbGUnKSxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIFN0YXR1c0NvbnRyb2xsZXIuc2VuZEltYWdlU3RvcmllXG4pO1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NlbmQtdmlkZW8tc3RvcmllJyxcbiAgdXBsb2FkLnNpbmdsZSgnZmlsZScpLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgU3RhdHVzQ29udHJvbGxlci5zZW5kVmlkZW9TdG9yaWVcbik7XG5cbi8vIExhYmVsc1xucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL2FkZC1uZXctbGFiZWwnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgTGFiZWxzQ29udHJvbGxlci5hZGROZXdMYWJlbFxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9hZGQtb3ItcmVtb3ZlLWxhYmVsJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIExhYmVsc0NvbnRyb2xsZXIuYWRkT3JSZW1vdmVMYWJlbHNcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9nZXQtYWxsLWxhYmVscycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBMYWJlbHNDb250cm9sbGVyLmdldEFsbExhYmVsc1xuKTtcbnJvdXRlcy5wdXQoXG4gICcvYXBpLzpzZXNzaW9uL2RlbGV0ZS1hbGwtbGFiZWxzJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIExhYmVsc0NvbnRyb2xsZXIuZGVsZXRlQWxsTGFiZWxzXG4pO1xucm91dGVzLnB1dChcbiAgJy9hcGkvOnNlc3Npb24vZGVsZXRlLWxhYmVsLzppZCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBMYWJlbHNDb250cm9sbGVyLmRlbGV0ZUxhYmVsXG4pO1xuXG4vLyBDb250YWN0XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9jaGVjay1udW1iZXItc3RhdHVzLzpwaG9uZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmNoZWNrTnVtYmVyU3RhdHVzXG4pO1xucm91dGVzLmdldChcbiAgJy9hcGkvOnNlc3Npb24vYWxsLWNvbnRhY3RzJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuZ2V0QWxsQ29udGFjdHNcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9jb250YWN0LzpwaG9uZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldENvbnRhY3Rcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9wcm9maWxlLzpwaG9uZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldE51bWJlclByb2ZpbGVcbik7XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9wcm9maWxlLXBpYy86cGhvbmUnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRQcm9maWxlUGljRnJvbVNlcnZlclxuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL3Byb2ZpbGUtc3RhdHVzLzpwaG9uZScsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldFN0YXR1c1xuKTtcblxuLy8gQmxvY2tsaXN0XG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9ibG9ja2xpc3QnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRCbG9ja0xpc3Rcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vYmxvY2stY29udGFjdCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmJsb2NrQ29udGFjdFxuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi91bmJsb2NrLWNvbnRhY3QnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci51bmJsb2NrQ29udGFjdFxuKTtcblxuLy8gRGV2aWNlXG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9nZXQtYmF0dGVyeS1sZXZlbCcsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLmdldEJhdHRlcnlMZXZlbFxuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2hvc3QtZGV2aWNlJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuZ2V0SG9zdERldmljZVxuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2dldC1waG9uZS1udW1iZXInLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgRGV2aWNlQ29udHJvbGxlci5nZXRQaG9uZU51bWJlclxuKTtcblxuLy8gUHJvZmlsZVxucm91dGVzLnBvc3QoXG4gICcvYXBpLzpzZXNzaW9uL3NldC1wcm9maWxlLXBpYycsXG4gIHVwbG9hZC5zaW5nbGUoJ2ZpbGUnKSxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuc2V0UHJvZmlsZVBpY1xuKTtcbnJvdXRlcy5wb3N0KFxuICAnL2FwaS86c2Vzc2lvbi9wcm9maWxlLXN0YXR1cycsXG4gIHZlcmlmeVRva2VuLFxuICBzdGF0dXNDb25uZWN0aW9uLFxuICBEZXZpY2VDb250cm9sbGVyLnNldFByb2ZpbGVTdGF0dXNcbik7XG5yb3V0ZXMucG9zdChcbiAgJy9hcGkvOnNlc3Npb24vY2hhbmdlLXVzZXJuYW1lJyxcbiAgdmVyaWZ5VG9rZW4sXG4gIHN0YXR1c0Nvbm5lY3Rpb24sXG4gIERldmljZUNvbnRyb2xsZXIuc2V0UHJvZmlsZU5hbWVcbik7XG5cbi8vIEJ1c2luZXNzXG5yb3V0ZXMuZ2V0KFxuICAnL2FwaS86c2Vzc2lvbi9nZXQtYnVzaW5lc3MtcHJvZmlsZXMtcHJvZHVjdHMnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgT3JkZXJDb250cm9sbGVyLmdldEJ1c2luZXNzUHJvZmlsZXNQcm9kdWN0c1xuKTtcbnJvdXRlcy5nZXQoXG4gICcvYXBpLzpzZXNzaW9uL2dldC1vcmRlci1ieS1tZXNzYWdlSWQnLFxuICB2ZXJpZnlUb2tlbixcbiAgc3RhdHVzQ29ubmVjdGlvbixcbiAgT3JkZXJDb250cm9sbGVyLmdldE9yZGVyYnlNc2dcbik7XG5cbnJvdXRlcy5wb3N0KCcvYXBpLzpzZXNzaW9uL2NoYXR3b290JywgRGV2aWNlQ29udHJvbGxlci5jaGF0V29vdCk7XG5cbi8vIEFwaSBEb2NcbnJvdXRlcy51c2UoJy9hcGktZG9jcycsIHN3YWdnZXJVaS5zZXJ2ZSk7XG5yb3V0ZXMuZ2V0KCcvYXBpLWRvY3MnLCBzd2FnZ2VyVWkuc2V0dXAoc3dhZ2dlckRvY3VtZW50KSk7XG5cbi8vazhzXG5yb3V0ZXMuZ2V0KCcvaGVhbHRoeicsIEhlYWx0aENoZWNrLmhlYWx0aHopO1xucm91dGVzLmdldCgnL3VuaGVhbHRoeScsIEhlYWx0aENoZWNrLnVuaGVhbHRoeSk7XG5cbmV4cG9ydCBkZWZhdWx0IHJvdXRlcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsaUJBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTs7QUFFQSxJQUFBSSxPQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxpQkFBQSxHQUFBQyx1QkFBQSxDQUFBTixPQUFBO0FBQ0EsSUFBQU8sZ0JBQUEsR0FBQUQsdUJBQUEsQ0FBQU4sT0FBQTtBQUNBLElBQUFRLGtCQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxlQUFBLEdBQUFILHVCQUFBLENBQUFOLE9BQUE7QUFDQSxJQUFBVSxnQkFBQSxHQUFBSix1QkFBQSxDQUFBTixPQUFBO0FBQ0EsSUFBQVcsaUJBQUEsR0FBQUwsdUJBQUEsQ0FBQU4sT0FBQTtBQUNBLElBQUFZLGVBQUEsR0FBQU4sdUJBQUEsQ0FBQU4sT0FBQTtBQUNBLElBQUFhLGlCQUFBLEdBQUFQLHVCQUFBLENBQUFOLE9BQUE7QUFDQSxJQUFBYyxnQkFBQSxHQUFBUix1QkFBQSxDQUFBTixPQUFBO0FBQ0EsSUFBQWUsS0FBQSxHQUFBYixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWdCLFdBQUEsR0FBQVYsdUJBQUEsQ0FBQU4sT0FBQTtBQUNBLElBQUFpQixpQkFBQSxHQUFBZixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFB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
|