@cloudbase/app 3.0.3 → 3.0.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.
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +32 -7
- package/dist/cjs/libs/request.d.ts +1 -0
- package/dist/cjs/libs/request.js +3 -2
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +32 -7
- package/dist/esm/libs/request.d.ts +1 -0
- package/dist/esm/libs/request.js +3 -2
- package/dist/miniprogram/index.js +1 -1
- package/package.json +4 -4
- package/src/index.ts +51 -7
- package/src/libs/request.ts +4 -2
package/dist/cjs/index.d.ts
CHANGED
package/dist/cjs/index.js
CHANGED
|
@@ -122,26 +122,28 @@ var Cloudbase = (function () {
|
|
|
122
122
|
configurable: true
|
|
123
123
|
});
|
|
124
124
|
Cloudbase.prototype.init = function (config) {
|
|
125
|
-
var _a;
|
|
125
|
+
var _a, _b, _c;
|
|
126
|
+
config.endPointMode = config.endPointMode || 'GATEWAY';
|
|
127
|
+
if (!adapter_1.Platform.adapter) {
|
|
128
|
+
this.useDefaultAdapter();
|
|
129
|
+
}
|
|
130
|
+
config = this.dealNodeAdapterConfig(config);
|
|
126
131
|
if (!config.env) {
|
|
127
132
|
throw new Error(JSON.stringify({
|
|
128
133
|
code: ERRORS.INVALID_PARAMS,
|
|
129
134
|
msg: 'env must not be specified',
|
|
130
135
|
}));
|
|
131
136
|
}
|
|
132
|
-
config.endPointMode = config.endPointMode || 'GATEWAY';
|
|
133
|
-
if (!adapter_1.Platform.adapter) {
|
|
134
|
-
this.useDefaultAdapter();
|
|
135
|
-
}
|
|
136
137
|
var reqConfig = {
|
|
137
138
|
timeout: config.timeout || 5000,
|
|
138
139
|
timeoutMsg: "[".concat((0, common_1.getSdkName)(), "][REQUEST TIMEOUT] request had been abort since didn't finished within").concat(config.timeout / 1000, "s"),
|
|
140
|
+
auth: config.auth,
|
|
139
141
|
};
|
|
140
142
|
this.requestClient = new adapter_1.Platform.adapter.reqClass(reqConfig);
|
|
141
143
|
this.cloudbaseConfig = __assign(__assign(__assign({}, DEFAULT_INIT_CONFIG), config), { i18n: (0, lang_1.i18nProxy)(adapter_1.Platform, config) });
|
|
142
144
|
delete this.cloudbaseConfig.lang;
|
|
143
145
|
this.cloudbaseConfig.timeout = this.formatTimeout(this.cloudbaseConfig.timeout);
|
|
144
|
-
var
|
|
146
|
+
var _d = this.cloudbaseConfig, env = _d.env, persistence = _d.persistence, debug = _d.debug, timeout = _d.timeout, oauthClient = _d.oauthClient, i18n = _d.i18n;
|
|
145
147
|
(0, cache_1.initCache)({ env: env, persistence: persistence, debug: debug, platformInfo: this.platform });
|
|
146
148
|
(0, common_1.setRegionLevelEndpoint)(env, config.region || '');
|
|
147
149
|
(0, common_1.setGatewayEndPointWithEnv)(env, common_1.DEFAULT_PROTOCOL, config.region || '');
|
|
@@ -154,10 +156,14 @@ var Cloudbase = (function () {
|
|
|
154
156
|
_fromApp: app,
|
|
155
157
|
i18n: i18n,
|
|
156
158
|
endPointMode: config.endPointMode,
|
|
159
|
+
auth: config.auth,
|
|
157
160
|
});
|
|
158
161
|
app.requestClient = this.requestClient;
|
|
159
162
|
(_a = this === null || this === void 0 ? void 0 : this.fire) === null || _a === void 0 ? void 0 : _a.call(this, 'cloudbase_init', app);
|
|
160
163
|
this.try2InitAuth(app);
|
|
164
|
+
if ((_b = adapter_1.Platform.adapter) === null || _b === void 0 ? void 0 : _b.nodeTool) {
|
|
165
|
+
(_c = adapter_1.Platform.adapter) === null || _c === void 0 ? void 0 : _c.nodeTool(app, this.cloudbaseConfig);
|
|
166
|
+
}
|
|
161
167
|
return app;
|
|
162
168
|
};
|
|
163
169
|
Cloudbase.prototype.updateConfig = function (config) {
|
|
@@ -258,6 +264,25 @@ var Cloudbase = (function () {
|
|
|
258
264
|
console.log('try2InitAuth error:', error);
|
|
259
265
|
}
|
|
260
266
|
};
|
|
267
|
+
Cloudbase.prototype.dealNodeAdapterConfig = function (config) {
|
|
268
|
+
var _a, _b;
|
|
269
|
+
if ((_a = adapter_1.Platform.adapter) === null || _a === void 0 ? void 0 : _a.getSecretInfo) {
|
|
270
|
+
var secretInfo = (_b = adapter_1.Platform.adapter) === null || _b === void 0 ? void 0 : _b.getSecretInfo(config);
|
|
271
|
+
config.auth = {
|
|
272
|
+
secretId: secretInfo.secretId,
|
|
273
|
+
secretKey: secretInfo.secretKey,
|
|
274
|
+
sessionToken: secretInfo.sessionToken,
|
|
275
|
+
secretType: secretInfo.secretType,
|
|
276
|
+
};
|
|
277
|
+
if (!config.env) {
|
|
278
|
+
config.env = secretInfo.env;
|
|
279
|
+
}
|
|
280
|
+
if (!config.accessKey && secretInfo.accessKey) {
|
|
281
|
+
config.accessKey = secretInfo.accessKey;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return config;
|
|
285
|
+
};
|
|
261
286
|
__decorate([
|
|
262
287
|
catchErrorsDecorator({
|
|
263
288
|
mode: 'sync',
|
|
@@ -292,4 +317,4 @@ var Cloudbase = (function () {
|
|
|
292
317
|
exports.cloudbase = new Cloudbase();
|
|
293
318
|
exports.cloudbase.useAdapters((0, adapter_1.getWxDefaultAdapter)());
|
|
294
319
|
exports.default = exports.cloudbase;
|
|
295
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBMEU7QUFhMUUsOENBQWtFO0FBQ2xFLDBDQUE4RDtBQUc5RCxzQ0FBd0U7QUFFeEUsMENBQStEO0FBQy9ELDZDQVcyQjtBQUMzQixvQ0FBOEM7QUFDOUMsNkNBQW9EO0FBQTNDLHlHQUFBLGVBQWUsT0FBQTtBQUN4QixvQ0FBbUM7QUFBMUIsNkZBQUEsS0FBSyxPQUFBO0FBQ04sSUFBQSxXQUFXLEdBQXdCLG9CQUFRLFlBQWhDLEVBQUUsaUJBQWlCLEdBQUssb0JBQVEsa0JBQWIsQ0FBYTtBQUMzQyxJQUFBLE1BQU0sR0FBeUIscUJBQVMsT0FBbEMsRUFBRSxrQkFBa0IsR0FBSyxxQkFBUyxtQkFBZCxDQUFjO0FBQ3hDLElBQUEsU0FBUyxHQUFLLGlCQUFLLFVBQVYsQ0FBVTtBQUNuQixJQUFBLG9CQUFvQixHQUFLLG1CQUFPLHFCQUFaLENBQVk7QUFLeEMsSUFBTSxtQkFBbUIsR0FBOEI7SUFDckQsT0FBTyxFQUFFLEtBQUs7SUFDZCxXQUFXLEVBQUUsT0FBTztDQUNyQixDQUFBO0FBR0QsSUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUE7QUFFbEMsSUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFBO0FBRXZCLElBQU0sWUFBWSxHQUE0QixFQUFFLENBQUE7QUFFaEQ7SUFVRSxtQkFBWSxNQUF5QjtRQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFBO1FBQzdELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBQSxzQkFBYSxHQUFFLENBQUE7SUFDaEMsQ0FBQztJQUVELHNCQUFJLDZCQUFNO2FBQVY7WUFDRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUE7UUFDN0IsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwrQkFBUTthQUFaO1lBQ0UsT0FBTyxrQkFBUSxDQUFBO1FBQ2pCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksNEJBQUs7YUFBVDtZQUNFLE9BQU8sSUFBQSx1QkFBZSxFQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbEQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxpQ0FBVTthQUFkO1lBQ0UsT0FBTyxJQUFBLHFCQUFhLEVBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNoRCxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDhCQUFPO2FBQVg7WUFDRSxPQUFPLElBQUEsMkJBQWlCLEVBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNwRCxDQUFDOzs7T0FBQTtJQVlNLHdCQUFJLEdBQUosVUFBSyxNQUEyQzs7UUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQzdCLElBQUksRUFBRSxNQUFNLENBQUMsY0FBYztnQkFDM0IsR0FBRyxFQUFFLDJCQUEyQjthQUNqQyxDQUFDLENBQUUsQ0FBQTtTQUNMO1FBQ0QsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxJQUFJLFNBQVMsQ0FBQTtRQUd0RCxJQUFJLENBQUMsa0JBQVEsQ0FBQyxPQUFPLEVBQUU7WUFDckIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7U0FDekI7UUFFRCxJQUFNLFNBQVMsR0FBbUI7WUFDaEMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSTtZQUMvQixVQUFVLEVBQUUsV0FBSSxJQUFBLG1CQUFVLEdBQUUsbUZBQzFCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxNQUNwQjtTQUNKLENBQUE7UUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksa0JBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBRTdELElBQUksQ0FBQyxlQUFlLGtDQUNmLG1CQUFtQixHQUNuQixNQUFNLEtBQ1QsSUFBSSxFQUFFLElBQUEsZ0JBQVMsRUFBQyxrQkFBUSxFQUFFLE1BQU0sQ0FBQyxHQUNsQyxDQUFBO1FBRUQsT0FBUSxJQUFJLENBQUMsZUFBdUIsQ0FBQyxJQUFJLENBQUE7UUFFekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRXpFLElBQUEsS0FBMEQsSUFBSSxDQUFDLGVBQWUsRUFBNUUsR0FBRyxTQUFBLEVBQUUsV0FBVyxpQkFBQSxFQUFFLEtBQUssV0FBQSxFQUFFLE9BQU8sYUFBQSxFQUFFLFdBQVcsaUJBQUEsRUFBRSxJQUFJLFVBQXlCLENBQUE7UUFDcEYsSUFBQSxpQkFBUyxFQUFDLEVBQUUsR0FBRyxLQUFBLEVBQUUsV0FBVyxhQUFBLEVBQUUsS0FBSyxPQUFBLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBRW5FLElBQUEsK0JBQXNCLEVBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUE7UUFDaEQsSUFBQSxrQ0FBeUIsRUFBQyxHQUFHLEVBQUUseUJBQWdCLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUVyRSxJQUFNLEdBQUcsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDL0MsSUFBQSxxQkFBVyxFQUFDO1lBQ1YsR0FBRyxLQUFBO1lBQ0gsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRTtZQUMzQixPQUFPLFNBQUE7WUFDUCxXQUFXLGFBQUE7WUFDWCxRQUFRLEVBQUUsR0FBRztZQUNiLElBQUksTUFBQTtZQUNKLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtTQUNsQyxDQUFDLENBQUE7UUFDRixHQUFHLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3JDO1FBQUEsTUFBQyxJQUFZLGFBQVosSUFBSSx1QkFBSixJQUFJLENBQVUsSUFBSSxxREFBRyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUU3QyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRXRCLE9BQU8sR0FBRyxDQUFBO0lBQ1osQ0FBQztJQUVNLGdDQUFZLEdBQW5CLFVBQW9CLE1BQWdDO1FBQzFDLElBQUEsV0FBVyxHQUFZLE1BQU0sWUFBbEIsRUFBRSxLQUFLLEdBQUssTUFBTSxNQUFYLENBQVc7UUFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUVsQyxJQUFBLGlCQUFTLEVBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsV0FBVyxhQUFBLEVBQUUsS0FBSyxPQUFBLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQy9GLENBQUM7SUFFTSw4QkFBVSxHQUFqQixVQUFrQixJQUFXOztRQUMzQixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksTUFBSyxNQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSwwQ0FBRSxJQUFJLENBQUE7WUFBRSxPQUFNO1FBRTdELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7SUFDdkMsQ0FBQztJQUVNLHFDQUFpQixHQUF4QixVQUF5QixHQUF3QjtRQUMvQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQTtJQUM5QixDQUFDO0lBVVksbUNBQWUsR0FBZixVQUFnQixJQUFZLEVBQUUsSUFBUzs7Ozs7O3dCQUM1QyxHQUFHLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO3dCQUM5QixJQUFJLENBQUMsR0FBRyxFQUFFOzRCQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQ0FDN0IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxjQUFjO2dDQUMzQixHQUFHLEVBQUUsb0JBQWEsSUFBSSxzQ0FBbUM7NkJBQzFELENBQUMsQ0FBRSxDQUFBO3lCQUNMO3dCQUVNLFdBQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUE7NEJBQW5DLFdBQU8sU0FBNEIsRUFBQTs7OztLQUNwQztJQUVNLCtCQUFXLEdBQWxCLFVBQW1CLFFBQStDLEVBQUUsT0FBYTtRQUN6RSxJQUFBLEtBQXVCLFdBQVcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxFQUF6RCxPQUFPLGFBQUEsRUFBRSxPQUFPLGFBQXlDLENBQUE7UUFDakUsT0FBTyxJQUFJLENBQUMsa0JBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBOEIsQ0FBQyxDQUFBO1FBQzlELE9BQU8sSUFBSSxDQUFDLGtCQUFRLENBQUMsT0FBTyxHQUFHLE9BQWlCLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBRU0sZ0NBQVksR0FBbkIsVUFBb0IsSUFBb0I7UUFDdEMsSUFBQSx3QkFBWSxFQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBRU0scUNBQWlCLEdBQXhCLFVBQXlCLFNBQThCO1FBQ3JELElBQUEsNkJBQWlCLEVBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFTSxtQ0FBZSxHQUF0QixVQUF1QixPQUFlO1FBQ3BDLElBQUEsc0JBQWEsRUFBQyxPQUFPLENBQUMsQ0FBQTtRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtJQUN4QixDQUFDO0lBRU0sbUNBQWUsR0FBdEIsVUFBdUIsSUFBWTtRQUNqQyxJQUFBLG1CQUFVLEVBQUMsSUFBSSxDQUFDLENBQUE7SUFDbEIsQ0FBQztJQUdNLG9DQUFnQixHQUF2QixVQUF3QixHQUFXLEVBQUUsUUFBMkI7UUFDOUQsSUFBQSx3QkFBZSxFQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLFVBQUEsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDN0YsQ0FBQztJQUdNLDJDQUF1QixHQUE5QixVQUErQixLQUEwQjtRQUN2RCxJQUFBLHdCQUFlLEVBQUM7WUFDZCxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHO1lBQ3BCLFdBQVcsRUFBRSxLQUFLLENBQUMsR0FBRztZQUN0QixPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDbEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1NBQ3pCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFHTSxzQ0FBa0IsR0FBekIsVUFBMEIsR0FBZ0I7UUFDeEMsSUFBTSxJQUFJLEdBQUcsSUFBQSx3QkFBZSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQ2xELE9BQU87WUFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDdEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3hCLENBQUE7SUFDSCxDQUFDO0lBR00sZ0NBQVksR0FBbkIsVUFBb0IsR0FBRztRQUNyQixPQUFPLGlCQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFFTyxxQ0FBaUIsR0FBekI7UUFDUSxJQUFBLEtBQXVCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFuRCxPQUFPLGFBQUEsRUFBRSxPQUFPLGFBQW1DLENBQUE7UUFDM0Qsa0JBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBOEIsQ0FBQTtRQUNqRCxrQkFBUSxDQUFDLE9BQU8sR0FBRyxPQUFpQixDQUFBO0lBQ3RDLENBQUM7SUFFTyxpQ0FBYSxHQUFyQixVQUFzQixPQUFlO1FBQ25DLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxPQUFPLEdBQUcsV0FBVztnQkFDeEIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsOENBQThDLENBQUMsQ0FBQTtnQkFDaEYsT0FBTyxXQUFXLENBQUE7WUFDcEIsS0FBSyxPQUFPLEdBQUcsV0FBVztnQkFDeEIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsMkNBQTJDLENBQUMsQ0FBQTtnQkFDN0UsT0FBTyxXQUFXLENBQUE7WUFDcEI7Z0JBQ0UsT0FBTyxPQUFPLENBQUE7U0FDakI7SUFDSCxDQUFDO0lBRU8sZ0NBQVksR0FBcEIsVUFBcUIsR0FBRztRQUN0QixJQUFJO1lBQ0YsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFBO1NBQ1g7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUE7U0FDMUM7SUFDSCxDQUFDO0lBNUtNO1FBVk4sb0JBQW9CLENBQUM7WUFDcEIsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsaUJBQWlCO1lBQ3hCLFFBQVEsRUFBRTtnQkFDUixVQUFVO2dCQUNWLHNDQUFzQztnQkFDdEMsbUxBQW1MO2dCQUNuTCxzS0FBNkIsa0JBQWtCLENBQUU7YUFDbEQ7U0FDRixDQUFDOzs7d0NBQ3dELFNBQVM7eUNBdURsRTtJQTRCWTtRQVRaLG9CQUFvQixDQUFDO1lBQ3BCLEtBQUssRUFBRSxVQUFVO1lBQ2pCLFFBQVEsRUFBRTtnQkFDUixVQUFVO2dCQUNWLHVDQUF1QztnQkFDdkMsZ0RBQWdEO2dCQUNoRCxzS0FBNkIsa0JBQWtCLENBQUU7YUFDbEQ7U0FDRixDQUFDOzs7O29EQVdEO0lBZ0ZILGdCQUFDO0NBQUEsQUE1TkQsSUE0TkM7QUFNWSxRQUFBLFNBQVMsR0FBZSxJQUFJLFNBQVMsRUFBRSxDQUFBO0FBRXBELGlCQUFTLENBQUMsV0FBVyxDQUFDLElBQUEsNkJBQW1CLEdBQUUsQ0FBQyxDQUFBO0FBRzVDLGtCQUFlLGlCQUFTLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGFwdGVycywgY29uc3RhbnRzLCB1dGlscywgaGVscGVycyB9IGZyb20gJ0BjbG91ZGJhc2UvdXRpbGl0aWVzJ1xuaW1wb3J0IHsgU0RLQWRhcHRlckludGVyZmFjZSwgQ2xvdWRiYXNlQWRhcHRlciwgSVJlcXVlc3RDb25maWcgfSBmcm9tICdAY2xvdWRiYXNlL2FkYXB0ZXItaW50ZXJmYWNlJ1xuaW1wb3J0IHtcbiAgSUNsb3VkYmFzZUNvbmZpZyxcbiAgSUNsb3VkYmFzZVVwZ3JhZGVkQ29uZmlnLFxuICBJQ2xvdWRiYXNlLFxuICBJQ2xvdWRiYXNlRXh0ZW5zaW9uLFxuICBLVixcbiAgSUNsb3VkYmFzZVBsYXRmb3JtSW5mbyxcbiAgRW5kUG9pbnRLZXksXG4gIElDbG91ZGJhc2VBcGlzLFxufSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUF1dGggfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2F1dGgnXG5pbXBvcnQgeyByZWdpc3RlckNvbXBvbmVudCwgcmVnaXN0ZXJIb29rIH0gZnJvbSAnLi9saWJzL2NvbXBvbmVudCdcbmltcG9ydCB7IGdldFd4RGVmYXVsdEFkYXB0ZXIsIFBsYXRmb3JtIH0gZnJvbSAnLi9saWJzL2FkYXB0ZXInXG5pbXBvcnQgeyBJQ2xvdWRiYXNlQ29tcG9uZW50LCBJQ2xvdWRiYXNlSG9vayB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29tcG9uZW50J1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNhY2hlIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9jYWNoZSdcbmltcG9ydCB7IGluaXRDYWNoZSwgZ2V0Q2FjaGVCeUVudklkLCBnZXRMb2NhbENhY2hlIH0gZnJvbSAnLi9saWJzL2NhY2hlJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZVJlcXVlc3QgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL3JlcXVlc3QnXG5pbXBvcnQgeyBpbml0UmVxdWVzdCwgZ2V0UmVxdWVzdEJ5RW52SWQgfSBmcm9tICcuL2xpYnMvcmVxdWVzdCdcbmltcG9ydCB7XG4gIGdldFNka05hbWUsXG4gIHNldFNka1ZlcnNpb24sXG4gIHNldFJlZ2lvbkxldmVsRW5kcG9pbnQsXG4gIHNldFNka05hbWUsXG4gIHNldEdhdGV3YXlFbmRQb2ludFdpdGhFbnYsXG4gIHR5cGUgSVNldEVuZFBvaW50V2l0aEtleSxcbiAgc2V0RW5kUG9pbnRJbmZvLFxuICBnZXRFbmRQb2ludEluZm8sXG4gIGdldFNka1ZlcnNpb24sXG4gIERFRkFVTFRfUFJPVE9DT0wsXG59IGZyb20gJy4vY29uc3RhbnRzL2NvbW1vbidcbmltcG9ydCB7IGkxOG5Qcm94eSwgTEFOR1MgfSBmcm9tICcuL2xpYnMvbGFuZydcbmV4cG9ydCB7IGdldEJhc2VFbmRQb2ludCB9IGZyb20gJy4vY29uc3RhbnRzL2NvbW1vbidcbmV4cG9ydCB7IExBTkdTIH0gZnJvbSAnLi9saWJzL2xhbmcnXG5jb25zdCB7IHVzZUFkYXB0ZXJzLCB1c2VEZWZhdWx0QWRhcHRlciB9ID0gYWRhcHRlcnNcbmNvbnN0IHsgRVJST1JTLCBDT01NVU5JVFlfU0lURV9VUkwgfSA9IGNvbnN0YW50c1xuY29uc3QgeyBwcmludFdhcm4gfSA9IHV0aWxzXG5jb25zdCB7IGNhdGNoRXJyb3JzRGVjb3JhdG9yIH0gPSBoZWxwZXJzXG5cbi8qKlxuICogQGNvbnN0YW50IOm7mOiupOmFjee9rlxuICovXG5jb25zdCBERUZBVUxUX0lOSVRfQ09ORklHOiBQYXJ0aWFsPElDbG91ZGJhc2VDb25maWc+ID0ge1xuICB0aW1lb3V0OiAxNTAwMCxcbiAgcGVyc2lzdGVuY2U6ICdsb2NhbCcsIC8vIOaMgeS5heWMluWtmOWCqOexu+Wei1xufVxuXG4vLyB0aW1lb3V05LiK6ZmQMTDliIbpkp9cbmNvbnN0IE1BWF9USU1FT1VUID0gMTAwMCAqIDYwICogMTBcbi8vIHRpbWVvdXTkuIvpmZAxMDBtc1xuY29uc3QgTUlOX1RJTUVPVVQgPSAxMDBcblxuY29uc3QgZXh0ZW5zaW9uTWFwOiBLVjxJQ2xvdWRiYXNlRXh0ZW5zaW9uPiA9IHt9XG5cbmNsYXNzIENsb3VkYmFzZSBpbXBsZW1lbnRzIElDbG91ZGJhc2Uge1xuICBwdWJsaWMgYXV0aEluc3RhbmNlOiBJQ2xvdWRiYXNlQXV0aFxuICBwdWJsaWMgb2F1dGhJbnN0YW5jZTogYW55XG4gIHB1YmxpYyByZXF1ZXN0Q2xpZW50OiBhbnlcbiAgcHVibGljIG9hdXRoQ2xpZW50OiBhbnlcbiAgcHVibGljIHZlcnNpb246IHN0cmluZ1xuICBwdWJsaWMgYXV0aDogSUNsb3VkYmFzZVsnYXV0aCddICYgSUNsb3VkYmFzZUF1dGhcbiAgcHVibGljIGFwaXM6IElDbG91ZGJhc2VBcGlzXG4gIHByaXZhdGUgY2xvdWRiYXNlQ29uZmlnOiBJQ2xvdWRiYXNlQ29uZmlnXG5cbiAgY29uc3RydWN0b3IoY29uZmlnPzogSUNsb3VkYmFzZUNvbmZpZykge1xuICAgIHRoaXMuY2xvdWRiYXNlQ29uZmlnID0gY29uZmlnID8gY29uZmlnIDogdGhpcy5jbG91ZGJhc2VDb25maWdcbiAgICB0aGlzLmF1dGhJbnN0YW5jZSA9IG51bGxcbiAgICB0aGlzLm9hdXRoSW5zdGFuY2UgPSBudWxsXG4gICAgdGhpcy52ZXJzaW9uID0gZ2V0U2RrVmVyc2lvbigpXG4gIH1cblxuICBnZXQgY29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLmNsb3VkYmFzZUNvbmZpZ1xuICB9XG5cbiAgZ2V0IHBsYXRmb3JtKCk6IElDbG91ZGJhc2VQbGF0Zm9ybUluZm8ge1xuICAgIHJldHVybiBQbGF0Zm9ybVxuICB9XG5cbiAgZ2V0IGNhY2hlKCk6IElDbG91ZGJhc2VDYWNoZSB7XG4gICAgcmV0dXJuIGdldENhY2hlQnlFbnZJZCh0aGlzLmNsb3VkYmFzZUNvbmZpZy5lbnYpXG4gIH1cblxuICBnZXQgbG9jYWxDYWNoZSgpOiBJQ2xvdWRiYXNlQ2FjaGUge1xuICAgIHJldHVybiBnZXRMb2NhbENhY2hlKHRoaXMuY2xvdWRiYXNlQ29uZmlnLmVudilcbiAgfVxuXG4gIGdldCByZXF1ZXN0KCk6IElDbG91ZGJhc2VSZXF1ZXN0IHtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdEJ5RW52SWQodGhpcy5jbG91ZGJhc2VDb25maWcuZW52KVxuICB9XG5cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICBtb2RlOiAnc3luYycsXG4gICAgdGl0bGU6ICdDbG91ZGJhc2Ug5Yid5aeL5YyW5aSx6LSlJyxcbiAgICBtZXNzYWdlczogW1xuICAgICAgJ+ivt+ehruiupOS7peS4i+WQhOmhue+8micsXG4gICAgICAnICAxIC0g6LCD55SoIGNsb3VkYmFzZS5pbml0KCkg55qE6K+t5rOV5oiW5Y+C5pWw5piv5ZCm5q2j56GuJyxcbiAgICAgICcgIDIgLSDlpoLmnpzmmK/pnZ7mtY/op4jlmajnjq/looPvvIzmmK/lkKbphY3nva7kuoblronlhajlupTnlKjmnaXmupDvvIhodHRwczovL2RvY3MuY2xvdWRiYXNlLm5ldC9hcGktcmVmZXJlbmNlL3dlYnYzL2FkYXB0ZXIjJUU3JUFDJUFDLTItJUU2JUFEJUE1JUU5JTg1JThEJUU3JUJEJUFFJUU1JUFFJTg5JUU1JTg1JUE4JUU1JUJBJTk0JUU3JTk0JUE4JUU2JTlEJUE1JUU2JUJBJTkw77yJJyxcbiAgICAgIGDlpoLmnpzpl67popjkvp3nhLblrZjlnKjvvIzlu7rorq7liLDlrpjmlrnpl67nrZTnpL7ljLrmj5Dpl67miJblr7vmib7luK7liqnvvJoke0NPTU1VTklUWV9TSVRFX1VSTH1gLFxuICAgIF0sXG4gIH0pXG4gIHB1YmxpYyBpbml0KGNvbmZpZzogSUNsb3VkYmFzZUNvbmZpZyAmIHsgbGFuZz86IExBTkdTIH0pOiBDbG91ZGJhc2Uge1xuICAgIGlmICghY29uZmlnLmVudikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY29kZTogRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgICBtc2c6ICdlbnYgbXVzdCBub3QgYmUgc3BlY2lmaWVkJyxcbiAgICAgIH0pLClcbiAgICB9XG4gICAgY29uZmlnLmVuZFBvaW50TW9kZSA9IGNvbmZpZy5lbmRQb2ludE1vZGUgfHwgJ0dBVEVXQVknXG5cbiAgICAvLyDliJ3lp4vljJbml7boi6XmnKrlhbzlrrnlubPlj7DvvIzliJnkvb/nlKjpu5jorqRhZGFwdGVyXG4gICAgaWYgKCFQbGF0Zm9ybS5hZGFwdGVyKSB7XG4gICAgICB0aGlzLnVzZURlZmF1bHRBZGFwdGVyKClcbiAgICB9XG5cbiAgICBjb25zdCByZXFDb25maWc6IElSZXF1ZXN0Q29uZmlnID0ge1xuICAgICAgdGltZW91dDogY29uZmlnLnRpbWVvdXQgfHwgNTAwMCxcbiAgICAgIHRpbWVvdXRNc2c6IGBbJHtnZXRTZGtOYW1lKCl9XVtSRVFVRVNUIFRJTUVPVVRdIHJlcXVlc3QgaGFkIGJlZW4gYWJvcnQgc2luY2UgZGlkbid0IGZpbmlzaGVkIHdpdGhpbiR7XG4gICAgICAgIGNvbmZpZy50aW1lb3V0IC8gMTAwMFxuICAgICAgfXNgLFxuICAgIH1cblxuICAgIHRoaXMucmVxdWVzdENsaWVudCA9IG5ldyBQbGF0Zm9ybS5hZGFwdGVyLnJlcUNsYXNzKHJlcUNvbmZpZylcblxuICAgIHRoaXMuY2xvdWRiYXNlQ29uZmlnID0ge1xuICAgICAgLi4uREVGQVVMVF9JTklUX0NPTkZJRyxcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGkxOG46IGkxOG5Qcm94eShQbGF0Zm9ybSwgY29uZmlnKSxcbiAgICB9XG5cbiAgICBkZWxldGUgKHRoaXMuY2xvdWRiYXNlQ29uZmlnIGFzIGFueSkubGFuZ1xuICAgIC8vIOS/ruato3RpbWVvdXTlj5blgLxcbiAgICB0aGlzLmNsb3VkYmFzZUNvbmZpZy50aW1lb3V0ID0gdGhpcy5mb3JtYXRUaW1lb3V0KHRoaXMuY2xvdWRiYXNlQ29uZmlnLnRpbWVvdXQpXG4gICAgLy8g5Yid5aeL5YyWY2FjaGXlkoxyZXF1ZXN0XG4gICAgY29uc3QgeyBlbnYsIHBlcnNpc3RlbmNlLCBkZWJ1ZywgdGltZW91dCwgb2F1dGhDbGllbnQsIGkxOG4gfSA9IHRoaXMuY2xvdWRiYXNlQ29uZmlnXG4gICAgaW5pdENhY2hlKHsgZW52LCBwZXJzaXN0ZW5jZSwgZGVidWcsIHBsYXRmb3JtSW5mbzogdGhpcy5wbGF0Zm9ybSB9KVxuXG4gICAgc2V0UmVnaW9uTGV2ZWxFbmRwb2ludChlbnYsIGNvbmZpZy5yZWdpb24gfHwgJycpXG4gICAgc2V0R2F0ZXdheUVuZFBvaW50V2l0aEVudihlbnYsIERFRkFVTFRfUFJPVE9DT0wsIGNvbmZpZy5yZWdpb24gfHwgJycpXG5cbiAgICBjb25zdCBhcHAgPSBuZXcgQ2xvdWRiYXNlKHRoaXMuY2xvdWRiYXNlQ29uZmlnKVxuICAgIGluaXRSZXF1ZXN0KHtcbiAgICAgIGVudixcbiAgICAgIHJlZ2lvbjogY29uZmlnLnJlZ2lvbiB8fCAnJyxcbiAgICAgIHRpbWVvdXQsXG4gICAgICBvYXV0aENsaWVudCxcbiAgICAgIF9mcm9tQXBwOiBhcHAsXG4gICAgICBpMThuLFxuICAgICAgZW5kUG9pbnRNb2RlOiBjb25maWcuZW5kUG9pbnRNb2RlLFxuICAgIH0pXG4gICAgYXBwLnJlcXVlc3RDbGllbnQgPSB0aGlzLnJlcXVlc3RDbGllbnRcbiAgICA7KHRoaXMgYXMgYW55KT8uZmlyZT8uKCdjbG91ZGJhc2VfaW5pdCcsIGFwcClcblxuICAgIHRoaXMudHJ5MkluaXRBdXRoKGFwcClcblxuICAgIHJldHVybiBhcHBcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVDb25maWcoY29uZmlnOiBJQ2xvdWRiYXNlVXBncmFkZWRDb25maWcpIHtcbiAgICBjb25zdCB7IHBlcnNpc3RlbmNlLCBkZWJ1ZyB9ID0gY29uZmlnXG4gICAgdGhpcy5jbG91ZGJhc2VDb25maWcucGVyc2lzdGVuY2UgPSBwZXJzaXN0ZW5jZVxuICAgIHRoaXMuY2xvdWRiYXNlQ29uZmlnLmRlYnVnID0gZGVidWdcbiAgICAvLyBwZXJzaXN0ZW5jZeaUueWKqOW9seWTjWNhY2hlXG4gICAgaW5pdENhY2hlKHsgZW52OiB0aGlzLmNsb3VkYmFzZUNvbmZpZy5lbnYsIHBlcnNpc3RlbmNlLCBkZWJ1ZywgcGxhdGZvcm1JbmZvOiB0aGlzLnBsYXRmb3JtIH0pXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlTGFuZyhsYW5nOiBMQU5HUykge1xuICAgIGlmICghbGFuZyB8fCBsYW5nID09PSB0aGlzLmNsb3VkYmFzZUNvbmZpZy5pMThuPy5sYW5nKSByZXR1cm5cblxuICAgIHRoaXMuY2xvdWRiYXNlQ29uZmlnLmkxOG4ubGFuZyA9IGxhbmdcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckV4dGVuc2lvbihleHQ6IElDbG91ZGJhc2VFeHRlbnNpb24pIHtcbiAgICBleHRlbnNpb25NYXBbZXh0Lm5hbWVdID0gZXh0XG4gIH1cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICB0aXRsZTogJ+iwg+eUqOaJqeWxleiDveWKm+Wksei0pScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCBpbnZva2VFeHRlbnNpb24oKSDnmoTor63ms5XmiJblj4LmlbDmmK/lkKbmraPnoa4nLFxuICAgICAgJyAgMiAtIOiiq+iwg+eUqOeahOaJqeWxleiDveWKm+aYr+WQpuW3sue7j+WuieijheW5tumAmui/hyByZWdpc3RlckV4dGVuc2lvbigpIOazqOWGjCcsXG4gICAgICBg5aaC5p6c6Zeu6aKY5L6d54S25a2Y5Zyo77yM5bu66K6u5Yiw5a6Y5pa56Zeu562U56S+5Yy65o+Q6Zeu5oiW5a+75om+5biu5Yqp77yaJHtDT01NVU5JVFlfU0lURV9VUkx9YCxcbiAgICBdLFxuICB9KVxuICBwdWJsaWMgYXN5bmMgaW52b2tlRXh0ZW5zaW9uKG5hbWU6IHN0cmluZywgb3B0czogYW55KSB7XG4gICAgY29uc3QgZXh0ID0gZXh0ZW5zaW9uTWFwW25hbWVdXG4gICAgaWYgKCFleHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiBgZXh0ZW5zaW9uOiR7bmFtZX0gbXVzdCBiZSByZWdpc3RlcmVkIGJlZm9yZSBpbnZva2VgLFxuICAgICAgfSksKVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCBleHQuaW52b2tlKG9wdHMsIHRoaXMpXG4gIH1cblxuICBwdWJsaWMgdXNlQWRhcHRlcnMoYWRhcHRlcnM6IENsb3VkYmFzZUFkYXB0ZXIgfCBDbG91ZGJhc2VBZGFwdGVyW10sIG9wdGlvbnM/OiBhbnkpIHtcbiAgICBjb25zdCB7IGFkYXB0ZXIsIHJ1bnRpbWUgfSA9IHVzZUFkYXB0ZXJzKGFkYXB0ZXJzLCBvcHRpb25zKSB8fCB7fVxuICAgIGFkYXB0ZXIgJiYgKFBsYXRmb3JtLmFkYXB0ZXIgPSBhZGFwdGVyIGFzIFNES0FkYXB0ZXJJbnRlcmZhY2UpXG4gICAgcnVudGltZSAmJiAoUGxhdGZvcm0ucnVudGltZSA9IHJ1bnRpbWUgYXMgc3RyaW5nKVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVySG9vayhob29rOiBJQ2xvdWRiYXNlSG9vaykge1xuICAgIHJlZ2lzdGVySG9vayhDbG91ZGJhc2UsIGhvb2spXG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJDb21wb25lbnQoY29tcG9uZW50OiBJQ2xvdWRiYXNlQ29tcG9uZW50KSB7XG4gICAgcmVnaXN0ZXJDb21wb25lbnQoQ2xvdWRiYXNlLCBjb21wb25lbnQpXG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJWZXJzaW9uKHZlcnNpb246IHN0cmluZykge1xuICAgIHNldFNka1ZlcnNpb24odmVyc2lvbilcbiAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uXG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJTZGtOYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHNldFNka05hbWUobmFtZSlcbiAgfVxuXG4gIC8qKiDorr7nva4gdGNiIGFwaSDnmoQgZW5kcG9pbnQgKi9cbiAgcHVibGljIHJlZ2lzdGVyRW5kUG9pbnQodXJsOiBzdHJpbmcsIHByb3RvY29sPzogJ2h0dHAnIHwgJ2h0dHBzJykge1xuICAgIHNldEVuZFBvaW50SW5mbyh7IGJhc2VVcmw6IHVybCwgcHJvdG9jb2wsIGVudjogdGhpcy5jb25maWcuZW52LCBlbmRQb2ludEtleTogJ0NMT1VEX0FQSScgfSlcbiAgfVxuXG4gIC8qKiDorr7nva7nvZHlhbMvdGNiIGFwaeeahCBlbmRQb2ludO+8jOmAmui/hyBrZXkg5oyH5a6aICovXG4gIHB1YmxpYyByZWdpc3RlckVuZFBvaW50V2l0aEtleShwcm9wczogSVNldEVuZFBvaW50V2l0aEtleSkge1xuICAgIHNldEVuZFBvaW50SW5mbyh7XG4gICAgICBlbnY6IHRoaXMuY29uZmlnLmVudixcbiAgICAgIGVuZFBvaW50S2V5OiBwcm9wcy5rZXksXG4gICAgICBiYXNlVXJsOiBwcm9wcy51cmwsXG4gICAgICBwcm90b2NvbDogcHJvcHMucHJvdG9jb2wsXG4gICAgfSlcbiAgfVxuXG4gIC8qKiDmi7/nvZHlhbMvdGNiIGFwaeeahCBlbmRQb2ludO+8jOmAmui/hyBrZXkg5oyH5a6aICovXG4gIHB1YmxpYyBnZXRFbmRQb2ludFdpdGhLZXkoa2V5OiBFbmRQb2ludEtleSkge1xuICAgIGNvbnN0IGluZm8gPSBnZXRFbmRQb2ludEluZm8odGhpcy5jb25maWcuZW52LCBrZXkpXG4gICAgcmV0dXJuIHtcbiAgICAgIEJBU0VfVVJMOiBpbmZvLmJhc2VVcmwsXG4gICAgICBQUk9UT0NPTDogaW5mby5wcm90b2NvbCxcbiAgICB9XG4gIH1cblxuICAvLyDop6PmnpBVUkzlj4LmlbBcbiAgcHVibGljIHBhcnNlQ2FwdGNoYSh1cmwpIHtcbiAgICByZXR1cm4gdXRpbHMucGFyc2VDYXB0Y2hhKHVybClcbiAgfVxuXG4gIHByaXZhdGUgdXNlRGVmYXVsdEFkYXB0ZXIoKSB7XG4gICAgY29uc3QgeyBhZGFwdGVyLCBydW50aW1lIH0gPSB1c2VEZWZhdWx0QWRhcHRlci5iaW5kKHRoaXMpKClcbiAgICBQbGF0Zm9ybS5hZGFwdGVyID0gYWRhcHRlciBhcyBTREtBZGFwdGVySW50ZXJmYWNlXG4gICAgUGxhdGZvcm0ucnVudGltZSA9IHJ1bnRpbWUgYXMgc3RyaW5nXG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFRpbWVvdXQodGltZW91dDogbnVtYmVyKSB7XG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICBjYXNlIHRpbWVvdXQgPiBNQVhfVElNRU9VVDpcbiAgICAgICAgcHJpbnRXYXJuKEVSUk9SUy5JTlZBTElEX1BBUkFNUywgJ3RpbWVvdXQgaXMgZ3JlYXRlciB0aGFuIG1heGltdW0gdmFsdWVbMTBtaW5dJylcbiAgICAgICAgcmV0dXJuIE1BWF9USU1FT1VUXG4gICAgICBjYXNlIHRpbWVvdXQgPCBNSU5fVElNRU9VVDpcbiAgICAgICAgcHJpbnRXYXJuKEVSUk9SUy5JTlZBTElEX1BBUkFNUywgJ3RpbWVvdXQgaXMgbGVzcyB0aGFuIG1heGltdW0gdmFsdWVbMTAwbXNdJylcbiAgICAgICAgcmV0dXJuIE1JTl9USU1FT1VUXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGltZW91dFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJ5MkluaXRBdXRoKGFwcCkge1xuICAgIHRyeSB7XG4gICAgICBhcHAuYXV0aCgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKCd0cnkySW5pdEF1dGggZXJyb3I6JywgZXJyb3IpXG4gICAgfVxuICB9XG59XG5cbi8vIOexu+Wei+WvvOWHulxuZXhwb3J0IHR5cGUgeyBDbG91ZGJhc2UgfVxuXG4vLyDlgLzlr7zlh7pcbmV4cG9ydCBjb25zdCBjbG91ZGJhc2U6IElDbG91ZGJhc2UgPSBuZXcgQ2xvdWRiYXNlKClcblxuY2xvdWRiYXNlLnVzZUFkYXB0ZXJzKGdldFd4RGVmYXVsdEFkYXB0ZXIoKSlcblxuLy8g6buY6K6k5a+85Ye65a6e5L6LXG5leHBvcnQgZGVmYXVsdCBjbG91ZGJhc2VcbiJdfQ==
|
|
320
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBMEU7QUFhMUUsOENBQWtFO0FBQ2xFLDBDQUE4RDtBQUc5RCxzQ0FBd0U7QUFFeEUsMENBQStEO0FBQy9ELDZDQVcyQjtBQUMzQixvQ0FBOEM7QUFDOUMsNkNBQW9EO0FBQTNDLHlHQUFBLGVBQWUsT0FBQTtBQUN4QixvQ0FBbUM7QUFBMUIsNkZBQUEsS0FBSyxPQUFBO0FBQ04sSUFBQSxXQUFXLEdBQXdCLG9CQUFRLFlBQWhDLEVBQUUsaUJBQWlCLEdBQUssb0JBQVEsa0JBQWIsQ0FBYTtBQUMzQyxJQUFBLE1BQU0sR0FBeUIscUJBQVMsT0FBbEMsRUFBRSxrQkFBa0IsR0FBSyxxQkFBUyxtQkFBZCxDQUFjO0FBQ3hDLElBQUEsU0FBUyxHQUFLLGlCQUFLLFVBQVYsQ0FBVTtBQUNuQixJQUFBLG9CQUFvQixHQUFLLG1CQUFPLHFCQUFaLENBQVk7QUFLeEMsSUFBTSxtQkFBbUIsR0FBOEI7SUFDckQsT0FBTyxFQUFFLEtBQUs7SUFDZCxXQUFXLEVBQUUsT0FBTztDQUNyQixDQUFBO0FBR0QsSUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUE7QUFFbEMsSUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFBO0FBRXZCLElBQU0sWUFBWSxHQUE0QixFQUFFLENBQUE7QUFFaEQ7SUFVRSxtQkFBWSxNQUF5QjtRQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFBO1FBQzdELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBQSxzQkFBYSxHQUFFLENBQUE7SUFDaEMsQ0FBQztJQUVELHNCQUFJLDZCQUFNO2FBQVY7WUFDRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUE7UUFDN0IsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwrQkFBUTthQUFaO1lBQ0UsT0FBTyxrQkFBUSxDQUFBO1FBQ2pCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksNEJBQUs7YUFBVDtZQUNFLE9BQU8sSUFBQSx1QkFBZSxFQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbEQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxpQ0FBVTthQUFkO1lBQ0UsT0FBTyxJQUFBLHFCQUFhLEVBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNoRCxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDhCQUFPO2FBQVg7WUFDRSxPQUFPLElBQUEsMkJBQWlCLEVBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNwRCxDQUFDOzs7T0FBQTtJQVlNLHdCQUFJLEdBQUosVUFBSyxNQUEyQzs7UUFDckQsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxJQUFJLFNBQVMsQ0FBQTtRQUd0RCxJQUFJLENBQUMsa0JBQVEsQ0FBQyxPQUFPLEVBQUU7WUFDckIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7U0FDekI7UUFHRCxNQUFNLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRTNDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUM3QixJQUFJLEVBQUUsTUFBTSxDQUFDLGNBQWM7Z0JBQzNCLEdBQUcsRUFBRSwyQkFBMkI7YUFDakMsQ0FBQyxDQUFFLENBQUE7U0FDTDtRQUVELElBQU0sU0FBUyxHQUF3RDtZQUNyRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJO1lBQy9CLFVBQVUsRUFBRSxXQUFJLElBQUEsbUJBQVUsR0FBRSxtRkFDMUIsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLE1BQ3BCO1lBQ0gsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1NBQ2xCLENBQUE7UUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksa0JBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBRTdELElBQUksQ0FBQyxlQUFlLGtDQUNmLG1CQUFtQixHQUNuQixNQUFNLEtBQ1QsSUFBSSxFQUFFLElBQUEsZ0JBQVMsRUFBQyxrQkFBUSxFQUFFLE1BQU0sQ0FBQyxHQUNsQyxDQUFBO1FBRUQsT0FBUSxJQUFJLENBQUMsZUFBdUIsQ0FBQyxJQUFJLENBQUE7UUFFekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRXpFLElBQUEsS0FBMEQsSUFBSSxDQUFDLGVBQWUsRUFBNUUsR0FBRyxTQUFBLEVBQUUsV0FBVyxpQkFBQSxFQUFFLEtBQUssV0FBQSxFQUFFLE9BQU8sYUFBQSxFQUFFLFdBQVcsaUJBQUEsRUFBRSxJQUFJLFVBQXlCLENBQUE7UUFDcEYsSUFBQSxpQkFBUyxFQUFDLEVBQUUsR0FBRyxLQUFBLEVBQUUsV0FBVyxhQUFBLEVBQUUsS0FBSyxPQUFBLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBRW5FLElBQUEsK0JBQXNCLEVBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUE7UUFDaEQsSUFBQSxrQ0FBeUIsRUFBQyxHQUFHLEVBQUUseUJBQWdCLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUVyRSxJQUFNLEdBQUcsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDL0MsSUFBQSxxQkFBVyxFQUFDO1lBQ1YsR0FBRyxLQUFBO1lBQ0gsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRTtZQUMzQixPQUFPLFNBQUE7WUFDUCxXQUFXLGFBQUE7WUFDWCxRQUFRLEVBQUUsR0FBRztZQUNiLElBQUksTUFBQTtZQUNKLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtZQUNqQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7U0FDbEIsQ0FBQyxDQUFBO1FBQ0YsR0FBRyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUNyQztRQUFBLE1BQUMsSUFBWSxhQUFaLElBQUksdUJBQUosSUFBSSxDQUFVLElBQUkscURBQUcsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFFN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUd0QixJQUFJLE1BQUEsa0JBQVEsQ0FBQyxPQUFPLDBDQUFFLFFBQVEsRUFBRTtZQUM5QixNQUFBLGtCQUFRLENBQUMsT0FBTywwQ0FBRSxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtTQUN0RDtRQUVELE9BQU8sR0FBRyxDQUFBO0lBQ1osQ0FBQztJQUVNLGdDQUFZLEdBQW5CLFVBQW9CLE1BQWdDO1FBQzFDLElBQUEsV0FBVyxHQUFZLE1BQU0sWUFBbEIsRUFBRSxLQUFLLEdBQUssTUFBTSxNQUFYLENBQVc7UUFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUVsQyxJQUFBLGlCQUFTLEVBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsV0FBVyxhQUFBLEVBQUUsS0FBSyxPQUFBLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQy9GLENBQUM7SUFFTSw4QkFBVSxHQUFqQixVQUFrQixJQUFXOztRQUMzQixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksTUFBSyxNQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSwwQ0FBRSxJQUFJLENBQUE7WUFBRSxPQUFNO1FBRTdELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7SUFDdkMsQ0FBQztJQUVNLHFDQUFpQixHQUF4QixVQUF5QixHQUF3QjtRQUMvQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQTtJQUM5QixDQUFDO0lBVVksbUNBQWUsR0FBZixVQUFnQixJQUFZLEVBQUUsSUFBUzs7Ozs7O3dCQUM1QyxHQUFHLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO3dCQUM5QixJQUFJLENBQUMsR0FBRyxFQUFFOzRCQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQ0FDN0IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxjQUFjO2dDQUMzQixHQUFHLEVBQUUsb0JBQWEsSUFBSSxzQ0FBbUM7NkJBQzFELENBQUMsQ0FBRSxDQUFBO3lCQUNMO3dCQUVNLFdBQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUE7NEJBQW5DLFdBQU8sU0FBNEIsRUFBQTs7OztLQUNwQztJQUVNLCtCQUFXLEdBQWxCLFVBQW1CLFFBQStDLEVBQUUsT0FBYTtRQUN6RSxJQUFBLEtBQXVCLFdBQVcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxFQUF6RCxPQUFPLGFBQUEsRUFBRSxPQUFPLGFBQXlDLENBQUE7UUFDakUsT0FBTyxJQUFJLENBQUMsa0JBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBOEIsQ0FBQyxDQUFBO1FBQzlELE9BQU8sSUFBSSxDQUFDLGtCQUFRLENBQUMsT0FBTyxHQUFHLE9BQWlCLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBRU0sZ0NBQVksR0FBbkIsVUFBb0IsSUFBb0I7UUFDdEMsSUFBQSx3QkFBWSxFQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBRU0scUNBQWlCLEdBQXhCLFVBQXlCLFNBQThCO1FBQ3JELElBQUEsNkJBQWlCLEVBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFTSxtQ0FBZSxHQUF0QixVQUF1QixPQUFlO1FBQ3BDLElBQUEsc0JBQWEsRUFBQyxPQUFPLENBQUMsQ0FBQTtRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtJQUN4QixDQUFDO0lBRU0sbUNBQWUsR0FBdEIsVUFBdUIsSUFBWTtRQUNqQyxJQUFBLG1CQUFVLEVBQUMsSUFBSSxDQUFDLENBQUE7SUFDbEIsQ0FBQztJQUdNLG9DQUFnQixHQUF2QixVQUF3QixHQUFXLEVBQUUsUUFBMkI7UUFDOUQsSUFBQSx3QkFBZSxFQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLFVBQUEsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDN0YsQ0FBQztJQUdNLDJDQUF1QixHQUE5QixVQUErQixLQUEwQjtRQUN2RCxJQUFBLHdCQUFlLEVBQUM7WUFDZCxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHO1lBQ3BCLFdBQVcsRUFBRSxLQUFLLENBQUMsR0FBRztZQUN0QixPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDbEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1NBQ3pCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFHTSxzQ0FBa0IsR0FBekIsVUFBMEIsR0FBZ0I7UUFDeEMsSUFBTSxJQUFJLEdBQUcsSUFBQSx3QkFBZSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQ2xELE9BQU87WUFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDdEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3hCLENBQUE7SUFDSCxDQUFDO0lBR00sZ0NBQVksR0FBbkIsVUFBb0IsR0FBRztRQUNyQixPQUFPLGlCQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFFTyxxQ0FBaUIsR0FBekI7UUFDUSxJQUFBLEtBQXVCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFuRCxPQUFPLGFBQUEsRUFBRSxPQUFPLGFBQW1DLENBQUE7UUFDM0Qsa0JBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBOEIsQ0FBQTtRQUNqRCxrQkFBUSxDQUFDLE9BQU8sR0FBRyxPQUFpQixDQUFBO0lBQ3RDLENBQUM7SUFFTyxpQ0FBYSxHQUFyQixVQUFzQixPQUFlO1FBQ25DLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxPQUFPLEdBQUcsV0FBVztnQkFDeEIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsOENBQThDLENBQUMsQ0FBQTtnQkFDaEYsT0FBTyxXQUFXLENBQUE7WUFDcEIsS0FBSyxPQUFPLEdBQUcsV0FBVztnQkFDeEIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsMkNBQTJDLENBQUMsQ0FBQTtnQkFDN0UsT0FBTyxXQUFXLENBQUE7WUFDcEI7Z0JBQ0UsT0FBTyxPQUFPLENBQUE7U0FDakI7SUFDSCxDQUFDO0lBRU8sZ0NBQVksR0FBcEIsVUFBcUIsR0FBRztRQUN0QixJQUFJO1lBQ0YsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFBO1NBQ1g7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUE7U0FDMUM7SUFDSCxDQUFDO0lBU08seUNBQXFCLEdBQTdCLFVBQThCLE1BQXdCOztRQUVwRCxJQUFJLE1BQUEsa0JBQVEsQ0FBQyxPQUFPLDBDQUFFLGFBQWEsRUFBRTtZQUNuQyxJQUFNLFVBQVUsR0FBRyxNQUFBLGtCQUFRLENBQUMsT0FBTywwQ0FBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUE7WUFFMUQsTUFBTSxDQUFDLElBQUksR0FBRztnQkFDWixRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7Z0JBQzdCLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUztnQkFDL0IsWUFBWSxFQUFFLFVBQVUsQ0FBQyxZQUFZO2dCQUNyQyxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQWlCO2FBQ3pDLENBQUE7WUFHRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDZixNQUFNLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUE7YUFDNUI7WUFHRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFO2dCQUM3QyxNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUE7YUFDeEM7U0FDRjtRQUVELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQXhOTTtRQVZOLG9CQUFvQixDQUFDO1lBQ3BCLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLGlCQUFpQjtZQUN4QixRQUFRLEVBQUU7Z0JBQ1IsVUFBVTtnQkFDVixzQ0FBc0M7Z0JBQ3RDLG1MQUFtTDtnQkFDbkwsc0tBQTZCLGtCQUFrQixDQUFFO2FBQ2xEO1NBQ0YsQ0FBQzs7O3dDQUN3RCxTQUFTO3lDQWtFbEU7SUE0Qlk7UUFUWixvQkFBb0IsQ0FBQztZQUNwQixLQUFLLEVBQUUsVUFBVTtZQUNqQixRQUFRLEVBQUU7Z0JBQ1IsVUFBVTtnQkFDVix1Q0FBdUM7Z0JBQ3ZDLGdEQUFnRDtnQkFDaEQsc0tBQTZCLGtCQUFrQixDQUFFO2FBQ2xEO1NBQ0YsQ0FBQzs7OztvREFXRDtJQWlISCxnQkFBQztDQUFBLEFBeFFELElBd1FDO0FBTVksUUFBQSxTQUFTLEdBQWUsSUFBSSxTQUFTLEVBQUUsQ0FBQTtBQUVwRCxpQkFBUyxDQUFDLFdBQVcsQ0FBQyxJQUFBLDZCQUFtQixHQUFFLENBQUMsQ0FBQTtBQUc1QyxrQkFBZSxpQkFBUyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRhcHRlcnMsIGNvbnN0YW50cywgdXRpbHMsIGhlbHBlcnMgfSBmcm9tICdAY2xvdWRiYXNlL3V0aWxpdGllcydcbmltcG9ydCB7IFNES0FkYXB0ZXJJbnRlcmZhY2UsIENsb3VkYmFzZUFkYXB0ZXIsIElSZXF1ZXN0Q29uZmlnIH0gZnJvbSAnQGNsb3VkYmFzZS9hZGFwdGVyLWludGVyZmFjZSdcbmltcG9ydCB7XG4gIElDbG91ZGJhc2VDb25maWcsXG4gIElDbG91ZGJhc2VVcGdyYWRlZENvbmZpZyxcbiAgSUNsb3VkYmFzZSxcbiAgSUNsb3VkYmFzZUV4dGVuc2lvbixcbiAgS1YsXG4gIElDbG91ZGJhc2VQbGF0Zm9ybUluZm8sXG4gIEVuZFBvaW50S2V5LFxuICBJQ2xvdWRiYXNlQXBpcyxcbn0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcydcbmltcG9ydCB7IElDbG91ZGJhc2VBdXRoIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9hdXRoJ1xuaW1wb3J0IHsgcmVnaXN0ZXJDb21wb25lbnQsIHJlZ2lzdGVySG9vayB9IGZyb20gJy4vbGlicy9jb21wb25lbnQnXG5pbXBvcnQgeyBnZXRXeERlZmF1bHRBZGFwdGVyLCBQbGF0Zm9ybSB9IGZyb20gJy4vbGlicy9hZGFwdGVyJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbXBvbmVudCwgSUNsb3VkYmFzZUhvb2sgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2NvbXBvbmVudCdcbmltcG9ydCB7IElDbG91ZGJhc2VDYWNoZSB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY2FjaGUnXG5pbXBvcnQgeyBpbml0Q2FjaGUsIGdldENhY2hlQnlFbnZJZCwgZ2V0TG9jYWxDYWNoZSB9IGZyb20gJy4vbGlicy9jYWNoZSdcbmltcG9ydCB7IElDbG91ZGJhc2VSZXF1ZXN0IH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9yZXF1ZXN0J1xuaW1wb3J0IHsgaW5pdFJlcXVlc3QsIGdldFJlcXVlc3RCeUVudklkIH0gZnJvbSAnLi9saWJzL3JlcXVlc3QnXG5pbXBvcnQge1xuICBnZXRTZGtOYW1lLFxuICBzZXRTZGtWZXJzaW9uLFxuICBzZXRSZWdpb25MZXZlbEVuZHBvaW50LFxuICBzZXRTZGtOYW1lLFxuICBzZXRHYXRld2F5RW5kUG9pbnRXaXRoRW52LFxuICB0eXBlIElTZXRFbmRQb2ludFdpdGhLZXksXG4gIHNldEVuZFBvaW50SW5mbyxcbiAgZ2V0RW5kUG9pbnRJbmZvLFxuICBnZXRTZGtWZXJzaW9uLFxuICBERUZBVUxUX1BST1RPQ09MLFxufSBmcm9tICcuL2NvbnN0YW50cy9jb21tb24nXG5pbXBvcnQgeyBpMThuUHJveHksIExBTkdTIH0gZnJvbSAnLi9saWJzL2xhbmcnXG5leHBvcnQgeyBnZXRCYXNlRW5kUG9pbnQgfSBmcm9tICcuL2NvbnN0YW50cy9jb21tb24nXG5leHBvcnQgeyBMQU5HUyB9IGZyb20gJy4vbGlicy9sYW5nJ1xuY29uc3QgeyB1c2VBZGFwdGVycywgdXNlRGVmYXVsdEFkYXB0ZXIgfSA9IGFkYXB0ZXJzXG5jb25zdCB7IEVSUk9SUywgQ09NTVVOSVRZX1NJVEVfVVJMIH0gPSBjb25zdGFudHNcbmNvbnN0IHsgcHJpbnRXYXJuIH0gPSB1dGlsc1xuY29uc3QgeyBjYXRjaEVycm9yc0RlY29yYXRvciB9ID0gaGVscGVyc1xuXG4vKipcbiAqIEBjb25zdGFudCDpu5jorqTphY3nva5cbiAqL1xuY29uc3QgREVGQVVMVF9JTklUX0NPTkZJRzogUGFydGlhbDxJQ2xvdWRiYXNlQ29uZmlnPiA9IHtcbiAgdGltZW91dDogMTUwMDAsXG4gIHBlcnNpc3RlbmNlOiAnbG9jYWwnLCAvLyDmjIHkuYXljJblrZjlgqjnsbvlnotcbn1cblxuLy8gdGltZW91dOS4iumZkDEw5YiG6ZKfXG5jb25zdCBNQVhfVElNRU9VVCA9IDEwMDAgKiA2MCAqIDEwXG4vLyB0aW1lb3V05LiL6ZmQMTAwbXNcbmNvbnN0IE1JTl9USU1FT1VUID0gMTAwXG5cbmNvbnN0IGV4dGVuc2lvbk1hcDogS1Y8SUNsb3VkYmFzZUV4dGVuc2lvbj4gPSB7fVxuXG5jbGFzcyBDbG91ZGJhc2UgaW1wbGVtZW50cyBJQ2xvdWRiYXNlIHtcbiAgcHVibGljIGF1dGhJbnN0YW5jZTogSUNsb3VkYmFzZUF1dGhcbiAgcHVibGljIG9hdXRoSW5zdGFuY2U6IGFueVxuICBwdWJsaWMgcmVxdWVzdENsaWVudDogYW55XG4gIHB1YmxpYyBvYXV0aENsaWVudDogYW55XG4gIHB1YmxpYyB2ZXJzaW9uOiBzdHJpbmdcbiAgcHVibGljIGF1dGg6IElDbG91ZGJhc2VbJ2F1dGgnXSAmIElDbG91ZGJhc2VBdXRoXG4gIHB1YmxpYyBhcGlzOiBJQ2xvdWRiYXNlQXBpc1xuICBwcml2YXRlIGNsb3VkYmFzZUNvbmZpZzogSUNsb3VkYmFzZUNvbmZpZ1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz86IElDbG91ZGJhc2VDb25maWcpIHtcbiAgICB0aGlzLmNsb3VkYmFzZUNvbmZpZyA9IGNvbmZpZyA/IGNvbmZpZyA6IHRoaXMuY2xvdWRiYXNlQ29uZmlnXG4gICAgdGhpcy5hdXRoSW5zdGFuY2UgPSBudWxsXG4gICAgdGhpcy5vYXV0aEluc3RhbmNlID0gbnVsbFxuICAgIHRoaXMudmVyc2lvbiA9IGdldFNka1ZlcnNpb24oKVxuICB9XG5cbiAgZ2V0IGNvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5jbG91ZGJhc2VDb25maWdcbiAgfVxuXG4gIGdldCBwbGF0Zm9ybSgpOiBJQ2xvdWRiYXNlUGxhdGZvcm1JbmZvIHtcbiAgICByZXR1cm4gUGxhdGZvcm1cbiAgfVxuXG4gIGdldCBjYWNoZSgpOiBJQ2xvdWRiYXNlQ2FjaGUge1xuICAgIHJldHVybiBnZXRDYWNoZUJ5RW52SWQodGhpcy5jbG91ZGJhc2VDb25maWcuZW52KVxuICB9XG5cbiAgZ2V0IGxvY2FsQ2FjaGUoKTogSUNsb3VkYmFzZUNhY2hlIHtcbiAgICByZXR1cm4gZ2V0TG9jYWxDYWNoZSh0aGlzLmNsb3VkYmFzZUNvbmZpZy5lbnYpXG4gIH1cblxuICBnZXQgcmVxdWVzdCgpOiBJQ2xvdWRiYXNlUmVxdWVzdCB7XG4gICAgcmV0dXJuIGdldFJlcXVlc3RCeUVudklkKHRoaXMuY2xvdWRiYXNlQ29uZmlnLmVudilcbiAgfVxuXG4gIEBjYXRjaEVycm9yc0RlY29yYXRvcih7XG4gICAgbW9kZTogJ3N5bmMnLFxuICAgIHRpdGxlOiAnQ2xvdWRiYXNlIOWIneWni+WMluWksei0pScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCBjbG91ZGJhc2UuaW5pdCgpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g5aaC5p6c5piv6Z2e5rWP6KeI5Zmo546v5aKD77yM5piv5ZCm6YWN572u5LqG5a6J5YWo5bqU55So5p2l5rqQ77yIaHR0cHM6Ly9kb2NzLmNsb3VkYmFzZS5uZXQvYXBpLXJlZmVyZW5jZS93ZWJ2My9hZGFwdGVyIyVFNyVBQyVBQy0yLSVFNiVBRCVBNSVFOSU4NSU4RCVFNyVCRCVBRSVFNSVBRSU4OSVFNSU4NSVBOCVFNSVCQSU5NCVFNyU5NCVBOCVFNiU5RCVBNSVFNiVCQSU5MO+8iScsXG4gICAgICBg5aaC5p6c6Zeu6aKY5L6d54S25a2Y5Zyo77yM5bu66K6u5Yiw5a6Y5pa56Zeu562U56S+5Yy65o+Q6Zeu5oiW5a+75om+5biu5Yqp77yaJHtDT01NVU5JVFlfU0lURV9VUkx9YCxcbiAgICBdLFxuICB9KVxuICBwdWJsaWMgaW5pdChjb25maWc6IElDbG91ZGJhc2VDb25maWcgJiB7IGxhbmc/OiBMQU5HUyB9KTogQ2xvdWRiYXNlIHtcbiAgICBjb25maWcuZW5kUG9pbnRNb2RlID0gY29uZmlnLmVuZFBvaW50TW9kZSB8fCAnR0FURVdBWSdcblxuICAgIC8vIOWIneWni+WMluaXtuiLpeacquWFvOWuueW5s+WPsO+8jOWImeS9v+eUqOm7mOiupGFkYXB0ZXJcbiAgICBpZiAoIVBsYXRmb3JtLmFkYXB0ZXIpIHtcbiAgICAgIHRoaXMudXNlRGVmYXVsdEFkYXB0ZXIoKVxuICAgIH1cblxuICAgIC8vIOWcqOWIpOaWrWNvbmZpZy5lbnbkuYvliY3vvIzlhYjlpITnkIZub2Rl546v5aKD55qE6YWN572uXG4gICAgY29uZmlnID0gdGhpcy5kZWFsTm9kZUFkYXB0ZXJDb25maWcoY29uZmlnKVxuXG4gICAgaWYgKCFjb25maWcuZW52KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgIG1zZzogJ2VudiBtdXN0IG5vdCBiZSBzcGVjaWZpZWQnLFxuICAgICAgfSksKVxuICAgIH1cblxuICAgIGNvbnN0IHJlcUNvbmZpZzogSVJlcXVlc3RDb25maWcgJiB7IGF1dGg6IElDbG91ZGJhc2VDb25maWdbJ2F1dGgnXSB9ID0ge1xuICAgICAgdGltZW91dDogY29uZmlnLnRpbWVvdXQgfHwgNTAwMCxcbiAgICAgIHRpbWVvdXRNc2c6IGBbJHtnZXRTZGtOYW1lKCl9XVtSRVFVRVNUIFRJTUVPVVRdIHJlcXVlc3QgaGFkIGJlZW4gYWJvcnQgc2luY2UgZGlkbid0IGZpbmlzaGVkIHdpdGhpbiR7XG4gICAgICAgIGNvbmZpZy50aW1lb3V0IC8gMTAwMFxuICAgICAgfXNgLFxuICAgICAgYXV0aDogY29uZmlnLmF1dGgsXG4gICAgfVxuXG4gICAgdGhpcy5yZXF1ZXN0Q2xpZW50ID0gbmV3IFBsYXRmb3JtLmFkYXB0ZXIucmVxQ2xhc3MocmVxQ29uZmlnKVxuXG4gICAgdGhpcy5jbG91ZGJhc2VDb25maWcgPSB7XG4gICAgICAuLi5ERUZBVUxUX0lOSVRfQ09ORklHLFxuICAgICAgLi4uY29uZmlnLFxuICAgICAgaTE4bjogaTE4blByb3h5KFBsYXRmb3JtLCBjb25maWcpLFxuICAgIH1cblxuICAgIGRlbGV0ZSAodGhpcy5jbG91ZGJhc2VDb25maWcgYXMgYW55KS5sYW5nXG4gICAgLy8g5L+u5q2jdGltZW91dOWPluWAvFxuICAgIHRoaXMuY2xvdWRiYXNlQ29uZmlnLnRpbWVvdXQgPSB0aGlzLmZvcm1hdFRpbWVvdXQodGhpcy5jbG91ZGJhc2VDb25maWcudGltZW91dClcbiAgICAvLyDliJ3lp4vljJZjYWNoZeWSjHJlcXVlc3RcbiAgICBjb25zdCB7IGVudiwgcGVyc2lzdGVuY2UsIGRlYnVnLCB0aW1lb3V0LCBvYXV0aENsaWVudCwgaTE4biB9ID0gdGhpcy5jbG91ZGJhc2VDb25maWdcbiAgICBpbml0Q2FjaGUoeyBlbnYsIHBlcnNpc3RlbmNlLCBkZWJ1ZywgcGxhdGZvcm1JbmZvOiB0aGlzLnBsYXRmb3JtIH0pXG5cbiAgICBzZXRSZWdpb25MZXZlbEVuZHBvaW50KGVudiwgY29uZmlnLnJlZ2lvbiB8fCAnJylcbiAgICBzZXRHYXRld2F5RW5kUG9pbnRXaXRoRW52KGVudiwgREVGQVVMVF9QUk9UT0NPTCwgY29uZmlnLnJlZ2lvbiB8fCAnJylcblxuICAgIGNvbnN0IGFwcCA9IG5ldyBDbG91ZGJhc2UodGhpcy5jbG91ZGJhc2VDb25maWcpXG4gICAgaW5pdFJlcXVlc3Qoe1xuICAgICAgZW52LFxuICAgICAgcmVnaW9uOiBjb25maWcucmVnaW9uIHx8ICcnLFxuICAgICAgdGltZW91dCxcbiAgICAgIG9hdXRoQ2xpZW50LFxuICAgICAgX2Zyb21BcHA6IGFwcCxcbiAgICAgIGkxOG4sXG4gICAgICBlbmRQb2ludE1vZGU6IGNvbmZpZy5lbmRQb2ludE1vZGUsXG4gICAgICBhdXRoOiBjb25maWcuYXV0aCxcbiAgICB9KVxuICAgIGFwcC5yZXF1ZXN0Q2xpZW50ID0gdGhpcy5yZXF1ZXN0Q2xpZW50XG4gICAgOyh0aGlzIGFzIGFueSk/LmZpcmU/LignY2xvdWRiYXNlX2luaXQnLCBhcHApXG5cbiAgICB0aGlzLnRyeTJJbml0QXV0aChhcHApXG5cbiAgICAvLyBub2Rl546v5aKD5Y+v5Lul5LuOYWRhcHRlcuiOt+WPlm5vZGVUb29s55qE5pa55rOVXG4gICAgaWYgKFBsYXRmb3JtLmFkYXB0ZXI/Lm5vZGVUb29sKSB7XG4gICAgICBQbGF0Zm9ybS5hZGFwdGVyPy5ub2RlVG9vbChhcHAsIHRoaXMuY2xvdWRiYXNlQ29uZmlnKVxuICAgIH1cblxuICAgIHJldHVybiBhcHBcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVDb25maWcoY29uZmlnOiBJQ2xvdWRiYXNlVXBncmFkZWRDb25maWcpIHtcbiAgICBjb25zdCB7IHBlcnNpc3RlbmNlLCBkZWJ1ZyB9ID0gY29uZmlnXG4gICAgdGhpcy5jbG91ZGJhc2VDb25maWcucGVyc2lzdGVuY2UgPSBwZXJzaXN0ZW5jZVxuICAgIHRoaXMuY2xvdWRiYXNlQ29uZmlnLmRlYnVnID0gZGVidWdcbiAgICAvLyBwZXJzaXN0ZW5jZeaUueWKqOW9seWTjWNhY2hlXG4gICAgaW5pdENhY2hlKHsgZW52OiB0aGlzLmNsb3VkYmFzZUNvbmZpZy5lbnYsIHBlcnNpc3RlbmNlLCBkZWJ1ZywgcGxhdGZvcm1JbmZvOiB0aGlzLnBsYXRmb3JtIH0pXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlTGFuZyhsYW5nOiBMQU5HUykge1xuICAgIGlmICghbGFuZyB8fCBsYW5nID09PSB0aGlzLmNsb3VkYmFzZUNvbmZpZy5pMThuPy5sYW5nKSByZXR1cm5cblxuICAgIHRoaXMuY2xvdWRiYXNlQ29uZmlnLmkxOG4ubGFuZyA9IGxhbmdcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckV4dGVuc2lvbihleHQ6IElDbG91ZGJhc2VFeHRlbnNpb24pIHtcbiAgICBleHRlbnNpb25NYXBbZXh0Lm5hbWVdID0gZXh0XG4gIH1cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICB0aXRsZTogJ+iwg+eUqOaJqeWxleiDveWKm+Wksei0pScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCBpbnZva2VFeHRlbnNpb24oKSDnmoTor63ms5XmiJblj4LmlbDmmK/lkKbmraPnoa4nLFxuICAgICAgJyAgMiAtIOiiq+iwg+eUqOeahOaJqeWxleiDveWKm+aYr+WQpuW3sue7j+WuieijheW5tumAmui/hyByZWdpc3RlckV4dGVuc2lvbigpIOazqOWGjCcsXG4gICAgICBg5aaC5p6c6Zeu6aKY5L6d54S25a2Y5Zyo77yM5bu66K6u5Yiw5a6Y5pa56Zeu562U56S+5Yy65o+Q6Zeu5oiW5a+75om+5biu5Yqp77yaJHtDT01NVU5JVFlfU0lURV9VUkx9YCxcbiAgICBdLFxuICB9KVxuICBwdWJsaWMgYXN5bmMgaW52b2tlRXh0ZW5zaW9uKG5hbWU6IHN0cmluZywgb3B0czogYW55KSB7XG4gICAgY29uc3QgZXh0ID0gZXh0ZW5zaW9uTWFwW25hbWVdXG4gICAgaWYgKCFleHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiBgZXh0ZW5zaW9uOiR7bmFtZX0gbXVzdCBiZSByZWdpc3RlcmVkIGJlZm9yZSBpbnZva2VgLFxuICAgICAgfSksKVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCBleHQuaW52b2tlKG9wdHMsIHRoaXMpXG4gIH1cblxuICBwdWJsaWMgdXNlQWRhcHRlcnMoYWRhcHRlcnM6IENsb3VkYmFzZUFkYXB0ZXIgfCBDbG91ZGJhc2VBZGFwdGVyW10sIG9wdGlvbnM/OiBhbnkpIHtcbiAgICBjb25zdCB7IGFkYXB0ZXIsIHJ1bnRpbWUgfSA9IHVzZUFkYXB0ZXJzKGFkYXB0ZXJzLCBvcHRpb25zKSB8fCB7fVxuICAgIGFkYXB0ZXIgJiYgKFBsYXRmb3JtLmFkYXB0ZXIgPSBhZGFwdGVyIGFzIFNES0FkYXB0ZXJJbnRlcmZhY2UpXG4gICAgcnVudGltZSAmJiAoUGxhdGZvcm0ucnVudGltZSA9IHJ1bnRpbWUgYXMgc3RyaW5nKVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVySG9vayhob29rOiBJQ2xvdWRiYXNlSG9vaykge1xuICAgIHJlZ2lzdGVySG9vayhDbG91ZGJhc2UsIGhvb2spXG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJDb21wb25lbnQoY29tcG9uZW50OiBJQ2xvdWRiYXNlQ29tcG9uZW50KSB7XG4gICAgcmVnaXN0ZXJDb21wb25lbnQoQ2xvdWRiYXNlLCBjb21wb25lbnQpXG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJWZXJzaW9uKHZlcnNpb246IHN0cmluZykge1xuICAgIHNldFNka1ZlcnNpb24odmVyc2lvbilcbiAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uXG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJTZGtOYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHNldFNka05hbWUobmFtZSlcbiAgfVxuXG4gIC8qKiDorr7nva4gdGNiIGFwaSDnmoQgZW5kcG9pbnQgKi9cbiAgcHVibGljIHJlZ2lzdGVyRW5kUG9pbnQodXJsOiBzdHJpbmcsIHByb3RvY29sPzogJ2h0dHAnIHwgJ2h0dHBzJykge1xuICAgIHNldEVuZFBvaW50SW5mbyh7IGJhc2VVcmw6IHVybCwgcHJvdG9jb2wsIGVudjogdGhpcy5jb25maWcuZW52LCBlbmRQb2ludEtleTogJ0NMT1VEX0FQSScgfSlcbiAgfVxuXG4gIC8qKiDorr7nva7nvZHlhbMvdGNiIGFwaeeahCBlbmRQb2ludO+8jOmAmui/hyBrZXkg5oyH5a6aICovXG4gIHB1YmxpYyByZWdpc3RlckVuZFBvaW50V2l0aEtleShwcm9wczogSVNldEVuZFBvaW50V2l0aEtleSkge1xuICAgIHNldEVuZFBvaW50SW5mbyh7XG4gICAgICBlbnY6IHRoaXMuY29uZmlnLmVudixcbiAgICAgIGVuZFBvaW50S2V5OiBwcm9wcy5rZXksXG4gICAgICBiYXNlVXJsOiBwcm9wcy51cmwsXG4gICAgICBwcm90b2NvbDogcHJvcHMucHJvdG9jb2wsXG4gICAgfSlcbiAgfVxuXG4gIC8qKiDmi7/nvZHlhbMvdGNiIGFwaeeahCBlbmRQb2ludO+8jOmAmui/hyBrZXkg5oyH5a6aICovXG4gIHB1YmxpYyBnZXRFbmRQb2ludFdpdGhLZXkoa2V5OiBFbmRQb2ludEtleSkge1xuICAgIGNvbnN0IGluZm8gPSBnZXRFbmRQb2ludEluZm8odGhpcy5jb25maWcuZW52LCBrZXkpXG4gICAgcmV0dXJuIHtcbiAgICAgIEJBU0VfVVJMOiBpbmZvLmJhc2VVcmwsXG4gICAgICBQUk9UT0NPTDogaW5mby5wcm90b2NvbCxcbiAgICB9XG4gIH1cblxuICAvLyDop6PmnpBVUkzlj4LmlbBcbiAgcHVibGljIHBhcnNlQ2FwdGNoYSh1cmwpIHtcbiAgICByZXR1cm4gdXRpbHMucGFyc2VDYXB0Y2hhKHVybClcbiAgfVxuXG4gIHByaXZhdGUgdXNlRGVmYXVsdEFkYXB0ZXIoKSB7XG4gICAgY29uc3QgeyBhZGFwdGVyLCBydW50aW1lIH0gPSB1c2VEZWZhdWx0QWRhcHRlci5iaW5kKHRoaXMpKClcbiAgICBQbGF0Zm9ybS5hZGFwdGVyID0gYWRhcHRlciBhcyBTREtBZGFwdGVySW50ZXJmYWNlXG4gICAgUGxhdGZvcm0ucnVudGltZSA9IHJ1bnRpbWUgYXMgc3RyaW5nXG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFRpbWVvdXQodGltZW91dDogbnVtYmVyKSB7XG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICBjYXNlIHRpbWVvdXQgPiBNQVhfVElNRU9VVDpcbiAgICAgICAgcHJpbnRXYXJuKEVSUk9SUy5JTlZBTElEX1BBUkFNUywgJ3RpbWVvdXQgaXMgZ3JlYXRlciB0aGFuIG1heGltdW0gdmFsdWVbMTBtaW5dJylcbiAgICAgICAgcmV0dXJuIE1BWF9USU1FT1VUXG4gICAgICBjYXNlIHRpbWVvdXQgPCBNSU5fVElNRU9VVDpcbiAgICAgICAgcHJpbnRXYXJuKEVSUk9SUy5JTlZBTElEX1BBUkFNUywgJ3RpbWVvdXQgaXMgbGVzcyB0aGFuIG1heGltdW0gdmFsdWVbMTAwbXNdJylcbiAgICAgICAgcmV0dXJuIE1JTl9USU1FT1VUXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGltZW91dFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJ5MkluaXRBdXRoKGFwcCkge1xuICAgIHRyeSB7XG4gICAgICBhcHAuYXV0aCgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKCd0cnkySW5pdEF1dGggZXJyb3I6JywgZXJyb3IpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOWkhOeQhiBOb2RlIOeOr+Wig+S4iyBhZGFwdGVyIOeahOmFjee9ruS/oeaBr1xuICAgKiDlnKggTm9kZSDnjq/looPkuK3vvIzpgJrov4cgYWRhcHRlciDoh6rliqjojrflj5blr4bpkqXjgIHnjq/looNJROOAgWFjY2Vzc0tleSDnrYnphY3nva7vvIxcbiAgICog5YeP5bCR55So5oi35omL5Yqo5Lyg5YWl6YWN572u55qE6LSf5ouFXG4gICAqIEBwYXJhbSBjb25maWcgLSDkupHlvIDlj5HliJ3lp4vljJbphY3nva7lr7nosaFcbiAgICogQHJldHVybnMg6KGl5YWF5LqGIE5vZGUgYWRhcHRlciDkv6Hmga/lkI7nmoTphY3nva7lr7nosaFcbiAgICovXG4gIHByaXZhdGUgZGVhbE5vZGVBZGFwdGVyQ29uZmlnKGNvbmZpZzogSUNsb3VkYmFzZUNvbmZpZykge1xuICAgIC8vIG5vZGXnjq/looPlj6/ku6Xku45hZGFwdGVy6I635Y+W6buY6K6k55qEc2VjcmV0SWTlkoxzZWNyZXRLZXlcbiAgICBpZiAoUGxhdGZvcm0uYWRhcHRlcj8uZ2V0U2VjcmV0SW5mbykge1xuICAgICAgY29uc3Qgc2VjcmV0SW5mbyA9IFBsYXRmb3JtLmFkYXB0ZXI/LmdldFNlY3JldEluZm8oY29uZmlnKVxuICAgICAgLy8g5bCGIGFkYXB0ZXIg5o+Q5L6b55qE5a+G6ZKl5L+h5oGv5YaZ5YWlIGNvbmZpZy5hdXRoXG4gICAgICBjb25maWcuYXV0aCA9IHtcbiAgICAgICAgc2VjcmV0SWQ6IHNlY3JldEluZm8uc2VjcmV0SWQsXG4gICAgICAgIHNlY3JldEtleTogc2VjcmV0SW5mby5zZWNyZXRLZXksXG4gICAgICAgIHNlc3Npb25Ub2tlbjogc2VjcmV0SW5mby5zZXNzaW9uVG9rZW4sXG4gICAgICAgIHNlY3JldFR5cGU6IHNlY3JldEluZm8uc2VjcmV0VHlwZSBhcyBhbnksXG4gICAgICB9XG5cbiAgICAgIC8vIG5vZGUg546v5aKD5Y+v6IO95Y+v5Lul5LuO5LiK5LiL5paH6I635Y+WZW5277yM55So5oi35pyq5pi+5byP5oyH5a6a5pe26Ieq5Yqo5aGr5YWFXG4gICAgICBpZiAoIWNvbmZpZy5lbnYpIHtcbiAgICAgICAgY29uZmlnLmVudiA9IHNlY3JldEluZm8uZW52XG4gICAgICB9XG5cbiAgICAgIC8vIG5vZGUgYWRhcHRlcueOr+Wig+iDveivu+WPluWIsCBwcm9jZXNzLmVudi5DTE9VREJBU0VfQVBJS0VZIOaXtu+8jOWcqOayoeacieS8oOWFpWFjY2Vzc0tleeaXtu+8jOS9v+eUqCBub2RlIGFkYXB0ZXIg5o+Q5L6b55qEIGFjY2Vzc0tlee+8iHByb2Nlc3MuZW52LkNMT1VEQkFTRV9BUElLRVnvvIlcbiAgICAgIGlmICghY29uZmlnLmFjY2Vzc0tleSAmJiBzZWNyZXRJbmZvLmFjY2Vzc0tleSkge1xuICAgICAgICBjb25maWcuYWNjZXNzS2V5ID0gc2VjcmV0SW5mby5hY2Nlc3NLZXlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnXG4gIH1cbn1cblxuLy8g57G75Z6L5a+85Ye6XG5leHBvcnQgdHlwZSB7IENsb3VkYmFzZSB9XG5cbi8vIOWAvOWvvOWHulxuZXhwb3J0IGNvbnN0IGNsb3VkYmFzZTogSUNsb3VkYmFzZSA9IG5ldyBDbG91ZGJhc2UoKVxuXG5jbG91ZGJhc2UudXNlQWRhcHRlcnMoZ2V0V3hEZWZhdWx0QWRhcHRlcigpKVxuXG4vLyDpu5jorqTlr7zlh7rlrp7kvotcbmV4cG9ydCBkZWZhdWx0IGNsb3VkYmFzZVxuIl19
|
|
@@ -44,6 +44,7 @@ export declare class CloudbaseRequest implements ICloudbaseRequest {
|
|
|
44
44
|
search?: string;
|
|
45
45
|
defaultQuery?: KV<any>;
|
|
46
46
|
headers?: KV<string>;
|
|
47
|
+
endPointMode?: 'CLOUD_API' | 'GATEWAY';
|
|
47
48
|
}, customReqOpts?: ICustomReqOpts): Promise<ResponseObject>;
|
|
48
49
|
fetch(options: IFetchOptions & {
|
|
49
50
|
token?: string;
|
package/dist/cjs/libs/request.js
CHANGED
|
@@ -124,6 +124,7 @@ var CloudbaseRequest = (function () {
|
|
|
124
124
|
timeout: this.config.timeout,
|
|
125
125
|
timeoutMsg: "[@cloudbase/js-sdk] \u8BF7\u6C42\u5728".concat(this.config.timeout / 1000, "s\u5185\u672A\u5B8C\u6210\uFF0C\u5DF2\u4E2D\u65AD"),
|
|
126
126
|
restrictedMethods: ['post', 'put'],
|
|
127
|
+
auth: config.auth,
|
|
127
128
|
};
|
|
128
129
|
this.reqClass = new adapter_1.Platform.adapter.reqClass(reqConfig);
|
|
129
130
|
this.throwWhenRequestFail = config.throw || false;
|
|
@@ -291,7 +292,7 @@ var CloudbaseRequest = (function () {
|
|
|
291
292
|
parse && (formatQuery.parse = true);
|
|
292
293
|
inQuery
|
|
293
294
|
&& (formatQuery = __assign(__assign({}, inQuery), formatQuery));
|
|
294
|
-
endPointMode = this.config.endPointMode || 'CLOUD_API';
|
|
295
|
+
endPointMode = (options === null || options === void 0 ? void 0 : options.endPointMode) || this.config.endPointMode || 'CLOUD_API';
|
|
295
296
|
url = (0, common_1.getEndPointInfo)(this.config.env, endPointMode);
|
|
296
297
|
BASE_URL = url.baseUrl;
|
|
297
298
|
PROTOCOL = url.protocol;
|
|
@@ -460,4 +461,4 @@ function getRequestByEnvId(env) {
|
|
|
460
461
|
return requestMap[env];
|
|
461
462
|
}
|
|
462
463
|
exports.getRequestByEnvId = getRequestByEnvId;
|
|
463
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWJzL3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUFtRztBQVNuRyxrREFBa0U7QUFVbEUsaUNBQXVDO0FBQ3ZDLHFDQUFvQztBQUM1QixJQUFBLE1BQU0sR0FBSyxxQkFBUyxPQUFkLENBQWM7QUFDcEIsSUFBQSxRQUFRLEdBQTRCLGlCQUFLLFNBQWpDLEVBQUUsVUFBVSxHQUFnQixpQkFBSyxXQUFyQixFQUFFLFNBQVMsR0FBSyxpQkFBSyxVQUFWLENBQVU7QUFHakQsSUFBTSwyQkFBMkIsR0FBRztJQUNsQyxhQUFhO0lBQ2IsYUFBYTtJQUNiLHVCQUF1QjtJQUN2Qix3QkFBd0I7SUFDeEIsYUFBYTtJQUNiLHVDQUF1QztJQUN2QyxpQ0FBaUM7SUFDakMsMEJBQTBCO0lBQzFCLDZCQUE2QjtJQUM3Qiw2QkFBNkI7SUFDN0IsMkJBQTJCO0NBQzVCLENBQUE7QUFFRCxTQUFTLFNBQVMsQ0FBQyxRQUE2QixFQUFFLElBQVksRUFBRSxLQUEyQjtJQUN6RixJQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbkMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsT0FBd0I7UUFDakQsSUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ2YsSUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFBO1FBQ2xCLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJO1lBQ1gsSUFBQSxLQUFtRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBdkUsWUFBWSxVQUFBLEVBQVcsZUFBZSxhQUFpQyxDQUFBO1lBQ3JGLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFB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QUM7QUFMRCxrQ0FLQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLEdBQVc7SUFDM0MsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDeEIsQ0FBQztBQUZELDhDQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREFUQV9WRVJTSU9OLCBnZXRTZGtWZXJzaW9uLCBnZXRCYXNlRW5kUG9pbnQsIGdldEVuZFBvaW50SW5mbyB9IGZyb20gJy4uL2NvbnN0YW50cy9jb21tb24nXG5pbXBvcnQge1xuICBJUmVxdWVzdE9wdGlvbnMsXG4gIFNES1JlcXVlc3RJbnRlcmZhY2UsXG4gIFJlc3BvbnNlT2JqZWN0LFxuICBJVXBsb2FkUmVxdWVzdE9wdGlvbnMsXG4gIElSZXF1ZXN0Q29uZmlnLFxuICBJRmV0Y2hPcHRpb25zLFxufSBmcm9tICdAY2xvdWRiYXNlL2FkYXB0ZXItaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXRpbHMsIGNvbnN0YW50cywgbGFuZ0V2ZW50IH0gZnJvbSAnQGNsb3VkYmFzZS91dGlsaXRpZXMnXG5pbXBvcnQgeyBFbmRQb2ludEtleSwgS1YgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgSUN1c3RvbVJlcU9wdHMgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2Z1bmN0aW9ucydcbmltcG9ydCB7XG4gIElHZXRBY2Nlc3NUb2tlblJlc3VsdCxcbiAgSUNsb3VkYmFzZVJlcXVlc3RDb25maWcsXG4gIElBcHBlbmRlZFJlcXVlc3RJbmZvLFxuICBJUmVxdWVzdEJlZm9yZUhvb2ssXG59IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvcmVxdWVzdCdcbmltcG9ydCB7IElDbG91ZGJhc2VDYWNoZSB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY2FjaGUnXG5pbXBvcnQgeyBnZXRMb2NhbENhY2hlIH0gZnJvbSAnLi9jYWNoZSdcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnLi9hZGFwdGVyJ1xuY29uc3QgeyBFUlJPUlMgfSA9IGNvbnN0YW50c1xuY29uc3QgeyBnZW5TZXFJZCwgaXNGb3JtRGF0YSwgZm9ybWF0VXJsIH0gPSB1dGlsc1xuXG4vLyDkuIvpnaLlh6Dnp40gYWN0aW9uIOS4jemcgOimgSBhY2Nlc3MgdG9rZW5cbmNvbnN0IEFDVElPTlNfV0lUSE9VVF9BQ0NFU1NUT0tFTiA9IFtcbiAgJ2F1dGguZ2V0Snd0JyxcbiAgJ2F1dGgubG9nb3V0JyxcbiAgJ2F1dGguc2lnbkluV2l0aFRpY2tldCcsXG4gICdhdXRoLnNpZ25JbkFub255bW91c2x5JyxcbiAgJ2F1dGguc2lnbkluJyxcbiAgJ2F1dGguZmV0Y2hBY2Nlc3NUb2tlbldpdGhSZWZyZXNoVG9rZW4nLFxuICAnYXV0aC5zaWduVXBXaXRoRW1haWxBbmRQYXNzd29yZCcsXG4gICdhdXRoLmFjdGl2YXRlRW5kVXNlck1haWwnLFxuICAnYXV0aC5zZW5kUGFzc3dvcmRSZXNldEVtYWlsJyxcbiAgJ2F1dGgucmVzZXRQYXNzd29yZFdpdGhUb2tlbicsXG4gICdhdXRoLmlzVXNlcm5hbWVSZWdpc3RlcmVkJyxcbl1cblxuZnVuY3Rpb24gYmluZEhvb2tzKGluc3RhbmNlOiBTREtSZXF1ZXN0SW50ZXJmYWNlLCBuYW1lOiBzdHJpbmcsIGhvb2tzOiBJUmVxdWVzdEJlZm9yZUhvb2tbXSkge1xuICBjb25zdCBvcmlnaW5NZXRob2QgPSBpbnN0YW5jZVtuYW1lXVxuICBpbnN0YW5jZVtuYW1lXSA9IGZ1bmN0aW9uIChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpIHtcbiAgICBjb25zdCBkYXRhID0ge31cbiAgICBjb25zdCBoZWFkZXJzID0ge31cbiAgICBob29rcy5mb3JFYWNoKChob29rKSA9PiB7XG4gICAgICBjb25zdCB7IGRhdGE6IGFwcGVuZGVkRGF0YSwgaGVhZGVyczogYXBwZW5kZWRIZWFkZXJzIH0gPSBob29rLmNhbGwoaW5zdGFuY2UsIG9wdGlvbnMpXG4gICAgICBPYmplY3QuYXNzaWduKGRhdGEsIGFwcGVuZGVkRGF0YSlcbiAgICAgIE9iamVjdC5hc3NpZ24oaGVhZGVycywgYXBwZW5kZWRIZWFkZXJzKVxuICAgIH0pXG4gICAgY29uc3Qgb3JpZ2luRGF0YSA9IG9wdGlvbnMuZGF0YVxuICAgIG9yaWdpbkRhdGFcbiAgICAgICYmICgoKSA9PiB7XG4gICAgICAgIGlmIChpc0Zvcm1EYXRhKG9yaWdpbkRhdGEpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAob3JpZ2luRGF0YSBhcyBGb3JtRGF0YSkuYXBwZW5kKGtleSwgZGF0YVtrZXldKVxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9ucy5kYXRhID0ge1xuICAgICAgICAgIC4uLm9yaWdpbkRhdGEsXG4gICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgfVxuICAgICAgfSkoKVxuICAgIG9wdGlvbnMuaGVhZGVycyA9IHtcbiAgICAgIC4uLihvcHRpb25zLmhlYWRlcnMgfHwge30pLFxuICAgICAgLi4uaGVhZGVycyxcbiAgICB9XG4gICAgcmV0dXJuIChvcmlnaW5NZXRob2QgYXMgRnVuY3Rpb24pLmNhbGwoaW5zdGFuY2UsIG9wdGlvbnMpXG4gIH1cbn1cbmZ1bmN0aW9uIGJlZm9yZUVhY2goKTogSUFwcGVuZGVkUmVxdWVzdEluZm8ge1xuICBjb25zdCBzZXFJZCA9IGdlblNlcUlkKClcbiAgcmV0dXJuIHtcbiAgICBkYXRhOiB7XG4gICAgICBzZXFJZCxcbiAgICB9LFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdYLVNESy1WZXJzaW9uJzogYEBjbG91ZGJhc2UvanMtc2RrLyR7Z2V0U2RrVmVyc2lvbigpfWAsXG4gICAgICAneC1zZXFpZCc6IHNlcUlkLFxuICAgIH0sXG4gIH1cbn1cbmV4cG9ydCBpbnRlcmZhY2UgSUdhdGVXYXlPcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZ1xuICBkYXRhPzogYW55XG4gIHBhdGg/OiBzdHJpbmdcbiAgbWV0aG9kOiBzdHJpbmdcbiAgaGVhZGVyPzoge31cbiAgdXJsPzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIElDbG91ZGJhc2VSZXF1ZXN0IHtcbiAgcG9zdDogKG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxSZXNwb25zZU9iamVjdD5cbiAgdXBsb2FkOiAob3B0aW9uczogSVVwbG9hZFJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PlxuICBkb3dubG9hZDogKG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxSZXNwb25zZU9iamVjdD5cbiAgcmVxdWVzdDogKGFjdGlvbjogc3RyaW5nLCBwYXJhbXM6IEtWPGFueT4sIG9wdGlvbnM/OiBLVjxhbnk+KSA9PiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PlxuICBzZW5kOiAoYWN0aW9uOiBzdHJpbmcsIGRhdGE6IEtWPGFueT4pID0+IFByb21pc2U8YW55PlxuICBmZXRjaDogKG9wdGlvbnM6IElGZXRjaE9wdGlvbnMpID0+IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+XG59XG5cbi8qKlxuICogQGNsYXNzIENsb3VkYmFzZVJlcXVlc3RcbiAqL1xuZXhwb3J0IGNsYXNzIENsb3VkYmFzZVJlcXVlc3QgaW1wbGVtZW50cyBJQ2xvdWRiYXNlUmVxdWVzdCB7XG4gIGNvbmZpZzogSUNsb3VkYmFzZVJlcXVlc3RDb25maWdcbiAgcHJpdmF0ZSByZXFDbGFzczogU0RLUmVxdWVzdEludGVyZmFjZVxuICAvLyDor7fmsYLlpLHotKXmmK/lkKbmipvlh7pFcnJvclxuICBwcml2YXRlIHRocm93V2hlblJlcXVlc3RGYWlsID0gZmFsc2VcbiAgLy8g5oyB5LmF5YyW5pys5Zyw5a2Y5YKoXG4gIHByaXZhdGUgbG9jYWxDYWNoZTogSUNsb3VkYmFzZUNhY2hlXG4gIC8qKlxuICAgKiDliJ3lp4vljJZcbiAgICogQHBhcmFtIGNvbmZpZ1xuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZmlnOiBJQ2xvdWRiYXNlUmVxdWVzdENvbmZpZyAmIHsgdGhyb3c/OiBib29sZWFuIH0pIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZ1xuICAgIGNvbnN0IHJlcUNvbmZpZzogSVJlcXVlc3RDb25maWcgPSB7XG4gICAgICB0aW1lb3V0OiB0aGlzLmNvbmZpZy50aW1lb3V0LFxuICAgICAgdGltZW91dE1zZzogYFtAY2xvdWRiYXNlL2pzLXNka10g6K+35rGC5ZyoJHt0aGlzLmNvbmZpZy50aW1lb3V0IC8gMTAwMH1z5YaF5pyq5a6M5oiQ77yM5bey5Lit5patYCxcbiAgICAgIHJlc3RyaWN0ZWRNZXRob2RzOiBbJ3Bvc3QnLCAncHV0J10sXG4gICAgfVxuICAgIHRoaXMucmVxQ2xhc3MgPSBuZXcgUGxhdGZvcm0uYWRhcHRlci5yZXFDbGFzcyhyZXFDb25maWcpXG4gICAgdGhpcy50aHJvd1doZW5SZXF1ZXN0RmFpbCA9IGNvbmZpZy50aHJvdyB8fCBmYWxzZVxuICAgIHRoaXMubG9jYWxDYWNoZSA9IGdldExvY2FsQ2FjaGUodGhpcy5jb25maWcuZW52KVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLmVuZFBvaW50TW9kZSAhPT0gJ0dBVEVXQVknKSB7XG4gICAgICBiaW5kSG9va3ModGhpcy5yZXFDbGFzcywgJ3Bvc3QnLCBbYmVmb3JlRWFjaF0pXG4gICAgICBiaW5kSG9va3ModGhpcy5yZXFDbGFzcywgJ3VwbG9hZCcsIFtiZWZvcmVFYWNoXSlcbiAgICAgIGJpbmRIb29rcyh0aGlzLnJlcUNsYXNzLCAnZG93bmxvYWQnLCBbYmVmb3JlRWFjaF0pXG4gICAgfVxuXG4gICAgbGFuZ0V2ZW50LmJ1cy5vbihsYW5nRXZlbnQuTEFOR19DSEFOR0VfRVZFTlQsIChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMuY29uZmlnLmkxOG4gPSBwYXJhbXMuZGF0YT8uaTE4biB8fCB0aGlzLmNvbmZpZy5pMThuXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBY2Nlc3NUb2tlbih0b2tlbiA9IG51bGwpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgaWYgKHRva2VuICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB0b2tlblxuICAgIH1cbiAgICBjb25zdCBhcHAgPSB0aGlzLmNvbmZpZy5fZnJvbUFwcFxuXG4gICAgaWYgKCFhcHAub2F1dGhJbnN0YW5jZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd5b3UgY2FuXFwndCByZXF1ZXN0IHdpdGhvdXQgYXV0aCcpXG4gICAgfVxuXG4gICAgY29uc3QgeyBvYXV0aEluc3RhbmNlIH0gPSBhcHBcbiAgICBjb25zdCBvYXV0aENsaWVudCA9IG9hdXRoSW5zdGFuY2Uub2F1dGgyY2xpZW50XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmdldE9hdXRoQWNjZXNzVG9rZW5WMihvYXV0aENsaWVudCkpLmFjY2Vzc1Rva2VuXG4gIH1cblxuICBwdWJsaWMgZ2V0RGVmYXVsdEhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFt0aGlzLmNvbmZpZy5pMThuPy5MQU5HX0hFQURFUl9LRVldOiB0aGlzLmNvbmZpZy5pMThuPy5sYW5nLFxuICAgICAgJ1gtU0RLLVZlcnNpb24nOiBgQGNsb3VkYmFzZS9qcy1zZGsvJHtnZXRTZGtWZXJzaW9uKCl9YCxcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcG9zdChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMsIGN1c3RvbVJlcU9wdHM/OiBJQ3VzdG9tUmVxT3B0cyk6IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnJlcUNsYXNzLnBvc3Qoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGhlYWRlcnM6IHsgLi4ub3B0aW9ucy5oZWFkZXJzLCAuLi50aGlzLmdldERlZmF1bHRIZWFkZXJzKCkgfSxcbiAgICAgIGN1c3RvbVJlcU9wdHMsXG4gICAgfSlcbiAgICByZXR1cm4gcmVzXG4gIH1cbiAgcHVibGljIGFzeW5jIHVwbG9hZChvcHRpb25zOiBJVXBsb2FkUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5yZXFDbGFzcy51cGxvYWQoeyAuLi5vcHRpb25zLCBoZWFkZXJzOiB7IC4uLm9wdGlvbnMuaGVhZGVycywgLi4udGhpcy5nZXREZWZhdWx0SGVhZGVycygpIH0gfSlcbiAgICByZXR1cm4gcmVzXG4gIH1cbiAgcHVibGljIGFzeW5jIGRvd25sb2FkKG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnJlcUNsYXNzLmRvd25sb2FkKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzOiB7IC4uLm9wdGlvbnMuaGVhZGVycywgLi4udGhpcy5nZXREZWZhdWx0SGVhZGVycygpIH0sXG4gICAgfSlcbiAgICByZXR1cm4gcmVzXG4gIH1cblxuICBwdWJsaWMgZ2V0QmFzZUVuZFBvaW50KGVuZFBvaW50S2V5OiBFbmRQb2ludEtleSA9ICdDTE9VRF9BUEknKSB7XG4gICAgcmV0dXJuIGdldEJhc2VFbmRQb2ludCh0aGlzLmNvbmZpZy5lbnYsIGVuZFBvaW50S2V5KVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9hdXRoQWNjZXNzVG9rZW5WMihvYXV0aENsaWVudDogYW55KTogUHJvbWlzZTxJR2V0QWNjZXNzVG9rZW5SZXN1bHQ+IHtcbiAgICBjb25zdCB2YWxpZEFjY2Vzc1Rva2VuID0gYXdhaXQgb2F1dGhDbGllbnQuZ2V0QWNjZXNzVG9rZW4oKVxuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gYXdhaXQgb2F1dGhDbGllbnQuZ2V0Q3JlZGVudGlhbHMoKVxuICAgIHJldHVybiB7XG4gICAgICBhY2Nlc3NUb2tlbjogdmFsaWRBY2Nlc3NUb2tlbixcbiAgICAgIGFjY2Vzc1Rva2VuRXhwaXJlOiBuZXcgRGF0ZShjcmVkZW50aWFscy5leHBpcmVzX2F0KS5nZXRUaW1lKCksXG4gICAgfVxuICB9XG5cbiAgLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuICBwdWJsaWMgYXN5bmMgcmVxdWVzdChcbiAgICBhY3Rpb246IHN0cmluZyxcbiAgICBwYXJhbXM6IEtWPGFueT4sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIG9uVXBsb2FkUHJvZ3Jlc3M/OiBGdW5jdGlvblxuICAgICAgcGF0aG5hbWU/OiBzdHJpbmdcbiAgICAgIHBhcnNlPzogYm9vbGVhblxuICAgICAgaW5RdWVyeT86IEtWPGFueT5cbiAgICAgIHNlYXJjaD86IHN0cmluZ1xuICAgICAgZGVmYXVsdFF1ZXJ5PzogS1Y8YW55PlxuICAgICAgaGVhZGVycz86IEtWPHN0cmluZz5cbiAgICB9LFxuICAgIGN1c3RvbVJlcU9wdHM/OiBJQ3VzdG9tUmVxT3B0cyxcbiAgKTogUHJvbWlzZTxSZXNwb25zZU9iamVjdD4ge1xuICAgIGNvbnN0IHRjYlRyYWNlS2V5ID0gYHgtdGNiLXRyYWNlXyR7dGhpcy5jb25maWcuZW52fWBcbiAgICBsZXQgY29udGVudFR5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xuXG4gICAgY29uc3QgdG1wT2JqOiBLVjxhbnk+ID0ge1xuICAgICAgYWN0aW9uLFxuICAgICAgZGF0YVZlcnNpb246IERBVEFfVkVSU0lPTixcbiAgICAgIGVudjogdGhpcy5jb25maWcuZW52LFxuICAgICAgLi4ucGFyYW1zLFxuICAgIH1cblxuICAgIGlmIChBQ1RJT05TX1dJVEhPVVRfQUNDRVNTVE9LRU4uaW5kZXhPZihhY3Rpb24pID09PSAtMSkge1xuICAgICAgY29uc3QgYXBwID0gdGhpcy5jb25maWcuX2Zyb21BcHBcblxuICAgICAgaWYgKCFhcHAub2F1dGhJbnN0YW5jZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3lvdSBjYW5cXCd0IHJlcXVlc3Qgd2l0aG91dCBhdXRoJylcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBvYXV0aEluc3RhbmNlIH0gPSBhcHBcbiAgICAgIGNvbnN0IG9hdXRoQ2xpZW50ID0gb2F1dGhJbnN0YW5jZS5vYXV0aDJjbGllbnRcbiAgICAgIHRtcE9iai5hY2Nlc3NfdG9rZW4gPSAoYXdhaXQgdGhpcy5nZXRPYXV0aEFjY2Vzc1Rva2VuVjIob2F1dGhDbGllbnQpKS5hY2Nlc3NUb2tlblxuICAgIH1cblxuICAgIC8vIOaLvGJvZHnlkoxjb250ZW50LXR5cGVcbiAgICBsZXQgcGF5bG9hZFxuICAgIGlmIChhY3Rpb24gPT09ICdzdG9yYWdlLnVwbG9hZEZpbGUnKSB7XG4gICAgICBwYXlsb2FkID0gbmV3IEZvcm1EYXRhKClcbiAgICAgIE9iamVjdC5rZXlzKHBheWxvYWQpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBheWxvYWQsIGtleSkgJiYgcGF5bG9hZFtrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwYXlsb2FkLmFwcGVuZChrZXksIHRtcE9ialtrZXldKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgY29udGVudFR5cGUgPSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YSdcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudFR5cGUgPSAnYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04J1xuICAgICAgcGF5bG9hZCA9IHt9XG4gICAgICBPYmplY3Qua2V5cyh0bXBPYmopLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAodG1wT2JqW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHBheWxvYWRba2V5XSA9IHRtcE9ialtrZXldXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIGNvbnN0IG9wdHM6IGFueSA9IHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ2NvbnRlbnQtdHlwZSc6IGNvbnRlbnRUeXBlLFxuICAgICAgICAuLi50aGlzLmdldERlZmF1bHRIZWFkZXJzKCksXG4gICAgICAgIC4uLm9wdGlvbnM/LmhlYWRlcnMsXG4gICAgICB9LFxuICAgIH1cbiAgICBpZiAob3B0aW9ucz8ub25VcGxvYWRQcm9ncmVzcykge1xuICAgICAgb3B0cy5vblVwbG9hZFByb2dyZXNzID0gb3B0aW9ucy5vblVwbG9hZFByb2dyZXNzXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLnJlZ2lvbikge1xuICAgICAgb3B0cy5oZWFkZXJzWydYLVRDQi1SZWdpb24nXSA9IHRoaXMuY29uZmlnLnJlZ2lvblxuICAgIH1cblxuICAgIGNvbnN0IHRyYWNlSGVhZGVyID0gdGhpcy5sb2NhbENhY2hlLmdldFN0b3JlKHRjYlRyYWNlS2V5KVxuICAgIGlmICh0cmFjZUhlYWRlcikge1xuICAgICAgb3B0cy5oZWFkZXJzWydYLVRDQi1UcmFjZSddID0gdHJhY2VIZWFkZXJcbiAgICB9XG5cbiAgICAvLyDlj5Hlh7ror7fmsYJcbiAgICAvLyDmlrDnmoQgdXJsIOmcgOimgeaQuuW4piBlbnYg5Y+C5pWw6L+b6KGMIENPUlMg5qCh6aqMXG4gICAgLy8g6K+35rGC6ZO+5o6l5pSv5oyB5re75Yqg5Yqo5oCBIHF1ZXJ5IOWPguaVsO+8jOaWueS+v+eUqOaIt+iwg+ivleWumuS9jeivt+axglxuICAgIGNvbnN0IHBhcnNlID0gb3B0aW9ucz8ucGFyc2UgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMucGFyc2UgOiBwYXJhbXMucGFyc2VcbiAgICBjb25zdCBpblF1ZXJ5ID0gb3B0aW9ucz8uaW5RdWVyeSAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5pblF1ZXJ5IDogcGFyYW1zLmluUXVlcnlcbiAgICBjb25zdCBzZWFyY2ggPSBvcHRpb25zPy5zZWFyY2ggIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuc2VhcmNoIDogcGFyYW1zLnNlYXJjaFxuXG4gICAgbGV0IGZvcm1hdFF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgLi4uKG9wdGlvbnM/LmRlZmF1bHRRdWVyeSB8fCB7fSksXG4gICAgICBlbnY6IHRoaXMuY29uZmlnLmVudixcbiAgICB9XG4gICAgLy8g5bCd6K+V6Kej5p6Q5ZON5bqU5pWw5o2u5Li6IEpTT05cbiAgICBwYXJzZSAmJiAoZm9ybWF0UXVlcnkucGFyc2UgPSB0cnVlKVxuICAgIGluUXVlcnlcbiAgICAgICYmIChmb3JtYXRRdWVyeSA9IHtcbiAgICAgICAgLi4uaW5RdWVyeSxcbiAgICAgICAgLi4uZm9ybWF0UXVlcnksXG4gICAgICB9KVxuXG4gICAgY29uc3QgZW5kUG9pbnRNb2RlID0gdGhpcy5jb25maWcuZW5kUG9pbnRNb2RlIHx8ICdDTE9VRF9BUEknXG5cbiAgICBjb25zdCB1cmwgPSBnZXRFbmRQb2ludEluZm8odGhpcy5jb25maWcuZW52LCBlbmRQb2ludE1vZGUpXG4gICAgbGV0IEJBU0VfVVJMID0gdXJsLmJhc2VVcmxcbiAgICBjb25zdCBQUk9UT0NPTCA9IHVybC5wcm90b2NvbFxuXG4gICAgaWYgKGVuZFBvaW50TW9kZSA9PT0gJ0dBVEVXQVknKSB7XG4gICAgICBpZiAoL14oKGRhdGFiYXNlKVxcLil8KGF1dGhcXC53c1dlYlNpZ24pLy50ZXN0KGFjdGlvbikpIHtcbiAgICAgICAgY29uc3QgdXJsID0gZ2V0RW5kUG9pbnRJbmZvKHRoaXMuY29uZmlnLmVudiwgJ0NMT1VEX0FQSScpXG4gICAgICAgIEJBU0VfVVJMID0gYCR7dXJsLmJhc2VVcmwubWF0Y2goL1xcL1xcLyhbXi8/I10qKS8pWzBdfS93ZWJgXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8g55Sf5oiQ6K+35rGCIHVybFxuICAgIGxldCBuZXdVcmxcbiAgICBpZiAob3B0aW9ucy5wYXRobmFtZSkge1xuICAgICAgbmV3VXJsID0gZm9ybWF0VXJsKFxuICAgICAgICBQUk9UT0NPTCxcbiAgICAgICAgYCR7Z2V0QmFzZUVuZFBvaW50KHRoaXMuY29uZmlnLmVudiwgZW5kUG9pbnRNb2RlKT8ucmVwbGFjZSgvXmh0dHBzPzovLCAnJyl9LyR7b3B0aW9ucy5wYXRobmFtZX1gLFxuICAgICAgICBmb3JtYXRRdWVyeSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3VXJsID0gZm9ybWF0VXJsKFBST1RPQ09MLCBCQVNFX1VSTCwgZm9ybWF0UXVlcnkpXG4gICAgfVxuXG4gICAgaWYgKHNlYXJjaCkge1xuICAgICAgbmV3VXJsICs9IHNlYXJjaFxuICAgIH1cblxuICAgIGNvbnN0IHJlczogUmVzcG9uc2VPYmplY3QgPSBhd2FpdCB0aGlzLnBvc3QoXG4gICAgICB7XG4gICAgICAgIHVybDogbmV3VXJsLFxuICAgICAgICBkYXRhOiBwYXlsb2FkLFxuICAgICAgICAuLi5vcHRzLFxuICAgICAgfSxcbiAgICAgIGN1c3RvbVJlcU9wdHMsXG4gICAgKVxuXG4gICAgLy8g5L+d5a2YIHRyYWNlIGhlYWRlclxuICAgIGNvbnN0IHJlc1RyYWNlSGVhZGVyID0gcmVzLmhlYWRlcj8uWyd4LXRjYi10cmFjZSddXG4gICAgaWYgKHJlc1RyYWNlSGVhZGVyKSB7XG4gICAgICB0aGlzLmxvY2FsQ2FjaGUuc2V0U3RvcmUodGNiVHJhY2VLZXksIHJlc1RyYWNlSGVhZGVyKVxuICAgIH1cblxuICAgIGlmICgoTnVtYmVyKHJlcy5zdGF0dXMpICE9PSAyMDAgJiYgTnVtYmVyKHJlcy5zdGF0dXNDb2RlKSAhPT0gMjAwKSB8fCAhcmVzLmRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbmV0d29yayByZXF1ZXN0IGVycm9yJylcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmV0Y2gob3B0aW9uczogSUZldGNoT3B0aW9ucyAmIHsgdG9rZW4/OiBzdHJpbmc7IGN1c3RvbVJlcU9wdHM/OiBJQ3VzdG9tUmVxT3B0cyB9LCk6IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+IHtcbiAgICBjb25zdCB7IHRva2VuLCBoZWFkZXJzID0ge30sIC4uLnJlc3RPcHRpb25zIH0gPSBvcHRpb25zXG5cbiAgICBjb25zdCBkb0ZldGNoID0gYXN5bmMgKCkgPT4gdGhpcy5yZXFDbGFzcy5mZXRjaCh7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIC8vICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIC8vICdYLVJlcXVlc3QtSWQnOiBgJHt1dGlscy5nZW5lcmF0ZVJlcXVlc3RJZCgpfWAsXG4gICAgICAgIC8vICdYLVJlcXVlc3QtVGltZXN0YW1wJzogYCR7RGF0ZS5ub3coKX1gLFxuICAgICAgICAnWC1TREstVmVyc2lvbic6IGBAY2xvdWRiYXNlL2pzLXNkay8ke2dldFNka1ZlcnNpb24oKX1gLFxuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YXdhaXQgdGhpcy5nZXRBY2Nlc3NUb2tlbih0b2tlbil9YCxcbiAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0SGVhZGVycygpLFxuICAgICAgICAuLi5oZWFkZXJzLFxuICAgICAgfSxcbiAgICAgIC4uLnJlc3RPcHRpb25zLFxuICAgIH0pXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZG9GZXRjaCgpXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyPy5jb2RlID09PSAnQUNDRVNTX1RPS0VOX0VYUElSRUQnKSB7XG4gICAgICAgIC8vIOWmguaenOaYr+WboOS4uiB0b2tlbiDov4fmnJ/lpLHotKXvvIzliLcgdG9rZW4g5ZCO5YaN6K+V5LiA5qyhXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25maWc/Ll9mcm9tQXBwPy5vYXV0aEluc3RhbmNlPy5hdXRoQXBpPy5yZWZyZXNoVG9rZW5Gb3JjZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IGVyclxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuY29uZmlnPy5fZnJvbUFwcD8ub2F1dGhJbnN0YW5jZT8uYXV0aEFwaT8ucmVmcmVzaFRva2VuRm9yY2UoKVxuICAgICAgICByZXR1cm4gZG9GZXRjaCgpXG4gICAgICB9XG4gICAgICAvLyDlhbbku5bljp/lm6DlkJHkuIrmipvlh7pcblxuICAgICAgdGhyb3cgZXJyXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlbmQoXG4gICAgYWN0aW9uOiBzdHJpbmcsXG4gICAgZGF0YTogS1Y8YW55PiA9IHt9LFxuICAgIG9wdGlvbnM6IEtWPGFueT4gPSB7fSxcbiAgICBjdXN0b21SZXFPcHRzPzogSUN1c3RvbVJlcU9wdHMsXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnJlcXVlc3QoXG4gICAgICBhY3Rpb24sXG4gICAgICBkYXRhLFxuICAgICAgeyAuLi5vcHRpb25zLCBvblVwbG9hZFByb2dyZXNzOiBkYXRhLm9uVXBsb2FkUHJvZ3Jlc3MgfSxcbiAgICAgIGN1c3RvbVJlcU9wdHMsXG4gICAgKVxuXG4gICAgaWYgKHJlc3BvbnNlLmRhdGEuY29kZSAmJiB0aGlzLnRocm93V2hlblJlcXVlc3RGYWlsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuT1BFUkFUSU9OX0ZBSUwsXG4gICAgICAgIG1zZzogYFske3Jlc3BvbnNlLmRhdGEuY29kZX1dICR7cmVzcG9uc2UuZGF0YS5tZXNzYWdlfWAsXG4gICAgICB9KSwpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlLmRhdGFcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnYXRlV2F5KG9wdGlvbnM6IElHYXRlV2F5T3B0aW9ucywgY3VzdG9tUmVxT3B0cz86IElDdXN0b21SZXFPcHRzKSB7XG4gICAgY29uc3QgeyB1cmwsIG5hbWUsIGRhdGEsIHBhdGggPSAnJywgbWV0aG9kLCBoZWFkZXIgPSB7fSB9ID0gb3B0aW9uc1xuXG4gICAgaWYgKCghbmFtZSB8fCAhcGF0aCkgJiYgIXVybCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY29kZTogRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgICBtc2c6ICdbZ2F0ZVdheV0gaW52YWxpZCBmdW5jdGlvbiBuYW1lIG9yIHBhdGggb3IgdXJsJyxcbiAgICAgIH0pLClcbiAgICB9XG4gICAgbGV0IGpzb25EYXRhXG4gICAgdHJ5IHtcbiAgICAgIGpzb25EYXRhID0gZGF0YSA/IEpTT04uc3RyaW5naWZ5KGRhdGEpIDogJydcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgIG1zZzogJ1tnYXRlV2F5XSBpbnZhbGlkIGRhdGEnLFxuICAgICAgfSksKVxuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHV0aWxzLmdlbmVyYXRlUmVxdWVzdElkKClcbiAgICBjb25zdCB7IGJhc2VVcmwsIHByb3RvY29sIH0gPSBnZXRFbmRQb2ludEluZm8odGhpcy5jb25maWcuZW52LCAnR0FURVdBWScpXG4gICAgbGV0IGVuZHBvaW50ID0gYCR7cHJvdG9jb2x9JHtiYXNlVXJsfSR7dXJsIHx8IGAvJHtwYXRofS8ke25hbWV9YH1gXG5cbiAgICBjb25zdCBpc0dldEFuZEhlYWQgPSBbJ0dFVCcsICdIRUFEJ10uaW5jbHVkZXMobWV0aG9kPy50b1VwcGVyQ2FzZT8uKCkpXG5cbiAgICBpZiAoaXNHZXRBbmRIZWFkKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsZXQgZGF0YVBhcnNlID0ge31cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBkYXRhUGFyc2UgPSBKU09OLnBhcnNlKGRhdGEgYXMgYW55KVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGRhdGFQYXJzZSA9IGRhdGEgfHwge31cbiAgICAgICAgfVxuICAgICAgICBlbmRwb2ludCA9IGAke2VuZHBvaW50fSR7ZW5kcG9pbnQuaW5jbHVkZXMoJz8nKSA/ICcmJyA6ICc/J30ke09iamVjdC5rZXlzKGRhdGFQYXJzZSlcbiAgICAgICAgICAubWFwKGtleSA9PiBgJHtrZXl9PSR7ZGF0YVBhcnNlW2tleV19YClcbiAgICAgICAgICAuam9pbignJicpfWBcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZldGNoKHtcbiAgICAgIG1ldGhvZDogbWV0aG9kIHx8ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JyxcbiAgICAgICAgJ1gtUmVxdWVzdC1JZCc6IHJlcXVlc3RJZCxcbiAgICAgICAgLi4uaGVhZGVyLFxuICAgICAgfSxcbiAgICAgIC4uLihpc0dldEFuZEhlYWQgPyB7fSA6IHsgYm9keToganNvbkRhdGEgfSksXG4gICAgICB1cmw6IGVuZHBvaW50LFxuICAgICAgY3VzdG9tUmVxT3B0cyxcbiAgICB9KVxuXG4gICAgcmV0dXJuIHsgcmVxdWVzdElkLCAuLi5yZXNwb25zZSwgZGF0YTogYXdhaXQgcmVzcG9uc2UuZGF0YSB9XG4gIH1cbn1cblxuY29uc3QgcmVxdWVzdE1hcDogS1Y8Q2xvdWRiYXNlUmVxdWVzdD4gPSB7fVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdFJlcXVlc3QoY29uZmlnOiBJQ2xvdWRiYXNlUmVxdWVzdENvbmZpZykge1xuICByZXF1ZXN0TWFwW2NvbmZpZy5lbnZdID0gbmV3IENsb3VkYmFzZVJlcXVlc3Qoe1xuICAgIC4uLmNvbmZpZyxcbiAgICB0aHJvdzogdHJ1ZSxcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlcXVlc3RCeUVudklkKGVudjogc3RyaW5nKTogQ2xvdWRiYXNlUmVxdWVzdCB7XG4gIHJldHVybiByZXF1ZXN0TWFwW2Vudl1cbn1cbiJdfQ==
|
|
464
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWJzL3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUFtRztBQVNuRyxrREFBa0U7QUFVbEUsaUNBQXVDO0FBQ3ZDLHFDQUFvQztBQUM1QixJQUFBLE1BQU0sR0FBSyxxQkFBUyxPQUFkLENBQWM7QUFDcEIsSUFBQSxRQUFRLEdBQTRCLGlCQUFLLFNBQWpDLEVBQUUsVUFBVSxHQUFnQixpQkFBSyxXQUFyQixFQUFFLFNBQVMsR0FBSyxpQkFBSyxVQUFWLENBQVU7QUFHakQsSUFBTSwyQkFBMkIsR0FBRztJQUNsQyxhQUFhO0lBQ2IsYUFBYTtJQUNiLHVCQUF1QjtJQUN2Qix3QkFBd0I7SUFDeEIsYUFBYTtJQUNiLHVDQUF1QztJQUN2QyxpQ0FBaUM7SUFDakMsMEJBQTBCO0lBQzFCLDZCQUE2QjtJQUM3Qiw2QkFBNkI7SUFDN0IsMkJBQTJCO0NBQzVCLENBQUE7QUFFRCxTQUFTLFNBQVMsQ0FBQyxRQUE2QixFQUFFLElBQVksRUFBRSxLQUEyQjtJQUN6RixJQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbkMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsT0FBd0I7UUFDakQsSUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ2YsSUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFBO1FBQ2xCLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJO1lBQ1gsSUFBQSxLQUFtRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBdkUsWUFBWSxVQUFBLEVBQVcsZUFBZSxhQUFpQyxDQUFBO1lBQ3JGLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFB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LEdBQUcsQ0FBQyxHQUFHLElBQUksZ0JBQWdCLHVCQUN4QyxNQUFNLEtBQ1QsS0FBSyxFQUFFLElBQUksSUFDWCxDQUFBO0FBQ0osQ0FBQztBQUxELGtDQUtDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUMsR0FBVztJQUMzQyxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUN4QixDQUFDO0FBRkQsOENBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEQVRBX1ZFUlNJT04sIGdldFNka1ZlcnNpb24sIGdldEJhc2VFbmRQb2ludCwgZ2V0RW5kUG9pbnRJbmZvIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbW1vbidcbmltcG9ydCB7XG4gIElSZXF1ZXN0T3B0aW9ucyxcbiAgU0RLUmVxdWVzdEludGVyZmFjZSxcbiAgUmVzcG9uc2VPYmplY3QsXG4gIElVcGxvYWRSZXF1ZXN0T3B0aW9ucyxcbiAgSVJlcXVlc3RDb25maWcsXG4gIElGZXRjaE9wdGlvbnMsXG59IGZyb20gJ0BjbG91ZGJhc2UvYWRhcHRlci1pbnRlcmZhY2UnXG5pbXBvcnQgeyB1dGlscywgY29uc3RhbnRzLCBsYW5nRXZlbnQgfSBmcm9tICdAY2xvdWRiYXNlL3V0aWxpdGllcydcbmltcG9ydCB7IEVuZFBvaW50S2V5LCBLViB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMnXG5pbXBvcnQgeyBJQ3VzdG9tUmVxT3B0cyB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvZnVuY3Rpb25zJ1xuaW1wb3J0IHtcbiAgSUdldEFjY2Vzc1Rva2VuUmVzdWx0LFxuICBJQ2xvdWRiYXNlUmVxdWVzdENvbmZpZyxcbiAgSUFwcGVuZGVkUmVxdWVzdEluZm8sXG4gIElSZXF1ZXN0QmVmb3JlSG9vayxcbn0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9yZXF1ZXN0J1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNhY2hlIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9jYWNoZSdcbmltcG9ydCB7IGdldExvY2FsQ2FjaGUgfSBmcm9tICcuL2NhY2hlJ1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICcuL2FkYXB0ZXInXG5jb25zdCB7IEVSUk9SUyB9ID0gY29uc3RhbnRzXG5jb25zdCB7IGdlblNlcUlkLCBpc0Zvcm1EYXRhLCBmb3JtYXRVcmwgfSA9IHV0aWxzXG5cbi8vIOS4i+mdouWHoOenjSBhY3Rpb24g5LiN6ZyA6KaBIGFjY2VzcyB0b2tlblxuY29uc3QgQUNUSU9OU19XSVRIT1VUX0FDQ0VTU1RPS0VOID0gW1xuICAnYXV0aC5nZXRKd3QnLFxuICAnYXV0aC5sb2dvdXQnLFxuICAnYXV0aC5zaWduSW5XaXRoVGlja2V0JyxcbiAgJ2F1dGguc2lnbkluQW5vbnltb3VzbHknLFxuICAnYXV0aC5zaWduSW4nLFxuICAnYXV0aC5mZXRjaEFjY2Vzc1Rva2VuV2l0aFJlZnJlc2hUb2tlbicsXG4gICdhdXRoLnNpZ25VcFdpdGhFbWFpbEFuZFBhc3N3b3JkJyxcbiAgJ2F1dGguYWN0aXZhdGVFbmRVc2VyTWFpbCcsXG4gICdhdXRoLnNlbmRQYXNzd29yZFJlc2V0RW1haWwnLFxuICAnYXV0aC5yZXNldFBhc3N3b3JkV2l0aFRva2VuJyxcbiAgJ2F1dGguaXNVc2VybmFtZVJlZ2lzdGVyZWQnLFxuXVxuXG5mdW5jdGlvbiBiaW5kSG9va3MoaW5zdGFuY2U6IFNES1JlcXVlc3RJbnRlcmZhY2UsIG5hbWU6IHN0cmluZywgaG9va3M6IElSZXF1ZXN0QmVmb3JlSG9va1tdKSB7XG4gIGNvbnN0IG9yaWdpbk1ldGhvZCA9IGluc3RhbmNlW25hbWVdXG4gIGluc3RhbmNlW25hbWVdID0gZnVuY3Rpb24gKG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucykge1xuICAgIGNvbnN0IGRhdGEgPSB7fVxuICAgIGNvbnN0IGhlYWRlcnMgPSB7fVxuICAgIGhvb2tzLmZvckVhY2goKGhvb2spID0+IHtcbiAgICAgIGNvbnN0IHsgZGF0YTogYXBwZW5kZWREYXRhLCBoZWFkZXJzOiBhcHBlbmRlZEhlYWRlcnMgfSA9IGhvb2suY2FsbChpbnN0YW5jZSwgb3B0aW9ucylcbiAgICAgIE9iamVjdC5hc3NpZ24oZGF0YSwgYXBwZW5kZWREYXRhKVxuICAgICAgT2JqZWN0LmFzc2lnbihoZWFkZXJzLCBhcHBlbmRlZEhlYWRlcnMpXG4gICAgfSlcbiAgICBjb25zdCBvcmlnaW5EYXRhID0gb3B0aW9ucy5kYXRhXG4gICAgb3JpZ2luRGF0YVxuICAgICAgJiYgKCgpID0+IHtcbiAgICAgICAgaWYgKGlzRm9ybURhdGEob3JpZ2luRGF0YSkpIHtcbiAgICAgICAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIChvcmlnaW5EYXRhIGFzIEZvcm1EYXRhKS5hcHBlbmQoa2V5LCBkYXRhW2tleV0pXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBvcHRpb25zLmRhdGEgPSB7XG4gICAgICAgICAgLi4ub3JpZ2luRGF0YSxcbiAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICB9XG4gICAgICB9KSgpXG4gICAgb3B0aW9ucy5oZWFkZXJzID0ge1xuICAgICAgLi4uKG9wdGlvbnMuaGVhZGVycyB8fCB7fSksXG4gICAgICAuLi5oZWFkZXJzLFxuICAgIH1cbiAgICByZXR1cm4gKG9yaWdpbk1ldGhvZCBhcyBGdW5jdGlvbikuY2FsbChpbnN0YW5jZSwgb3B0aW9ucylcbiAgfVxufVxuZnVuY3Rpb24gYmVmb3JlRWFjaCgpOiBJQXBwZW5kZWRSZXF1ZXN0SW5mbyB7XG4gIGNvbnN0IHNlcUlkID0gZ2VuU2VxSWQoKVxuICByZXR1cm4ge1xuICAgIGRhdGE6IHtcbiAgICAgIHNlcUlkLFxuICAgIH0sXG4gICAgaGVhZGVyczoge1xuICAgICAgJ1gtU0RLLVZlcnNpb24nOiBgQGNsb3VkYmFzZS9qcy1zZGsvJHtnZXRTZGtWZXJzaW9uKCl9YCxcbiAgICAgICd4LXNlcWlkJzogc2VxSWQsXG4gICAgfSxcbiAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBJR2F0ZVdheU9wdGlvbnMge1xuICBuYW1lPzogc3RyaW5nXG4gIGRhdGE/OiBhbnlcbiAgcGF0aD86IHN0cmluZ1xuICBtZXRob2Q6IHN0cmluZ1xuICBoZWFkZXI/OiB7fVxuICB1cmw/OiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSUNsb3VkYmFzZVJlcXVlc3Qge1xuICBwb3N0OiAob3B0aW9uczogSVJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PlxuICB1cGxvYWQ6IChvcHRpb25zOiBJVXBsb2FkUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+XG4gIGRvd25sb2FkOiAob3B0aW9uczogSVJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PlxuICByZXF1ZXN0OiAoYWN0aW9uOiBzdHJpbmcsIHBhcmFtczogS1Y8YW55Piwgb3B0aW9ucz86IEtWPGFueT4pID0+IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+XG4gIHNlbmQ6IChhY3Rpb246IHN0cmluZywgZGF0YTogS1Y8YW55PikgPT4gUHJvbWlzZTxhbnk+XG4gIGZldGNoOiAob3B0aW9uczogSUZldGNoT3B0aW9ucykgPT4gUHJvbWlzZTxSZXNwb25zZU9iamVjdD5cbn1cblxuLyoqXG4gKiBAY2xhc3MgQ2xvdWRiYXNlUmVxdWVzdFxuICovXG5leHBvcnQgY2xhc3MgQ2xvdWRiYXNlUmVxdWVzdCBpbXBsZW1lbnRzIElDbG91ZGJhc2VSZXF1ZXN0IHtcbiAgY29uZmlnOiBJQ2xvdWRiYXNlUmVxdWVzdENvbmZpZ1xuICBwcml2YXRlIHJlcUNsYXNzOiBTREtSZXF1ZXN0SW50ZXJmYWNlXG4gIC8vIOivt+axguWksei0peaYr+WQpuaKm+WHukVycm9yXG4gIHByaXZhdGUgdGhyb3dXaGVuUmVxdWVzdEZhaWwgPSBmYWxzZVxuICAvLyDmjIHkuYXljJbmnKzlnLDlrZjlgqhcbiAgcHJpdmF0ZSBsb2NhbENhY2hlOiBJQ2xvdWRiYXNlQ2FjaGVcbiAgLyoqXG4gICAqIOWIneWni+WMllxuICAgKiBAcGFyYW0gY29uZmlnXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IElDbG91ZGJhc2VSZXF1ZXN0Q29uZmlnICYgeyB0aHJvdz86IGJvb2xlYW4gfSkge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnXG4gICAgY29uc3QgcmVxQ29uZmlnOiBJUmVxdWVzdENvbmZpZyAmIHsgYXV0aDogSUNsb3VkYmFzZVJlcXVlc3RDb25maWdbJ2F1dGgnXSB9ID0ge1xuICAgICAgdGltZW91dDogdGhpcy5jb25maWcudGltZW91dCxcbiAgICAgIHRpbWVvdXRNc2c6IGBbQGNsb3VkYmFzZS9qcy1zZGtdIOivt+axguWcqCR7dGhpcy5jb25maWcudGltZW91dCAvIDEwMDB9c+WGheacquWujOaIkO+8jOW3suS4reaWrWAsXG4gICAgICByZXN0cmljdGVkTWV0aG9kczogWydwb3N0JywgJ3B1dCddLFxuICAgICAgYXV0aDogY29uZmlnLmF1dGgsXG4gICAgfVxuICAgIHRoaXMucmVxQ2xhc3MgPSBuZXcgUGxhdGZvcm0uYWRhcHRlci5yZXFDbGFzcyhyZXFDb25maWcpXG4gICAgdGhpcy50aHJvd1doZW5SZXF1ZXN0RmFpbCA9IGNvbmZpZy50aHJvdyB8fCBmYWxzZVxuICAgIHRoaXMubG9jYWxDYWNoZSA9IGdldExvY2FsQ2FjaGUodGhpcy5jb25maWcuZW52KVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLmVuZFBvaW50TW9kZSAhPT0gJ0dBVEVXQVknKSB7XG4gICAgICBiaW5kSG9va3ModGhpcy5yZXFDbGFzcywgJ3Bvc3QnLCBbYmVmb3JlRWFjaF0pXG4gICAgICBiaW5kSG9va3ModGhpcy5yZXFDbGFzcywgJ3VwbG9hZCcsIFtiZWZvcmVFYWNoXSlcbiAgICAgIGJpbmRIb29rcyh0aGlzLnJlcUNsYXNzLCAnZG93bmxvYWQnLCBbYmVmb3JlRWFjaF0pXG4gICAgfVxuXG4gICAgbGFuZ0V2ZW50LmJ1cy5vbihsYW5nRXZlbnQuTEFOR19DSEFOR0VfRVZFTlQsIChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMuY29uZmlnLmkxOG4gPSBwYXJhbXMuZGF0YT8uaTE4biB8fCB0aGlzLmNvbmZpZy5pMThuXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBY2Nlc3NUb2tlbih0b2tlbiA9IG51bGwpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgaWYgKHRva2VuICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB0b2tlblxuICAgIH1cbiAgICBjb25zdCBhcHAgPSB0aGlzLmNvbmZpZy5fZnJvbUFwcFxuXG4gICAgaWYgKCFhcHAub2F1dGhJbnN0YW5jZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd5b3UgY2FuXFwndCByZXF1ZXN0IHdpdGhvdXQgYXV0aCcpXG4gICAgfVxuXG4gICAgY29uc3QgeyBvYXV0aEluc3RhbmNlIH0gPSBhcHBcbiAgICBjb25zdCBvYXV0aENsaWVudCA9IG9hdXRoSW5zdGFuY2Uub2F1dGgyY2xpZW50XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmdldE9hdXRoQWNjZXNzVG9rZW5WMihvYXV0aENsaWVudCkpLmFjY2Vzc1Rva2VuXG4gIH1cblxuICBwdWJsaWMgZ2V0RGVmYXVsdEhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFt0aGlzLmNvbmZpZy5pMThuPy5MQU5HX0hFQURFUl9LRVldOiB0aGlzLmNvbmZpZy5pMThuPy5sYW5nLFxuICAgICAgJ1gtU0RLLVZlcnNpb24nOiBgQGNsb3VkYmFzZS9qcy1zZGsvJHtnZXRTZGtWZXJzaW9uKCl9YCxcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcG9zdChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMsIGN1c3RvbVJlcU9wdHM/OiBJQ3VzdG9tUmVxT3B0cyk6IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnJlcUNsYXNzLnBvc3Qoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGhlYWRlcnM6IHsgLi4ub3B0aW9ucy5oZWFkZXJzLCAuLi50aGlzLmdldERlZmF1bHRIZWFkZXJzKCkgfSxcbiAgICAgIGN1c3RvbVJlcU9wdHMsXG4gICAgfSlcbiAgICByZXR1cm4gcmVzXG4gIH1cbiAgcHVibGljIGFzeW5jIHVwbG9hZChvcHRpb25zOiBJVXBsb2FkUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5yZXFDbGFzcy51cGxvYWQoeyAuLi5vcHRpb25zLCBoZWFkZXJzOiB7IC4uLm9wdGlvbnMuaGVhZGVycywgLi4udGhpcy5nZXREZWZhdWx0SGVhZGVycygpIH0gfSlcbiAgICByZXR1cm4gcmVzXG4gIH1cbiAgcHVibGljIGFzeW5jIGRvd25sb2FkKG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnJlcUNsYXNzLmRvd25sb2FkKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzOiB7IC4uLm9wdGlvbnMuaGVhZGVycywgLi4udGhpcy5nZXREZWZhdWx0SGVhZGVycygpIH0sXG4gICAgfSlcbiAgICByZXR1cm4gcmVzXG4gIH1cblxuICBwdWJsaWMgZ2V0QmFzZUVuZFBvaW50KGVuZFBvaW50S2V5OiBFbmRQb2ludEtleSA9ICdDTE9VRF9BUEknKSB7XG4gICAgcmV0dXJuIGdldEJhc2VFbmRQb2ludCh0aGlzLmNvbmZpZy5lbnYsIGVuZFBvaW50S2V5KVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldE9hdXRoQWNjZXNzVG9rZW5WMihvYXV0aENsaWVudDogYW55KTogUHJvbWlzZTxJR2V0QWNjZXNzVG9rZW5SZXN1bHQ+IHtcbiAgICBjb25zdCB2YWxpZEFjY2Vzc1Rva2VuID0gYXdhaXQgb2F1dGhDbGllbnQuZ2V0QWNjZXNzVG9rZW4oKVxuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gYXdhaXQgb2F1dGhDbGllbnQuZ2V0Q3JlZGVudGlhbHMoKVxuICAgIHJldHVybiB7XG4gICAgICBhY2Nlc3NUb2tlbjogdmFsaWRBY2Nlc3NUb2tlbixcbiAgICAgIGFjY2Vzc1Rva2VuRXhwaXJlOiBuZXcgRGF0ZShjcmVkZW50aWFscy5leHBpcmVzX2F0KS5nZXRUaW1lKCksXG4gICAgfVxuICB9XG5cbiAgLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuICBwdWJsaWMgYXN5bmMgcmVxdWVzdChcbiAgICBhY3Rpb246IHN0cmluZyxcbiAgICBwYXJhbXM6IEtWPGFueT4sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIG9uVXBsb2FkUHJvZ3Jlc3M/OiBGdW5jdGlvblxuICAgICAgcGF0aG5hbWU/OiBzdHJpbmdcbiAgICAgIHBhcnNlPzogYm9vbGVhblxuICAgICAgaW5RdWVyeT86IEtWPGFueT5cbiAgICAgIHNlYXJjaD86IHN0cmluZ1xuICAgICAgZGVmYXVsdFF1ZXJ5PzogS1Y8YW55PlxuICAgICAgaGVhZGVycz86IEtWPHN0cmluZz5cbiAgICAgIGVuZFBvaW50TW9kZT86ICdDTE9VRF9BUEknIHwgJ0dBVEVXQVknXG4gICAgfSxcbiAgICBjdXN0b21SZXFPcHRzPzogSUN1c3RvbVJlcU9wdHMsXG4gICk6IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+IHtcbiAgICBjb25zdCB0Y2JUcmFjZUtleSA9IGB4LXRjYi10cmFjZV8ke3RoaXMuY29uZmlnLmVudn1gXG4gICAgbGV0IGNvbnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcblxuICAgIGNvbnN0IHRtcE9iajogS1Y8YW55PiA9IHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGRhdGFWZXJzaW9uOiBEQVRBX1ZFUlNJT04sXG4gICAgICBlbnY6IHRoaXMuY29uZmlnLmVudixcbiAgICAgIC4uLnBhcmFtcyxcbiAgICB9XG5cbiAgICBpZiAoQUNUSU9OU19XSVRIT1VUX0FDQ0VTU1RPS0VOLmluZGV4T2YoYWN0aW9uKSA9PT0gLTEpIHtcbiAgICAgIGNvbnN0IGFwcCA9IHRoaXMuY29uZmlnLl9mcm9tQXBwXG5cbiAgICAgIGlmICghYXBwLm9hdXRoSW5zdGFuY2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd5b3UgY2FuXFwndCByZXF1ZXN0IHdpdGhvdXQgYXV0aCcpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgb2F1dGhJbnN0YW5jZSB9ID0gYXBwXG4gICAgICBjb25zdCBvYXV0aENsaWVudCA9IG9hdXRoSW5zdGFuY2Uub2F1dGgyY2xpZW50XG4gICAgICB0bXBPYmouYWNjZXNzX3Rva2VuID0gKGF3YWl0IHRoaXMuZ2V0T2F1dGhBY2Nlc3NUb2tlblYyKG9hdXRoQ2xpZW50KSkuYWNjZXNzVG9rZW5cbiAgICB9XG5cbiAgICAvLyDmi7xib2R55ZKMY29udGVudC10eXBlXG4gICAgbGV0IHBheWxvYWRcbiAgICBpZiAoYWN0aW9uID09PSAnc3RvcmFnZS51cGxvYWRGaWxlJykge1xuICAgICAgcGF5bG9hZCA9IG5ldyBGb3JtRGF0YSgpXG4gICAgICBPYmplY3Qua2V5cyhwYXlsb2FkKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXlsb2FkLCBrZXkpICYmIHBheWxvYWRba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcGF5bG9hZC5hcHBlbmQoa2V5LCB0bXBPYmpba2V5XSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIGNvbnRlbnRUeXBlID0gJ211bHRpcGFydC9mb3JtLWRhdGEnXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCdcbiAgICAgIHBheWxvYWQgPSB7fVxuICAgICAgT2JqZWN0LmtleXModG1wT2JqKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKHRtcE9ialtrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwYXlsb2FkW2tleV0gPSB0bXBPYmpba2V5XVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICBjb25zdCBvcHRzOiBhbnkgPSB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdjb250ZW50LXR5cGUnOiBjb250ZW50VHlwZSxcbiAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0SGVhZGVycygpLFxuICAgICAgICAuLi5vcHRpb25zPy5oZWFkZXJzLFxuICAgICAgfSxcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/Lm9uVXBsb2FkUHJvZ3Jlc3MpIHtcbiAgICAgIG9wdHMub25VcGxvYWRQcm9ncmVzcyA9IG9wdGlvbnMub25VcGxvYWRQcm9ncmVzc1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5yZWdpb24pIHtcbiAgICAgIG9wdHMuaGVhZGVyc1snWC1UQ0ItUmVnaW9uJ10gPSB0aGlzLmNvbmZpZy5yZWdpb25cbiAgICB9XG5cbiAgICBjb25zdCB0cmFjZUhlYWRlciA9IHRoaXMubG9jYWxDYWNoZS5nZXRTdG9yZSh0Y2JUcmFjZUtleSlcbiAgICBpZiAodHJhY2VIZWFkZXIpIHtcbiAgICAgIG9wdHMuaGVhZGVyc1snWC1UQ0ItVHJhY2UnXSA9IHRyYWNlSGVhZGVyXG4gICAgfVxuXG4gICAgLy8g5Y+R5Ye66K+35rGCXG4gICAgLy8g5paw55qEIHVybCDpnIDopoHmkLrluKYgZW52IOWPguaVsOi/m+ihjCBDT1JTIOagoemqjFxuICAgIC8vIOivt+axgumTvuaOpeaUr+aMgea3u+WKoOWKqOaAgSBxdWVyeSDlj4LmlbDvvIzmlrnkvr/nlKjmiLfosIPor5XlrprkvY3or7fmsYJcbiAgICBjb25zdCBwYXJzZSA9IG9wdGlvbnM/LnBhcnNlICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLnBhcnNlIDogcGFyYW1zLnBhcnNlXG4gICAgY29uc3QgaW5RdWVyeSA9IG9wdGlvbnM/LmluUXVlcnkgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuaW5RdWVyeSA6IHBhcmFtcy5pblF1ZXJ5XG4gICAgY29uc3Qgc2VhcmNoID0gb3B0aW9ucz8uc2VhcmNoICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLnNlYXJjaCA6IHBhcmFtcy5zZWFyY2hcblxuICAgIGxldCBmb3JtYXRRdWVyeTogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcbiAgICAgIC4uLihvcHRpb25zPy5kZWZhdWx0UXVlcnkgfHwge30pLFxuICAgICAgZW52OiB0aGlzLmNvbmZpZy5lbnYsXG4gICAgfVxuICAgIC8vIOWwneivleino+aekOWTjeW6lOaVsOaNruS4uiBKU09OXG4gICAgcGFyc2UgJiYgKGZvcm1hdFF1ZXJ5LnBhcnNlID0gdHJ1ZSlcbiAgICBpblF1ZXJ5XG4gICAgICAmJiAoZm9ybWF0UXVlcnkgPSB7XG4gICAgICAgIC4uLmluUXVlcnksXG4gICAgICAgIC4uLmZvcm1hdFF1ZXJ5LFxuICAgICAgfSlcblxuICAgIGNvbnN0IGVuZFBvaW50TW9kZSA9IG9wdGlvbnM/LmVuZFBvaW50TW9kZSB8fCB0aGlzLmNvbmZpZy5lbmRQb2ludE1vZGUgfHwgJ0NMT1VEX0FQSSdcblxuICAgIGNvbnN0IHVybCA9IGdldEVuZFBvaW50SW5mbyh0aGlzLmNvbmZpZy5lbnYsIGVuZFBvaW50TW9kZSlcbiAgICBsZXQgQkFTRV9VUkwgPSB1cmwuYmFzZVVybFxuICAgIGNvbnN0IFBST1RPQ09MID0gdXJsLnByb3RvY29sXG5cbiAgICBpZiAoZW5kUG9pbnRNb2RlID09PSAnR0FURVdBWScpIHtcbiAgICAgIGlmICgvXigoZGF0YWJhc2UpXFwuKXwoYXV0aFxcLndzV2ViU2lnbikvLnRlc3QoYWN0aW9uKSkge1xuICAgICAgICBjb25zdCB1cmwgPSBnZXRFbmRQb2ludEluZm8odGhpcy5jb25maWcuZW52LCAnQ0xPVURfQVBJJylcbiAgICAgICAgQkFTRV9VUkwgPSBgJHt1cmwuYmFzZVVybC5tYXRjaCgvXFwvXFwvKFteLz8jXSopLylbMF19L3dlYmBcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyDnlJ/miJDor7fmsYIgdXJsXG4gICAgbGV0IG5ld1VybFxuICAgIGlmIChvcHRpb25zLnBhdGhuYW1lKSB7XG4gICAgICBuZXdVcmwgPSBmb3JtYXRVcmwoXG4gICAgICAgIFBST1RPQ09MLFxuICAgICAgICBgJHtnZXRCYXNlRW5kUG9pbnQodGhpcy5jb25maWcuZW52LCBlbmRQb2ludE1vZGUpPy5yZXBsYWNlKC9eaHR0cHM/Oi8sICcnKX0vJHtvcHRpb25zLnBhdGhuYW1lfWAsXG4gICAgICAgIGZvcm1hdFF1ZXJ5LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdVcmwgPSBmb3JtYXRVcmwoUFJPVE9DT0wsIEJBU0VfVVJMLCBmb3JtYXRRdWVyeSlcbiAgICB9XG5cbiAgICBpZiAoc2VhcmNoKSB7XG4gICAgICBuZXdVcmwgKz0gc2VhcmNoXG4gICAgfVxuXG4gICAgY29uc3QgcmVzOiBSZXNwb25zZU9iamVjdCA9IGF3YWl0IHRoaXMucG9zdChcbiAgICAgIHtcbiAgICAgICAgdXJsOiBuZXdVcmwsXG4gICAgICAgIGRhdGE6IHBheWxvYWQsXG4gICAgICAgIC4uLm9wdHMsXG4gICAgICB9LFxuICAgICAgY3VzdG9tUmVxT3B0cyxcbiAgICApXG5cbiAgICAvLyDkv53lrZggdHJhY2UgaGVhZGVyXG4gICAgY29uc3QgcmVzVHJhY2VIZWFkZXIgPSByZXMuaGVhZGVyPy5bJ3gtdGNiLXRyYWNlJ11cbiAgICBpZiAocmVzVHJhY2VIZWFkZXIpIHtcbiAgICAgIHRoaXMubG9jYWxDYWNoZS5zZXRTdG9yZSh0Y2JUcmFjZUtleSwgcmVzVHJhY2VIZWFkZXIpXG4gICAgfVxuXG4gICAgaWYgKChOdW1iZXIocmVzLnN0YXR1cykgIT09IDIwMCAmJiBOdW1iZXIocmVzLnN0YXR1c0NvZGUpICE9PSAyMDApIHx8ICFyZXMuZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCduZXR3b3JrIHJlcXVlc3QgZXJyb3InKVxuICAgIH1cblxuICAgIHJldHVybiByZXNcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBmZXRjaChvcHRpb25zOiBJRmV0Y2hPcHRpb25zICYgeyB0b2tlbj86IHN0cmluZzsgY3VzdG9tUmVxT3B0cz86IElDdXN0b21SZXFPcHRzIH0sKTogUHJvbWlzZTxSZXNwb25zZU9iamVjdD4ge1xuICAgIGNvbnN0IHsgdG9rZW4sIGhlYWRlcnMgPSB7fSwgLi4ucmVzdE9wdGlvbnMgfSA9IG9wdGlvbnNcblxuICAgIGNvbnN0IGRvRmV0Y2ggPSBhc3luYyAoKSA9PiB0aGlzLnJlcUNsYXNzLmZldGNoKHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgLy8gJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgLy8gJ1gtUmVxdWVzdC1JZCc6IGAke3V0aWxzLmdlbmVyYXRlUmVxdWVzdElkKCl9YCxcbiAgICAgICAgLy8gJ1gtUmVxdWVzdC1UaW1lc3RhbXAnOiBgJHtEYXRlLm5vdygpfWAsXG4gICAgICAgICdYLVNESy1WZXJzaW9uJzogYEBjbG91ZGJhc2UvanMtc2RrLyR7Z2V0U2RrVmVyc2lvbigpfWAsXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthd2FpdCB0aGlzLmdldEFjY2Vzc1Rva2VuKHRva2VuKX1gLFxuICAgICAgICAuLi50aGlzLmdldERlZmF1bHRIZWFkZXJzKCksXG4gICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICB9LFxuICAgICAgLi4ucmVzdE9wdGlvbnMsXG4gICAgfSlcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkb0ZldGNoKClcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnI/LmNvZGUgPT09ICdBQ0NFU1NfVE9LRU5fRVhQSVJFRCcpIHtcbiAgICAgICAgLy8g5aaC5p6c5piv5Zug5Li6IHRva2VuIOi/h+acn+Wksei0pe+8jOWItyB0b2tlbiDlkI7lho3or5XkuIDmrKFcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZz8uX2Zyb21BcHA/Lm9hdXRoSW5zdGFuY2U/LmF1dGhBcGk/LnJlZnJlc2hUb2tlbkZvcmNlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgZXJyXG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5jb25maWc/Ll9mcm9tQXBwPy5vYXV0aEluc3RhbmNlPy5hdXRoQXBpPy5yZWZyZXNoVG9rZW5Gb3JjZSgpXG4gICAgICAgIHJldHVybiBkb0ZldGNoKClcbiAgICAgIH1cbiAgICAgIC8vIOWFtuS7luWOn+WboOWQkeS4iuaKm+WHulxuXG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VuZChcbiAgICBhY3Rpb246IHN0cmluZyxcbiAgICBkYXRhOiBLVjxhbnk+ID0ge30sXG4gICAgb3B0aW9uczogS1Y8YW55PiA9IHt9LFxuICAgIGN1c3RvbVJlcU9wdHM/OiBJQ3VzdG9tUmVxT3B0cyxcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChcbiAgICAgIGFjdGlvbixcbiAgICAgIGRhdGEsXG4gICAgICB7IC4uLm9wdGlvbnMsIG9uVXBsb2FkUHJvZ3Jlc3M6IGRhdGEub25VcGxvYWRQcm9ncmVzcyB9LFxuICAgICAgY3VzdG9tUmVxT3B0cyxcbiAgICApXG5cbiAgICBpZiAocmVzcG9uc2UuZGF0YS5jb2RlICYmIHRoaXMudGhyb3dXaGVuUmVxdWVzdEZhaWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5PUEVSQVRJT05fRkFJTCxcbiAgICAgICAgbXNnOiBgWyR7cmVzcG9uc2UuZGF0YS5jb2RlfV0gJHtyZXNwb25zZS5kYXRhLm1lc3NhZ2V9YCxcbiAgICAgIH0pLClcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2UuZGF0YVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdhdGVXYXkob3B0aW9uczogSUdhdGVXYXlPcHRpb25zLCBjdXN0b21SZXFPcHRzPzogSUN1c3RvbVJlcU9wdHMpIHtcbiAgICBjb25zdCB7IHVybCwgbmFtZSwgZGF0YSwgcGF0aCA9ICcnLCBtZXRob2QsIGhlYWRlciA9IHt9IH0gPSBvcHRpb25zXG5cbiAgICBpZiAoKCFuYW1lIHx8ICFwYXRoKSAmJiAhdXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgIG1zZzogJ1tnYXRlV2F5XSBpbnZhbGlkIGZ1bmN0aW9uIG5hbWUgb3IgcGF0aCBvciB1cmwnLFxuICAgICAgfSksKVxuICAgIH1cbiAgICBsZXQganNvbkRhdGFcbiAgICB0cnkge1xuICAgICAganNvbkRhdGEgPSBkYXRhID8gSlNPTi5zdHJpbmdpZnkoZGF0YSkgOiAnJ1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiAnW2dhdGVXYXldIGludmFsaWQgZGF0YScsXG4gICAgICB9KSwpXG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWVzdElkID0gdXRpbHMuZ2VuZXJhdGVSZXF1ZXN0SWQoKVxuICAgIGNvbnN0IHsgYmFzZVVybCwgcHJvdG9jb2wgfSA9IGdldEVuZFBvaW50SW5mbyh0aGlzLmNvbmZpZy5lbnYsICdHQVRFV0FZJylcbiAgICBsZXQgZW5kcG9pbnQgPSBgJHtwcm90b2NvbH0ke2Jhc2VVcmx9JHt1cmwgfHwgYC8ke3BhdGh9LyR7bmFtZX1gfWBcblxuICAgIGNvbnN0IGlzR2V0QW5kSGVhZCA9IFsnR0VUJywgJ0hFQUQnXS5pbmNsdWRlcyhtZXRob2Q/LnRvVXBwZXJDYXNlPy4oKSlcblxuICAgIGlmIChpc0dldEFuZEhlYWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBkYXRhUGFyc2UgPSB7fVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGRhdGFQYXJzZSA9IEpTT04ucGFyc2UoZGF0YSBhcyBhbnkpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZGF0YVBhcnNlID0gZGF0YSB8fCB7fVxuICAgICAgICB9XG4gICAgICAgIGVuZHBvaW50ID0gYCR7ZW5kcG9pbnR9JHtlbmRwb2ludC5pbmNsdWRlcygnPycpID8gJyYnIDogJz8nfSR7T2JqZWN0LmtleXMoZGF0YVBhcnNlKVxuICAgICAgICAgIC5tYXAoa2V5ID0+IGAke2tleX09JHtkYXRhUGFyc2Vba2V5XX1gKVxuICAgICAgICAgIC5qb2luKCcmJyl9YFxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmV0Y2goe1xuICAgICAgbWV0aG9kOiBtZXRob2QgfHwgJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnLFxuICAgICAgICAnWC1SZXF1ZXN0LUlkJzogcmVxdWVzdElkLFxuICAgICAgICAuLi5oZWFkZXIsXG4gICAgICB9LFxuICAgICAgLi4uKGlzR2V0QW5kSGVhZCA/IHt9IDogeyBib2R5OiBqc29uRGF0YSB9KSxcbiAgICAgIHVybDogZW5kcG9pbnQsXG4gICAgICBjdXN0b21SZXFPcHRzLFxuICAgIH0pXG5cbiAgICByZXR1cm4geyByZXF1ZXN0SWQsIC4uLnJlc3BvbnNlLCBkYXRhOiBhd2FpdCByZXNwb25zZS5kYXRhIH1cbiAgfVxufVxuXG5jb25zdCByZXF1ZXN0TWFwOiBLVjxDbG91ZGJhc2VSZXF1ZXN0PiA9IHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0UmVxdWVzdChjb25maWc6IElDbG91ZGJhc2VSZXF1ZXN0Q29uZmlnKSB7XG4gIHJlcXVlc3RNYXBbY29uZmlnLmVudl0gPSBuZXcgQ2xvdWRiYXNlUmVxdWVzdCh7XG4gICAgLi4uY29uZmlnLFxuICAgIHRocm93OiB0cnVlLFxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVxdWVzdEJ5RW52SWQoZW52OiBzdHJpbmcpOiBDbG91ZGJhc2VSZXF1ZXN0IHtcbiAgcmV0dXJuIHJlcXVlc3RNYXBbZW52XVxufVxuIl19
|
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.js
CHANGED
|
@@ -117,26 +117,28 @@ var Cloudbase = (function () {
|
|
|
117
117
|
configurable: true
|
|
118
118
|
});
|
|
119
119
|
Cloudbase.prototype.init = function (config) {
|
|
120
|
-
var _a;
|
|
120
|
+
var _a, _b, _c;
|
|
121
|
+
config.endPointMode = config.endPointMode || 'GATEWAY';
|
|
122
|
+
if (!Platform.adapter) {
|
|
123
|
+
this.useDefaultAdapter();
|
|
124
|
+
}
|
|
125
|
+
config = this.dealNodeAdapterConfig(config);
|
|
121
126
|
if (!config.env) {
|
|
122
127
|
throw new Error(JSON.stringify({
|
|
123
128
|
code: ERRORS.INVALID_PARAMS,
|
|
124
129
|
msg: 'env must not be specified',
|
|
125
130
|
}));
|
|
126
131
|
}
|
|
127
|
-
config.endPointMode = config.endPointMode || 'GATEWAY';
|
|
128
|
-
if (!Platform.adapter) {
|
|
129
|
-
this.useDefaultAdapter();
|
|
130
|
-
}
|
|
131
132
|
var reqConfig = {
|
|
132
133
|
timeout: config.timeout || 5000,
|
|
133
134
|
timeoutMsg: "[".concat(getSdkName(), "][REQUEST TIMEOUT] request had been abort since didn't finished within").concat(config.timeout / 1000, "s"),
|
|
135
|
+
auth: config.auth,
|
|
134
136
|
};
|
|
135
137
|
this.requestClient = new Platform.adapter.reqClass(reqConfig);
|
|
136
138
|
this.cloudbaseConfig = __assign(__assign(__assign({}, DEFAULT_INIT_CONFIG), config), { i18n: i18nProxy(Platform, config) });
|
|
137
139
|
delete this.cloudbaseConfig.lang;
|
|
138
140
|
this.cloudbaseConfig.timeout = this.formatTimeout(this.cloudbaseConfig.timeout);
|
|
139
|
-
var
|
|
141
|
+
var _d = this.cloudbaseConfig, env = _d.env, persistence = _d.persistence, debug = _d.debug, timeout = _d.timeout, oauthClient = _d.oauthClient, i18n = _d.i18n;
|
|
140
142
|
initCache({ env: env, persistence: persistence, debug: debug, platformInfo: this.platform });
|
|
141
143
|
setRegionLevelEndpoint(env, config.region || '');
|
|
142
144
|
setGatewayEndPointWithEnv(env, DEFAULT_PROTOCOL, config.region || '');
|
|
@@ -149,10 +151,14 @@ var Cloudbase = (function () {
|
|
|
149
151
|
_fromApp: app,
|
|
150
152
|
i18n: i18n,
|
|
151
153
|
endPointMode: config.endPointMode,
|
|
154
|
+
auth: config.auth,
|
|
152
155
|
});
|
|
153
156
|
app.requestClient = this.requestClient;
|
|
154
157
|
(_a = this === null || this === void 0 ? void 0 : this.fire) === null || _a === void 0 ? void 0 : _a.call(this, 'cloudbase_init', app);
|
|
155
158
|
this.try2InitAuth(app);
|
|
159
|
+
if ((_b = Platform.adapter) === null || _b === void 0 ? void 0 : _b.nodeTool) {
|
|
160
|
+
(_c = Platform.adapter) === null || _c === void 0 ? void 0 : _c.nodeTool(app, this.cloudbaseConfig);
|
|
161
|
+
}
|
|
156
162
|
return app;
|
|
157
163
|
};
|
|
158
164
|
Cloudbase.prototype.updateConfig = function (config) {
|
|
@@ -253,6 +259,25 @@ var Cloudbase = (function () {
|
|
|
253
259
|
console.log('try2InitAuth error:', error);
|
|
254
260
|
}
|
|
255
261
|
};
|
|
262
|
+
Cloudbase.prototype.dealNodeAdapterConfig = function (config) {
|
|
263
|
+
var _a, _b;
|
|
264
|
+
if ((_a = Platform.adapter) === null || _a === void 0 ? void 0 : _a.getSecretInfo) {
|
|
265
|
+
var secretInfo = (_b = Platform.adapter) === null || _b === void 0 ? void 0 : _b.getSecretInfo(config);
|
|
266
|
+
config.auth = {
|
|
267
|
+
secretId: secretInfo.secretId,
|
|
268
|
+
secretKey: secretInfo.secretKey,
|
|
269
|
+
sessionToken: secretInfo.sessionToken,
|
|
270
|
+
secretType: secretInfo.secretType,
|
|
271
|
+
};
|
|
272
|
+
if (!config.env) {
|
|
273
|
+
config.env = secretInfo.env;
|
|
274
|
+
}
|
|
275
|
+
if (!config.accessKey && secretInfo.accessKey) {
|
|
276
|
+
config.accessKey = secretInfo.accessKey;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return config;
|
|
280
|
+
};
|
|
256
281
|
__decorate([
|
|
257
282
|
catchErrorsDecorator({
|
|
258
283
|
mode: 'sync',
|
|
@@ -287,4 +312,4 @@ var Cloudbase = (function () {
|
|
|
287
312
|
export var cloudbase = new Cloudbase();
|
|
288
313
|
cloudbase.useAdapters(getWxDefaultAdapter());
|
|
289
314
|
export default cloudbase;
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFhMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUc5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQy9ELE9BQU8sRUFDTCxVQUFVLEVBQ1YsYUFBYSxFQUNiLHNCQUFzQixFQUN0QixVQUFVLEVBQ1YseUJBQXlCLEVBRXpCLGVBQWUsRUFDZixlQUFlLEVBQ2YsYUFBYSxFQUNiLGdCQUFnQixHQUNqQixNQUFNLG9CQUFvQixDQUFBO0FBQzNCLE9BQU8sRUFBRSxTQUFTLEVBQVMsTUFBTSxhQUFhLENBQUE7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDM0IsSUFBQSxXQUFXLEdBQXdCLFFBQVEsWUFBaEMsRUFBRSxpQkFBaUIsR0FBSyxRQUFRLGtCQUFiLENBQWE7QUFDM0MsSUFBQSxNQUFNLEdBQXlCLFNBQVMsT0FBbEMsRUFBRSxrQkFBa0IsR0FBSyxTQUFTLG1CQUFkLENBQWM7QUFDeEMsSUFBQSxTQUFTLEdBQUssS0FBSyxVQUFWLENBQVU7QUFDbkIsSUFBQSxvQkFBb0Is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QkFDVixzQ0FBc0M7Z0JBQ3RDLG1MQUFtTDtnQkFDbkwsc0tBQTZCLGtCQUFrQixDQUFFO2FBQ2xEO1NBQ0YsQ0FBQzs7O3dDQUN3RCxTQUFTO3lDQXVEbEU7SUE0Qlk7UUFUWixvQkFBb0IsQ0FBQztZQUNwQixLQUFLLEVBQUUsVUFBVTtZQUNqQixRQUFRLEVBQUU7Z0JBQ1IsVUFBVTtnQkFDVix1Q0FBdUM7Z0JBQ3ZDLGdEQUFnRDtnQkFDaEQsc0tBQTZCLGtCQUFrQixDQUFFO2FBQ2xEO1NBQ0YsQ0FBQzs7OztvREFXRDtJQWdGSCxnQkFBQztDQUFBLEFBNU5ELElBNE5DO0FBTUQsTUFBTSxDQUFDLElBQU0sU0FBUyxHQUFlLElBQUksU0FBUyxFQUFFLENBQUE7QUFFcEQsU0FBUyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUE7QUFHNUMsZUFBZSxTQUFTLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGFwdGVycywgY29uc3RhbnRzLCB1dGlscywgaGVscGVycyB9IGZyb20gJ0BjbG91ZGJhc2UvdXRpbGl0aWVzJ1xuaW1wb3J0IHsgU0RLQWRhcHRlckludGVyZmFjZSwgQ2xvdWRiYXNlQWRhcHRlciwgSVJlcXVlc3RDb25maWcgfSBmcm9tICdAY2xvdWRiYXNlL2FkYXB0ZXItaW50ZXJmYWNlJ1xuaW1wb3J0IHtcbiAgSUNsb3VkYmFzZUNvbmZpZyxcbiAgSUNsb3VkYmFzZVVwZ3JhZGVkQ29uZmlnLFxuICBJQ2xvdWRiYXNlLFxuICBJQ2xvdWRiYXNlRXh0ZW5zaW9uLFxuICBLVixcbiAgSUNsb3VkYmFzZVBsYXRmb3JtSW5mbyxcbiAgRW5kUG9pbnRLZXksXG4gIElDbG91ZGJhc2VBcGlzLFxufSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUF1dGggfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2F1dGgnXG5pbXBvcnQgeyByZWdpc3RlckNvbXBvbmVudCwgcmVnaXN0ZXJIb29rIH0gZnJvbSAnLi9saWJzL2NvbXBvbmVudCdcbmltcG9ydCB7IGdldFd4RGVmYXVsdEFkYXB0ZXIsIFBsYXRmb3JtIH0gZnJvbSAnLi9saWJzL2FkYXB0ZXInXG5pbXBvcnQgeyBJQ2xvdWRiYXNlQ29tcG9uZW50LCBJQ2xvdWRiYXNlSG9vayB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29tcG9uZW50J1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNhY2hlIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9jYWNoZSdcbmltcG9ydCB7IGluaXRDYWNoZSwgZ2V0Q2FjaGVCeUVudklkLCBnZXRMb2NhbENhY2hlIH0gZnJvbSAnLi9saWJzL2NhY2hlJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZVJlcXVlc3QgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL3JlcXVlc3QnXG5pbXBvcnQgeyBpbml0UmVxdWVzdCwgZ2V0UmVxdWVzdEJ5RW52SWQgfSBmcm9tICcuL2xpYnMvcmVxdWVzdCdcbmltcG9ydCB7XG4gIGdldFNka05hbWUsXG4gIHNldFNka1ZlcnNpb24sXG4gIHNldFJlZ2lvbkxldmVsRW5kcG9pbnQsXG4gIHNldFNka05hbWUsXG4gIHNldEdhdGV3YXlFbmRQb2ludFdpdGhFbnYsXG4gIHR5cGUgSVNldEVuZFBvaW50V2l0aEtleSxcbiAgc2V0RW5kUG9pbnRJbmZvLFxuICBnZXRFbmRQb2ludEluZm8sXG4gIGdldFNka1ZlcnNpb24sXG4gIERFRkFVTFRfUFJPVE9DT0wsXG59IGZyb20gJy4vY29uc3RhbnRzL2NvbW1vbidcbmltcG9ydCB7IGkxOG5Qcm94eSwgTEFOR1MgfSBmcm9tICcuL2xpYnMvbGFuZydcbmV4cG9ydCB7IGdldEJhc2VFbmRQb2ludCB9IGZyb20gJy4vY29uc3RhbnRzL2NvbW1vbidcbmV4cG9ydCB7IExBTkdTIH0gZnJvbSAnLi9saWJzL2xhbmcnXG5jb25zdCB7IHVzZUFkYXB0ZXJzLCB1c2VEZWZhdWx0QWRhcHRlciB9ID0gYWRhcHRlcnNcbmNvbnN0IHsgRVJST1JTLCBDT01NVU5JVFlfU0lURV9VUkwgfSA9IGNvbnN0YW50c1xuY29uc3QgeyBwcmludFdhcm4gfSA9IHV0aWxzXG5jb25zdCB7IGNhdGNoRXJyb3JzRGVjb3JhdG9yIH0gPSBoZWxwZXJzXG5cbi8qKlxuICogQGNvbnN0YW50IOm7mOiupOmFjee9rlxuICovXG5jb25zdCBERUZBVUxUX0lOSVRfQ09ORklHOiBQYXJ0aWFsPElDbG91ZGJhc2VDb25maWc+ID0ge1xuICB0aW1lb3V0OiAxNTAwMCxcbiAgcGVyc2lzdGVuY2U6ICdsb2NhbCcsIC8vIOaMgeS5heWMluWtmOWCqOexu+Wei1xufVxuXG4vLyB0aW1lb3V05LiK6ZmQMTDliIbpkp9cbmNvbnN0IE1BWF9USU1FT1VUID0gMTAwMCAqIDYwICogMTBcbi8vIHRpbWVvdXTkuIvpmZAxMDBtc1xuY29uc3QgTUlOX1RJTUVPVVQgPSAxMDBcblxuY29uc3QgZXh0ZW5zaW9uTWFwOiBLVjxJQ2xvdWRiYXNlRXh0ZW5zaW9uPiA9IHt9XG5cbmNsYXNzIENsb3VkYmFzZSBpbXBsZW1lbnRzIElDbG91ZGJhc2Uge1xuICBwdWJsaWMgYXV0aEluc3RhbmNlOiBJQ2xvdWRiYXNlQXV0aFxuICBwdWJsaWMgb2F1dGhJbnN0YW5jZTogYW55XG4gIHB1YmxpYyByZXF1ZXN0Q2xpZW50OiBhbnlcbiAgcHVibGljIG9hdXRoQ2xpZW50OiBhbnlcbiAgcHVibGljIHZlcnNpb246IHN0cmluZ1xuICBwdWJsaWMgYXV0aDogSUNsb3VkYmFzZVsnYXV0aCddICYgSUNsb3VkYmFzZUF1dGhcbiAgcHVibGljIGFwaXM6IElDbG91ZGJhc2VBcGlzXG4gIHByaXZhdGUgY2xvdWRiYXNlQ29uZmlnOiBJQ2xvdWRiYXNlQ29uZmlnXG5cbiAgY29uc3RydWN0b3IoY29uZmlnPzogSUNsb3VkYmFzZUNvbmZpZykge1xuICAgIHRoaXMuY2xvdWRiYXNlQ29uZmlnID0gY29uZmlnID8gY29uZmlnIDogdGhpcy5jbG91ZGJhc2VDb25maWdcbiAgICB0aGlzLmF1dGhJbnN0YW5jZSA9IG51bGxcbiAgICB0aGlzLm9hdXRoSW5zdGFuY2UgPSBudWxsXG4gICAgdGhpcy52ZXJzaW9uID0gZ2V0U2RrVmVyc2lvbigpXG4gIH1cblxuICBnZXQgY29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLmNsb3VkYmFzZUNvbmZpZ1xuICB9XG5cbiAgZ2V0IHBsYXRmb3JtKCk6IElDbG91ZGJhc2VQbGF0Zm9ybUluZm8ge1xuICAgIHJldHVybiBQbGF0Zm9ybVxuICB9XG5cbiAgZ2V0IGNhY2hlKCk6IElDbG91ZGJhc2VDYWNoZSB7XG4gICAgcmV0dXJuIGdldENhY2hlQnlFbnZJZCh0aGlzLmNsb3VkYmFzZUNvbmZpZy5lbnYpXG4gIH1cblxuICBnZXQgbG9jYWxDYWNoZSgpOiBJQ2xvdWRiYXNlQ2FjaGUge1xuICAgIHJldHVybiBnZXRMb2NhbENhY2hlKHRoaXMuY2xvdWRiYXNlQ29uZmlnLmVudilcbiAgfVxuXG4gIGdldCByZXF1ZXN0KCk6IElDbG91ZGJhc2VSZXF1ZXN0IHtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdEJ5RW52SWQodGhpcy5jbG91ZGJhc2VDb25maWcuZW52KVxuICB9XG5cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICBtb2RlOiAnc3luYycsXG4gICAgdGl0bGU6ICdDbG91ZGJhc2Ug5Yid5aeL5YyW5aSx6LSlJyxcbiAgICBtZXNzYWdlczogW1xuICAgICAgJ+ivt+ehruiupOS7peS4i+WQhOmhue+8micsXG4gICAgICAnICAxIC0g6LCD55SoIGNsb3VkYmFzZS5pbml0KCkg55qE6K+t5rOV5oiW5Y+C5pWw5piv5ZCm5q2j56GuJyxcbiAgICAgICcgIDIgLSDlpoLmnpzmmK/pnZ7mtY/op4jlmajnjq/looPvvIzmmK/lkKbphY3nva7kuoblronlhajlupTnlKjmnaXmupDvvIhodHRwczovL2RvY3MuY2xvdWRiYXNlLm5ldC9hcGktcmVmZXJlbmNlL3dlYnYzL2FkYXB0ZXIjJUU3JUFDJUFDLTItJUU2JUFEJUE1JUU5JTg1JThEJUU3JUJEJUFFJUU1JUFFJTg5JUU1JTg1JUE4JUU1JUJBJTk0JUU3JTk0JUE4JUU2JTlEJUE1JUU2JUJBJTkw77yJJyxcbiAgICAgIGDlpoLmnpzpl67popjkvp3nhLblrZjlnKjvvIzlu7rorq7liLDlrpjmlrnpl67nrZTnpL7ljLrmj5Dpl67miJblr7vmib7luK7liqnvvJoke0NPTU1VTklUWV9TSVRFX1VSTH1gLFxuICAgIF0sXG4gIH0pXG4gIHB1YmxpYyBpbml0KGNvbmZpZzogSUNsb3VkYmFzZUNvbmZpZyAmIHsgbGFuZz86IExBTkdTIH0pOiBDbG91ZGJhc2Uge1xuICAgIGlmICghY29uZmlnLmVudikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY29kZTogRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgICBtc2c6ICdlbnYgbXVzdCBub3QgYmUgc3BlY2lmaWVkJyxcbiAgICAgIH0pLClcbiAgICB9XG4gICAgY29uZmlnLmVuZFBvaW50TW9kZSA9IGNvbmZpZy5lbmRQb2ludE1vZGUgfHwgJ0dBVEVXQVknXG5cbiAgICAvLyDliJ3lp4vljJbml7boi6XmnKrlhbzlrrnlubPlj7DvvIzliJnkvb/nlKjpu5jorqRhZGFwdGVyXG4gICAgaWYgKCFQbGF0Zm9ybS5hZGFwdGVyKSB7XG4gICAgICB0aGlzLnVzZURlZmF1bHRBZGFwdGVyKClcbiAgICB9XG5cbiAgICBjb25zdCByZXFDb25maWc6IElSZXF1ZXN0Q29uZmlnID0ge1xuICAgICAgdGltZW91dDogY29uZmlnLnRpbWVvdXQgfHwgNTAwMCxcbiAgICAgIHRpbWVvdXRNc2c6IGBbJHtnZXRTZGtOYW1lKCl9XVtSRVFVRVNUIFRJTUVPVVRdIHJlcXVlc3QgaGFkIGJlZW4gYWJvcnQgc2luY2UgZGlkbid0IGZpbmlzaGVkIHdpdGhpbiR7XG4gICAgICAgIGNvbmZpZy50aW1lb3V0IC8gMTAwMFxuICAgICAgfXNgLFxuICAgIH1cblxuICAgIHRoaXMucmVxdWVzdENsaWVudCA9IG5ldyBQbGF0Zm9ybS5hZGFwdGVyLnJlcUNsYXNzKHJlcUNvbmZpZylcblxuICAgIHRoaXMuY2xvdWRiYXNlQ29uZmlnID0ge1xuICAgICAgLi4uREVGQVVMVF9JTklUX0NPTkZJRyxcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGkxOG46IGkxOG5Qcm94eShQbGF0Zm9ybSwgY29uZmlnKSxcbiAgICB9XG5cbiAgICBkZWxldGUgKHRoaXMuY2xvdWRiYXNlQ29uZmlnIGFzIGFueSkubGFuZ1xuICAgIC8vIOS/ruato3RpbWVvdXTlj5blgLxcbiAgICB0aGlzLmNsb3VkYmFzZUNvbmZpZy50aW1lb3V0ID0gdGhpcy5mb3JtYXRUaW1lb3V0KHRoaXMuY2xvdWRiYXNlQ29uZmlnLnRpbWVvdXQpXG4gICAgLy8g5Yid5aeL5YyWY2FjaGXlkoxyZXF1ZXN0XG4gICAgY29uc3QgeyBlbnYsIHBlcnNpc3RlbmNlLCBkZWJ1ZywgdGltZW91dCwgb2F1dGhDbGllbnQsIGkxOG4gfSA9IHRoaXMuY2xvdWRiYXNlQ29uZmlnXG4gICAgaW5pdENhY2hlKHsgZW52LCBwZXJzaXN0ZW5jZSwgZGVidWcsIHBsYXRmb3JtSW5mbzogdGhpcy5wbGF0Zm9ybSB9KVxuXG4gICAgc2V0UmVnaW9uTGV2ZWxFbmRwb2ludChlbnYsIGNvbmZpZy5yZWdpb24gfHwgJycpXG4gICAgc2V0R2F0ZXdheUVuZFBvaW50V2l0aEVudihlbnYsIERFRkFVTFRfUFJPVE9DT0wsIGNvbmZpZy5yZWdpb24gfHwgJycpXG5cbiAgICBjb25zdCBhcHAgPSBuZXcgQ2xvdWRiYXNlKHRoaXMuY2xvdWRiYXNlQ29uZmlnKVxuICAgIGluaXRSZXF1ZXN0KHtcbiAgICAgIGVudixcbiAgICAgIHJlZ2lvbjogY29uZmlnLnJlZ2lvbiB8fCAnJyxcbiAgICAgIHRpbWVvdXQsXG4gICAgICBvYXV0aENsaWVudCxcbiAgICAgIF9mcm9tQXBwOiBhcHAsXG4gICAgICBpMThuLFxuICAgICAgZW5kUG9pbnRNb2RlOiBjb25maWcuZW5kUG9pbnRNb2RlLFxuICAgIH0pXG4gICAgYXBwLnJlcXVlc3RDbGllbnQgPSB0aGlzLnJlcXVlc3RDbGllbnRcbiAgICA7KHRoaXMgYXMgYW55KT8uZmlyZT8uKCdjbG91ZGJhc2VfaW5pdCcsIGFwcClcblxuICAgIHRoaXMudHJ5MkluaXRBdXRoKGFwcClcblxuICAgIHJldHVybiBhcHBcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVDb25maWcoY29uZmlnOiBJQ2xvdWRiYXNlVXBncmFkZWRDb25maWcpIHtcbiAgICBjb25zdCB7IHBlcnNpc3RlbmNlLCBkZWJ1ZyB9ID0gY29uZmlnXG4gICAgdGhpcy5jbG91ZGJhc2VDb25maWcucGVyc2lzdGVuY2UgPSBwZXJzaXN0ZW5jZVxuICAgIHRoaXMuY2xvdWRiYXNlQ29uZmlnLmRlYnVnID0gZGVidWdcbiAgICAvLyBwZXJzaXN0ZW5jZeaUueWKqOW9seWTjWNhY2hlXG4gICAgaW5pdENhY2hlKHsgZW52OiB0aGlzLmNsb3VkYmFzZUNvbmZpZy5lbnYsIHBlcnNpc3RlbmNlLCBkZWJ1ZywgcGxhdGZvcm1JbmZvOiB0aGlzLnBsYXRmb3JtIH0pXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlTGFuZyhsYW5nOiBMQU5HUykge1xuICAgIGlmICghbGFuZyB8fCBsYW5nID09PSB0aGlzLmNsb3VkYmFzZUNvbmZpZy5pMThuPy5sYW5nKSByZXR1cm5cblxuICAgIHRoaXMuY2xvdWRiYXNlQ29uZmlnLmkxOG4ubGFuZyA9IGxhbmdcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckV4dGVuc2lvbihleHQ6IElDbG91ZGJhc2VFeHRlbnNpb24pIHtcbiAgICBleHRlbnNpb25NYXBbZXh0Lm5hbWVdID0gZXh0XG4gIH1cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICB0aXRsZTogJ+iwg+eUqOaJqeWxleiDveWKm+Wksei0pScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCBpbnZva2VFeHRlbnNpb24oKSDnmoTor63ms5XmiJblj4LmlbDmmK/lkKbmraPnoa4nLFxuICAgICAgJyAgMiAtIOiiq+iwg+eUqOeahOaJqeWxleiDveWKm+aYr+WQpuW3sue7j+WuieijheW5tumAmui/hyByZWdpc3RlckV4dGVuc2lvbigpIOazqOWGjCcsXG4gICAgICBg5aaC5p6c6Zeu6aKY5L6d54S25a2Y5Zyo77yM5bu66K6u5Yiw5a6Y5pa56Zeu562U56S+5Yy65o+Q6Zeu5oiW5a+75om+5biu5Yqp77yaJHtDT01NVU5JVFlfU0lURV9VUkx9YCxcbiAgICBdLFxuICB9KVxuICBwdWJsaWMgYXN5bmMgaW52b2tlRXh0ZW5zaW9uKG5hbWU6IHN0cmluZywgb3B0czogYW55KSB7XG4gICAgY29uc3QgZXh0ID0gZXh0ZW5zaW9uTWFwW25hbWVdXG4gICAgaWYgKCFleHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiBgZXh0ZW5zaW9uOiR7bmFtZX0gbXVzdCBiZSByZWdpc3RlcmVkIGJlZm9yZSBpbnZva2VgLFxuICAgICAgfSksKVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCBleHQuaW52b2tlKG9wdHMsIHRoaXMpXG4gIH1cblxuICBwdWJsaWMgdXNlQWRhcHRlcnMoYWRhcHRlcnM6IENsb3VkYmFzZUFkYXB0ZXIgfCBDbG91ZGJhc2VBZGFwdGVyW10sIG9wdGlvbnM/OiBhbnkpIHtcbiAgICBjb25zdCB7IGFkYXB0ZXIsIHJ1bnRpbWUgfSA9IHVzZUFkYXB0ZXJzKGFkYXB0ZXJzLCBvcHRpb25zKSB8fCB7fVxuICAgIGFkYXB0ZXIgJiYgKFBsYXRmb3JtLmFkYXB0ZXIgPSBhZGFwdGVyIGFzIFNES0FkYXB0ZXJJbnRlcmZhY2UpXG4gICAgcnVudGltZSAmJiAoUGxhdGZvcm0ucnVudGltZSA9IHJ1bnRpbWUgYXMgc3RyaW5nKVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVySG9vayhob29rOiBJQ2xvdWRiYXNlSG9vaykge1xuICAgIHJlZ2lzdGVySG9vayhDbG91ZGJhc2UsIGhvb2spXG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJDb21wb25lbnQoY29tcG9uZW50OiBJQ2xvdWRiYXNlQ29tcG9uZW50KSB7XG4gICAgcmVnaXN0ZXJDb21wb25lbnQoQ2xvdWRiYXNlLCBjb21wb25lbnQpXG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJWZXJzaW9uKHZlcnNpb246IHN0cmluZykge1xuICAgIHNldFNka1ZlcnNpb24odmVyc2lvbilcbiAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uXG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJTZGtOYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHNldFNka05hbWUobmFtZSlcbiAgfVxuXG4gIC8qKiDorr7nva4gdGNiIGFwaSDnmoQgZW5kcG9pbnQgKi9cbiAgcHVibGljIHJlZ2lzdGVyRW5kUG9pbnQodXJsOiBzdHJpbmcsIHByb3RvY29sPzogJ2h0dHAnIHwgJ2h0dHBzJykge1xuICAgIHNldEVuZFBvaW50SW5mbyh7IGJhc2VVcmw6IHVybCwgcHJvdG9jb2wsIGVudjogdGhpcy5jb25maWcuZW52LCBlbmRQb2ludEtleTogJ0NMT1VEX0FQSScgfSlcbiAgfVxuXG4gIC8qKiDorr7nva7nvZHlhbMvdGNiIGFwaeeahCBlbmRQb2ludO+8jOmAmui/hyBrZXkg5oyH5a6aICovXG4gIHB1YmxpYyByZWdpc3RlckVuZFBvaW50V2l0aEtleShwcm9wczogSVNldEVuZFBvaW50V2l0aEtleSkge1xuICAgIHNldEVuZFBvaW50SW5mbyh7XG4gICAgICBlbnY6IHRoaXMuY29uZmlnLmVudixcbiAgICAgIGVuZFBvaW50S2V5OiBwcm9wcy5rZXksXG4gICAgICBiYXNlVXJsOiBwcm9wcy51cmwsXG4gICAgICBwcm90b2NvbDogcHJvcHMucHJvdG9jb2wsXG4gICAgfSlcbiAgfVxuXG4gIC8qKiDmi7/nvZHlhbMvdGNiIGFwaeeahCBlbmRQb2ludO+8jOmAmui/hyBrZXkg5oyH5a6aICovXG4gIHB1YmxpYyBnZXRFbmRQb2ludFdpdGhLZXkoa2V5OiBFbmRQb2ludEtleSkge1xuICAgIGNvbnN0IGluZm8gPSBnZXRFbmRQb2ludEluZm8odGhpcy5jb25maWcuZW52LCBrZXkpXG4gICAgcmV0dXJuIHtcbiAgICAgIEJBU0VfVVJMOiBpbmZvLmJhc2VVcmwsXG4gICAgICBQUk9UT0NPTDogaW5mby5wcm90b2NvbCxcbiAgICB9XG4gIH1cblxuICAvLyDop6PmnpBVUkzlj4LmlbBcbiAgcHVibGljIHBhcnNlQ2FwdGNoYSh1cmwpIHtcbiAgICByZXR1cm4gdXRpbHMucGFyc2VDYXB0Y2hhKHVybClcbiAgfVxuXG4gIHByaXZhdGUgdXNlRGVmYXVsdEFkYXB0ZXIoKSB7XG4gICAgY29uc3QgeyBhZGFwdGVyLCBydW50aW1lIH0gPSB1c2VEZWZhdWx0QWRhcHRlci5iaW5kKHRoaXMpKClcbiAgICBQbGF0Zm9ybS5hZGFwdGVyID0gYWRhcHRlciBhcyBTREtBZGFwdGVySW50ZXJmYWNlXG4gICAgUGxhdGZvcm0ucnVudGltZSA9IHJ1bnRpbWUgYXMgc3RyaW5nXG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFRpbWVvdXQodGltZW91dDogbnVtYmVyKSB7XG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICBjYXNlIHRpbWVvdXQgPiBNQVhfVElNRU9VVDpcbiAgICAgICAgcHJpbnRXYXJuKEVSUk9SUy5JTlZBTElEX1BBUkFNUywgJ3RpbWVvdXQgaXMgZ3JlYXRlciB0aGFuIG1heGltdW0gdmFsdWVbMTBtaW5dJylcbiAgICAgICAgcmV0dXJuIE1BWF9USU1FT1VUXG4gICAgICBjYXNlIHRpbWVvdXQgPCBNSU5fVElNRU9VVDpcbiAgICAgICAgcHJpbnRXYXJuKEVSUk9SUy5JTlZBTElEX1BBUkFNUywgJ3RpbWVvdXQgaXMgbGVzcyB0aGFuIG1heGltdW0gdmFsdWVbMTAwbXNdJylcbiAgICAgICAgcmV0dXJuIE1JTl9USU1FT1VUXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGltZW91dFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJ5MkluaXRBdXRoKGFwcCkge1xuICAgIHRyeSB7XG4gICAgICBhcHAuYXV0aCgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKCd0cnkySW5pdEF1dGggZXJyb3I6JywgZXJyb3IpXG4gICAgfVxuICB9XG59XG5cbi8vIOexu+Wei+WvvOWHulxuZXhwb3J0IHR5cGUgeyBDbG91ZGJhc2UgfVxuXG4vLyDlgLzlr7zlh7pcbmV4cG9ydCBjb25zdCBjbG91ZGJhc2U6IElDbG91ZGJhc2UgPSBuZXcgQ2xvdWRiYXNlKClcblxuY2xvdWRiYXNlLnVzZUFkYXB0ZXJzKGdldFd4RGVmYXVsdEFkYXB0ZXIoKSlcblxuLy8g6buY6K6k5a+85Ye65a6e5L6LXG5leHBvcnQgZGVmYXVsdCBjbG91ZGJhc2VcbiJdfQ==
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFhMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUc5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQy9ELE9BQU8sRUFDTCxVQUFVLEVBQ1YsYUFBYSxFQUNiLHNCQUFzQixFQUN0QixVQUFVLEVBQ1YseUJBQXlCLEVBRXpCLGVBQWUsRUFDZixlQUFlLEVBQ2YsYUFBYSxFQUNiLGdCQUFnQixHQUNqQixNQUFNLG9CQUFvQixDQUFBO0FBQzNCLE9BQU8sRUFBRSxTQUFTLEVBQVMsTUFBTSxhQUFhLENBQUE7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDM0IsSUFBQSxXQUFXLEdBQXdCLFFBQVEsWUFBaEMsRUFBRSxpQkFBaUIsR0FBSyxRQUFRLGtCQUFiLENBQWE7QUFDM0MsSUFBQSxNQUFNLEdBQXlCLFNBQVMsT0FBbEMsRUFBRSxrQkFBa0IsR0FBSyxTQUFTLG1CQUFkLENBQWM7QUFDeEMsSUFBQSxTQUFTLEdBQUssS0FBSyxVQUFWLENBQVU7QUFDbkIsSUFBQSxvQkFBb0Is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QztZQUNwQixLQUFLLEVBQUUsVUFBVTtZQUNqQixRQUFRLEVBQUU7Z0JBQ1IsVUFBVTtnQkFDVix1Q0FBdUM7Z0JBQ3ZDLGdEQUFnRDtnQkFDaEQsc0tBQTZCLGtCQUFrQixDQUFFO2FBQ2xEO1NBQ0YsQ0FBQzs7OztvREFXRDtJQWlISCxnQkFBQztDQUFBLEFBeFFELElBd1FDO0FBTUQsTUFBTSxDQUFDLElBQU0sU0FBUyxHQUFlLElBQUksU0FBUyxFQUFFLENBQUE7QUFFcEQsU0FBUyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUE7QUFHNUMsZUFBZSxTQUFTLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGFwdGVycywgY29uc3RhbnRzLCB1dGlscywgaGVscGVycyB9IGZyb20gJ0BjbG91ZGJhc2UvdXRpbGl0aWVzJ1xuaW1wb3J0IHsgU0RLQWRhcHRlckludGVyZmFjZSwgQ2xvdWRiYXNlQWRhcHRlciwgSVJlcXVlc3RDb25maWcgfSBmcm9tICdAY2xvdWRiYXNlL2FkYXB0ZXItaW50ZXJmYWNlJ1xuaW1wb3J0IHtcbiAgSUNsb3VkYmFzZUNvbmZpZyxcbiAgSUNsb3VkYmFzZVVwZ3JhZGVkQ29uZmlnLFxuICBJQ2xvdWRiYXNlLFxuICBJQ2xvdWRiYXNlRXh0ZW5zaW9uLFxuICBLVixcbiAgSUNsb3VkYmFzZVBsYXRmb3JtSW5mbyxcbiAgRW5kUG9pbnRLZXksXG4gIElDbG91ZGJhc2VBcGlzLFxufSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUF1dGggfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2F1dGgnXG5pbXBvcnQgeyByZWdpc3RlckNvbXBvbmVudCwgcmVnaXN0ZXJIb29rIH0gZnJvbSAnLi9saWJzL2NvbXBvbmVudCdcbmltcG9ydCB7IGdldFd4RGVmYXVsdEFkYXB0ZXIsIFBsYXRmb3JtIH0gZnJvbSAnLi9saWJzL2FkYXB0ZXInXG5pbXBvcnQgeyBJQ2xvdWRiYXNlQ29tcG9uZW50LCBJQ2xvdWRiYXNlSG9vayB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29tcG9uZW50J1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNhY2hlIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9jYWNoZSdcbmltcG9ydCB7IGluaXRDYWNoZSwgZ2V0Q2FjaGVCeUVudklkLCBnZXRMb2NhbENhY2hlIH0gZnJvbSAnLi9saWJzL2NhY2hlJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZVJlcXVlc3QgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL3JlcXVlc3QnXG5pbXBvcnQgeyBpbml0UmVxdWVzdCwgZ2V0UmVxdWVzdEJ5RW52SWQgfSBmcm9tICcuL2xpYnMvcmVxdWVzdCdcbmltcG9ydCB7XG4gIGdldFNka05hbWUsXG4gIHNldFNka1ZlcnNpb24sXG4gIHNldFJlZ2lvbkxldmVsRW5kcG9pbnQsXG4gIHNldFNka05hbWUsXG4gIHNldEdhdGV3YXlFbmRQb2ludFdpdGhFbnYsXG4gIHR5cGUgSVNldEVuZFBvaW50V2l0aEtleSxcbiAgc2V0RW5kUG9pbnRJbmZvLFxuICBnZXRFbmRQb2ludEluZm8sXG4gIGdldFNka1ZlcnNpb24sXG4gIERFRkFVTFRfUFJPVE9DT0wsXG59IGZyb20gJy4vY29uc3RhbnRzL2NvbW1vbidcbmltcG9ydCB7IGkxOG5Qcm94eSwgTEFOR1MgfSBmcm9tICcuL2xpYnMvbGFuZydcbmV4cG9ydCB7IGdldEJhc2VFbmRQb2ludCB9IGZyb20gJy4vY29uc3RhbnRzL2NvbW1vbidcbmV4cG9ydCB7IExBTkdTIH0gZnJvbSAnLi9saWJzL2xhbmcnXG5jb25zdCB7IHVzZUFkYXB0ZXJzLCB1c2VEZWZhdWx0QWRhcHRlciB9ID0gYWRhcHRlcnNcbmNvbnN0IHsgRVJST1JTLCBDT01NVU5JVFlfU0lURV9VUkwgfSA9IGNvbnN0YW50c1xuY29uc3QgeyBwcmludFdhcm4gfSA9IHV0aWxzXG5jb25zdCB7IGNhdGNoRXJyb3JzRGVjb3JhdG9yIH0gPSBoZWxwZXJzXG5cbi8qKlxuICogQGNvbnN0YW50IOm7mOiupOmFjee9rlxuICovXG5jb25zdCBERUZBVUxUX0lOSVRfQ09ORklHOiBQYXJ0aWFsPElDbG91ZGJhc2VDb25maWc+ID0ge1xuICB0aW1lb3V0OiAxNTAwMCxcbiAgcGVyc2lzdGVuY2U6ICdsb2NhbCcsIC8vIOaMgeS5heWMluWtmOWCqOexu+Wei1xufVxuXG4vLyB0aW1lb3V05LiK6ZmQMTDliIbpkp9cbmNvbnN0IE1BWF9USU1FT1VUID0gMTAwMCAqIDYwICogMTBcbi8vIHRpbWVvdXTkuIvpmZAxMDBtc1xuY29uc3QgTUlOX1RJTUVPVVQgPSAxMDBcblxuY29uc3QgZXh0ZW5zaW9uTWFwOiBLVjxJQ2xvdWRiYXNlRXh0ZW5zaW9uPiA9IHt9XG5cbmNsYXNzIENsb3VkYmFzZSBpbXBsZW1lbnRzIElDbG91ZGJhc2Uge1xuICBwdWJsaWMgYXV0aEluc3RhbmNlOiBJQ2xvdWRiYXNlQXV0aFxuICBwdWJsaWMgb2F1dGhJbnN0YW5jZTogYW55XG4gIHB1YmxpYyByZXF1ZXN0Q2xpZW50OiBhbnlcbiAgcHVibGljIG9hdXRoQ2xpZW50OiBhbnlcbiAgcHVibGljIHZlcnNpb246IHN0cmluZ1xuICBwdWJsaWMgYXV0aDogSUNsb3VkYmFzZVsnYXV0aCddICYgSUNsb3VkYmFzZUF1dGhcbiAgcHVibGljIGFwaXM6IElDbG91ZGJhc2VBcGlzXG4gIHByaXZhdGUgY2xvdWRiYXNlQ29uZmlnOiBJQ2xvdWRiYXNlQ29uZmlnXG5cbiAgY29uc3RydWN0b3IoY29uZmlnPzogSUNsb3VkYmFzZUNvbmZpZykge1xuICAgIHRoaXMuY2xvdWRiYXNlQ29uZmlnID0gY29uZmlnID8gY29uZmlnIDogdGhpcy5jbG91ZGJhc2VDb25maWdcbiAgICB0aGlzLmF1dGhJbnN0YW5jZSA9IG51bGxcbiAgICB0aGlzLm9hdXRoSW5zdGFuY2UgPSBudWxsXG4gICAgdGhpcy52ZXJzaW9uID0gZ2V0U2RrVmVyc2lvbigpXG4gIH1cblxuICBnZXQgY29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLmNsb3VkYmFzZUNvbmZpZ1xuICB9XG5cbiAgZ2V0IHBsYXRmb3JtKCk6IElDbG91ZGJhc2VQbGF0Zm9ybUluZm8ge1xuICAgIHJldHVybiBQbGF0Zm9ybVxuICB9XG5cbiAgZ2V0IGNhY2hlKCk6IElDbG91ZGJhc2VDYWNoZSB7XG4gICAgcmV0dXJuIGdldENhY2hlQnlFbnZJZCh0aGlzLmNsb3VkYmFzZUNvbmZpZy5lbnYpXG4gIH1cblxuICBnZXQgbG9jYWxDYWNoZSgpOiBJQ2xvdWRiYXNlQ2FjaGUge1xuICAgIHJldHVybiBnZXRMb2NhbENhY2hlKHRoaXMuY2xvdWRiYXNlQ29uZmlnLmVudilcbiAgfVxuXG4gIGdldCByZXF1ZXN0KCk6IElDbG91ZGJhc2VSZXF1ZXN0IHtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdEJ5RW52SWQodGhpcy5jbG91ZGJhc2VDb25maWcuZW52KVxuICB9XG5cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICBtb2RlOiAnc3luYycsXG4gICAgdGl0bGU6ICdDbG91ZGJhc2Ug5Yid5aeL5YyW5aSx6LSlJyxcbiAgICBtZXNzYWdlczogW1xuICAgICAgJ+ivt+ehruiupOS7peS4i+WQhOmhue+8micsXG4gICAgICAnICAxIC0g6LCD55SoIGNsb3VkYmFzZS5pbml0KCkg55qE6K+t5rOV5oiW5Y+C5pWw5piv5ZCm5q2j56GuJyxcbiAgICAgICcgIDIgLSDlpoLmnpzmmK/pnZ7mtY/op4jlmajnjq/looPvvIzmmK/lkKbphY3nva7kuoblronlhajlupTnlKjmnaXmupDvvIhodHRwczovL2RvY3MuY2xvdWRiYXNlLm5ldC9hcGktcmVmZXJlbmNlL3dlYnYzL2FkYXB0ZXIjJUU3JUFDJUFDLTItJUU2JUFEJUE1JUU5JTg1JThEJUU3JUJEJUFFJUU1JUFFJTg5JUU1JTg1JUE4JUU1JUJBJTk0JUU3JTk0JUE4JUU2JTlEJUE1JUU2JUJBJTkw77yJJyxcbiAgICAgIGDlpoLmnpzpl67popjkvp3nhLblrZjlnKjvvIzlu7rorq7liLDlrpjmlrnpl67nrZTnpL7ljLrmj5Dpl67miJblr7vmib7luK7liqnvvJoke0NPTU1VTklUWV9TSVRFX1VSTH1gLFxuICAgIF0sXG4gIH0pXG4gIHB1YmxpYyBpbml0KGNvbmZpZzogSUNsb3VkYmFzZUNvbmZpZyAmIHsgbGFuZz86IExBTkdTIH0pOiBDbG91ZGJhc2Uge1xuICAgIGNvbmZpZy5lbmRQb2ludE1vZGUgPSBjb25maWcuZW5kUG9pbnRNb2RlIHx8ICdHQVRFV0FZJ1xuXG4gICAgLy8g5Yid5aeL5YyW5pe26Iul5pyq5YW85a655bmz5Y+w77yM5YiZ5L2/55So6buY6K6kYWRhcHRlclxuICAgIGlmICghUGxhdGZvcm0uYWRhcHRlcikge1xuICAgICAgdGhpcy51c2VEZWZhdWx0QWRhcHRlcigpXG4gICAgfVxuXG4gICAgLy8g5Zyo5Yik5patY29uZmlnLmVuduS5i+WJje+8jOWFiOWkhOeQhm5vZGXnjq/looPnmoTphY3nva5cbiAgICBjb25maWcgPSB0aGlzLmRlYWxOb2RlQWRhcHRlckNvbmZpZyhjb25maWcpXG5cbiAgICBpZiAoIWNvbmZpZy5lbnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiAnZW52IG11c3Qgbm90IGJlIHNwZWNpZmllZCcsXG4gICAgICB9KSwpXG4gICAgfVxuXG4gICAgY29uc3QgcmVxQ29uZmlnOiBJUmVxdWVzdENvbmZpZyAmIHsgYXV0aDogSUNsb3VkYmFzZUNvbmZpZ1snYXV0aCddIH0gPSB7XG4gICAgICB0aW1lb3V0OiBjb25maWcudGltZW91dCB8fCA1MDAwLFxuICAgICAgdGltZW91dE1zZzogYFske2dldFNka05hbWUoKX1dW1JFUVVFU1QgVElNRU9VVF0gcmVxdWVzdCBoYWQgYmVlbiBhYm9ydCBzaW5jZSBkaWRuJ3QgZmluaXNoZWQgd2l0aGluJHtcbiAgICAgICAgY29uZmlnLnRpbWVvdXQgLyAxMDAwXG4gICAgICB9c2AsXG4gICAgICBhdXRoOiBjb25maWcuYXV0aCxcbiAgICB9XG5cbiAgICB0aGlzLnJlcXVlc3RDbGllbnQgPSBuZXcgUGxhdGZvcm0uYWRhcHRlci5yZXFDbGFzcyhyZXFDb25maWcpXG5cbiAgICB0aGlzLmNsb3VkYmFzZUNvbmZpZyA9IHtcbiAgICAgIC4uLkRFRkFVTFRfSU5JVF9DT05GSUcsXG4gICAgICAuLi5jb25maWcsXG4gICAgICBpMThuOiBpMThuUHJveHkoUGxhdGZvcm0sIGNvbmZpZyksXG4gICAgfVxuXG4gICAgZGVsZXRlICh0aGlzLmNsb3VkYmFzZUNvbmZpZyBhcyBhbnkpLmxhbmdcbiAgICAvLyDkv67mraN0aW1lb3V05Y+W5YC8XG4gICAgdGhpcy5jbG91ZGJhc2VDb25maWcudGltZW91dCA9IHRoaXMuZm9ybWF0VGltZW91dCh0aGlzLmNsb3VkYmFzZUNvbmZpZy50aW1lb3V0KVxuICAgIC8vIOWIneWni+WMlmNhY2hl5ZKMcmVxdWVzdFxuICAgIGNvbnN0IHsgZW52LCBwZXJzaXN0ZW5jZSwgZGVidWcsIHRpbWVvdXQsIG9hdXRoQ2xpZW50LCBpMThuIH0gPSB0aGlzLmNsb3VkYmFzZUNvbmZpZ1xuICAgIGluaXRDYWNoZSh7IGVudiwgcGVyc2lzdGVuY2UsIGRlYnVnLCBwbGF0Zm9ybUluZm86IHRoaXMucGxhdGZvcm0gfSlcblxuICAgIHNldFJlZ2lvbkxldmVsRW5kcG9pbnQoZW52LCBjb25maWcucmVnaW9uIHx8ICcnKVxuICAgIHNldEdhdGV3YXlFbmRQb2ludFdpdGhFbnYoZW52LCBERUZBVUxUX1BST1RPQ09MLCBjb25maWcucmVnaW9uIHx8ICcnKVxuXG4gICAgY29uc3QgYXBwID0gbmV3IENsb3VkYmFzZSh0aGlzLmNsb3VkYmFzZUNvbmZpZylcbiAgICBpbml0UmVxdWVzdCh7XG4gICAgICBlbnYsXG4gICAgICByZWdpb246IGNvbmZpZy5yZWdpb24gfHwgJycsXG4gICAgICB0aW1lb3V0LFxuICAgICAgb2F1dGhDbGllbnQsXG4gICAgICBfZnJvbUFwcDogYXBwLFxuICAgICAgaTE4bixcbiAgICAgIGVuZFBvaW50TW9kZTogY29uZmlnLmVuZFBvaW50TW9kZSxcbiAgICAgIGF1dGg6IGNvbmZpZy5hdXRoLFxuICAgIH0pXG4gICAgYXBwLnJlcXVlc3RDbGllbnQgPSB0aGlzLnJlcXVlc3RDbGllbnRcbiAgICA7KHRoaXMgYXMgYW55KT8uZmlyZT8uKCdjbG91ZGJhc2VfaW5pdCcsIGFwcClcblxuICAgIHRoaXMudHJ5MkluaXRBdXRoKGFwcClcblxuICAgIC8vIG5vZGXnjq/looPlj6/ku6Xku45hZGFwdGVy6I635Y+Wbm9kZVRvb2znmoTmlrnms5VcbiAgICBpZiAoUGxhdGZvcm0uYWRhcHRlcj8ubm9kZVRvb2wpIHtcbiAgICAgIFBsYXRmb3JtLmFkYXB0ZXI/Lm5vZGVUb29sKGFwcCwgdGhpcy5jbG91ZGJhc2VDb25maWcpXG4gICAgfVxuXG4gICAgcmV0dXJuIGFwcFxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUNvbmZpZyhjb25maWc6IElDbG91ZGJhc2VVcGdyYWRlZENvbmZpZykge1xuICAgIGNvbnN0IHsgcGVyc2lzdGVuY2UsIGRlYnVnIH0gPSBjb25maWdcbiAgICB0aGlzLmNsb3VkYmFzZUNvbmZpZy5wZXJzaXN0ZW5jZSA9IHBlcnNpc3RlbmNlXG4gICAgdGhpcy5jbG91ZGJhc2VDb25maWcuZGVidWcgPSBkZWJ1Z1xuICAgIC8vIHBlcnNpc3RlbmNl5pS55Yqo5b2x5ZONY2FjaGVcbiAgICBpbml0Q2FjaGUoeyBlbnY6IHRoaXMuY2xvdWRiYXNlQ29uZmlnLmVudiwgcGVyc2lzdGVuY2UsIGRlYnVnLCBwbGF0Zm9ybUluZm86IHRoaXMucGxhdGZvcm0gfSlcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVMYW5nKGxhbmc6IExBTkdTKSB7XG4gICAgaWYgKCFsYW5nIHx8IGxhbmcgPT09IHRoaXMuY2xvdWRiYXNlQ29uZmlnLmkxOG4/LmxhbmcpIHJldHVyblxuXG4gICAgdGhpcy5jbG91ZGJhc2VDb25maWcuaTE4bi5sYW5nID0gbGFuZ1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyRXh0ZW5zaW9uKGV4dDogSUNsb3VkYmFzZUV4dGVuc2lvbikge1xuICAgIGV4dGVuc2lvbk1hcFtleHQubmFtZV0gPSBleHRcbiAgfVxuICBAY2F0Y2hFcnJvcnNEZWNvcmF0b3Ioe1xuICAgIHRpdGxlOiAn6LCD55So5omp5bGV6IO95Yqb5aSx6LSlJyxcbiAgICBtZXNzYWdlczogW1xuICAgICAgJ+ivt+ehruiupOS7peS4i+WQhOmhue+8micsXG4gICAgICAnICAxIC0g6LCD55SoIGludm9rZUV4dGVuc2lvbigpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g6KKr6LCD55So55qE5omp5bGV6IO95Yqb5piv5ZCm5bey57uP5a6J6KOF5bm26YCa6L+HIHJlZ2lzdGVyRXh0ZW5zaW9uKCkg5rOo5YaMJyxcbiAgICAgIGDlpoLmnpzpl67popjkvp3nhLblrZjlnKjvvIzlu7rorq7liLDlrpjmlrnpl67nrZTnpL7ljLrmj5Dpl67miJblr7vmib7luK7liqnvvJoke0NPTU1VTklUWV9TSVRFX1VSTH1gLFxuICAgIF0sXG4gIH0pXG4gIHB1YmxpYyBhc3luYyBpbnZva2VFeHRlbnNpb24obmFtZTogc3RyaW5nLCBvcHRzOiBhbnkpIHtcbiAgICBjb25zdCBleHQgPSBleHRlbnNpb25NYXBbbmFtZV1cbiAgICBpZiAoIWV4dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY29kZTogRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgICBtc2c6IGBleHRlbnNpb246JHtuYW1lfSBtdXN0IGJlIHJlZ2lzdGVyZWQgYmVmb3JlIGludm9rZWAsXG4gICAgICB9KSwpXG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IGV4dC5pbnZva2Uob3B0cywgdGhpcylcbiAgfVxuXG4gIHB1YmxpYyB1c2VBZGFwdGVycyhhZGFwdGVyczogQ2xvdWRiYXNlQWRhcHRlciB8IENsb3VkYmFzZUFkYXB0ZXJbXSwgb3B0aW9ucz86IGFueSkge1xuICAgIGNvbnN0IHsgYWRhcHRlciwgcnVudGltZSB9ID0gdXNlQWRhcHRlcnMoYWRhcHRlcnMsIG9wdGlvbnMpIHx8IHt9XG4gICAgYWRhcHRlciAmJiAoUGxhdGZvcm0uYWRhcHRlciA9IGFkYXB0ZXIgYXMgU0RLQWRhcHRlckludGVyZmFjZSlcbiAgICBydW50aW1lICYmIChQbGF0Zm9ybS5ydW50aW1lID0gcnVudGltZSBhcyBzdHJpbmcpXG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJIb29rKGhvb2s6IElDbG91ZGJhc2VIb29rKSB7XG4gICAgcmVnaXN0ZXJIb29rKENsb3VkYmFzZSwgaG9vaylcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQ6IElDbG91ZGJhc2VDb21wb25lbnQpIHtcbiAgICByZWdpc3RlckNvbXBvbmVudChDbG91ZGJhc2UsIGNvbXBvbmVudClcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlclZlcnNpb24odmVyc2lvbjogc3RyaW5nKSB7XG4gICAgc2V0U2RrVmVyc2lvbih2ZXJzaW9uKVxuICAgIHRoaXMudmVyc2lvbiA9IHZlcnNpb25cbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlclNka05hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgc2V0U2RrTmFtZShuYW1lKVxuICB9XG5cbiAgLyoqIOiuvue9riB0Y2IgYXBpIOeahCBlbmRwb2ludCAqL1xuICBwdWJsaWMgcmVnaXN0ZXJFbmRQb2ludCh1cmw6IHN0cmluZywgcHJvdG9jb2w/OiAnaHR0cCcgfCAnaHR0cHMnKSB7XG4gICAgc2V0RW5kUG9pbnRJbmZvKHsgYmFzZVVybDogdXJsLCBwcm90b2NvbCwgZW52OiB0aGlzLmNvbmZpZy5lbnYsIGVuZFBvaW50S2V5OiAnQ0xPVURfQVBJJyB9KVxuICB9XG5cbiAgLyoqIOiuvue9rue9keWFsy90Y2IgYXBp55qEIGVuZFBvaW5077yM6YCa6L+HIGtleSDmjIflrpogKi9cbiAgcHVibGljIHJlZ2lzdGVyRW5kUG9pbnRXaXRoS2V5KHByb3BzOiBJU2V0RW5kUG9pbnRXaXRoS2V5KSB7XG4gICAgc2V0RW5kUG9pbnRJbmZvKHtcbiAgICAgIGVudjogdGhpcy5jb25maWcuZW52LFxuICAgICAgZW5kUG9pbnRLZXk6IHByb3BzLmtleSxcbiAgICAgIGJhc2VVcmw6IHByb3BzLnVybCxcbiAgICAgIHByb3RvY29sOiBwcm9wcy5wcm90b2NvbCxcbiAgICB9KVxuICB9XG5cbiAgLyoqIOaLv+e9keWFsy90Y2IgYXBp55qEIGVuZFBvaW5077yM6YCa6L+HIGtleSDmjIflrpogKi9cbiAgcHVibGljIGdldEVuZFBvaW50V2l0aEtleShrZXk6IEVuZFBvaW50S2V5KSB7XG4gICAgY29uc3QgaW5mbyA9IGdldEVuZFBvaW50SW5mbyh0aGlzLmNvbmZpZy5lbnYsIGtleSlcbiAgICByZXR1cm4ge1xuICAgICAgQkFTRV9VUkw6IGluZm8uYmFzZVVybCxcbiAgICAgIFBST1RPQ09MOiBpbmZvLnByb3RvY29sLFxuICAgIH1cbiAgfVxuXG4gIC8vIOino+aekFVSTOWPguaVsFxuICBwdWJsaWMgcGFyc2VDYXB0Y2hhKHVybCkge1xuICAgIHJldHVybiB1dGlscy5wYXJzZUNhcHRjaGEodXJsKVxuICB9XG5cbiAgcHJpdmF0ZSB1c2VEZWZhdWx0QWRhcHRlcigpIHtcbiAgICBjb25zdCB7IGFkYXB0ZXIsIHJ1bnRpbWUgfSA9IHVzZURlZmF1bHRBZGFwdGVyLmJpbmQodGhpcykoKVxuICAgIFBsYXRmb3JtLmFkYXB0ZXIgPSBhZGFwdGVyIGFzIFNES0FkYXB0ZXJJbnRlcmZhY2VcbiAgICBQbGF0Zm9ybS5ydW50aW1lID0gcnVudGltZSBhcyBzdHJpbmdcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VGltZW91dCh0aW1lb3V0OiBudW1iZXIpIHtcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgIGNhc2UgdGltZW91dCA+IE1BWF9USU1FT1VUOlxuICAgICAgICBwcmludFdhcm4oRVJST1JTLklOVkFMSURfUEFSQU1TLCAndGltZW91dCBpcyBncmVhdGVyIHRoYW4gbWF4aW11bSB2YWx1ZVsxMG1pbl0nKVxuICAgICAgICByZXR1cm4gTUFYX1RJTUVPVVRcbiAgICAgIGNhc2UgdGltZW91dCA8IE1JTl9USU1FT1VUOlxuICAgICAgICBwcmludFdhcm4oRVJST1JTLklOVkFMSURfUEFSQU1TLCAndGltZW91dCBpcyBsZXNzIHRoYW4gbWF4aW11bSB2YWx1ZVsxMDBtc10nKVxuICAgICAgICByZXR1cm4gTUlOX1RJTUVPVVRcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aW1lb3V0XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0cnkySW5pdEF1dGgoYXBwKSB7XG4gICAgdHJ5IHtcbiAgICAgIGFwcC5hdXRoKClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coJ3RyeTJJbml0QXV0aCBlcnJvcjonLCBlcnJvcilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog5aSE55CGIE5vZGUg546v5aKD5LiLIGFkYXB0ZXIg55qE6YWN572u5L+h5oGvXG4gICAqIOWcqCBOb2RlIOeOr+Wig+S4re+8jOmAmui/hyBhZGFwdGVyIOiHquWKqOiOt+WPluWvhumSpeOAgeeOr+Wig0lE44CBYWNjZXNzS2V5IOetiemFjee9ru+8jFxuICAgKiDlh4/lsJHnlKjmiLfmiYvliqjkvKDlhaXphY3nva7nmoTotJ/mi4VcbiAgICogQHBhcmFtIGNvbmZpZyAtIOS6keW8gOWPkeWIneWni+WMlumFjee9ruWvueixoVxuICAgKiBAcmV0dXJucyDooaXlhYXkuoYgTm9kZSBhZGFwdGVyIOS/oeaBr+WQjueahOmFjee9ruWvueixoVxuICAgKi9cbiAgcHJpdmF0ZSBkZWFsTm9kZUFkYXB0ZXJDb25maWcoY29uZmlnOiBJQ2xvdWRiYXNlQ29uZmlnKSB7XG4gICAgLy8gbm9kZeeOr+Wig+WPr+S7peS7jmFkYXB0ZXLojrflj5bpu5jorqTnmoRzZWNyZXRJZOWSjHNlY3JldEtleVxuICAgIGlmIChQbGF0Zm9ybS5hZGFwdGVyPy5nZXRTZWNyZXRJbmZvKSB7XG4gICAgICBjb25zdCBzZWNyZXRJbmZvID0gUGxhdGZvcm0uYWRhcHRlcj8uZ2V0U2VjcmV0SW5mbyhjb25maWcpXG4gICAgICAvLyDlsIYgYWRhcHRlciDmj5DkvpvnmoTlr4bpkqXkv6Hmga/lhpnlhaUgY29uZmlnLmF1dGhcbiAgICAgIGNvbmZpZy5hdXRoID0ge1xuICAgICAgICBzZWNyZXRJZDogc2VjcmV0SW5mby5zZWNyZXRJZCxcbiAgICAgICAgc2VjcmV0S2V5OiBzZWNyZXRJbmZvLnNlY3JldEtleSxcbiAgICAgICAgc2Vzc2lvblRva2VuOiBzZWNyZXRJbmZvLnNlc3Npb25Ub2tlbixcbiAgICAgICAgc2VjcmV0VHlwZTogc2VjcmV0SW5mby5zZWNyZXRUeXBlIGFzIGFueSxcbiAgICAgIH1cblxuICAgICAgLy8gbm9kZSDnjq/looPlj6/og73lj6/ku6Xku47kuIrkuIvmlofojrflj5ZlbnbvvIznlKjmiLfmnKrmmL7lvI/mjIflrprml7boh6rliqjloavlhYVcbiAgICAgIGlmICghY29uZmlnLmVudikge1xuICAgICAgICBjb25maWcuZW52ID0gc2VjcmV0SW5mby5lbnZcbiAgICAgIH1cblxuICAgICAgLy8gbm9kZSBhZGFwdGVy546v5aKD6IO96K+75Y+W5YiwIHByb2Nlc3MuZW52LkNMT1VEQkFTRV9BUElLRVkg5pe277yM5Zyo5rKh5pyJ5Lyg5YWlYWNjZXNzS2V55pe277yM5L2/55SoIG5vZGUgYWRhcHRlciDmj5DkvpvnmoQgYWNjZXNzS2V577yIcHJvY2Vzcy5lbnYuQ0xPVURCQVNFX0FQSUtFWe+8iVxuICAgICAgaWYgKCFjb25maWcuYWNjZXNzS2V5ICYmIHNlY3JldEluZm8uYWNjZXNzS2V5KSB7XG4gICAgICAgIGNvbmZpZy5hY2Nlc3NLZXkgPSBzZWNyZXRJbmZvLmFjY2Vzc0tleVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb25maWdcbiAgfVxufVxuXG4vLyDnsbvlnovlr7zlh7pcbmV4cG9ydCB0eXBlIHsgQ2xvdWRiYXNlIH1cblxuLy8g5YC85a+85Ye6XG5leHBvcnQgY29uc3QgY2xvdWRiYXNlOiBJQ2xvdWRiYXNlID0gbmV3IENsb3VkYmFzZSgpXG5cbmNsb3VkYmFzZS51c2VBZGFwdGVycyhnZXRXeERlZmF1bHRBZGFwdGVyKCkpXG5cbi8vIOm7mOiupOWvvOWHuuWunuS+i1xuZXhwb3J0IGRlZmF1bHQgY2xvdWRiYXNlXG4iXX0=
|
|
@@ -44,6 +44,7 @@ export declare class CloudbaseRequest implements ICloudbaseRequest {
|
|
|
44
44
|
search?: string;
|
|
45
45
|
defaultQuery?: KV<any>;
|
|
46
46
|
headers?: KV<string>;
|
|
47
|
+
endPointMode?: 'CLOUD_API' | 'GATEWAY';
|
|
47
48
|
}, customReqOpts?: ICustomReqOpts): Promise<ResponseObject>;
|
|
48
49
|
fetch(options: IFetchOptions & {
|
|
49
50
|
token?: string;
|