提交 | 用户 | age
|
f9ad6c
|
1 |
"use strict";
|
S |
2 |
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3 |
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4 |
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5 |
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6 |
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
|
7 |
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8 |
});
|
|
9 |
};
|
|
10 |
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11 |
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12 |
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13 |
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14 |
function step(op) {
|
|
15 |
if (f) throw new TypeError("Generator is already executing.");
|
|
16 |
while (_) try {
|
|
17 |
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18 |
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19 |
switch (op[0]) {
|
|
20 |
case 0: case 1: t = op; break;
|
|
21 |
case 4: _.label++; return { value: op[1], done: false };
|
|
22 |
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23 |
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24 |
default:
|
|
25 |
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26 |
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27 |
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28 |
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29 |
if (t[2]) _.ops.pop();
|
|
30 |
_.trys.pop(); continue;
|
|
31 |
}
|
|
32 |
op = body.call(thisArg, _);
|
|
33 |
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34 |
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35 |
}
|
|
36 |
};
|
|
37 |
Component({
|
|
38 |
options: {
|
|
39 |
addGlobalClass: true,
|
|
40 |
multipleSlots: true
|
|
41 |
},
|
|
42 |
properties: {
|
8724a4
|
43 |
liveRoom: {
|
S |
44 |
type: Object,
|
|
45 |
value: {},
|
|
46 |
observer: function (newVal) {
|
|
47 |
console.log('监听liveRoom的newVal', newVal);
|
|
48 |
if (JSON.stringify(newVal) != '{}') {
|
|
49 |
this.setData({
|
|
50 |
isLive: true
|
|
51 |
});
|
|
52 |
}
|
|
53 |
}
|
|
54 |
},
|
f9ad6c
|
55 |
detail: {
|
S |
56 |
type: Object,
|
|
57 |
value: {},
|
|
58 |
observer: function (newVal) {
|
|
59 |
console.log('监听detail的newVal', newVal);
|
|
60 |
if (JSON.stringify(newVal) != '{}') {
|
|
61 |
this.getQrCode();
|
|
62 |
}
|
|
63 |
}
|
|
64 |
},
|
|
65 |
sellerList: {
|
|
66 |
type: Array,
|
|
67 |
value: []
|
|
68 |
},
|
|
69 |
},
|
|
70 |
data: {
|
|
71 |
imgDraw: {},
|
|
72 |
sharePath: '',
|
|
73 |
visible: false,
|
8724a4
|
74 |
qrCodeUrl: '',
|
S |
75 |
isLive: false
|
f9ad6c
|
76 |
},
|
S |
77 |
lifetimes: {
|
|
78 |
ready: function () {
|
|
79 |
return __awaiter(this, void 0, void 0, function () {
|
|
80 |
return __generator(this, function (_a) {
|
|
81 |
return [2];
|
|
82 |
});
|
|
83 |
});
|
|
84 |
}
|
|
85 |
},
|
|
86 |
pageLifetimes: {
|
|
87 |
show: function () {
|
|
88 |
},
|
|
89 |
hide: function () {
|
|
90 |
}
|
|
91 |
},
|
|
92 |
methods: {
|
8724a4
|
93 |
getLiveRoomQrCode: function () {
|
S |
94 |
return __awaiter(this, void 0, void 0, function () {
|
|
95 |
var roomid, _a, error, result;
|
|
96 |
return __generator(this, function (_b) {
|
|
97 |
switch (_b.label) {
|
|
98 |
case 0:
|
|
99 |
roomid = this.data.liveRoom.RoomId;
|
|
100 |
console.log(roomid);
|
|
101 |
return [4, wx.$utils.to(wx.$http.request({
|
|
102 |
url: "/shopping/live/getSharedCode.do",
|
|
103 |
data: {
|
|
104 |
roomid: roomid
|
|
105 |
}
|
|
106 |
}))];
|
|
107 |
case 1:
|
|
108 |
_a = _b.sent(), error = _a[0], result = _a[1];
|
|
109 |
if (error) {
|
|
110 |
console.log(error);
|
|
111 |
wx.showToast({
|
|
112 |
title: '获取二维码失败,请稍后再试',
|
|
113 |
icon: 'none',
|
|
114 |
});
|
|
115 |
return [2, false];
|
|
116 |
}
|
|
117 |
console.log(result);
|
|
118 |
this.setData({
|
|
119 |
qrCodeUrl: result.cdnUrl
|
|
120 |
});
|
|
121 |
return [2, true];
|
|
122 |
}
|
|
123 |
});
|
|
124 |
});
|
|
125 |
},
|
f9ad6c
|
126 |
getQrCode: function () {
|
S |
127 |
return __awaiter(this, void 0, void 0, function () {
|
|
128 |
var _a, error, result;
|
|
129 |
return __generator(this, function (_b) {
|
|
130 |
switch (_b.label) {
|
|
131 |
case 0: return [4, wx.$utils.to(wx.$http.request({
|
|
132 |
url: "/shopping/poster/getQrCodeForPoster.do",
|
|
133 |
data: {
|
|
134 |
QrCodeType: 80,
|
|
135 |
doccode: this.data.detail.doccode,
|
|
136 |
RefOpenId: wx.globalData.FromOpenId
|
|
137 |
}
|
|
138 |
}))];
|
|
139 |
case 1:
|
|
140 |
_a = _b.sent(), error = _a[0], result = _a[1];
|
|
141 |
if (error) {
|
|
142 |
console.log(error);
|
|
143 |
return [2];
|
|
144 |
}
|
|
145 |
console.log(result);
|
|
146 |
this.setData({
|
|
147 |
qrCodeUrl: result.QrCode
|
|
148 |
});
|
|
149 |
return [2];
|
|
150 |
}
|
|
151 |
});
|
|
152 |
});
|
|
153 |
},
|
|
154 |
handleClose: function () {
|
|
155 |
this.setData({
|
|
156 |
visible: false
|
|
157 |
});
|
|
158 |
this.triggerEvent('close');
|
|
159 |
},
|
8724a4
|
160 |
clearPoster: function () {
|
f9ad6c
|
161 |
this.setData({
|
8724a4
|
162 |
sharePath: ''
|
f9ad6c
|
163 |
});
|
8724a4
|
164 |
},
|
S |
165 |
drawPic: function () {
|
|
166 |
return __awaiter(this, void 0, void 0, function () {
|
|
167 |
return __generator(this, function (_a) {
|
|
168 |
switch (_a.label) {
|
|
169 |
case 0:
|
|
170 |
if (this.data.sharePath) {
|
|
171 |
this.setData({
|
|
172 |
visible: true
|
|
173 |
});
|
|
174 |
this.triggerEvent('initData');
|
|
175 |
return [2];
|
|
176 |
}
|
|
177 |
if (!this.data.isLive) return [3, 2];
|
|
178 |
return [4, this.getLiveRoomQrCode()];
|
|
179 |
case 1:
|
|
180 |
if (!(_a.sent()))
|
|
181 |
return [2];
|
|
182 |
_a.label = 2;
|
|
183 |
case 2:
|
|
184 |
if (!this.data.qrCodeUrl) {
|
|
185 |
wx.showToast({
|
|
186 |
title: '获取二维码失败,请稍后再试',
|
|
187 |
icon: 'none',
|
|
188 |
});
|
|
189 |
return [2];
|
|
190 |
}
|
|
191 |
wx.showLoading({
|
|
192 |
title: '生成中'
|
|
193 |
});
|
|
194 |
this.setData({
|
|
195 |
imgDraw: this.getImgDraw()
|
|
196 |
});
|
|
197 |
return [2];
|
|
198 |
}
|
|
199 |
});
|
|
200 |
});
|
|
201 |
},
|
|
202 |
getImgDraw: function () {
|
|
203 |
var _a = this.data, detail = _a.detail, liveRoom = _a.liveRoom, sellerList = _a.sellerList, qrCodeUrl = _a.qrCodeUrl;
|
|
204 |
var isLive = this.data.isLive;
|
|
205 |
console.log(detail, liveRoom, sellerList, qrCodeUrl, isLive);
|
|
206 |
var imgDraw = {
|
|
207 |
width: '750rpx',
|
|
208 |
height: '1334rpx',
|
|
209 |
background: '#f5f5f5',
|
|
210 |
views: [
|
|
211 |
{
|
|
212 |
"type": "image",
|
|
213 |
"url": "/assets/images/poster-bg.png",
|
|
214 |
"css": {
|
|
215 |
"width": "750rpx",
|
|
216 |
"height": "1334rpx",
|
|
217 |
"top": "0px",
|
|
218 |
"left": "0px",
|
|
219 |
"rotate": "0",
|
|
220 |
}
|
|
221 |
},
|
|
222 |
{
|
|
223 |
type: 'image',
|
|
224 |
url: isLive ? liveRoom.ShareImgUnidUrl : detail.coverImageUrl[0],
|
|
225 |
css: {
|
|
226 |
top: '10rpx',
|
|
227 |
left: '10rpx',
|
|
228 |
right: '10rpx',
|
|
229 |
width: '730rpx',
|
|
230 |
height: '480rpx',
|
|
231 |
borderRadius: '16rpx'
|
|
232 |
},
|
|
233 |
},
|
|
234 |
{
|
|
235 |
type: 'image',
|
|
236 |
url: (isLive ? liveRoom.AnchorImgUnidUrl : sellerList[0].sellerHeadimgurl) || '/assets/images/default-avatar.png',
|
|
237 |
css: {
|
|
238 |
top: '444rpx',
|
|
239 |
left: '328rpx',
|
|
240 |
width: '96rpx',
|
|
241 |
height: '96rpx',
|
|
242 |
borderWidth: '6rpx',
|
|
243 |
borderColor: '#FFF',
|
|
244 |
borderRadius: '96rpx'
|
|
245 |
}
|
|
246 |
},
|
|
247 |
{
|
|
248 |
type: 'text',
|
|
249 |
text: (isLive ? liveRoom.AnchorName : sellerList[0].sellerName) || '昵称',
|
|
250 |
css: {
|
|
251 |
top: '572rpx',
|
|
252 |
fontSize: '28rpx',
|
|
253 |
left: '375rpx',
|
|
254 |
align: 'center',
|
|
255 |
color: '#3c3c3c'
|
|
256 |
}
|
|
257 |
},
|
|
258 |
{
|
|
259 |
type: 'text',
|
|
260 |
text: "\u9080\u8BF7\u60A8\u53C2\u4E0E" + (isLive ? '直播' : '活动'),
|
|
261 |
css: {
|
|
262 |
top: '616rpx',
|
|
263 |
left: '375rpx',
|
|
264 |
align: 'center',
|
|
265 |
fontSize: '28rpx',
|
|
266 |
color: '#3c3c3c'
|
|
267 |
}
|
|
268 |
},
|
|
269 |
{
|
|
270 |
type: 'text',
|
|
271 |
text: ((isLive ? liveRoom.RoomName : detail.title) || '活动标题') + " ",
|
|
272 |
css: {
|
|
273 |
top: '684rpx',
|
|
274 |
left: '375rpx',
|
|
275 |
maxLines: 1,
|
|
276 |
align: 'center',
|
|
277 |
fontWeight: 'bold',
|
|
278 |
fontSize: '44rpx',
|
|
279 |
color: '#3c3c3c'
|
|
280 |
}
|
|
281 |
},
|
|
282 |
{
|
|
283 |
type: 'text',
|
|
284 |
text: "" + ((isLive ? '' : '¥' + detail.salesPrice) || ''),
|
|
285 |
css: {
|
|
286 |
top: '765rpx',
|
|
287 |
left: '375rpx',
|
|
288 |
maxLines: 1,
|
|
289 |
align: 'center',
|
|
290 |
fontWeight: 'bold',
|
|
291 |
fontSize: '44rpx',
|
|
292 |
color: '#f23232'
|
|
293 |
}
|
|
294 |
},
|
|
295 |
{
|
|
296 |
type: 'image',
|
|
297 |
url: qrCodeUrl,
|
|
298 |
css: {
|
|
299 |
top: '970rpx',
|
|
300 |
left: '390rpx',
|
|
301 |
width: '300rpx',
|
|
302 |
height: '300rpx'
|
|
303 |
}
|
|
304 |
},
|
|
305 |
{
|
|
306 |
type: 'text',
|
|
307 |
text: "\u957F\u6309\u4E8C\u7EF4\u7801\u8BC6\u522B\u53C2\u4E0E",
|
|
308 |
css: {
|
|
309 |
top: '1100rpx',
|
|
310 |
left: '55rpx',
|
|
311 |
fontSize: '32rpx',
|
|
312 |
color: '#3c3c3c'
|
|
313 |
}
|
|
314 |
},
|
|
315 |
]
|
|
316 |
};
|
|
317 |
return imgDraw;
|
f9ad6c
|
318 |
},
|
S |
319 |
onImgErr: function () {
|
|
320 |
wx.hideLoading();
|
|
321 |
wx.showToast({
|
|
322 |
title: '生成分享图失败,请刷新页面重试'
|
|
323 |
});
|
|
324 |
},
|
|
325 |
onImgOK: function (e) {
|
|
326 |
wx.hideLoading();
|
|
327 |
this.setData({
|
|
328 |
sharePath: e.detail.path,
|
|
329 |
visible: true,
|
|
330 |
});
|
|
331 |
this.triggerEvent('initData');
|
|
332 |
},
|
|
333 |
preventDefault: function () { },
|
|
334 |
handleSavePhoto: function () {
|
|
335 |
var _this = this;
|
|
336 |
wx.showLoading({
|
|
337 |
title: '正在保存...',
|
|
338 |
mask: true
|
|
339 |
});
|
|
340 |
wx.saveImageToPhotosAlbum({
|
|
341 |
filePath: this.data.sharePath,
|
|
342 |
success: function () {
|
|
343 |
wx.showToast({
|
|
344 |
title: '保存成功'
|
|
345 |
});
|
|
346 |
setTimeout(function () {
|
|
347 |
_this.setData({
|
|
348 |
visible: false
|
|
349 |
});
|
|
350 |
_this.triggerEvent('close');
|
|
351 |
}, 300);
|
|
352 |
},
|
|
353 |
fail: function () {
|
|
354 |
wx.getSetting({
|
|
355 |
success: function (res) {
|
|
356 |
var authSetting = res.authSetting;
|
|
357 |
if (!authSetting['scope.writePhotosAlbum']) {
|
|
358 |
wx.showModal({
|
|
359 |
title: '提示',
|
|
360 |
content: '您未开启保存图片到相册的权限,请点击确定去开启权限!',
|
|
361 |
success: function (res) {
|
|
362 |
if (res.confirm) {
|
|
363 |
wx.openSetting();
|
|
364 |
}
|
|
365 |
}
|
|
366 |
});
|
|
367 |
}
|
|
368 |
}
|
|
369 |
});
|
|
370 |
setTimeout(function () {
|
|
371 |
wx.hideLoading();
|
|
372 |
_this.setData({
|
|
373 |
visible: false
|
|
374 |
});
|
|
375 |
_this.triggerEvent('close');
|
|
376 |
}, 300);
|
|
377 |
}
|
|
378 |
});
|
|
379 |
}
|
|
380 |
}
|
|
381 |
});
|
8724a4
|
382 |
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTLENBQUM7SUFDUixPQUFPLEVBQUU7UUFDUCxjQUFjLEVBQUMsSUFBSTtRQUNuQixhQUFhLEVBQUUsSUFBSTtLQUNwQjtJQUNELFVBQVUsRUFBRTtRQUVWLFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLFlBQUMsTUFBTTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFDO29CQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUNYLE1BQU0sRUFBQyxJQUFJO3FCQUNaLENBQUMsQ0FBQTtpQkFDSDtZQUNILENBQUM7U0FDRjtRQUNELE1BQU0sRUFBQztZQUNMLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLFlBQUMsTUFBTTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFDO29CQUNqQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7aUJBQ2pCO1lBQ0gsQ0FBQztTQUNGO1FBQ0QsVUFBVSxFQUFDO1lBQ1QsSUFBSSxFQUFFLEtBQUs7WUFDWCxLQUFLLEVBQUUsRUFBRTtTQUNWO0tBTUY7SUFDRCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsRUFBRTtRQUNYLFNBQVMsRUFBRSxFQUFFO1FBQ2IsT0FBTyxFQUFFLEtBQUs7UUFDZCxTQUFTLEVBQUMsRUFBRTtRQUNaLE1BQU0s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QkFDZixDQUFDLENBQUE7d0JBQ0YsS0FBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQkFDNUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO2dCQUNULENBQUM7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLEVBQUUsQ0FBQyxVQUFVLENBQUM7d0JBQ1osT0FBTyxFQUFFLFVBQUEsR0FBRzs0QkFDVixJQUFJLFdBQVcsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFBOzRCQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLEVBQUU7Z0NBQzFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0NBQ1gsS0FBSyxFQUFFLElBQUk7b0NBQ1gsT0FBTyxFQUFFLDRCQUE0QjtvQ0FDckMsT0FBTyxZQUFDLEdBQUc7d0NBQ1QsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFOzRDQUNmLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTt5Q0FDakI7b0NBQ0gsQ0FBQztpQ0FDRixDQUFDLENBQUE7NkJBQ0g7d0JBQ0gsQ0FBQztxQkFDRixDQUFDLENBQUE7b0JBQ0YsVUFBVSxDQUFDO3dCQUNULEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTt3QkFDaEIsS0FBSSxDQUFDLE9BQU8sQ0FBQzs0QkFDWCxPQUFPLEVBQUUsS0FBSzt5QkFDZixDQUFDLENBQUE7d0JBQ0YsS0FBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQkFDNUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO2dCQUNULENBQUM7YUFDRixDQUFDLENBQUE7UUFDSixDQUFDO0tBQ0Y7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJDb21wb25lbnQoe1xyXG4gIG9wdGlvbnM6IHtcclxuICAgIGFkZEdsb2JhbENsYXNzOnRydWUsXHJcbiAgICBtdWx0aXBsZVNsb3RzOiB0cnVlIC8vIOWcqOe7hOS7tuWumuS5ieaXtueahOmAiemhueS4reWQr+eUqOWkmnNsb3TmlK/mjIFcclxuICB9LFxyXG4gIHByb3BlcnRpZXM6IHtcclxuICAgIC8v5bGe5oCn5YC85Y+v5Lul5Zyo57uE5Lu25L2/55So5pe25oyH5a6aXHJcbiAgICBsaXZlUm9vbToge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIHZhbHVlOiB7fSxcclxuICAgICAgb2JzZXJ2ZXIobmV3VmFsKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ+ebkeWQrGxpdmVSb29t55qEbmV3VmFsJyxuZXdWYWwpO1xyXG4gICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShuZXdWYWwpICE9ICd7fScpe1xyXG4gICAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgICAgaXNMaXZlOnRydWVcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgZGV0YWlsOntcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICB2YWx1ZToge30sXHJcbiAgICAgIG9ic2VydmVyKG5ld1ZhbCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCfnm5HlkKxkZXRhaWznmoRuZXdWYWwnLG5ld1ZhbCk7XHJcbiAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KG5ld1ZhbCkgIT0gJ3t9Jyl7XHJcbiAgICAgICAgICB0aGlzLmdldFFyQ29kZSgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgc2VsbGVyTGlzdDp7XHJcbiAgICAgIHR5cGU6IEFycmF5LFxyXG4gICAgICB2YWx1ZTogW11cclxuICAgIH0sXHJcblxyXG4gICAgLy8gdmlzaWJsZToge1xyXG4gICAgLy8gICB0eXBlOiBCb29sZWFuLFxyXG4gICAgLy8gICB2YWx1ZTogZmFsc2UsXHJcbiAgICAvLyB9XHJcbiAgfSxcclxuICBkYXRhOiB7XHJcbiAgICBpbWdEcmF3OiB7fSwgLy/nu5jliLblm77niYfnmoTlpKflr7nosaFcclxuICAgIHNoYXJlUGF0aDogJycsIC8v55Sf5oiQ55qE5YiG5Lqr5Zu+XHJcbiAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgIHFyQ29kZVVybDonJyxcclxuICAgIGlzTGl2ZTpmYWxzZSAvL+aYr+WQpuebtOaSrVxyXG4gIH0sXHJcbiAgbGlmZXRpbWVzOntcclxuICAgIGFzeW5jIHJlYWR5KCl7XHJcblxyXG4gICAgfVxyXG4gIH0sXHJcbiAgcGFnZUxpZmV0aW1lczoge1xyXG4gICAgc2hvdzogZnVuY3Rpb24oKSB7XHJcbiAgICAgIC8vIOmhtemdouiiq+WxleekulxyXG5cclxuICAgIH0sXHJcbiAgICBoaWRlKCkge1xyXG5cclxuICAgIH1cclxuICB9LFxyXG4gIG1ldGhvZHM6IHtcclxuICAgIGFzeW5jIGdldExpdmVSb29tUXJDb2RlKCl7XHJcbiAgICAgIGxldCByb29taWQgPSB0aGlzLmRhdGEubGl2ZVJvb20uUm9vbUlkO1xyXG4gICAgICBjb25zb2xlLmxvZyhyb29taWQpO1xyXG4gICAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxyXG4gICAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgICAgICAgdXJsOmAvc2hvcHBpbmcvbGl2ZS9nZXRTaGFyZWRDb2RlLmRvYCxcclxuICAgICAgICAgIGRhdGE6e1xyXG4gICAgICAgICAgICByb29taWRcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIGlmIChlcnJvcil7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgICB0aXRsZTogJ+iOt+WPluS6jOe7tOeggeWksei0pe+8jOivt+eojeWQjuWGjeivlScsXHJcbiAgICAgICAgICBpY29uOidub25lJyxcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIHFyQ29kZVVybDpyZXN1bHQuY2RuVXJsXHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuICAgIGFzeW5jIGdldFFyQ29kZSgpe1xyXG4gICAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxyXG4gICAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgICAgICAgdXJsOmAvc2hvcHBpbmcvcG9zdGVyL2dldFFyQ29kZUZvclBvc3Rlci5kb2AsXHJcbiAgICAgICAgICBkYXRhOntcclxuICAgICAgICAgICAgUXJDb2RlVHlwZTo4MCxcclxuICAgICAgICAgICAgZG9jY29kZTp0aGlzLmRhdGEuZGV0YWlsLmRvY2NvZGUsXHJcbiAgICAgICAgICAgIFJlZk9wZW5JZDp3eC5nbG9iYWxEYXRhLkZyb21PcGVuSWRcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIGlmIChlcnJvcil7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIHFyQ29kZVVybDpyZXN1bHQuUXJDb2RlXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgaGFuZGxlQ2xvc2UoKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgdmlzaWJsZTogZmFsc2VcclxuICAgICAgfSlcclxuICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2Nsb3NlJylcclxuICAgIH0sXHJcbiAgICBjbGVhclBvc3RlcigpIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBzaGFyZVBhdGg6JydcclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICBhc3luYyBkcmF3UGljKCkge1xyXG4gICAgICBpZiAodGhpcy5kYXRhLnNoYXJlUGF0aCkgeyAvL+WmguaenOW3sue7j+e7mOWItui/h+S6huacrOWcsOS/neWtmOacieWbvueJh+S4jemcgOimgemHjeaWsOe7mOWItlxyXG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICB2aXNpYmxlOiB0cnVlXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLnRyaWdnZXJFdmVudCgnaW5pdERhdGEnKVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmRhdGEuaXNMaXZlKXtcclxuICAgICAgICBpZiAoIWF3YWl0IHRoaXMuZ2V0TGl2ZVJvb21RckNvZGUoKSkgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5kYXRhLnFyQ29kZVVybCkge1xyXG4gICAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgICB0aXRsZTogJ+iOt+WPluS6jOe7tOeggeWksei0pe+8jOivt+eojeWQjuWGjeivlScsXHJcbiAgICAgICAgICBpY29uOidub25lJyxcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB3eC5zaG93TG9hZGluZyh7XHJcbiAgICAgICAgdGl0bGU6ICfnlJ/miJDkuK0nXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIGltZ0RyYXc6IHRoaXMuZ2V0SW1nRHJhdygpXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgIGdldEltZ0RyYXcoKSB7XHJcbiAgICAgIGxldCB7ZGV0YWlsLGxpdmVSb29tLHNlbGxlckxpc3QscXJDb2RlVXJsfSA9IHRoaXMuZGF0YTtcclxuICAgICAgbGV0IGlzTGl2ZSA9IHRoaXMuZGF0YS5pc0xpdmU7XHJcbiAgICAgIGNvbnNvbGUubG9nKGRldGFpbCxsaXZlUm9vbSxzZWxsZXJMaXN0LHFyQ29kZVVybCxpc0xpdmUpO1xyXG4gICAgICBsZXQgaW1nRHJhdyA9IHtcclxuICAgICAgICB3aWR0aDogJzc1MHJweCcsXHJcbiAgICAgICAgaGVpZ2h0OiAnMTMzNHJweCcsXHJcbiAgICAgICAgYmFja2dyb3VuZDogJyNmNWY1ZjUnLFxyXG4gICAgICAgIHZpZXdzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlXCIsXHJcbiAgICAgICAgICAgIFwidXJsXCI6IFwiL2Fzc2V0cy9pbWFnZXMvcG9zdGVyLWJnLnBuZ1wiLFxyXG4gICAgICAgICAgICBcImNzc1wiOiB7XHJcbiAgICAgICAgICAgICAgXCJ3aWR0aFwiOiBcIjc1MHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiMTMzNHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidG9wXCI6IFwiMHB4XCIsXHJcbiAgICAgICAgICAgICAgXCJsZWZ0XCI6IFwiMHB4XCIsXHJcbiAgICAgICAgICAgICAgXCJyb3RhdGVcIjogXCIwXCIsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdpbWFnZScsXHJcbiAgICAgICAgICAgIHVybDogaXNMaXZlP2xpdmVSb29tLlNoYXJlSW1nVW5pZFVybDpkZXRhaWwuY292ZXJJbWFnZVVybFswXSxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnMTBycHgnLFxyXG4gICAgICAgICAgICAgIGxlZnQ6ICcxMHJweCcsXHJcbiAgICAgICAgICAgICAgcmlnaHQ6ICcxMHJweCcsXHJcbiAgICAgICAgICAgICAgd2lkdGg6ICc3MzBycHgnLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzQ4MHJweCcsXHJcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTZycHgnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiAnaW1hZ2UnLFxyXG4gICAgICAgICAgICB1cmw6IChpc0xpdmU/bGl2ZVJvb20uQW5jaG9ySW1nVW5pZFVybDpzZWxsZXJMaXN0WzBdLnNlbGxlckhlYWRpbWd1cmwpIHx8ICcvYXNzZXRzL2ltYWdlcy9kZWZhdWx0LWF2YXRhci5wbmcnLFxyXG4gICAgICAgICAgICBjc3M6IHtcclxuICAgICAgICAgICAgICB0b3A6ICc0NDRycHgnLFxyXG4gICAgICAgICAgICAgIGxlZnQ6ICczMjhycHgnLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAnOTZycHgnLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzk2cnB4JyxcclxuICAgICAgICAgICAgICBib3JkZXJXaWR0aDogJzZycHgnLFxyXG4gICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnI0ZGRicsXHJcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnOTZycHgnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgdGV4dDogKGlzTGl2ZT9saXZlUm9vbS5BbmNob3JOYW1lOiBzZWxsZXJMaXN0WzBdLnNlbGxlck5hbWUpIHx8ICfmmLXnp7AnLFxyXG4gICAgICAgICAgICBjc3M6IHtcclxuICAgICAgICAgICAgICB0b3A6ICc1NzJycHgnLFxyXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnMjhycHgnLFxyXG4gICAgICAgICAgICAgIGxlZnQ6ICczNzVycHgnLFxyXG4gICAgICAgICAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICBjb2xvcjogJyMzYzNjM2MnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgdGV4dDogYOmCgOivt+aCqOWPguS4jiR7KGlzTGl2ZT8n55u05pKtJzon5rS75YqoJyl9YCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnNjE2cnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMzc1cnB4JyxcclxuICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgZm9udFNpemU6ICcyOHJweCcsXHJcbiAgICAgICAgICAgICAgY29sb3I6ICcjM2MzYzNjJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgIHRleHQ6IGAkeyhpc0xpdmU/bGl2ZVJvb20uUm9vbU5hbWU6ZGV0YWlsLnRpdGxlKSB8fCAn5rS75Yqo5qCH6aKYJ30gYCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnNjg0cnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMzc1cnB4JyxcclxuICAgICAgICAgICAgICBtYXhMaW5lczogMSxcclxuICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxyXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnNDRycHgnLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiAnIzNjM2MzYydcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC8vIHtcclxuICAgICAgICAgIC8vICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgLy8gICB0ZXh0OiBg5rS75Yqo5Lu3IO+/pWAsXHJcbiAgICAgICAgICAvLyAgIGNzczoge1xyXG4gICAgICAgICAgLy8gICAgIHRvcDogJzc4MHJweCcsXHJcbiAgICAgICAgICAvLyAgICAgbGVmdDogJzI1MHJweCcsXHJcbiAgICAgICAgICAvLyAgICAgbWF4TGluZXM6IDEsXHJcbiAgICAgICAgICAvLyAgICAgYWxpZ246ICdjZW50ZXInLFxyXG4gICAgICAgICAgLy8gICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcclxuICAgICAgICAgIC8vICAgICBmb250U2l6ZTogJzI4cnB4JyxcclxuICAgICAgICAgIC8vICAgICBjb2xvcjogJyNmMjMyMzInXHJcbiAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgIC8vIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgdGV4dDogYCR7KGlzTGl2ZT8nJzon77+lJytkZXRhaWwuc2FsZXNQcmljZSkgfHwgJyd9YCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnNzY1cnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMzc1cnB4JyxcclxuICAgICAgICAgICAgICBtYXhMaW5lczogMSxcclxuICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxyXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnNDRycHgnLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiAnI2YyMzIzMidcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2ltYWdlJyxcclxuICAgICAgICAgICAgdXJsOiBxckNvZGVVcmwsXHJcbiAgICAgICAgICAgIGNzczoge1xyXG4gICAgICAgICAgICAgIHRvcDogJzk3MHJweCcsXHJcbiAgICAgICAgICAgICAgbGVmdDogJzM5MHJweCcsXHJcbiAgICAgICAgICAgICAgd2lkdGg6ICczMDBycHgnLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzMwMHJweCdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgICB0ZXh0OiBg6ZW/5oyJ5LqM57u056CB6K+G5Yir5Y+C5LiOYCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnMTEwMHJweCcsXHJcbiAgICAgICAgICAgICAgbGVmdDogJzU1cnB4JyxcclxuICAgICAgICAgICAgICBmb250U2l6ZTogJzMycnB4JyxcclxuICAgICAgICAgICAgICBjb2xvcjogJyMzYzNjM2MnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXVxyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gaW1nRHJhdztcclxuICAgIH0sXHJcbiAgICBvbkltZ0VycigpIHtcclxuICAgICAgd3guaGlkZUxvYWRpbmcoKVxyXG4gICAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAgIHRpdGxlOiAn55Sf5oiQ5YiG5Lqr5Zu+5aSx6LSl77yM6K+35Yi35paw6aG16Z2i6YeN6K+VJ1xyXG4gICAgICB9KVxyXG4gICAgfSxcclxuICAgIG9uSW1nT0soZSkge1xyXG4gICAgICB3eC5oaWRlTG9hZGluZygpXHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgc2hhcmVQYXRoOiBlLmRldGFpbC5wYXRoLFxyXG4gICAgICAgIHZpc2libGU6IHRydWUsXHJcbiAgICAgIH0pXHJcbiAgICAgIC8v6YCa55+l5aSW6YOo57uY5Yi25a6M5oiQ77yM6YeN572uaXNDYW5EcmF35Li6ZmFsc2VcclxuICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2luaXREYXRhJylcclxuICAgIH0sXHJcbiAgICBwcmV2ZW50RGVmYXVsdCgpIHsgfSxcclxuICAgIC8vIOS/neWtmOWbvueJh1xyXG4gICAgaGFuZGxlU2F2ZVBob3RvKCkge1xyXG4gICAgICB3eC5zaG93TG9hZGluZyh7XHJcbiAgICAgICAgdGl0bGU6ICfmraPlnKjkv53lrZguLi4nLFxyXG4gICAgICAgIG1hc2s6IHRydWVcclxuICAgICAgfSlcclxuICAgICAgd3guc2F2ZUltYWdlVG9QaG90b3NBbGJ1bSh7XHJcbiAgICAgICAgZmlsZVBhdGg6IHRoaXMuZGF0YS5zaGFyZVBhdGgsXHJcbiAgICAgICAgc3VjY2VzczogKCkgPT4ge1xyXG4gICAgICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICAgICAgdGl0bGU6ICfkv53lrZjmiJDlip8nXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2Nsb3NlJylcclxuICAgICAgICAgIH0sIDMwMClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhaWw6ICgpID0+IHtcclxuICAgICAgICAgIHd4LmdldFNldHRpbmcoe1xyXG4gICAgICAgICAgICBzdWNjZXNzOiByZXMgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBhdXRoU2V0dGluZyA9IHJlcy5hdXRoU2V0dGluZ1xyXG4gICAgICAgICAgICAgIGlmICghYXV0aFNldHRpbmdbJ3Njb3BlLndyaXRlUGhvdG9zQWxidW0nXSkge1xyXG4gICAgICAgICAgICAgICAgd3guc2hvd01vZGFsKHtcclxuICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmj5DnpLonLFxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50OiAn5oKo5pyq5byA5ZCv5L+d5a2Y5Zu+54mH5Yiw55u45YaM55qE5p2D6ZmQ77yM6K+354K55Ye756Gu5a6a5Y675byA5ZCv5p2D6ZmQ77yBJyxcclxuICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvbmZpcm0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHd4Lm9wZW5TZXR0aW5nKClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHd4LmhpZGVMb2FkaW5nKClcclxuICAgICAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJFdmVudCgnY2xvc2UnKVxyXG4gICAgICAgICAgfSwgMzAwKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbn0pXHJcbiJdfQ== |