@cloudbase/utilities 1.8.2 → 1.8.4

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.
@@ -1,206 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- 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;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.catchErrorsDecorator = void 0;
40
- var util_1 = require("../libs/util");
41
- var constants_1 = require("../constants");
42
- var isFirefox = false;
43
- if (typeof navigator !== 'undefined' && navigator.userAgent) {
44
- isFirefox = navigator.userAgent.indexOf('Firefox') !== -1;
45
- }
46
- var REG_STACK_DECORATE = isFirefox
47
- ? /(\.js\/)?__decorate(\$\d+)?<@.*\d$/
48
- : /(\/\w+\.js\.)?__decorate(\$\d+)?\s*\(.*\)$/;
49
- var REG_STACK_LINK = /https?\:\/\/.+\:\d*\/.*\.js\:\d+\:\d+/;
50
- function catchErrorsDecorator(options) {
51
- var _a = options.mode, mode = _a === void 0 ? 'async' : _a, _b = options.customInfo, customInfo = _b === void 0 ? {} : _b, title = options.title, _c = options.messages, messages = _c === void 0 ? [] : _c;
52
- return function (target, methodName, descriptor) {
53
- if (!constants_1.IS_DEBUG_MODE) {
54
- return;
55
- }
56
- var className = customInfo.className || target.constructor.name;
57
- var fnName = customInfo.methodName || methodName;
58
- var fn = descriptor.value;
59
- var sourceLink = getSourceLink(new Error());
60
- if (mode === 'sync') {
61
- descriptor.value = function () {
62
- var args = [];
63
- for (var _i = 0; _i < arguments.length; _i++) {
64
- args[_i] = arguments[_i];
65
- }
66
- var innerErr = getRewritedError({
67
- err: new Error(),
68
- className: className,
69
- methodName: fnName,
70
- sourceLink: sourceLink,
71
- });
72
- try {
73
- return fn.apply(this, args);
74
- }
75
- catch (err) {
76
- var failErr = err;
77
- var errMsg = err.message;
78
- var logs = {
79
- title: title || "".concat(className, ".").concat(fnName, " failed"),
80
- content: [{
81
- type: 'error',
82
- body: err,
83
- }],
84
- };
85
- if (errMsg && /^\{.*\}$/.test(errMsg)) {
86
- var msg = JSON.parse(errMsg);
87
- logs.subtitle = errMsg;
88
- if (msg.code) {
89
- if (innerErr) {
90
- innerErr.code = msg.code;
91
- innerErr.msg = msg.msg;
92
- }
93
- else {
94
- err.code = msg.code;
95
- err.message = msg.msg;
96
- }
97
- failErr = innerErr || err;
98
- logs.content = messages.map(function (msg) { return ({
99
- type: 'info',
100
- body: msg,
101
- }); });
102
- }
103
- }
104
- (0, util_1.printGroupLog)(logs);
105
- throw failErr;
106
- }
107
- };
108
- }
109
- else {
110
- descriptor.value = function () {
111
- var args = [];
112
- for (var _i = 0; _i < arguments.length; _i++) {
113
- args[_i] = arguments[_i];
114
- }
115
- return __awaiter(this, void 0, void 0, function () {
116
- var innerErr, err_1, failErr, errMsg, logs, msg;
117
- return __generator(this, function (_a) {
118
- switch (_a.label) {
119
- case 0:
120
- innerErr = getRewritedError({
121
- err: new Error(),
122
- className: className,
123
- methodName: fnName,
124
- sourceLink: sourceLink,
125
- });
126
- _a.label = 1;
127
- case 1:
128
- _a.trys.push([1, 3, , 4]);
129
- return [4, fn.apply(this, args)];
130
- case 2: return [2, _a.sent()];
131
- case 3:
132
- err_1 = _a.sent();
133
- failErr = err_1;
134
- errMsg = err_1.message;
135
- logs = {
136
- title: title || "".concat(className, ".").concat(fnName, " failed"),
137
- content: [{
138
- type: 'error',
139
- body: err_1,
140
- }],
141
- };
142
- if (errMsg && /^\{.*\}$/.test(errMsg)) {
143
- msg = JSON.parse(errMsg);
144
- logs.subtitle = msg;
145
- if (msg.code) {
146
- if (innerErr) {
147
- innerErr.code = msg.code;
148
- innerErr.message = msg.msg;
149
- }
150
- else {
151
- err_1.code = msg.code;
152
- err_1.message = msg.msg;
153
- }
154
- failErr = innerErr || err_1;
155
- logs.content = messages.map(function (msg) { return ({
156
- type: 'info',
157
- body: msg,
158
- }); });
159
- }
160
- }
161
- (0, util_1.printGroupLog)(logs);
162
- throw failErr;
163
- case 4: return [2];
164
- }
165
- });
166
- });
167
- };
168
- }
169
- };
170
- }
171
- exports.catchErrorsDecorator = catchErrorsDecorator;
172
- function getSourceLink(err) {
173
- var sourceLink = '';
174
- var outterErrStacks = err.stack.split('\n');
175
- var indexOfDecorator = outterErrStacks.findIndex(function (str) { return REG_STACK_DECORATE.test(str); });
176
- if (indexOfDecorator !== -1) {
177
- var match = REG_STACK_LINK.exec(outterErrStacks[indexOfDecorator + 1] || '');
178
- sourceLink = match ? match[0] : '';
179
- }
180
- return sourceLink;
181
- }
182
- function getRewritedError(options) {
183
- var err = options.err, className = options.className, methodName = options.methodName, sourceLink = options.sourceLink;
184
- if (!sourceLink) {
185
- return null;
186
- }
187
- var innerErrStack = err.stack.split('\n');
188
- var REG_STACK_INNER_METHOD = isFirefox
189
- ? /^catchErrorsDecorator\/<\/descriptor.value@.*\d$/
190
- : new RegExp("".concat(className, "\\.descriptor.value\\s*\\[as\\s").concat(methodName, "\\]\\s*\\(.*\\)$"));
191
- var REG_STACK_INNER_METHOD_WITHOUT_LINK = isFirefox
192
- ? /^catchErrorsDecorator\/<\/descriptor.value/
193
- : new RegExp("".concat(className, "\\.descriptor.value\\s*\\[as\\s").concat(methodName, "\\]"));
194
- var indexOfSource = innerErrStack.findIndex(function (str) { return REG_STACK_INNER_METHOD.test(str); });
195
- var innerErr;
196
- if (indexOfSource !== -1) {
197
- var realErrStack = innerErrStack.filter(function (v, i) { return i > indexOfSource; });
198
- realErrStack.unshift(innerErrStack[indexOfSource]
199
- .replace(REG_STACK_INNER_METHOD_WITHOUT_LINK, "".concat(className, ".").concat(methodName))
200
- .replace(REG_STACK_LINK, sourceLink));
201
- innerErr = new Error();
202
- innerErr.stack = "".concat(isFirefox ? '@debugger' : 'Error', "\n").concat(realErrStack.join('\n'));
203
- }
204
- return innerErr;
205
- }
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oZWxwZXJzL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EscUNBQTZDO0FBQzdDLDBDQUE2QztBQVk3QyxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFDdEIsSUFBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDLFNBQVMsRUFBRTtJQUMzRCxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Q0FDM0Q7QUFJRCxJQUFNLGtCQUFrQixHQUFHLFNBQVM7SUFDbEMsQ0FBQyxDQUFDLG9DQUFvQztJQUN0QyxDQUFDLENBQUMsNENBQTRDLENBQUM7QUFDakQsSUFBTSxjQUFjLEdBQUcsdUNBQXVDLENBQUM7QUFLL0QsU0FBZ0Isb0JBQW9CLENBQUMsT0FBcUM7SUFDaEUsSUFBQSxLQUEwRCxPQUFPLEtBQW5ELEVBQWQsSUFBSSxtQkFBRyxPQUFPLEtBQUEsRUFBRSxLQUEwQyxPQUFPLFdBQWxDLEVBQWYsVUFBVSxtQkFBRyxFQUFFLEtBQUEsRUFBRSxLQUFLLEdBQW9CLE9BQU8sTUFBM0IsRUFBRSxLQUFrQixPQUFPLFNBQVosRUFBYixRQUFRLG1CQUFHLEVBQUUsS0FBQSxDQUFhO0lBRTFFLE9BQU8sVUFDTCxNQUFXLEVBQ1gsVUFBa0IsRUFDbEIsVUFBNkM7UUFHN0MsSUFBSSxDQUFDLHlCQUFhLEVBQUU7WUFDbEIsT0FBTztTQUNSO1FBQ0QsSUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNsRSxJQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQztRQUNuRCxJQUFNLEVB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QUMsU0FBUyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFoQyxDQUFnQyxDQUFDLENBQUM7SUFDdkYsSUFBSSxRQUFlLENBQUM7SUFDcEIsSUFBSSxhQUFhLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFFeEIsSUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFDLENBQUMsRUFBRSxDQUFDLElBQUssT0FBQSxDQUFDLEdBQUcsYUFBYSxFQUFqQixDQUFpQixDQUFDLENBQUM7UUFDdkUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO2FBQzlDLE9BQU8sQ0FBQyxtQ0FBbUMsRUFBRSxVQUFHLFNBQVMsY0FBSSxVQUFVLENBQUUsQ0FBQzthQUMxRSxPQUFPLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDeEMsUUFBUSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDdkIsUUFBUSxDQUFDLEtBQUssR0FBRyxVQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLGVBQUssWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBRSxDQUFDO0tBQ3JGO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVzZWxlc3MtZXNjYXBlICovXG5pbXBvcnQgeyBwcmludEdyb3VwTG9nIH0gZnJvbSAnLi4vbGlicy91dGlsJztcbmltcG9ydCB7IElTX0RFQlVHX01PREUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5pbnRlcmZhY2UgSUNhdGNoRXJyb3JzRGVjb3JhdG9yT3B0aW9ucyB7XG4gIG1vZGU/OiAnc3luYycgfCAnYXN5bmMnO1xuICBjdXN0b21JbmZvPzoge1xuICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICBtZXRob2ROYW1lPzogc3RyaW5nO1xuICB9O1xuICB0aXRsZT86IHN0cmluZztcbiAgbWVzc2FnZXM/OiBzdHJpbmdbXTtcbn1cbi8vIGZpcmVmb3jnmoRzdGFja+agvOW8j+S4jmNocm9tZeS4jeWQjFxubGV0IGlzRmlyZWZveCA9IGZhbHNlO1xuaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIG5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgaXNGaXJlZm94ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdGaXJlZm94JykgIT09IC0xO1xufVxuLyoqXG4gKiBkZWNvcmF0ZeWcqHN0YWNr5Lit5LiA6Iis6YO954m55a6a55qE6KeE6IyDXG4gKi9cbmNvbnN0IFJFR19TVEFDS19ERUNPUkFURSA9IGlzRmlyZWZveFxuICA/IC8oXFwuanNcXC8pP19fZGVjb3JhdGUoXFwkXFxkKyk/PEAuKlxcZCQvXG4gIDogLyhcXC9cXHcrXFwuanNcXC4pP19fZGVjb3JhdGUoXFwkXFxkKyk/XFxzKlxcKC4qXFwpJC87XG5jb25zdCBSRUdfU1RBQ0tfTElOSyA9IC9odHRwcz9cXDpcXC9cXC8uK1xcOlxcZCpcXC8uKlxcLmpzXFw6XFxkK1xcOlxcZCsvO1xuLyoqXG4gKiBkZWJ1Z+aooeW8j+W8uuWMluaXpeW/l+S/oeaBr1xuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhdGNoRXJyb3JzRGVjb3JhdG9yKG9wdGlvbnM6IElDYXRjaEVycm9yc0RlY29yYXRvck9wdGlvbnMpIHtcbiAgY29uc3QgeyBtb2RlID0gJ2FzeW5jJywgY3VzdG9tSW5mbyA9IHt9LCB0aXRsZSwgbWVzc2FnZXMgPSBbXSB9ID0gb3B0aW9ucztcblxuICByZXR1cm4gZnVuY3Rpb24gKFxuICAgIHRhcmdldDogYW55LFxuICAgIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgICBkZXNjcmlwdG9yOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxGdW5jdGlvbj5cbiAgKSB7XG4gICAgLy8g55Sf5Lqn546v5aKD56aB55SoXG4gICAgaWYgKCFJU19ERUJVR19NT0RFKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNsYXNzTmFtZSA9IGN1c3RvbUluZm8uY2xhc3NOYW1lIHx8IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIGNvbnN0IGZuTmFtZSA9IGN1c3RvbUluZm8ubWV0aG9kTmFtZSB8fCBtZXRob2ROYW1lO1xuICAgIGNvbnN0IGZuID0gZGVzY3JpcHRvci52YWx1ZTtcblxuICAgIC8vIOiiq2RlY29yYXRvcuijhemlsOeahOa6kOeggWxpbmtcbiAgICAvLyDlnKhkZXNjcmlwdG9yLnZhbHVl5aSW6YOo5q2k5aSE5Yib5bu655qEc3RhY2vlsYLmrKHlj6/op6bovr7mupDnoIFcbiAgICAvLyDogIxkZXNjcmlwdG9yLnZhbHVl5YaF6YOo5pyJ5Y+v6IO955Sx5LqOc3RhY2vlpKrmt7Hml6Dms5Xop6bovr5cbiAgICBjb25zdCBzb3VyY2VMaW5rID0gZ2V0U291cmNlTGluayhuZXcgRXJyb3IoKSk7XG5cbiAgICBpZiAobW9kZSA9PT0gJ3N5bmMnKSB7XG4gICAgICBkZXNjcmlwdG9yLnZhbHVlID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIC8vIOatpOWkhOeahHN0YWNr5L2c55So5Li76KaB5piv5Li65LqG6I635Y+W6KKrZGVjb3JhdG9y6KOF6aWw55qE5rqQ56CBY2xhc3PlkoxtZXRob2TlkI3np7BcbiAgICAgICAgY29uc3QgaW5uZXJFcnI6IGFueSA9IGdldFJld3JpdGVkRXJyb3Ioe1xuICAgICAgICAgIGVycjogbmV3IEVycm9yKCksXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgIG1ldGhvZE5hbWU6IGZuTmFtZSxcbiAgICAgICAgICBzb3VyY2VMaW5rLFxuICAgICAgICB9KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGxldCBmYWlsRXJyID0gZXJyO1xuICAgICAgICAgIGNvbnN0IHsgbWVzc2FnZTogZXJyTXNnIH0gPSBlcnI7XG4gICAgICAgICAgY29uc3QgbG9nczogYW55ID0ge1xuICAgICAgICAgICAgdGl0bGU6IHRpdGxlIHx8IGAke2NsYXNzTmFtZX0uJHtmbk5hbWV9IGZhaWxlZGAsXG4gICAgICAgICAgICBjb250ZW50OiBbe1xuICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICBib2R5OiBlcnIsXG4gICAgICAgICAgICB9XSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8vIOWPqueJueauiuWkhOeQhlNES+S4muWKoemAu+i+keaKm+WHuueahOmUmeivry1KU09OIHN0cmluZ1xuICAgICAgICAgIGlmIChlcnJNc2cgJiYgL15cXHsuKlxcfSQvLnRlc3QoZXJyTXNnKSkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gSlNPTi5wYXJzZShlcnJNc2cpO1xuICAgICAgICAgICAgbG9ncy5zdWJ0aXRsZSA9IGVyck1zZztcbiAgICAgICAgICAgIGlmIChtc2cuY29kZSkge1xuICAgICAgICAgICAgICBpZiAoaW5uZXJFcnIpIHtcbiAgICAgICAgICAgICAgICBpbm5lckVyci5jb2RlID0gbXNnLmNvZGU7XG4gICAgICAgICAgICAgICAgaW5uZXJFcnIubXNnID0gbXNnLm1zZztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlcnIuY29kZSA9IG1zZy5jb2RlO1xuICAgICAgICAgICAgICAgIGVyci5tZXNzYWdlID0gbXNnLm1zZztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBmYWlsRXJyID0gaW5uZXJFcnIgfHwgZXJyO1xuICAgICAgICAgICAgICBsb2dzLmNvbnRlbnQgPSBtZXNzYWdlcy5tYXAobXNnID0+ICh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2luZm8nLFxuICAgICAgICAgICAgICAgIGJvZHk6IG1zZyxcbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBwcmludEdyb3VwTG9nKGxvZ3MpO1xuICAgICAgICAgIHRocm93IGZhaWxFcnI7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcbiAgICAgICAgY29uc3QgaW5uZXJFcnI6IGFueSA9IGdldFJld3JpdGVkRXJyb3Ioe1xuICAgICAgICAgIGVycjogbmV3IEVycm9yKCksXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgIG1ldGhvZE5hbWU6IGZuTmFtZSxcbiAgICAgICAgICBzb3VyY2VMaW5rLFxuICAgICAgICB9KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGxldCBmYWlsRXJyID0gZXJyO1xuICAgICAgICAgIGNvbnN0IHsgbWVzc2FnZTogZXJyTXNnIH0gPSBlcnI7XG4gICAgICAgICAgY29uc3QgbG9nczogYW55ID0ge1xuICAgICAgICAgICAgdGl0bGU6IHRpdGxlIHx8IGAke2NsYXNzTmFtZX0uJHtmbk5hbWV9IGZhaWxlZGAsXG4gICAgICAgICAgICBjb250ZW50OiBbe1xuICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICBib2R5OiBlcnIsXG4gICAgICAgICAgICB9XSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8vIOWPqueJueauiuWkhOeQhlNES+S4muWKoemAu+i+keaKm+WHuueahOmUmeivry1KU09OIHN0cmluZ1xuICAgICAgICAgIGlmIChlcnJNc2cgJiYgL15cXHsuKlxcfSQvLnRlc3QoZXJyTXNnKSkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gSlNPTi5wYXJzZShlcnJNc2cpO1xuICAgICAgICAgICAgbG9ncy5zdWJ0aXRsZSA9IG1zZztcbiAgICAgICAgICAgIGlmIChtc2cuY29kZSkge1xuICAgICAgICAgICAgICBpZiAoaW5uZXJFcnIpIHtcbiAgICAgICAgICAgICAgICBpbm5lckVyci5jb2RlID0gbXNnLmNvZGU7XG4gICAgICAgICAgICAgICAgaW5uZXJFcnIubWVzc2FnZSA9IG1zZy5tc2c7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXJyLmNvZGUgPSBtc2cuY29kZTtcbiAgICAgICAgICAgICAgICBlcnIubWVzc2FnZSA9IG1zZy5tc2c7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZmFpbEVyciA9IGlubmVyRXJyIHx8IGVycjtcbiAgICAgICAgICAgICAgbG9ncy5jb250ZW50ID0gbWVzc2FnZXMubWFwKG1zZyA9PiAoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdpbmZvJyxcbiAgICAgICAgICAgICAgICBib2R5OiBtc2csXG4gICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcHJpbnRHcm91cExvZyhsb2dzKTtcbiAgICAgICAgICB0aHJvdyBmYWlsRXJyO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiDlnKjljp/lp4vloIbmoIjkuK3mn6Xmib7oo4XppbDlmajmnaHnm67lubbov5Tlm57mupDnoIHpk77mjqVsaW5rXG4gKiBAcGFyYW0gZXJyXG4gKi9cbmZ1bmN0aW9uIGdldFNvdXJjZUxpbmsoZXJyOiBFcnJvcikge1xuICBsZXQgc291cmNlTGluayA9ICcnO1xuICBjb25zdCBvdXR0ZXJFcnJTdGFja3MgPSBlcnIuc3RhY2suc3BsaXQoJ1xcbicpO1xuICBjb25zdCBpbmRleE9mRGVjb3JhdG9yID0gb3V0dGVyRXJyU3RhY2tzLmZpbmRJbmRleChzdHIgPT4gUkVHX1NUQUNLX0RFQ09SQVRFLnRlc3Qoc3RyKSk7XG4gIGlmIChpbmRleE9mRGVjb3JhdG9yICE9PSAtMSkge1xuICAgIGNvbnN0IG1hdGNoID0gUkVHX1NUQUNLX0xJTksuZXhlYyhvdXR0ZXJFcnJTdGFja3NbaW5kZXhPZkRlY29yYXRvciArIDFdIHx8ICcnKTtcbiAgICBzb3VyY2VMaW5rID0gbWF0Y2ggPyBtYXRjaFswXSA6ICcnO1xuICB9XG4gIHJldHVybiBzb3VyY2VMaW5rO1xufVxuXG4vKipcbiAqIOWcqOWOn+Wni+WghuagiOS4reafpeaJvuijhemlsOWZqOadoeebru+8jOWJlOmZpOWFtuWQjueahOaXoOeUqOWghuagiO+8jOW5tuWwhumTvuaOpeabv+aNouS4uua6kOeggWxpbmtcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmZ1bmN0aW9uIGdldFJld3JpdGVkRXJyb3Iob3B0aW9uczoge1xuICBlcnI6IEVycm9yO1xuICBjbGFzc05hbWU6IHN0cmluZztcbiAgbWV0aG9kTmFtZTogc3RyaW5nO1xuICBzb3VyY2VMaW5rOiBzdHJpbmc7XG59KSB7XG4gIGNvbnN0IHsgZXJyLCBjbGFzc05hbWUsIG1ldGhvZE5hbWUsIHNvdXJjZUxpbmsgfSA9IG9wdGlvbnM7XG4gIC8vIOaJvuS4jeWIsOa6kOeggWxpbmvov5Tlm55udWxs77yM5ZCO57ut6YC76L6R5bCG5omT5Y2w5Y6f5aCG5qCI5L+h5oGvXG4gIGlmICghc291cmNlTGluaykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgaW5uZXJFcnJTdGFjayA9IGVyci5zdGFjay5zcGxpdCgnXFxuJyk7XG4gIGNvbnN0IFJFR19TVEFDS19JTk5FUl9NRVRIT0QgPSBpc0ZpcmVmb3hcbiAgICA/IC9eY2F0Y2hFcnJvcnNEZWNvcmF0b3JcXC88XFwvZGVzY3JpcHRvci52YWx1ZUAuKlxcZCQvXG4gICAgOiBuZXcgUmVnRXhwKGAke2NsYXNzTmFtZX1cXFxcLmRlc2NyaXB0b3IudmFsdWVcXFxccypcXFxcW2FzXFxcXHMke21ldGhvZE5hbWV9XFxcXF1cXFxccypcXFxcKC4qXFxcXCkkYCk7XG4gIGNvbnN0IFJFR19TVEFDS19JTk5FUl9NRVRIT0RfV0lUSE9VVF9MSU5LID0gaXNGaXJlZm94XG4gICAgPyAvXmNhdGNoRXJyb3JzRGVjb3JhdG9yXFwvPFxcL2Rlc2NyaXB0b3IudmFsdWUvXG4gICAgOiBuZXcgUmVnRXhwKGAke2NsYXNzTmFtZX1cXFxcLmRlc2NyaXB0b3IudmFsdWVcXFxccypcXFxcW2FzXFxcXHMke21ldGhvZE5hbWV9XFxcXF1gKTtcbiAgY29uc3QgaW5kZXhPZlNvdXJjZSA9IGlubmVyRXJyU3RhY2suZmluZEluZGV4KHN0ciA9PiBSRUdfU1RBQ0tfSU5ORVJfTUVUSE9ELnRlc3Qoc3RyKSk7XG4gIGxldCBpbm5lckVycjogRXJyb3I7XG4gIGlmIChpbmRleE9mU291cmNlICE9PSAtMSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCByZWFsRXJyU3RhY2sgPSBpbm5lckVyclN0YWNrLmZpbHRlcigodiwgaSkgPT4gaSA+IGluZGV4T2ZTb3VyY2UpO1xuICAgIHJlYWxFcnJTdGFjay51bnNoaWZ0KGlubmVyRXJyU3RhY2tbaW5kZXhPZlNvdXJjZV1cbiAgICAgIC5yZXBsYWNlKFJFR19TVEFDS19JTk5FUl9NRVRIT0RfV0lUSE9VVF9MSU5LLCBgJHtjbGFzc05hbWV9LiR7bWV0aG9kTmFtZX1gKVxuICAgICAgLnJlcGxhY2UoUkVHX1NUQUNLX0xJTkssIHNvdXJjZUxpbmspKTtcbiAgICBpbm5lckVyciA9IG5ldyBFcnJvcigpO1xuICAgIGlubmVyRXJyLnN0YWNrID0gYCR7aXNGaXJlZm94ID8gJ0BkZWJ1Z2dlcicgOiAnRXJyb3InfVxcbiR7cmVhbEVyclN0YWNrLmpvaW4oJ1xcbicpfWA7XG4gIH1cbiAgcmV0dXJuIGlubmVyRXJyO1xufVxuIl19
@@ -1,338 +0,0 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
- return new (P || (P = Promise))(function (resolve, reject) {
20
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- });
25
- };
26
- var __generator = (this && this.__generator) || function (thisArg, body) {
27
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
- function verb(n) { return function (v) { return step([n, v]); }; }
30
- function step(op) {
31
- if (f) throw new TypeError("Generator is already executing.");
32
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
33
- 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;
34
- if (y = 0, t) op = [op[0] & 2, t.value];
35
- switch (op[0]) {
36
- case 0: case 1: t = op; break;
37
- case 4: _.label++; return { value: op[1], done: false };
38
- case 5: _.label++; y = op[1]; op = [0]; continue;
39
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
- default:
41
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
- if (t[2]) _.ops.pop();
46
- _.trys.pop(); continue;
47
- }
48
- op = body.call(thisArg, _);
49
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
- }
52
- };
53
- Object.defineProperty(exports, "__esModule", { value: true });
54
- exports.CloudbaseCache = void 0;
55
- var adapter_interface_1 = require("@cloudbase/adapter-interface");
56
- var util_1 = require("./util");
57
- var constants_1 = require("../constants");
58
- var TcbCacheObject = (function (_super) {
59
- __extends(TcbCacheObject, _super);
60
- function TcbCacheObject(root) {
61
- var _this = _super.call(this) || this;
62
- _this._root = root;
63
- if (!root.tcbCacheObject) {
64
- root.tcbCacheObject = {};
65
- }
66
- return _this;
67
- }
68
- TcbCacheObject.prototype.setItem = function (key, value) {
69
- this._root.tcbCacheObject[key] = value;
70
- };
71
- TcbCacheObject.prototype.getItem = function (key) {
72
- return this._root.tcbCacheObject[key];
73
- };
74
- TcbCacheObject.prototype.removeItem = function (key) {
75
- delete this._root.tcbCacheObject[key];
76
- };
77
- TcbCacheObject.prototype.clear = function () {
78
- delete this._root.tcbCacheObject;
79
- };
80
- return TcbCacheObject;
81
- }(adapter_interface_1.AbstractStorage));
82
- function createStorage(persistence, adapter) {
83
- switch (persistence) {
84
- case 'local':
85
- if (!adapter.localStorage) {
86
- (0, util_1.printWarn)(constants_1.ERRORS.INVALID_PARAMS, 'localStorage is not supported on current platform');
87
- return new TcbCacheObject(adapter.root);
88
- }
89
- return adapter.localStorage;
90
- case 'none':
91
- return new TcbCacheObject(adapter.root);
92
- case 'session':
93
- if (!adapter.sessionStorage) {
94
- (0, util_1.printWarn)(constants_1.ERRORS.INVALID_PARAMS, 'sessionStorage is not supported on current platform');
95
- return new TcbCacheObject(adapter.root);
96
- }
97
- return adapter.sessionStorage;
98
- default:
99
- if (!adapter.localStorage) {
100
- (0, util_1.printWarn)(constants_1.ERRORS.INVALID_PARAMS, 'localStorage is not supported on current platform');
101
- return new TcbCacheObject(adapter.root);
102
- }
103
- return adapter.localStorage;
104
- }
105
- }
106
- var CloudbaseCache = (function () {
107
- function CloudbaseCache(config) {
108
- this.keys = {};
109
- var persistence = config.persistence, _a = config.platformInfo, platformInfo = _a === void 0 ? {} : _a, _b = config.keys, keys = _b === void 0 ? {} : _b, _c = config.alwaysLocalKeys, alwaysLocalKeys = _c === void 0 ? [] : _c;
110
- this._platformInfo = platformInfo;
111
- this._alwaysLocalKeys = alwaysLocalKeys;
112
- if (!this._storage) {
113
- this._persistence = platformInfo.adapter.primaryStorage || persistence;
114
- this._storage = createStorage(this._persistence, platformInfo.adapter);
115
- this.keys = keys;
116
- }
117
- }
118
- Object.defineProperty(CloudbaseCache.prototype, "mode", {
119
- get: function () {
120
- return this._storage.mode || 'sync';
121
- },
122
- enumerable: false,
123
- configurable: true
124
- });
125
- Object.defineProperty(CloudbaseCache.prototype, "persistence", {
126
- get: function () {
127
- return this._persistence;
128
- },
129
- enumerable: false,
130
- configurable: true
131
- });
132
- CloudbaseCache.prototype.updatePersistence = function (persistence) {
133
- if (this.mode === 'async') {
134
- (0, util_1.printWarn)(constants_1.ERRORS.INVALID_OPERATION, 'current platform\'s storage is asynchronous, please use updatePersistenceAsync insteed');
135
- return;
136
- }
137
- if (persistence === this._persistence) {
138
- return;
139
- }
140
- var isCurrentLocal = this._persistence === 'local';
141
- this._persistence = persistence;
142
- var storage = createStorage(persistence, this._platformInfo.adapter);
143
- for (var key in this.keys) {
144
- var name_1 = this.keys[key];
145
- if (isCurrentLocal && this._alwaysLocalKeys.includes(key)) {
146
- continue;
147
- }
148
- var val = this._storage.getItem(name_1);
149
- if (!(0, util_1.isUndefined)(val) && !(0, util_1.isNull)(val)) {
150
- storage.setItem(name_1, val);
151
- this._storage.removeItem(name_1);
152
- }
153
- }
154
- this._storage = storage;
155
- };
156
- CloudbaseCache.prototype.updatePersistenceAsync = function (persistence) {
157
- return __awaiter(this, void 0, void 0, function () {
158
- var isCurrentLocal, storage, _a, _b, _c, _i, key, name_2, val;
159
- return __generator(this, function (_d) {
160
- switch (_d.label) {
161
- case 0:
162
- if (persistence === this._persistence) {
163
- return [2];
164
- }
165
- isCurrentLocal = this._persistence === 'local';
166
- this._persistence = persistence;
167
- storage = createStorage(persistence, this._platformInfo.adapter);
168
- _a = this.keys;
169
- _b = [];
170
- for (_c in _a)
171
- _b.push(_c);
172
- _i = 0;
173
- _d.label = 1;
174
- case 1:
175
- if (!(_i < _b.length)) return [3, 5];
176
- _c = _b[_i];
177
- if (!(_c in _a)) return [3, 4];
178
- key = _c;
179
- name_2 = this.keys[key];
180
- if (isCurrentLocal && this._alwaysLocalKeys.includes(key)) {
181
- return [3, 4];
182
- }
183
- return [4, this._storage.getItem(name_2)];
184
- case 2:
185
- val = _d.sent();
186
- if (!(!(0, util_1.isUndefined)(val) && !(0, util_1.isNull)(val))) return [3, 4];
187
- storage.setItem(name_2, val);
188
- return [4, this._storage.removeItem(name_2)];
189
- case 3:
190
- _d.sent();
191
- _d.label = 4;
192
- case 4:
193
- _i++;
194
- return [3, 1];
195
- case 5:
196
- this._storage = storage;
197
- return [2];
198
- }
199
- });
200
- });
201
- };
202
- CloudbaseCache.prototype.setStore = function (key, value, version) {
203
- if (this.mode === 'async') {
204
- (0, util_1.printWarn)(constants_1.ERRORS.INVALID_OPERATION, 'current platform\'s storage is asynchronous, please use setStoreAsync insteed');
205
- return;
206
- }
207
- if (!this._storage) {
208
- return;
209
- }
210
- try {
211
- var val = {
212
- version: version || 'localCachev1',
213
- content: value,
214
- };
215
- this._storage.setItem(key, JSON.stringify(val));
216
- }
217
- catch (e) {
218
- throw new Error(JSON.stringify({
219
- code: constants_1.ERRORS.OPERATION_FAIL,
220
- msg: "[".concat((0, constants_1.getSdkName)(), "][").concat(constants_1.ERRORS.OPERATION_FAIL, "]setStore failed"),
221
- info: e,
222
- }));
223
- }
224
- return;
225
- };
226
- CloudbaseCache.prototype.setStoreAsync = function (key, value, version) {
227
- return __awaiter(this, void 0, void 0, function () {
228
- var val, e_1;
229
- return __generator(this, function (_a) {
230
- switch (_a.label) {
231
- case 0:
232
- if (!this._storage) {
233
- return [2];
234
- }
235
- _a.label = 1;
236
- case 1:
237
- _a.trys.push([1, 3, , 4]);
238
- val = {
239
- version: version || 'localCachev1',
240
- content: value,
241
- };
242
- return [4, this._storage.setItem(key, JSON.stringify(val))];
243
- case 2:
244
- _a.sent();
245
- return [3, 4];
246
- case 3:
247
- e_1 = _a.sent();
248
- return [2];
249
- case 4: return [2];
250
- }
251
- });
252
- });
253
- };
254
- CloudbaseCache.prototype.getStore = function (key, version) {
255
- var _a;
256
- if (this.mode === 'async') {
257
- (0, util_1.printWarn)(constants_1.ERRORS.INVALID_OPERATION, 'current platform\'s storage is asynchronous, please use getStoreAsync insteed');
258
- return;
259
- }
260
- try {
261
- if (typeof process !== 'undefined' && ((_a = process.env) === null || _a === void 0 ? void 0 : _a.tcb_token)) {
262
- return process.env.tcb_token;
263
- }
264
- if (!this._storage) {
265
- return '';
266
- }
267
- }
268
- catch (e) {
269
- return '';
270
- }
271
- version = version || 'localCachev1';
272
- var content = this._storage.getItem(key);
273
- if (!content) {
274
- return '';
275
- }
276
- if (content.indexOf(version) >= 0) {
277
- var d = JSON.parse(content);
278
- return d.content;
279
- }
280
- return '';
281
- };
282
- CloudbaseCache.prototype.getStoreAsync = function (key, version) {
283
- var _a;
284
- return __awaiter(this, void 0, void 0, function () {
285
- var content, d;
286
- return __generator(this, function (_b) {
287
- switch (_b.label) {
288
- case 0:
289
- try {
290
- if (typeof process !== 'undefined' && ((_a = process.env) === null || _a === void 0 ? void 0 : _a.tcb_token)) {
291
- return [2, process.env.tcb_token];
292
- }
293
- if (!this._storage) {
294
- return [2, ''];
295
- }
296
- }
297
- catch (e) {
298
- return [2, ''];
299
- }
300
- version = version || 'localCachev1';
301
- return [4, this._storage.getItem(key)];
302
- case 1:
303
- content = _b.sent();
304
- if (!content) {
305
- return [2, ''];
306
- }
307
- if (content.indexOf(version) >= 0) {
308
- d = JSON.parse(content);
309
- return [2, d.content];
310
- }
311
- return [2, ''];
312
- }
313
- });
314
- });
315
- };
316
- CloudbaseCache.prototype.removeStore = function (key) {
317
- if (this.mode === 'async') {
318
- (0, util_1.printWarn)(constants_1.ERRORS.INVALID_OPERATION, 'current platform\'s storage is asynchronous, please use removeStoreAsync insteed');
319
- return;
320
- }
321
- this._storage.removeItem(key);
322
- };
323
- CloudbaseCache.prototype.removeStoreAsync = function (key) {
324
- return __awaiter(this, void 0, void 0, function () {
325
- return __generator(this, function (_a) {
326
- switch (_a.label) {
327
- case 0: return [4, this._storage.removeItem(key)];
328
- case 1:
329
- _a.sent();
330
- return [2];
331
- }
332
- });
333
- });
334
- };
335
- return CloudbaseCache;
336
- }());
337
- exports.CloudbaseCache = CloudbaseCache;
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGlicy9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrRUFBc0c7QUFHdEcsK0JBQXdEO0FBQ3hELDBDQUFrRDtBQUtsRDtJQUE2QixrQ0FBZTtJQUUxQyx3QkFBWSxJQUFTO1FBQXJCLFlBQ0UsaUJBQU8sU0FLUjtRQUpDLEtBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1NBQzFCOztJQUNILENBQUM7SUFDTSxnQ0FBTyxHQUFkLFVBQWUsR0FBVyxFQUFFLEtBQVU7UUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3pDLENBQUM7SUFDTSxnQ0FBTyxHQUFkLFVBQWUsR0FBVztRQUN4QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFDTSxtQ0FBVSxHQUFqQixVQUFrQixHQUFXO1FBQzNCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNNLDhCQUFLLEdBQVo7UUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO0lBQ25DLENBQUM7SUFDSCxxQkFBQztBQUFELENBQUMsQUFyQkQsQ0FBNkIsbUNBQWUsR0FxQjNDO0FBSUQsU0FBUyxhQUFhLENBQUMsV0FBd0IsRUFBRSxPQUE0QjtJQUMzRSxRQUFRLFdBQVcsRUFBRTtRQUNuQixLQUFLLE9BQU87WUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFB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QU0sQ0FBQyxpQkFBaUIsRUFBRSxrRkFBa0YsQ0FBQyxDQUFDO1lBQ3hILE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDWSx5Q0FBZ0IsR0FBN0IsVUFBOEIsR0FBVzs7Ozs0QkFDdkMsV0FBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBQTs7d0JBQW5DLFNBQW1DLENBQUM7Ozs7O0tBQ3JDO0lBQ0gscUJBQUM7QUFBRCxDQUFDLEFBOUxELElBOExDO0FBOUxZLHdDQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RvcmFnZUludGVyZmFjZSwgQWJzdHJhY3RTdG9yYWdlLCBTREtBZGFwdGVySW50ZXJmYWNlIH0gZnJvbSAnQGNsb3VkYmFzZS9hZGFwdGVyLWludGVyZmFjZSc7XG5pbXBvcnQgeyBJQ2xvdWRiYXNlQ2FjaGUsIElDYWNoZUNvbmZpZyB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY2FjaGUnO1xuaW1wb3J0IHsgS1YsIFBlcnNpc3RlbmNlLCBJQ2xvdWRiYXNlUGxhdGZvcm1JbmZvIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcyc7XG5pbXBvcnQgeyBpc1VuZGVmaW5lZCwgaXNOdWxsLCBwcmludFdhcm4gfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgRVJST1JTLCBnZXRTZGtOYW1lIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuLyoqXG4gKiBwZXJzaXRlbmNlPW5vbmXml7bnmbvlvZXmgIHkv53lrZjlnKjlhoXlrZjkuK1cbiAqL1xuY2xhc3MgVGNiQ2FjaGVPYmplY3QgZXh0ZW5kcyBBYnN0cmFjdFN0b3JhZ2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF9yb290OiBhbnk7XG4gIGNvbnN0cnVjdG9yKHJvb3Q6IGFueSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fcm9vdCA9IHJvb3Q7XG4gICAgaWYgKCFyb290LnRjYkNhY2hlT2JqZWN0KSB7XG4gICAgICByb290LnRjYkNhY2hlT2JqZWN0ID0ge307XG4gICAgfVxuICB9XG4gIHB1YmxpYyBzZXRJdGVtKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fcm9vdC50Y2JDYWNoZU9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIGdldEl0ZW0oa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5fcm9vdC50Y2JDYWNoZU9iamVjdFtrZXldO1xuICB9XG4gIHB1YmxpYyByZW1vdmVJdGVtKGtleTogc3RyaW5nKSB7XG4gICAgZGVsZXRlIHRoaXMuX3Jvb3QudGNiQ2FjaGVPYmplY3Rba2V5XTtcbiAgfVxuICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgZGVsZXRlIHRoaXMuX3Jvb3QudGNiQ2FjaGVPYmplY3Q7XG4gIH1cbn1cbi8qKlxuICog5bel5Y6C5Ye95pWwXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVN0b3JhZ2UocGVyc2lzdGVuY2U6IFBlcnNpc3RlbmNlLCBhZGFwdGVyOiBTREtBZGFwdGVySW50ZXJmYWNlKTogU3RvcmFnZUludGVyZmFjZSB7XG4gIHN3aXRjaCAocGVyc2lzdGVuY2UpIHtcbiAgICBjYXNlICdsb2NhbCc6XG4gICAgICBpZiAoIWFkYXB0ZXIubG9jYWxTdG9yYWdlKSB7XG4gICAgICAgIHByaW50V2FybihFUlJPUlMuSU5WQUxJRF9QQVJBTVMsICdsb2NhbFN0b3JhZ2UgaXMgbm90IHN1cHBvcnRlZCBvbiBjdXJyZW50IHBsYXRmb3JtJyk7XG4gICAgICAgIC8vIOS4jeaUr+aMgWxvY2Fsc3RvcmFnZeeahOW5s+WPsOmZjee6p+S4um5vbmVcbiAgICAgICAgcmV0dXJuIG5ldyBUY2JDYWNoZU9iamVjdChhZGFwdGVyLnJvb3QpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFkYXB0ZXIubG9jYWxTdG9yYWdlO1xuICAgIGNhc2UgJ25vbmUnOlxuICAgICAgcmV0dXJuIG5ldyBUY2JDYWNoZU9iamVjdChhZGFwdGVyLnJvb3QpO1xuICAgIGNhc2UgJ3Nlc3Npb24nOlxuICAgICAgaWYgKCFhZGFwdGVyLnNlc3Npb25TdG9yYWdlKSB7XG4gICAgICAgIHByaW50V2FybihFUlJPUlMuSU5WQUxJRF9QQVJBTVMsICdzZXNzaW9uU3RvcmFnZSBpcyBub3Qgc3VwcG9ydGVkIG9uIGN1cnJlbnQgcGxhdGZvcm0nKTtcbiAgICAgICAgLy8g5LiN5pSv5oyBbG9jYWxzdG9yYWdl55qE5bmz5Y+w6ZmN57qn5Li6bm9uZVxuICAgICAgICByZXR1cm4gbmV3IFRjYkNhY2hlT2JqZWN0KGFkYXB0ZXIucm9vdCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWRhcHRlci5zZXNzaW9uU3RvcmFnZTtcbiAgICBkZWZhdWx0OlxuICAgICAgaWYgKCFhZGFwdGVyLmxvY2FsU3RvcmFnZSkge1xuICAgICAgICBwcmludFdhcm4oRVJST1JTLklOVkFMSURfUEFSQU1TLCAnbG9jYWxTdG9yYWdlIGlzIG5vdCBzdXBwb3J0ZWQgb24gY3VycmVudCBwbGF0Zm9ybScpO1xuICAgICAgICAvLyDkuI3mlK/mjIFsb2NhbHN0b3JhZ2XnmoTlubPlj7DpmY3nuqfkuLpub25lXG4gICAgICAgIHJldHVybiBuZXcgVGNiQ2FjaGVPYmplY3QoYWRhcHRlci5yb290KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhZGFwdGVyLmxvY2FsU3RvcmFnZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2xvdWRiYXNlQ2FjaGUgaW1wbGVtZW50cyBJQ2xvdWRiYXNlQ2FjaGUge1xuICBwdWJsaWMga2V5czogS1Y8c3RyaW5nPiA9IHt9O1xuXG4gIHByaXZhdGUgX3BlcnNpc3RlbmNlOiBQZXJzaXN0ZW5jZTtcbiAgcHJpdmF0ZSBfcGxhdGZvcm1JbmZvOiBJQ2xvdWRiYXNlUGxhdGZvcm1JbmZvO1xuICBwcml2YXRlIF9zdG9yYWdlOiBTdG9yYWdlSW50ZXJmYWNlO1xuICAvLyDlp4vnu4jlrZjlgqjlnKhsb2NhbHN0b3JhZ2XkuK3nmoRrZXnpm4blkIhcbiAgcHJpdmF0ZSBfYWx3YXlzTG9jYWxLZXlzOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IElDYWNoZUNvbmZpZykge1xuICAgIGNvbnN0IHsgcGVyc2lzdGVuY2UsIHBsYXRmb3JtSW5mbyA9IHt9LCBrZXlzID0ge30sIGFsd2F5c0xvY2FsS2V5cyA9IFtdIH0gPSBjb25maWc7XG4gICAgdGhpcy5fcGxhdGZvcm1JbmZvID0gcGxhdGZvcm1JbmZvO1xuICAgIHRoaXMuX2Fsd2F5c0xvY2FsS2V5cyA9IGFsd2F5c0xvY2FsS2V5cztcbiAgICBpZiAoIXRoaXMuX3N0b3JhZ2UpIHtcbiAgICAgIHRoaXMuX3BlcnNpc3RlbmNlID0gcGxhdGZvcm1JbmZvLmFkYXB0ZXIucHJpbWFyeVN0b3JhZ2UgfHwgcGVyc2lzdGVuY2U7XG4gICAgICB0aGlzLl9zdG9yYWdlID0gY3JlYXRlU3RvcmFnZSh0aGlzLl9wZXJzaXN0ZW5jZSwgcGxhdGZvcm1JbmZvLmFkYXB0ZXIpO1xuICAgICAgdGhpcy5rZXlzID0ga2V5cztcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBnZXR0ZXIgc3RvcmFnZeaooeW8jy3lkIzmraUv5byC5q2lXG4gICAqL1xuICBnZXQgbW9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RvcmFnZS5tb2RlIHx8ICdzeW5jJztcbiAgfVxuICBnZXQgcGVyc2lzdGVuY2UoKTogUGVyc2lzdGVuY2Uge1xuICAgIHJldHVybiB0aGlzLl9wZXJzaXN0ZW5jZTtcbiAgfVxuICAvKipcbiAgICog5Zyo5LiN5ZCMcGVyc2lzdGVuY2XkuYvpl7Tov4Hnp7vmlbDmja5cbiAgICogQHBhcmFtIHBlcnNpc3RlbmNlXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlUGVyc2lzdGVuY2UocGVyc2lzdGVuY2U6IFBlcnNpc3RlbmNlKSB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2FzeW5jJykge1xuICAgICAgcHJpbnRXYXJuKEVSUk9SUy5JTlZBTElEX09QRVJBVElPTiwgJ2N1cnJlbnQgcGxhdGZvcm1cXCdzIHN0b3JhZ2UgaXMgYXN5bmNocm9ub3VzLCBwbGVhc2UgdXNlIHVwZGF0ZVBlcnNpc3RlbmNlQXN5bmMgaW5zdGVlZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocGVyc2lzdGVuY2UgPT09IHRoaXMuX3BlcnNpc3RlbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGlzQ3VycmVudExvY2FsID0gdGhpcy5fcGVyc2lzdGVuY2UgPT09ICdsb2NhbCc7XG4gICAgdGhpcy5fcGVyc2lzdGVuY2UgPSBwZXJzaXN0ZW5jZTtcbiAgICBjb25zdCBzdG9yYWdlID0gY3JlYXRlU3RvcmFnZShwZXJzaXN0ZW5jZSwgdGhpcy5fcGxhdGZvcm1JbmZvLmFkYXB0ZXIpO1xuICAgIC8vIOWIh+aNonBlcnNpc3RlbmNl6YeN5paw5Yib5bu6c3RvcmFnZeWvueixoVxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMua2V5cykge1xuICAgICAgY29uc3QgbmFtZSA9IHRoaXMua2V5c1trZXldO1xuICAgICAgLy8g5aaC5p6c5b2T5YmN5Li6bG9jYWzlubbkuJRrZXnooqvorr7lrprkuLrlp4vnu4jlrZjlgqjlnKhsb2NhbHN0b3JhZ2XkuK3vvIzliJnkuI3ov4Hnp7tcbiAgICAgIGlmIChpc0N1cnJlbnRMb2NhbCAmJiB0aGlzLl9hbHdheXNMb2NhbEtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZhbCA9IHRoaXMuX3N0b3JhZ2UuZ2V0SXRlbShuYW1lKTtcbiAgICAgIGlmICghaXNVbmRlZmluZWQodmFsKSAmJiAhaXNOdWxsKHZhbCkpIHtcbiAgICAgICAgc3RvcmFnZS5zZXRJdGVtKG5hbWUsIHZhbCk7XG4gICAgICAgIHRoaXMuX3N0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fc3RvcmFnZSA9IHN0b3JhZ2U7XG4gIH1cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVBlcnNpc3RlbmNlQXN5bmMocGVyc2lzdGVuY2U6IFBlcnNpc3RlbmNlKSB7XG4gICAgaWYgKHBlcnNpc3RlbmNlID09PSB0aGlzLl9wZXJzaXN0ZW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpc0N1cnJlbnRMb2NhbCA9IHRoaXMuX3BlcnNpc3RlbmNlID09PSAnbG9jYWwnO1xuICAgIHRoaXMuX3BlcnNpc3RlbmNlID0gcGVyc2lzdGVuY2U7XG4gICAgY29uc3Qgc3RvcmFnZSA9IGNyZWF0ZVN0b3JhZ2UocGVyc2lzdGVuY2UsIHRoaXMuX3BsYXRmb3JtSW5mby5hZGFwdGVyKTtcbiAgICAvLyDliIfmjaJwZXJzaXN0ZW5jZemHjeaWsOWIm+W7unN0b3JhZ2Xlr7nosaFcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmtleXMpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmtleXNba2V5XTtcbiAgICAgIC8vIOWmguaenOW9k+WJjeS4umxvY2Fs5bm25LiUa2V56KKr6K6+5a6a5Li65aeL57uI5a2Y5YKo5ZyobG9jYWxzdG9yYWdl5Lit77yM5YiZ5LiN6L+B56e7XG4gICAgICBpZiAoaXNDdXJyZW50TG9jYWwgJiYgdGhpcy5fYWx3YXlzTG9jYWxLZXlzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCB2YWwgPSBhd2FpdCB0aGlzLl9zdG9yYWdlLmdldEl0ZW0obmFtZSk7XG4gICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbCkgJiYgIWlzTnVsbCh2YWwpKSB7XG4gICAgICAgIHN0b3JhZ2Uuc2V0SXRlbShuYW1lLCB2YWwpO1xuICAgICAgICBhd2FpdCB0aGlzLl9zdG9yYWdlLnJlbW92ZUl0ZW0obmFtZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3N0b3JhZ2UgPSBzdG9yYWdlO1xuICB9XG4gIHB1YmxpYyBzZXRTdG9yZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgdmVyc2lvbj86IGFueSkge1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdhc3luYycpIHtcbiAgICAgIHByaW50V2FybihFUlJPUlMuSU5WQUxJRF9PUEVSQVRJT04sICdjdXJyZW50IHBsYXRmb3JtXFwncyBzdG9yYWdlIGlzIGFzeW5jaHJvbm91cywgcGxlYXNlIHVzZSBzZXRTdG9yZUFzeW5jIGluc3RlZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9zdG9yYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHZhbCA9IHtcbiAgICAgICAgdmVyc2lvbjogdmVyc2lvbiB8fCAnbG9jYWxDYWNoZXYxJyxcbiAgICAgICAgY29udGVudDogdmFsdWUsXG4gICAgICB9O1xuICAgICAgdGhpcy5fc3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodmFsKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY29kZTogRVJST1JTLk9QRVJBVElPTl9GQUlMLFxuICAgICAgICBtc2c6IGBbJHtnZXRTZGtOYW1lKCl9XVske0VSUk9SUy5PUEVSQVRJT05fRkFJTH1dc2V0U3RvcmUgZmFpbGVkYCxcbiAgICAgICAgaW5mbzogZSxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cbiAgcHVibGljIGFzeW5jIHNldFN0b3JlQXN5bmMoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHZlcnNpb24/OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuX3N0b3JhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdmFsID0ge1xuICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uIHx8ICdsb2NhbENhY2hldjEnLFxuICAgICAgICBjb250ZW50OiB2YWx1ZSxcbiAgICAgIH07XG4gICAgICBhd2FpdCB0aGlzLl9zdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeSh2YWwpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG4gIHB1YmxpYyBnZXRTdG9yZShrZXk6IHN0cmluZywgdmVyc2lvbj86IHN0cmluZykge1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdhc3luYycpIHtcbiAgICAgIHByaW50V2FybihFUlJPUlMuSU5WQUxJRF9PUEVSQVRJT04sICdjdXJyZW50IHBsYXRmb3JtXFwncyBzdG9yYWdlIGlzIGFzeW5jaHJvbm91cywgcGxlYXNlIHVzZSBnZXRTdG9yZUFzeW5jIGluc3RlZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIOa1i+ivleeUqOS+i+S9v+eUqFxuICAgICAgaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudj8udGNiX3Rva2VuKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzLmVudi50Y2JfdG9rZW47XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5fc3RvcmFnZSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHZlcnNpb24gPSB2ZXJzaW9uIHx8ICdsb2NhbENhY2hldjEnO1xuXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuX3N0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgIGlmICghY29udGVudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmIChjb250ZW50LmluZGV4T2YodmVyc2lvbikgPj0gMCkge1xuICAgICAgY29uc3QgZCA9IEpTT04ucGFyc2UoY29udGVudCk7XG4gICAgICByZXR1cm4gZC5jb250ZW50O1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcHVibGljIGFzeW5jIGdldFN0b3JlQXN5bmMoa2V5OiBzdHJpbmcsIHZlcnNpb24/OiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgLy8g5rWL6K+V55So5L6L5L2/55SoXG4gICAgICBpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52Py50Y2JfdG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3MuZW52LnRjYl90b2tlbjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLl9zdG9yYWdlKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgdmVyc2lvbiA9IHZlcnNpb24gfHwgJ2xvY2FsQ2FjaGV2MSc7XG5cbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgdGhpcy5fc3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgaWYgKCFjb250ZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRlbnQuaW5kZXhPZih2ZXJzaW9uKSA+PSAwKSB7XG4gICAgICBjb25zdCBkID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgICAgIHJldHVybiBkLmNvbnRlbnQ7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuICBwdWJsaWMgcmVtb3ZlU3RvcmUoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnYXN5bmMnKSB7XG4gICAgICBwcmludFdhcm4oRVJST1JTLklOVkFMSURfT1BFUkFUSU9OLCAnY3VycmVudCBwbGF0Zm9ybVxcJ3Mgc3RvcmFnZSBpcyBhc3luY2hyb25vdXMsIHBsZWFzZSB1c2UgcmVtb3ZlU3RvcmVBc3luYyBpbnN0ZWVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3N0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICB9XG4gIHB1YmxpYyBhc3luYyByZW1vdmVTdG9yZUFzeW5jKGtleTogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy5fc3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gIH1cbn1cbiJdfQ==