@rudderstack/integrations-lib 0.2.5 → 0.2.6
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/build/utils/misc.d.ts +2 -2
- package/build/utils/misc.js +3 -3
- package/build/utils/misc.test.js +3 -3
- package/build/utils/request.d.ts +2 -0
- package/build/utils/request.d.ts.map +1 -0
- package/build/utils/request.js +20 -0
- package/build/utils/request.test.d.ts +2 -0
- package/build/utils/request.test.d.ts.map +1 -0
- package/build/utils/request.test.js +72 -0
- package/package.json +1 -1
package/build/utils/misc.d.ts
CHANGED
|
@@ -102,8 +102,8 @@ export declare const flattenJson: (data: unknown, separator?: string, mode?: str
|
|
|
102
102
|
* @returns The offset value in seconds for the given timezone. If the timezone is invalid or not found, it returns `undefined`.
|
|
103
103
|
*
|
|
104
104
|
* @example
|
|
105
|
-
* const offset = getOffsetInSec('
|
|
106
|
-
* console.log(offset); // Output:
|
|
105
|
+
* const offset = getOffsetInSec('Asia/Calcutta');
|
|
106
|
+
* console.log(offset); // Output: 19800
|
|
107
107
|
*/
|
|
108
108
|
export declare const getOffsetInSec: (value: string) => number | undefined;
|
|
109
109
|
/**
|
package/build/utils/misc.js
CHANGED
|
@@ -307,8 +307,8 @@ exports.flattenJson = flattenJson;
|
|
|
307
307
|
* @returns The offset value in seconds for the given timezone. If the timezone is invalid or not found, it returns `undefined`.
|
|
308
308
|
*
|
|
309
309
|
* @example
|
|
310
|
-
* const offset = getOffsetInSec('
|
|
311
|
-
* console.log(offset); // Output:
|
|
310
|
+
* const offset = getOffsetInSec('Asia/Calcutta');
|
|
311
|
+
* console.log(offset); // Output: 19800
|
|
312
312
|
*/
|
|
313
313
|
const getOffsetInSec = (value) => {
|
|
314
314
|
const name = moment_timezone_1.default.tz.zone(value);
|
|
@@ -365,4 +365,4 @@ const getErrorRespEvents = (metadata, statusCode, error, statTags, batched = fal
|
|
|
365
365
|
statTags,
|
|
366
366
|
});
|
|
367
367
|
exports.getErrorRespEvents = getErrorRespEvents;
|
|
368
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9taXNjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQXVCO0FBQ3ZCLDBEQUE0QjtBQVluQixjQVpGLG1CQUFHLENBWUU7QUFYWiwwREFBNEI7QUFXZCxjQVhQLG1CQUFHLENBV087QUFWakIsc0VBQXFDO0FBQ3JDLG9EQUE0QjtBQUM1QixvREFBNEI7QUFDNUIsa0RBQW9DO0FBRXBDLDJFQUF1RTtBQU1oRSxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxnQkFBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUE5QyxRQUFBLFNBQVMsYUFBcUM7QUFDcEQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsZ0JBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBM0MsUUFBQSxVQUFVLGNBQWlDO0FBQ2pELE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0FBQXRDLFFBQUEsU0FBUyxhQUE2QjtBQUM1QyxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFBLGlCQUFTLEVBQUMsQ0FBQyxDQUFDLElBQUksSUFBQSxpQkFBUyxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBQW5FLFFBQUEsbUJBQW1CLHVCQUFnRDtBQUN6RSxNQUFNLDhCQUE4QixHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FDM0QsSUFBQSxpQkFBUyxFQUFDLENBQUMsQ0FBQyxJQUFJLElBQUEsaUJBQVMsRUFBQyxDQUFDLENBQUMsSUFBSSxJQUFBLGtCQUFVLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFEbkMsUUFBQSw4QkFBOEIsa0NBQ0s7QUFDekMsTUFBTSxP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LXZhbHVlJztcbmltcG9ydCBzZXQgZnJvbSAnc2V0LXZhbHVlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCBzaGEyNTYgZnJvbSAnc2hhMjU2JztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgTWV0YWRhdGEsIFJ1ZGRlclN0YWNrRXZlbnQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBJbnN0cnVtZW50YXRpb25FcnJvciB9IGZyb20gJy4uL2Vycm9ycy9pbnN0cnVtZW50YXRpb25fZXJyb3InO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIElOTElORVJTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCB7IGdldCwgc2V0IH07XG5leHBvcnQgY29uc3QgaXNEZWZpbmVkID0gKHg6IHVua25vd24pID0+ICFfLmlzVW5kZWZpbmVkKHgpO1xuZXhwb3J0IGNvbnN0IGlzTm90RW1wdHkgPSAoeDogdW5rbm93bikgPT4gIV8uaXNFbXB0eSh4KTtcbmV4cG9ydCBjb25zdCBpc05vdE51bGwgPSAoeDogdW5rbm93bikgPT4geCAhPSBudWxsO1xuZXhwb3J0IGNvbnN0IGlzRGVmaW5lZEFuZE5vdE51bGwgPSAoeDogdW5rbm93bikgPT4gaXNEZWZpbmVkKHgpICYmIGlzTm90TnVsbCh4KTtcbmV4cG9ydCBjb25zdCBpc0RlZmluZWRBbmROb3ROdWxsQW5kTm90RW1wdHkgPSAoeDogdW5rbm93bikgPT5cbiAgaXNEZWZpbmVkKHgpICYmIGlzTm90TnVsbCh4KSAmJiBpc05vdEVtcHR5KHgpO1xuZXhwb3J0IGNvbnN0IGlzQmxhbmsgPSAodmFsdWU6IHVua25vd24pID0+IF8uaXNFbXB0eShfLnRvU3RyaW5nKHZhbHVlKSk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGNvbnN0IHJlbW92ZVVuZGVmaW5lZFZhbHVlcyA9IChvYmo6IHVua25vd24pID0+IHtcbiAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJldHVybiBvYmo7XG4gIHJldHVybiBfLnBpY2tCeShvYmosIGlzRGVmaW5lZCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlTnVsbFZhbHVlcyA9IChvYmo6IHVua25vd24pID0+IHtcbiAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJldHVybiBvYmo7XG4gIHJldHVybiBfLnBpY2tCeShvYmosIGlzTm90TnVsbCk7XG59O1xuZXhwb3J0IGNvbnN0IHJlbW92ZVVuZGVmaW5lZEFuZE51bGxWYWx1ZXMgPSAob2JqOiB1bmtub3duKSA9PiB7XG4gIGlmICghXy5pc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICByZXR1cm4gXy5waWNrQnkob2JqLCBpc0RlZmluZWRBbmROb3ROdWxsKTtcbn07XG5leHBvcnQgY29uc3QgcmVtb3ZlVW5kZWZpbmVkQW5kTnVsbEFuZEVtcHR5VmFsdWVzID0gKG9iajogdW5rbm93bikgPT4ge1xuICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgcmV0dXJuIF8ucGlja0J5KG9iaiwgaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5KTtcbn07XG5cbi8qKlxuICogVGhlIGZsYXR0ZW5NYXAgZnVuY3Rpb24gdGFrZXMgYSBjb2xsZWN0aW9uIGFzIGlucHV0IGFuZCByZXR1cm5zIGEgZmxhdHRlbmVkIHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb24uIElmIHRoZSBpbnB1dCBpcyBub3QgYW4gYXJyYXkgb3IgYW4gb2JqZWN0LCBpdCBpcyByZXR1cm5lZCBhcyBpcy4gT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgZmxhdE1hcCBmdW5jdGlvbiBmcm9tIHRoZSBsb2Rhc2ggbGlicmFyeSB0byBmbGF0dGVuIHRoZSBjb2xsZWN0aW9uLlxuICogQHBhcmFtIGNvbGxlY3Rpb25cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBmbGF0dGVuTWFwID0gKGNvbGxlY3Rpb246IHVua25vd24pID0+IHtcbiAgaWYgKCFfLmlzQXJyYXkoY29sbGVjdGlvbikgJiYgIV8uaXNPYmplY3QoY29sbGVjdGlvbikpIHJldHVybiBjb2xsZWN0aW9uO1xuICByZXR1cm4gXy5mbGF0TWFwKGNvbGxlY3Rpb24sICh4KSA9PiB4KTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR0VORVJJQyBVVExJVFlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgY29uc3QgZ2V0RXZlbnRUaW1lID0gKG1lc3NhZ2U6IFJ1ZGRlclN0YWNrRXZlbnQpID0+IHtcbiAgaWYgKCFtZXNzYWdlLnRpbWVzdGFtcCAmJiAhbWVzc2FnZS5vcmlnaW5hbFRpbWVzdGFtcClcbiAgICB0aHJvdyBuZXcgSW5zdHJ1bWVudGF0aW9uRXJyb3IoJ0V2ZW50IGRvZXMgbm90IGhhdmUgdGltZXN0YW1wIG9yIG9yaWdpbmFsVGltZXN0YW1wJyk7XG4gIHRyeSB7XG4gICAgaWYgKG1lc3NhZ2UudGltZXN0YW1wKSByZXR1cm4gbmV3IERhdGUobWVzc2FnZS50aW1lc3RhbXApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmVycm9yKCdFcnJvciBpbiBwYXJzaW5nIHRpbWVzdGFtcCcsIGUpO1xuICB9XG4gIHJldHVybiBuZXcgRGF0ZShtZXNzYWdlLm9yaWdpbmFsVGltZXN0YW1wKTtcbn07XG5cbmV4cG9ydCBjb25zdCBiYXNlNjRDb252ZXJ0b3IgPSAoc3RyaW5nOiBzdHJpbmcpID0+IEJ1ZmZlci5mcm9tKHN0cmluZykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXG4vLyByZXR1cm4gYSB2YWxpZCBVUkwgb2JqZWN0IGlmIGNvcnJlY3QgZWxzZSBudWxsXG5leHBvcnQgY29uc3QgaXNWYWxpZFVybCA9ICh1cmw6IHN0cmluZyB8IFVSTCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBuZXcgVVJMKHVybCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc3RyaXBUcmFpbGluZ1NsYXNoID0gKHN0cjogc3RyaW5nKSA9PlxuICBzdHIgJiYgc3RyLmVuZHNXaXRoKCcvJykgPyBzdHIuc2xpY2UoMCwgLTEpIDogc3RyO1xuXG5leHBvcnQgY29uc3QgaXNQcmltaXRpdmUgPSAoYXJnOiB1bmtub3duKSA9PiB7XG4gIGNvbnN0IHR5cGUgPSB0eXBlb2YgYXJnO1xuICByZXR1cm4gYXJnID09IG51bGwgfHwgKHR5cGUgIT09ICdvYmplY3QnICYmIHR5cGUgIT09ICdmdW5jdGlvbicpO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHsqfSBhcmdcbiAqIEByZXR1cm5zIHt0eXBlfVxuICpcbiAqIFJldHVybnMgdHlwZSBvZiBwYXNzZWQgYXJnXG4gKiBmb3IgbnVsbCBhcmdzcyByZXR1cm5zIFwiTlVMTFwiIGluc3RlZCBvZiBcIm9iamVjdFwiXG4gKlxuICovXG5leHBvcnQgY29uc3QgZ2V0VHlwZSA9IChhcmc6IHVua25vd24pID0+IHtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiBhcmc7XG4gIGlmIChhcmcgPT0gbnVsbCkge1xuICAgIHJldHVybiAnTlVMTCc7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgIHJldHVybiAnYXJyYXknO1xuICB9XG4gIHJldHVybiB0eXBlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzT2JqZWN0ID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmICh0eXBlID09PSAnb2JqZWN0JyB8fCB0eXBlID09PSAnZnVuY3Rpb24nKSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNFbXB0eSA9IChpbnB1dDogdW5rbm93bikgPT4gXy5pc0VtcHR5KF8udG9TdHJpbmcoaW5wdXQpLnRyaW0oKSk7XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGZvciBlbXB0eSBvYmplY3Qge31cbiAqIEBwYXJhbSB7Kn0gb2JqXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgaXNFbXB0eU9iamVjdCA9IChvYmo6IGFueSkgPT4ge1xuICBpZiAoIW9iaikge1xuICAgIGxvZ2dlci53YXJuKCdpbnB1dCBpcyB1bmRlZmluZWQgb3IgbnVsbCcpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMDtcbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gY2hlY2sgaWYgdmFsdWUgaXMgRGVmaW5lZCwgTm90IG51bGwgYW5kIE5vdCBFbXB0eS5cbiAqIENyZWF0ZSB0aGlzIGZ1bmN0aW9uLCBCZWNhdXNlIGV4aXN0aW5nIGlzRGVmaW5lZEFuZE5vdE51bGxBbmROb3RFbXB0eSgxMjMpIGlzIHJldHVybmluZyBmYWxzZSBkdWUgdG8gbG9kYXNoIF8uaXNFbXB0eSBmdW5jdGlvbi5cbiAqIF8uaXNFbXB0eSBpcyB1c2VkIHRvIGRldGVjdCBlbXB0eSBjb2xsZWN0aW9ucy9vYmplY3RzIGFuZCBpdCB3aWxsIHJldHVybiB0cnVlIGZvciBJbnRlZ2VyLCBCb29sZWFuIHZhbHVlcy5cbiAqIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvaXNzdWVzLzQ5NlxuICogQHBhcmFtIHsqfSB2YWx1ZSAxMjNcbiAqIEByZXR1cm5zIHllc1xuICovXG5leHBvcnQgY29uc3QgaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5ID0gKHZhbHVlOiB1bmtub3duKSA9PlxuICAhKFxuICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgIE51bWJlci5pc05hTih2YWx1ZSkgfHxcbiAgICAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwKSB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDApXG4gICk7XG5cbmV4cG9ydCBjb25zdCByZW1vdmVVbmRlZmluZWROdWxsRW1wdHlFeGNsQm9vbEludCA9IChvYmo6IHVua25vd24pID0+IHtcbiAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJldHVybiBvYmo7XG4gIHJldHVybiBfLnBpY2tCeShvYmosIGlzRGVmaW5lZE5vdE51bGxOb3RFbXB0eSk7XG59O1xuXG4vLyBGb3JtYXQgdGhlIGRlc3RpbmF0aW9uLkNvbmZpZy5keW5hbWljTWFwIGFycmF5cyB0byBoYXNoTWFwXG5leHBvcnQgY29uc3QgZ2V0SGFzaEZyb21BcnJheSA9IChhcnJheXMsIGZyb21LZXkgPSAnZnJvbScsIHRvS2V5ID0gJ3RvJywgaXNMb3dlckNhc2UgPSB0cnVlKSA9PiB7XG4gIGNvbnN0IGhhc2hNYXAgPSB7fTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyYXlzKSkge1xuICAgIGFycmF5cy5mb3JFYWNoKChhcnJheSkgPT4ge1xuICAgICAgaWYgKGlzRW1wdHkoYXJyYXlbZnJvbUtleV0pKSByZXR1cm47XG4gICAgICBoYXNoTWFwW2lzTG93ZXJDYXNlID8gYXJyYXlbZnJvbUtleV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDogYXJyYXlbZnJvbUtleV1dID1cbiAgICAgICAgYXJyYXlbdG9LZXldO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBoYXNoTWFwO1xufTtcblxuLyoqXG4gKiBGb3JtYXQgdGhlIGRlc3RpbmF0aW9uLkNvbmZpZy5keW5hbWljTWFwIGFycmF5cyB0byBoYXNoTWFwXG4gKiB3aGVyZSB2YWx1ZSBpcyBhbiBhcnJheVxuICogQHBhcmFtICB7fSBhcnJheXMgW3tcImZyb21cIjpcInByb3AxXCIsXCJ0b1wiOlwidmFsMVwifSx7XCJmcm9tXCI6XCJwcm9wMVwiLFwidG9cIjpcInZhbDJcIn0se1wiZnJvbVwiOlwicHJvcDJcIixcInRvXCI6XCJ2YWwyXCJ9XVxuICogQHBhcmFtICB7fSBmcm9tS2V5PVwiZnJvbVwiXG4gKiBAcGFyYW0gIHt9IHRvS2V5PVwidG9cIlxuICogQHBhcmFtICB7fSBpc0xvd2VyQ2FzZT10cnVlXG4gKiBAcGFyYW0gIHt9IHJldHVybiBoYXNobWFwIHtcInByb3AxXCI6W1widmFsMVwiLFwidmFsMlwiXSxcInByb3AyXCI6W1widmFsMlwiXX1cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEhhc2hGcm9tQXJyYXlXaXRoRHVwbGljYXRlID0gKFxuICBhcnJheXM6IHsgZnJvbTogc3RyaW5nOyB0bzogc3RyaW5nIH1bXSxcbiAgZnJvbUtleSA9ICdmcm9tJyxcbiAgdG9LZXkgPSAndG8nLFxuICBpc0xvd2VyQ2FzZSA9IHRydWUsXG4pID0+IHtcbiAgY29uc3QgaGFzaE1hcCA9IHt9O1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnJheXMpKSB7XG4gICAgYXJyYXlzLmZvckVhY2goKGFycmF5KSA9PiB7XG4gICAgICBpZiAoaXNFbXB0eShhcnJheVtmcm9tS2V5XSkpIHJldHVybjtcbiAgICAgIGNvbnN0IGtleSA9IGlzTG93ZXJDYXNlXG4gICAgICAgID8gYXJyYXlbZnJvbUtleV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLnRyaW0oKVxuICAgICAgICA6IGFycmF5W2Zyb21LZXldLnRvU3RyaW5nKCkudHJpbSgpO1xuXG4gICAgICBpZiAoaGFzaE1hcFtrZXldKSB7XG4gICAgICAgIGhhc2hNYXBba2V5XS5hZGQoYXJyYXlbdG9LZXldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhc2hNYXBba2V5XSA9IG5ldyBTZXQoKTtcbiAgICAgICAgaGFzaE1hcFtrZXldLmFkZChhcnJheVt0b0tleV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBoYXNoTWFwO1xufTtcblxuLyoqXG4gKiBGb3JtYXQgdGhlIGFycmF5cyB0byBoYXNoTWFwIHdpdGgga2V5IGFzIGBmcm9tS2V5YCBhbmQgdmFsdWUgYXMgT2JqZWN0XG4gKiBAcGFyYW0geyp9IGFycmF5cyBbe1wiaWRcIjpcImEwYjhlZmUxLWM4MjgtNGM2My04ODUwLTBkMDc0Mjg4OGY5ZFwiLFwibmFtZVwiOlwiRW1haWxcIixcInR5cGVcIjpcImVtYWlsXCIsXCJ0eXBlX2NvbmZpZ1wiOnt9LFwiZGF0ZV9jcmVhdGVkXCI6XCIxNjYyMjI1ODQwMjg0XCIsXCJoaWRlX2Zyb21fZ3Vlc3RzXCI6ZmFsc2UsXCJyZXF1aXJlZFwiOmZhbHNlfV1cbiAqIEBwYXJhbSB7Kn0gZnJvbUtleSBuYW1lXG4gKiBAcGFyYW0geyp9IGlzTG93ZXJDYXNlIGZhbHNlXG4gKiBAcmV0dXJucyAvLyB7XCJFbWFpbFwiOntcImlkXCI6XCJhMGI4ZWZlMS1jODI4LTRjNjMtODg1MC0wZDA3NDI4ODhmOWRcIixcIm5hbWVcIjpcIkVtYWlsXCIsXCJ0eXBlXCI6XCJlbWFpbFwiLFwidHlwZV9jb25maWdcIjp7fSxcImRhdGVfY3JlYXRlZFwiOlwiMTY2MjIyNTg0MDI4NFwiLFwiaGlkZV9mcm9tX2d1ZXN0c1wiOmZhbHNlLFwicmVxdWlyZWRcIjpmYWxzZX19XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRIYXNoRnJvbUFycmF5V2l0aFZhbHVlQXNPYmplY3QgPSAoYXJyYXlzLCBmcm9tS2V5ID0gJ2Zyb20nLCBpc0xvd2VyQ2FzZSA9IHRydWUpID0+IHtcbiAgY29uc3QgaGFzaE1hcCA9IHt9O1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnJheXMpKSB7XG4gICAgYXJyYXlzLmZvckVhY2goKGFycmF5KSA9PiB7XG4gICAgICBpZiAoaXNFbXB0eShhcnJheVtmcm9tS2V5XSkpIHJldHVybjtcbiAgICAgIGhhc2hNYXBbaXNMb3dlckNhc2UgPyBhcnJheVtmcm9tS2V5XS50b0xvd2VyQ2FzZSgpIDogYXJyYXlbZnJvbUtleV1dID0gYXJyYXk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGhhc2hNYXA7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyBhIHZhbHVlIGZyb20gYSBtZXNzYWdlIG9iamVjdCBiYXNlZCBvbiBhIGdpdmVuIGtleS4gSXQgc2VhcmNoZXMgZm9yIHRoZSBrZXkgaW4gdGhlIHByb3BlcnRpZXMsIHRyYWl0cywgYW5kIGNvbnRleHQudHJhaXRzIG9mIHRoZSBtZXNzYWdlIG9iamVjdCBpbiB0aGF0IG9yZGVyLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMubWVzc2FnZSAtIFRoZSBtZXNzYWdlIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMsIHRyYWl0cywgYW5kIGNvbnRleHQudHJhaXRzLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMua2V5IC0gVGhlIGtleSB0byBzZWFyY2ggZm9yIGluIHRoZSBtZXNzYWdlIG9iamVjdC5cbiAqIEByZXR1cm5zIHsqfSBUaGUgdmFsdWUgZm91bmQgaW4gdGhlIG1lc3NhZ2Ugb2JqZWN0IGZvciB0aGUgZ2l2ZW4ga2V5LCBvciBudWxsIGlmIHRoZSBrZXkgaXMgbm90IGZvdW5kIG9yIHRoZSB2YWx1ZSBpcyBudWxsLlxuICovXG5leHBvcnQgY29uc3QgZ2V0VmFsdWVGcm9tUHJvcGVydGllc09yVHJhaXRzID0gKHsgbWVzc2FnZSwga2V5IH0pID0+IHtcbiAgY29uc3Qga2V5U2V0ID0gWydwcm9wZXJ0aWVzJywgJ3RyYWl0cycsICdjb250ZXh0LnRyYWl0cyddO1xuXG4gIGNvbnN0IHZhbCA9IF8uZmluZChcbiAgICBfLm1hcChrZXlTZXQsIChrKSA9PiBnZXQobWVzc2FnZSwgYCR7a30uJHtrZXl9YCkpLFxuICAgICh2KSA9PiAhXy5pc05pbCh2KSxcbiAgKTtcbiAgcmV0dXJuICFfLmlzTmlsKHZhbCkgPyB2YWwgOiBudWxsO1xufTtcblxuLyoqXG4gKiBGbGF0dGVucyBhIEpTT04gb2JqZWN0IGludG8gYSBzaW5nbGUtbGV2ZWwgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBkYXRhIC0gVGhlIEpTT04gb2JqZWN0IHRvIGJlIGZsYXR0ZW5lZC5cbiAqIEBwYXJhbSBzZXBhcmF0b3IgLSBUaGUgY2hhcmFjdGVyIHVzZWQgdG8gc2VwYXJhdGUgdGhlIGtleXMgaW4gdGhlIGZsYXR0ZW5lZCBvYmplY3QuIERlZmF1bHQgaXMgJy4nLlxuICogQHBhcmFtIG1vZGUgLSBUaGUgbW9kZSB1c2VkIHRvIGZsYXR0ZW4gYXJyYXlzLiBJZiBzZXQgdG8gJ3N0cmljdCcsIHRoZSBhcnJheSBpbmRpY2VzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGZsYXR0ZW5lZCBrZXlzLiBEZWZhdWx0IGlzICdub3JtYWwnLlxuICogQHJldHVybnMgVGhlIGZsYXR0ZW5lZCBKU09OIG9iamVjdC5cbiAqL1xuZXhwb3J0IGNvbnN0IGZsYXR0ZW5Kc29uID0gKGRhdGE6IHVua25vd24sIHNlcGFyYXRvciA9ICcuJywgbW9kZSA9ICdub3JtYWwnKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHt9O1xuXG4gIC8vIGEgcmVjdXJzaXZlIGZ1bmN0aW9uIHRvIGxvb3AgdGhyb3VnaCB0aGUgYXJyYXkgb2YgdGhlIGRhdGFcbiAgY29uc3QgcmVjdXJzZSA9IChjdXIsIHByb3ApID0+IHtcbiAgICBsZXQgaTtcbiAgICBpZiAoT2JqZWN0KGN1cikgIT09IGN1cikge1xuICAgICAgcmVzdWx0W3Byb3BdID0gY3VyO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjdXIpKSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgY3VyLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGlmIChtb2RlID09PSAnc3RyaWN0Jykge1xuICAgICAgICAgIHJlY3Vyc2UoY3VyW2ldLCBgJHtwcm9wfSR7c2VwYXJhdG9yfSR7aX1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWN1cnNlKGN1cltpXSwgYCR7cHJvcH1bJHtpfV1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGN1ci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmVzdWx0W3Byb3BdID0gW107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpc0VtcHR5RmxhZyA9IHRydWU7XG4gICAgICBPYmplY3Qua2V5cyhjdXIpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpc0VtcHR5RmxhZyA9IGZhbHNlO1xuICAgICAgICByZWN1cnNlKGN1cltrZXldLCBwcm9wID8gYCR7cHJvcH0ke3NlcGFyYXRvcn0ke2tleX1gIDoga2V5KTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGlzRW1wdHlGbGFnICYmIHByb3ApIHJlc3VsdFtwcm9wXSA9IHt9O1xuICAgIH1cbiAgfTtcblxuICByZWN1cnNlKGRhdGEsICcnKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBvZmZzZXQgdmFsdWUgaW4gc2Vjb25kcyBmb3IgYSBnaXZlbiB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdGltZXpvbmUgdmFsdWUgZm9yIHdoaWNoIHRoZSBvZmZzZXQgbmVlZHMgdG8gYmUgY2FsY3VsYXRlZC5cbiAqIEByZXR1cm5zIFRoZSBvZmZzZXQgdmFsdWUgaW4gc2Vjb25kcyBmb3IgdGhlIGdpdmVuIHRpbWV6b25lLiBJZiB0aGUgdGltZXpvbmUgaXMgaW52YWxpZCBvciBub3QgZm91bmQsIGl0IHJldHVybnMgYHVuZGVmaW5lZGAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IG9mZnNldCA9IGdldE9mZnNldEluU2VjKCdBbWVyaWNhL05ld19Zb3JrJyk7XG4gKiBjb25zb2xlLmxvZyhvZmZzZXQpOyAvLyBPdXRwdXQ6IC0xODAwMFxuICovXG5leHBvcnQgY29uc3QgZ2V0T2Zmc2V0SW5TZWMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBjb25zdCBuYW1lID0gbW9tZW50LnR6LnpvbmUodmFsdWUpO1xuICBpZiAobmFtZSkge1xuICAgIGNvbnN0IHggPSBtb21lbnQoKS50eih2YWx1ZSkuZm9ybWF0KCdaJyk7XG4gICAgY29uc3Qgc3BsaXQgPSB4LnNwbGl0KCc6Jyk7XG4gICAgY29uc3QgaG91ciA9IE51bWJlcihzcGxpdFswXSk7XG4gICAgY29uc3QgbWluID0gTnVtYmVyKHNwbGl0WzFdKTtcbiAgICBsZXQgc2VjID0gMDtcbiAgICBzZWMgPSBob3VyIDwgMCA/IC0xICogKGhvdXIgKiAtNjAgKiA2MCArIG1pbiAqIDYwKSA6IGhvdXIgKiA2MCAqIDYwICsgbWluICogNjA7XG4gICAgcmV0dXJuIHNlYztcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGRhdGUgc3RyaW5nIGludG8gYSBmb3JtYXR0ZWQgdGltZXN0YW1wLlxuICogSWYgYSBmb3JtYXQgc3RyaW5nIGlzIHByb3ZpZGVkLCBpdCB1c2VzIHRoZSBtb21lbnQgbGlicmFyeSB0byBmb3JtYXQgdGhlIGRhdGUuXG4gKiBJZiBubyBmb3JtYXQgc3RyaW5nIGlzIHByb3ZpZGVkLCBpdCByZXR1cm5zIHRoZSB0aW1lc3RhbXAgb2YgdGhlIGRhdGUuXG4gKiBAcGFyYW0gZGF0ZVN0ciAtIFRoZSBkYXRlIHN0cmluZyB0byBiZSBmb3JtYXR0ZWQuXG4gKiBAcGFyYW0gZm9ybWF0IC0gKE9wdGlvbmFsKSBUaGUgZm9ybWF0IHN0cmluZyB0byBiZSB1c2VkIGZvciBmb3JtYXR0aW5nIHRoZSBkYXRlLlxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBkYXRlIGFzIGEgc3RyaW5nIGlmIGEgZm9ybWF0IHN0cmluZyBpcyBwcm92aWRlZCxcbiAqICAgICAgICAgIG90aGVyd2lzZSB0aGUgdGltZXN0YW1wIG9mIHRoZSBkYXRlIGFzIGEgbnVtYmVyLlxuICovXG5leHBvcnQgY29uc3QgZm9ybWF0VGltZVN0YW1wID0gKGRhdGVTdHI6IHN0cmluZywgZm9ybWF0Pzogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlU3RyKTtcbiAgLy8gbW9tZW50IGZvcm1hdCBpcyBwYXNzZWQuIGZvcm1hdCBhY2NvcmRpbmdseVxuICBpZiAoZm9ybWF0KSB7XG4gICAgcmV0dXJuIG1vbWVudC51dGMoZGF0ZSkuZm9ybWF0KGZvcm1hdCk7XG4gIH1cblxuICAvLyByZXR1cm4gZGVmYXVsdCBmb3JtYXRcbiAgcmV0dXJuIGRhdGUuZ2V0VGltZSgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhc2hUb1NoYTI1NiA9ICh2YWx1ZTogc3RyaW5nIHwgQnVmZmVyIHwgbnVtYmVyW10pID0+IHNoYTI1Nih2YWx1ZSk7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgVW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXIgKFVVSUQpIHVzaW5nIHRoZSBgY3J5cHRvLnJhbmRvbVVVSUQoKWAgbWV0aG9kLlxuICogVGhlIGBkaXNhYmxlRW50cm9weUNhY2hlYCBvcHRpb24gaXMgc2V0IHRvIGB0cnVlYCB0byBwcmV2ZW50IGNhY2hpbmcgb2YgZ2VuZXJhdGVkIFVVSURzLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgcmFuZG9tbHkgZ2VuZXJhdGVkIFVVSUQuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9jcnlwdG8uaHRtbCNjcnlwdG9yYW5kb211dWlkb3B0aW9uczp+OnRleHQ9b3B0aW9ucyUyMCUzQ09iamVjdCUzRS0sZGlzYWJsZUVudHJvcHlDYWNoZSwtJTNDYm9vbGVhbiUzRSUyMEJ5fVxuICovXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVVVUlEID0gKCk6IHN0cmluZyA9PiBjcnlwdG8ucmFuZG9tVVVJRCh7IGRpc2FibGVFbnRyb3B5Q2FjaGU6IHRydWUgfSk7XG5cbi8vIFJvdXRlciB0cmFuc2Zvcm1lclxuLy8gRXJyb3IgcmVzcG9uc2VzXG5leHBvcnQgY29uc3QgZ2V0RXJyb3JSZXNwRXZlbnRzID0gKFxuICBtZXRhZGF0YTogTWV0YWRhdGFbXSxcbiAgc3RhdHVzQ29kZTogbnVtYmVyLFxuICBlcnJvcjogc3RyaW5nLFxuICBzdGF0VGFnczogT2JqZWN0LFxuICBiYXRjaGVkOiBib29sZWFuID0gZmFsc2UsXG4pOiB7XG4gIG1ldGFkYXRhOiBNZXRhZGF0YVtdO1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG4gIGVycm9yOiBzdHJpbmc7XG4gIHN0YXRUYWdzOiBPYmplY3Q7XG4gIGJhdGNoZWQ6IGJvb2xlYW47XG59ID0+ICh7XG4gIG1ldGFkYXRhLFxuICBiYXRjaGVkLFxuICBzdGF0dXNDb2RlLFxuICBlcnJvcixcbiAgc3RhdFRhZ3MsXG59KTtcbiJdfQ==
|
|
368
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9taXNjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQXVCO0FBQ3ZCLDBEQUE0QjtBQVluQixjQVpGLG1CQUFHLENBWUU7QUFYWiwwREFBNEI7QUFXZCxjQVhQLG1CQUFHLENBV087QUFWakIsc0VBQXFDO0FBQ3JDLG9EQUE0QjtBQUM1QixvREFBNEI7QUFDNUIsa0RBQW9DO0FBRXBDLDJFQUF1RTtBQU1oRSxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxnQkFBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUE5QyxRQUFBLFNBQVMsYUFBcUM7QUFDcEQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsZ0JBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBM0MsUUFBQSxVQUFVLGNBQWlDO0FBQ2pELE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0FBQXRDLFFBQUEsU0FBUyxhQUE2QjtBQUM1QyxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFBLGlCQUFTLEVBQUMsQ0FBQyxDQUFDLElBQUksSUFBQSxpQkFBUyxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBQW5FLFFBQUEsbUJBQW1CLHVCQUFnRDtBQUN6RSxNQUFNLDhCQUE4QixHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FDM0QsSUFBQSxpQkFBUyxFQUFDLENBQUMsQ0FBQyxJQUFJLElBQUEsaUJBQVMsRUFBQyxDQUFDLENBQUMsSUFBSSxJQUFBLGtCQUFVLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFEbkMsUUFBQSw4QkFBOEIsa0NBQ0s7QUFDekMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFjLEVBQUUsRUFBRSxDQUFDLGdCQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFBM0QsUUFBQSxPQUFPLFdBQW9EO0FBRXhFLDJFQUEyRTtBQUNwRSxNQUFNLHFCQUFxQixHQUFHLENBQUMsR0FBWSxFQUFFLEVBQUU7SUFDcEQsSUFBSSxDQUFDLGdCQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ2pDLE9BQU8sZ0JBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLGlCQUFTLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFIVyxRQUFBLHFCQUFxQix5QkFHaEM7QUFFSyxNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBWSxFQUFFLEVBQUU7SUFDL0MsSUFBSSxDQUFDLGdCQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ2pDLE9BQU8sZ0JBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLGlCQUFTLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFIVyxRQUFBLGdCQUFnQixvQkFHM0I7QUFDSyxNQUFNLDRCQUE0QixHQUFHLENBQUMsR0FBWSxFQUFFLEVBQUU7SUFDM0QsSUFBSSxDQUFDLGdCQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ2pDLE9BQU8sZ0JBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLDJCQUFtQixDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDO0FBSFcsUUFBQSw0QkFBNEIsZ0NBR3ZDO0FBQ0ssTUFBTSxvQ0FBb0MsR0FBRyxDQUFDLEdBQVksRUFBRSxFQUFFO0lBQ25FLElBQUksQ0FBQyxnQkFBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUNqQyxPQUFPLGdCQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxzQ0FBOEIsQ0FBQyxDQUFDO0FBQ3ZELENBQUMsQ0FBQztBQUhXLFFBQUEsb0NBQW9DLHdDQUcvQztBQUVGOzs7O0dBSUc7QUFDSSxNQUFNLFVBQVUsR0FBRyxDQUFDLFVBQW1CLEVBQUUsRUFBRTtJQUNoRCxJQUFJLENBQUMsZ0JBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFBRSxPQUFPLFVBQVUsQ0FBQztJQUN6RSxPQUFPLGdCQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFDO0FBSFcsUUFBQSxVQUFVLGNBR3JCO0FBRUYsMkVBQTJFO0FBQzNFLGlCQUFpQjtBQUNqQiwyRUFBMkU7QUFFcEUsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUF5QixFQUFFLEVBQUU7SUFDeEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCO1FBQ2xELE1BQU0sSUFBSSw0Q0FBb0IsQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0lBQ3ZGLElBQUk7UUFDRixJQUFJLE9BQU8sQ0FBQyxTQUFTO1lBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDM0Q7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE1BQU0sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDL0M7SUFDRCxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQztBQVRXLFFBQUEsWUFBWSxnQkFTdkI7QUFFSyxNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFBN0UsUUFBQSxlQUFlLG1CQUE4RDtBQUUxRixpREFBaUQ7QUFDMUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFpQixFQUFFLEVBQUU7SUFDOUMsSUFBSTtRQUNGLE9BQU8sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDckI7SUFBQyxPQUFPLEdBQUcsRUFBRTtRQUNaLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDLENBQUM7QUFOVyxRQUFBLFVBQVUsY0FNckI7QUFFSyxNQUFNLGtCQUFrQixHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FDaEQsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUR2QyxRQUFBLGtCQUFrQixzQkFDcUI7QUFFN0MsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFZLEVBQUUsRUFBRTtJQUMxQyxNQUFNLElBQUksR0FBRyxPQUFPLEdBQUcsQ0FBQztJQUN4QixPQUFPLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQztBQUNuRSxDQUFDLENBQUM7QUFIVyxRQUFBLFdBQVcsZUFHdEI7QUFFRjs7Ozs7Ozs7R0FRRztBQUNJLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBWSxFQUFFLEVBQUU7SUFDdEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxHQUFHLENBQUM7SUFDeEIsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO1FBQ2YsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN0QixPQUFPLE9BQU8sQ0FBQztLQUNoQjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBVFcsUUFBQSxPQUFPLFdBU2xCO0FBRUssTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFjLEVBQUUsRUFBRTtJQUN6QyxNQUFNLElBQUksR0FBRyxPQUFPLEtBQUssQ0FBQztJQUMxQixPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUYsQ0FBQyxDQUFDO0FBSFcsUUFBQSxRQUFRLFlBR25CO0FBRUssTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFjLEVBQUUsRUFBRSxDQUFDLGdCQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFBbEUsUUFBQSxPQUFPLFdBQTJEO0FBRS9FOzs7O0dBSUc7QUFDSSxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQVEsRUFBRSxFQUFFO0lBQ3hDLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDUixNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQztBQU5XLFFBQUEsYUFBYSxpQkFNeEI7QUFFRjs7Ozs7OztHQU9HO0FBQ0ksTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQ3pELENBQUMsQ0FDQyxLQUFLLEtBQUssU0FBUztJQUNuQixLQUFLLEtBQUssSUFBSTtJQUNkLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ25CLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUM5RCxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0FBUFMsUUFBQSx3QkFBd0IsNEJBT2pDO0FBRUcsTUFBTSxtQ0FBbUMsR0FBRyxDQUFDLEdBQVksRUFBRSxFQUFFO0lBQ2xFLElBQUksQ0FBQyxnQkFBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUNqQyxPQUFPLGdCQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxnQ0FBd0IsQ0FBQyxDQUFDO0FBQ2pELENBQUMsQ0FBQztBQUhXLFFBQUEsbUNBQW1DLHVDQUc5QztBQUVGLDZEQUE2RDtBQUN0RCxNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sR0FBRyxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLEVBQUU7SUFDN0YsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ25CLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN6QixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxJQUFBLGVBQU8sRUFBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQUUsT0FBTztZQUNwQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDN0UsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO0tBQ0o7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUM7QUFWVyxRQUFBLGdCQUFnQixvQkFVM0I7QUFFRjs7Ozs7Ozs7R0FRRztBQUNJLE1BQU0sNkJBQTZCLEdBQUcsQ0FDM0MsTUFBc0MsRUFDdEMsT0FBTyxHQUFHLE1BQU0sRUFDaEIsS0FBSyxHQUFHLElBQUksRUFDWixXQUFXLEdBQUcsSUFBSSxFQUNsQixFQUFFO0lBQ0YsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ25CLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN6QixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxJQUFBLGVBQU8sRUFBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQUUsT0FBTztZQUNwQyxNQUFNLEdBQUcsR0FBRyxXQUFXO2dCQUNyQixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRTtnQkFDaEQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVyQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNoQztpQkFBTTtnQkFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNoQztRQUNILENBQUMsQ0FBQyxDQUFDO0tBQ0o7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUM7QUF2QlcsUUFBQSw2QkFBNkIsaUNBdUJ4QztBQUVGOzs7Ozs7R0FNRztBQUNJLE1BQU0saUNBQWlDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxHQUFHLE1BQU0sRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLEVBQUU7SUFDaEcsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ25CLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN6QixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxJQUFBLGVBQU8sRUFBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQUUsT0FBTztZQUNwQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUMvRSxDQUFDLENBQUMsQ0FBQztLQUNKO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBVFcsUUFBQSxpQ0FBaUMscUNBUzVDO0FBRUY7Ozs7Ozs7R0FPRztBQUNJLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO0lBQ2pFLE1BQU0sTUFBTSxHQUFHLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTFELE1BQU0sR0FBRyxHQUFHLGdCQUFDLENBQUMsSUFBSSxDQUNoQixnQkFBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsbUJBQUcsRUFBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUNqRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxnQkFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDbkIsQ0FBQztJQUNGLE9BQU8sQ0FBQyxnQkFBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDcEMsQ0FBQyxDQUFDO0FBUlcsUUFBQSw4QkFBOEIsa0NBUXpDO0FBRUY7Ozs7Ozs7R0FPRztBQUNJLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBYSxFQUFFLFNBQVMsR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLFFBQVEsRUFBRSxFQUFFO0lBQzdFLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUVsQiw2REFBNkQ7SUFDN0QsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDNUIsSUFBSSxDQUFDLENBQUM7UUFDTixJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEVBQUU7WUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUNwQjthQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM3QixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbEMsSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFO29CQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxHQUFHLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUM1QztxQkFBTTtvQkFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ2xDO2FBQ0Y7WUFDRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2FBQ25CO1NBQ0Y7YUFBTTtZQUNMLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztZQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMvQixXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5RCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksV0FBVyxJQUFJLElBQUk7Z0JBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUM1QztJQUNILENBQUMsQ0FBQztJQUVGLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBL0JXLFFBQUEsV0FBVyxlQStCdEI7QUFFRjs7Ozs7Ozs7O0dBU0c7QUFDSSxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO0lBQzlDLE1BQU0sSUFBSSxHQUFHLHlCQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxJQUFJLElBQUksRUFBRTtRQUNSLE1BQU0sQ0FBQyxHQUFHLElBQUEseUJBQU0sR0FBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQy9FLE9BQU8sR0FBRyxDQUFDO0tBQ1o7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFaVyxRQUFBLGNBQWMsa0JBWXpCO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSSxNQUFNLGVBQWUsR0FBRyxDQUFDLE9BQWUsRUFBRSxNQUFlLEVBQUUsRUFBRTtJQUNsRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQiw4Q0FBOEM7SUFDOUMsSUFBSSxNQUFNLEVBQUU7UUFDVixPQUFPLHlCQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN4QztJQUVELHdCQUF3QjtJQUN4QixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN4QixDQUFDLENBQUM7QUFUVyxRQUFBLGVBQWUsbUJBUzFCO0FBRUssTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFpQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLGdCQUFNLEVBQUMsS0FBSyxDQUFDLENBQUM7QUFBcEUsUUFBQSxZQUFZLGdCQUF3RDtBQUVqRjs7Ozs7OztHQU9HO0FBQ0ksTUFBTSxZQUFZLEdBQUcsR0FBVyxFQUFFLENBQUMsZ0JBQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQTlFLFFBQUEsWUFBWSxnQkFBa0U7QUFFM0YscUJBQXFCO0FBQ3JCLGtCQUFrQjtBQUNYLE1BQU0sa0JBQWtCLEdBQUcsQ0FDaEMsUUFBb0IsRUFDcEIsVUFBa0IsRUFDbEIsS0FBYSxFQUNiLFFBQWdCLEVBQ2hCLFVBQW1CLEtBQUssRUFPeEIsRUFBRSxDQUFDLENBQUM7SUFDSixRQUFRO0lBQ1IsT0FBTztJQUNQLFVBQVU7SUFDVixLQUFLO0lBQ0wsUUFBUTtDQUNULENBQUMsQ0FBQztBQWxCVSxRQUFBLGtCQUFrQixzQkFrQjVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBnZXQgZnJvbSAnZ2V0LXZhbHVlJztcbmltcG9ydCBzZXQgZnJvbSAnc2V0LXZhbHVlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCBzaGEyNTYgZnJvbSAnc2hhMjU2JztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgTWV0YWRhdGEsIFJ1ZGRlclN0YWNrRXZlbnQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBJbnN0cnVtZW50YXRpb25FcnJvciB9IGZyb20gJy4uL2Vycm9ycy9pbnN0cnVtZW50YXRpb25fZXJyb3InO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIElOTElORVJTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCB7IGdldCwgc2V0IH07XG5leHBvcnQgY29uc3QgaXNEZWZpbmVkID0gKHg6IHVua25vd24pID0+ICFfLmlzVW5kZWZpbmVkKHgpO1xuZXhwb3J0IGNvbnN0IGlzTm90RW1wdHkgPSAoeDogdW5rbm93bikgPT4gIV8uaXNFbXB0eSh4KTtcbmV4cG9ydCBjb25zdCBpc05vdE51bGwgPSAoeDogdW5rbm93bikgPT4geCAhPSBudWxsO1xuZXhwb3J0IGNvbnN0IGlzRGVmaW5lZEFuZE5vdE51bGwgPSAoeDogdW5rbm93bikgPT4gaXNEZWZpbmVkKHgpICYmIGlzTm90TnVsbCh4KTtcbmV4cG9ydCBjb25zdCBpc0RlZmluZWRBbmROb3ROdWxsQW5kTm90RW1wdHkgPSAoeDogdW5rbm93bikgPT5cbiAgaXNEZWZpbmVkKHgpICYmIGlzTm90TnVsbCh4KSAmJiBpc05vdEVtcHR5KHgpO1xuZXhwb3J0IGNvbnN0IGlzQmxhbmsgPSAodmFsdWU6IHVua25vd24pID0+IF8uaXNFbXB0eShfLnRvU3RyaW5nKHZhbHVlKSk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGNvbnN0IHJlbW92ZVVuZGVmaW5lZFZhbHVlcyA9IChvYmo6IHVua25vd24pID0+IHtcbiAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJldHVybiBvYmo7XG4gIHJldHVybiBfLnBpY2tCeShvYmosIGlzRGVmaW5lZCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlTnVsbFZhbHVlcyA9IChvYmo6IHVua25vd24pID0+IHtcbiAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJldHVybiBvYmo7XG4gIHJldHVybiBfLnBpY2tCeShvYmosIGlzTm90TnVsbCk7XG59O1xuZXhwb3J0IGNvbnN0IHJlbW92ZVVuZGVmaW5lZEFuZE51bGxWYWx1ZXMgPSAob2JqOiB1bmtub3duKSA9PiB7XG4gIGlmICghXy5pc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICByZXR1cm4gXy5waWNrQnkob2JqLCBpc0RlZmluZWRBbmROb3ROdWxsKTtcbn07XG5leHBvcnQgY29uc3QgcmVtb3ZlVW5kZWZpbmVkQW5kTnVsbEFuZEVtcHR5VmFsdWVzID0gKG9iajogdW5rbm93bikgPT4ge1xuICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgcmV0dXJuIF8ucGlja0J5KG9iaiwgaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5KTtcbn07XG5cbi8qKlxuICogVGhlIGZsYXR0ZW5NYXAgZnVuY3Rpb24gdGFrZXMgYSBjb2xsZWN0aW9uIGFzIGlucHV0IGFuZCByZXR1cm5zIGEgZmxhdHRlbmVkIHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb24uIElmIHRoZSBpbnB1dCBpcyBub3QgYW4gYXJyYXkgb3IgYW4gb2JqZWN0LCBpdCBpcyByZXR1cm5lZCBhcyBpcy4gT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgZmxhdE1hcCBmdW5jdGlvbiBmcm9tIHRoZSBsb2Rhc2ggbGlicmFyeSB0byBmbGF0dGVuIHRoZSBjb2xsZWN0aW9uLlxuICogQHBhcmFtIGNvbGxlY3Rpb25cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBmbGF0dGVuTWFwID0gKGNvbGxlY3Rpb246IHVua25vd24pID0+IHtcbiAgaWYgKCFfLmlzQXJyYXkoY29sbGVjdGlvbikgJiYgIV8uaXNPYmplY3QoY29sbGVjdGlvbikpIHJldHVybiBjb2xsZWN0aW9uO1xuICByZXR1cm4gXy5mbGF0TWFwKGNvbGxlY3Rpb24sICh4KSA9PiB4KTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR0VORVJJQyBVVExJVFlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgY29uc3QgZ2V0RXZlbnRUaW1lID0gKG1lc3NhZ2U6IFJ1ZGRlclN0YWNrRXZlbnQpID0+IHtcbiAgaWYgKCFtZXNzYWdlLnRpbWVzdGFtcCAmJiAhbWVzc2FnZS5vcmlnaW5hbFRpbWVzdGFtcClcbiAgICB0aHJvdyBuZXcgSW5zdHJ1bWVudGF0aW9uRXJyb3IoJ0V2ZW50IGRvZXMgbm90IGhhdmUgdGltZXN0YW1wIG9yIG9yaWdpbmFsVGltZXN0YW1wJyk7XG4gIHRyeSB7XG4gICAgaWYgKG1lc3NhZ2UudGltZXN0YW1wKSByZXR1cm4gbmV3IERhdGUobWVzc2FnZS50aW1lc3RhbXApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmVycm9yKCdFcnJvciBpbiBwYXJzaW5nIHRpbWVzdGFtcCcsIGUpO1xuICB9XG4gIHJldHVybiBuZXcgRGF0ZShtZXNzYWdlLm9yaWdpbmFsVGltZXN0YW1wKTtcbn07XG5cbmV4cG9ydCBjb25zdCBiYXNlNjRDb252ZXJ0b3IgPSAoc3RyaW5nOiBzdHJpbmcpID0+IEJ1ZmZlci5mcm9tKHN0cmluZykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXG4vLyByZXR1cm4gYSB2YWxpZCBVUkwgb2JqZWN0IGlmIGNvcnJlY3QgZWxzZSBudWxsXG5leHBvcnQgY29uc3QgaXNWYWxpZFVybCA9ICh1cmw6IHN0cmluZyB8IFVSTCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBuZXcgVVJMKHVybCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc3RyaXBUcmFpbGluZ1NsYXNoID0gKHN0cjogc3RyaW5nKSA9PlxuICBzdHIgJiYgc3RyLmVuZHNXaXRoKCcvJykgPyBzdHIuc2xpY2UoMCwgLTEpIDogc3RyO1xuXG5leHBvcnQgY29uc3QgaXNQcmltaXRpdmUgPSAoYXJnOiB1bmtub3duKSA9PiB7XG4gIGNvbnN0IHR5cGUgPSB0eXBlb2YgYXJnO1xuICByZXR1cm4gYXJnID09IG51bGwgfHwgKHR5cGUgIT09ICdvYmplY3QnICYmIHR5cGUgIT09ICdmdW5jdGlvbicpO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHsqfSBhcmdcbiAqIEByZXR1cm5zIHt0eXBlfVxuICpcbiAqIFJldHVybnMgdHlwZSBvZiBwYXNzZWQgYXJnXG4gKiBmb3IgbnVsbCBhcmdzcyByZXR1cm5zIFwiTlVMTFwiIGluc3RlZCBvZiBcIm9iamVjdFwiXG4gKlxuICovXG5leHBvcnQgY29uc3QgZ2V0VHlwZSA9IChhcmc6IHVua25vd24pID0+IHtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiBhcmc7XG4gIGlmIChhcmcgPT0gbnVsbCkge1xuICAgIHJldHVybiAnTlVMTCc7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgIHJldHVybiAnYXJyYXknO1xuICB9XG4gIHJldHVybiB0eXBlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzT2JqZWN0ID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmICh0eXBlID09PSAnb2JqZWN0JyB8fCB0eXBlID09PSAnZnVuY3Rpb24nKSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNFbXB0eSA9IChpbnB1dDogdW5rbm93bikgPT4gXy5pc0VtcHR5KF8udG9TdHJpbmcoaW5wdXQpLnRyaW0oKSk7XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGZvciBlbXB0eSBvYmplY3Qge31cbiAqIEBwYXJhbSB7Kn0gb2JqXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgaXNFbXB0eU9iamVjdCA9IChvYmo6IGFueSkgPT4ge1xuICBpZiAoIW9iaikge1xuICAgIGxvZ2dlci53YXJuKCdpbnB1dCBpcyB1bmRlZmluZWQgb3IgbnVsbCcpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMDtcbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gY2hlY2sgaWYgdmFsdWUgaXMgRGVmaW5lZCwgTm90IG51bGwgYW5kIE5vdCBFbXB0eS5cbiAqIENyZWF0ZSB0aGlzIGZ1bmN0aW9uLCBCZWNhdXNlIGV4aXN0aW5nIGlzRGVmaW5lZEFuZE5vdE51bGxBbmROb3RFbXB0eSgxMjMpIGlzIHJldHVybmluZyBmYWxzZSBkdWUgdG8gbG9kYXNoIF8uaXNFbXB0eSBmdW5jdGlvbi5cbiAqIF8uaXNFbXB0eSBpcyB1c2VkIHRvIGRldGVjdCBlbXB0eSBjb2xsZWN0aW9ucy9vYmplY3RzIGFuZCBpdCB3aWxsIHJldHVybiB0cnVlIGZvciBJbnRlZ2VyLCBCb29sZWFuIHZhbHVlcy5cbiAqIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvaXNzdWVzLzQ5NlxuICogQHBhcmFtIHsqfSB2YWx1ZSAxMjNcbiAqIEByZXR1cm5zIHllc1xuICovXG5leHBvcnQgY29uc3QgaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5ID0gKHZhbHVlOiB1bmtub3duKSA9PlxuICAhKFxuICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgIE51bWJlci5pc05hTih2YWx1ZSkgfHxcbiAgICAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwKSB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDApXG4gICk7XG5cbmV4cG9ydCBjb25zdCByZW1vdmVVbmRlZmluZWROdWxsRW1wdHlFeGNsQm9vbEludCA9IChvYmo6IHVua25vd24pID0+IHtcbiAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJldHVybiBvYmo7XG4gIHJldHVybiBfLnBpY2tCeShvYmosIGlzRGVmaW5lZE5vdE51bGxOb3RFbXB0eSk7XG59O1xuXG4vLyBGb3JtYXQgdGhlIGRlc3RpbmF0aW9uLkNvbmZpZy5keW5hbWljTWFwIGFycmF5cyB0byBoYXNoTWFwXG5leHBvcnQgY29uc3QgZ2V0SGFzaEZyb21BcnJheSA9IChhcnJheXMsIGZyb21LZXkgPSAnZnJvbScsIHRvS2V5ID0gJ3RvJywgaXNMb3dlckNhc2UgPSB0cnVlKSA9PiB7XG4gIGNvbnN0IGhhc2hNYXAgPSB7fTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyYXlzKSkge1xuICAgIGFycmF5cy5mb3JFYWNoKChhcnJheSkgPT4ge1xuICAgICAgaWYgKGlzRW1wdHkoYXJyYXlbZnJvbUtleV0pKSByZXR1cm47XG4gICAgICBoYXNoTWFwW2lzTG93ZXJDYXNlID8gYXJyYXlbZnJvbUtleV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDogYXJyYXlbZnJvbUtleV1dID1cbiAgICAgICAgYXJyYXlbdG9LZXldO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBoYXNoTWFwO1xufTtcblxuLyoqXG4gKiBGb3JtYXQgdGhlIGRlc3RpbmF0aW9uLkNvbmZpZy5keW5hbWljTWFwIGFycmF5cyB0byBoYXNoTWFwXG4gKiB3aGVyZSB2YWx1ZSBpcyBhbiBhcnJheVxuICogQHBhcmFtICB7fSBhcnJheXMgW3tcImZyb21cIjpcInByb3AxXCIsXCJ0b1wiOlwidmFsMVwifSx7XCJmcm9tXCI6XCJwcm9wMVwiLFwidG9cIjpcInZhbDJcIn0se1wiZnJvbVwiOlwicHJvcDJcIixcInRvXCI6XCJ2YWwyXCJ9XVxuICogQHBhcmFtICB7fSBmcm9tS2V5PVwiZnJvbVwiXG4gKiBAcGFyYW0gIHt9IHRvS2V5PVwidG9cIlxuICogQHBhcmFtICB7fSBpc0xvd2VyQ2FzZT10cnVlXG4gKiBAcGFyYW0gIHt9IHJldHVybiBoYXNobWFwIHtcInByb3AxXCI6W1widmFsMVwiLFwidmFsMlwiXSxcInByb3AyXCI6W1widmFsMlwiXX1cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEhhc2hGcm9tQXJyYXlXaXRoRHVwbGljYXRlID0gKFxuICBhcnJheXM6IHsgZnJvbTogc3RyaW5nOyB0bzogc3RyaW5nIH1bXSxcbiAgZnJvbUtleSA9ICdmcm9tJyxcbiAgdG9LZXkgPSAndG8nLFxuICBpc0xvd2VyQ2FzZSA9IHRydWUsXG4pID0+IHtcbiAgY29uc3QgaGFzaE1hcCA9IHt9O1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnJheXMpKSB7XG4gICAgYXJyYXlzLmZvckVhY2goKGFycmF5KSA9PiB7XG4gICAgICBpZiAoaXNFbXB0eShhcnJheVtmcm9tS2V5XSkpIHJldHVybjtcbiAgICAgIGNvbnN0IGtleSA9IGlzTG93ZXJDYXNlXG4gICAgICAgID8gYXJyYXlbZnJvbUtleV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLnRyaW0oKVxuICAgICAgICA6IGFycmF5W2Zyb21LZXldLnRvU3RyaW5nKCkudHJpbSgpO1xuXG4gICAgICBpZiAoaGFzaE1hcFtrZXldKSB7XG4gICAgICAgIGhhc2hNYXBba2V5XS5hZGQoYXJyYXlbdG9LZXldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhc2hNYXBba2V5XSA9IG5ldyBTZXQoKTtcbiAgICAgICAgaGFzaE1hcFtrZXldLmFkZChhcnJheVt0b0tleV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBoYXNoTWFwO1xufTtcblxuLyoqXG4gKiBGb3JtYXQgdGhlIGFycmF5cyB0byBoYXNoTWFwIHdpdGgga2V5IGFzIGBmcm9tS2V5YCBhbmQgdmFsdWUgYXMgT2JqZWN0XG4gKiBAcGFyYW0geyp9IGFycmF5cyBbe1wiaWRcIjpcImEwYjhlZmUxLWM4MjgtNGM2My04ODUwLTBkMDc0Mjg4OGY5ZFwiLFwibmFtZVwiOlwiRW1haWxcIixcInR5cGVcIjpcImVtYWlsXCIsXCJ0eXBlX2NvbmZpZ1wiOnt9LFwiZGF0ZV9jcmVhdGVkXCI6XCIxNjYyMjI1ODQwMjg0XCIsXCJoaWRlX2Zyb21fZ3Vlc3RzXCI6ZmFsc2UsXCJyZXF1aXJlZFwiOmZhbHNlfV1cbiAqIEBwYXJhbSB7Kn0gZnJvbUtleSBuYW1lXG4gKiBAcGFyYW0geyp9IGlzTG93ZXJDYXNlIGZhbHNlXG4gKiBAcmV0dXJucyAvLyB7XCJFbWFpbFwiOntcImlkXCI6XCJhMGI4ZWZlMS1jODI4LTRjNjMtODg1MC0wZDA3NDI4ODhmOWRcIixcIm5hbWVcIjpcIkVtYWlsXCIsXCJ0eXBlXCI6XCJlbWFpbFwiLFwidHlwZV9jb25maWdcIjp7fSxcImRhdGVfY3JlYXRlZFwiOlwiMTY2MjIyNTg0MDI4NFwiLFwiaGlkZV9mcm9tX2d1ZXN0c1wiOmZhbHNlLFwicmVxdWlyZWRcIjpmYWxzZX19XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRIYXNoRnJvbUFycmF5V2l0aFZhbHVlQXNPYmplY3QgPSAoYXJyYXlzLCBmcm9tS2V5ID0gJ2Zyb20nLCBpc0xvd2VyQ2FzZSA9IHRydWUpID0+IHtcbiAgY29uc3QgaGFzaE1hcCA9IHt9O1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnJheXMpKSB7XG4gICAgYXJyYXlzLmZvckVhY2goKGFycmF5KSA9PiB7XG4gICAgICBpZiAoaXNFbXB0eShhcnJheVtmcm9tS2V5XSkpIHJldHVybjtcbiAgICAgIGhhc2hNYXBbaXNMb3dlckNhc2UgPyBhcnJheVtmcm9tS2V5XS50b0xvd2VyQ2FzZSgpIDogYXJyYXlbZnJvbUtleV1dID0gYXJyYXk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGhhc2hNYXA7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyBhIHZhbHVlIGZyb20gYSBtZXNzYWdlIG9iamVjdCBiYXNlZCBvbiBhIGdpdmVuIGtleS4gSXQgc2VhcmNoZXMgZm9yIHRoZSBrZXkgaW4gdGhlIHByb3BlcnRpZXMsIHRyYWl0cywgYW5kIGNvbnRleHQudHJhaXRzIG9mIHRoZSBtZXNzYWdlIG9iamVjdCBpbiB0aGF0IG9yZGVyLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMubWVzc2FnZSAtIFRoZSBtZXNzYWdlIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMsIHRyYWl0cywgYW5kIGNvbnRleHQudHJhaXRzLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMua2V5IC0gVGhlIGtleSB0byBzZWFyY2ggZm9yIGluIHRoZSBtZXNzYWdlIG9iamVjdC5cbiAqIEByZXR1cm5zIHsqfSBUaGUgdmFsdWUgZm91bmQgaW4gdGhlIG1lc3NhZ2Ugb2JqZWN0IGZvciB0aGUgZ2l2ZW4ga2V5LCBvciBudWxsIGlmIHRoZSBrZXkgaXMgbm90IGZvdW5kIG9yIHRoZSB2YWx1ZSBpcyBudWxsLlxuICovXG5leHBvcnQgY29uc3QgZ2V0VmFsdWVGcm9tUHJvcGVydGllc09yVHJhaXRzID0gKHsgbWVzc2FnZSwga2V5IH0pID0+IHtcbiAgY29uc3Qga2V5U2V0ID0gWydwcm9wZXJ0aWVzJywgJ3RyYWl0cycsICdjb250ZXh0LnRyYWl0cyddO1xuXG4gIGNvbnN0IHZhbCA9IF8uZmluZChcbiAgICBfLm1hcChrZXlTZXQsIChrKSA9PiBnZXQobWVzc2FnZSwgYCR7a30uJHtrZXl9YCkpLFxuICAgICh2KSA9PiAhXy5pc05pbCh2KSxcbiAgKTtcbiAgcmV0dXJuICFfLmlzTmlsKHZhbCkgPyB2YWwgOiBudWxsO1xufTtcblxuLyoqXG4gKiBGbGF0dGVucyBhIEpTT04gb2JqZWN0IGludG8gYSBzaW5nbGUtbGV2ZWwgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBkYXRhIC0gVGhlIEpTT04gb2JqZWN0IHRvIGJlIGZsYXR0ZW5lZC5cbiAqIEBwYXJhbSBzZXBhcmF0b3IgLSBUaGUgY2hhcmFjdGVyIHVzZWQgdG8gc2VwYXJhdGUgdGhlIGtleXMgaW4gdGhlIGZsYXR0ZW5lZCBvYmplY3QuIERlZmF1bHQgaXMgJy4nLlxuICogQHBhcmFtIG1vZGUgLSBUaGUgbW9kZSB1c2VkIHRvIGZsYXR0ZW4gYXJyYXlzLiBJZiBzZXQgdG8gJ3N0cmljdCcsIHRoZSBhcnJheSBpbmRpY2VzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGZsYXR0ZW5lZCBrZXlzLiBEZWZhdWx0IGlzICdub3JtYWwnLlxuICogQHJldHVybnMgVGhlIGZsYXR0ZW5lZCBKU09OIG9iamVjdC5cbiAqL1xuZXhwb3J0IGNvbnN0IGZsYXR0ZW5Kc29uID0gKGRhdGE6IHVua25vd24sIHNlcGFyYXRvciA9ICcuJywgbW9kZSA9ICdub3JtYWwnKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHt9O1xuXG4gIC8vIGEgcmVjdXJzaXZlIGZ1bmN0aW9uIHRvIGxvb3AgdGhyb3VnaCB0aGUgYXJyYXkgb2YgdGhlIGRhdGFcbiAgY29uc3QgcmVjdXJzZSA9IChjdXIsIHByb3ApID0+IHtcbiAgICBsZXQgaTtcbiAgICBpZiAoT2JqZWN0KGN1cikgIT09IGN1cikge1xuICAgICAgcmVzdWx0W3Byb3BdID0gY3VyO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjdXIpKSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgY3VyLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGlmIChtb2RlID09PSAnc3RyaWN0Jykge1xuICAgICAgICAgIHJlY3Vyc2UoY3VyW2ldLCBgJHtwcm9wfSR7c2VwYXJhdG9yfSR7aX1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWN1cnNlKGN1cltpXSwgYCR7cHJvcH1bJHtpfV1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGN1ci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmVzdWx0W3Byb3BdID0gW107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpc0VtcHR5RmxhZyA9IHRydWU7XG4gICAgICBPYmplY3Qua2V5cyhjdXIpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpc0VtcHR5RmxhZyA9IGZhbHNlO1xuICAgICAgICByZWN1cnNlKGN1cltrZXldLCBwcm9wID8gYCR7cHJvcH0ke3NlcGFyYXRvcn0ke2tleX1gIDoga2V5KTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGlzRW1wdHlGbGFnICYmIHByb3ApIHJlc3VsdFtwcm9wXSA9IHt9O1xuICAgIH1cbiAgfTtcblxuICByZWN1cnNlKGRhdGEsICcnKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBvZmZzZXQgdmFsdWUgaW4gc2Vjb25kcyBmb3IgYSBnaXZlbiB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdGltZXpvbmUgdmFsdWUgZm9yIHdoaWNoIHRoZSBvZmZzZXQgbmVlZHMgdG8gYmUgY2FsY3VsYXRlZC5cbiAqIEByZXR1cm5zIFRoZSBvZmZzZXQgdmFsdWUgaW4gc2Vjb25kcyBmb3IgdGhlIGdpdmVuIHRpbWV6b25lLiBJZiB0aGUgdGltZXpvbmUgaXMgaW52YWxpZCBvciBub3QgZm91bmQsIGl0IHJldHVybnMgYHVuZGVmaW5lZGAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IG9mZnNldCA9IGdldE9mZnNldEluU2VjKCdBc2lhL0NhbGN1dHRhJyk7XG4gKiBjb25zb2xlLmxvZyhvZmZzZXQpOyAvLyBPdXRwdXQ6IDE5ODAwXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRPZmZzZXRJblNlYyA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG5hbWUgPSBtb21lbnQudHouem9uZSh2YWx1ZSk7XG4gIGlmIChuYW1lKSB7XG4gICAgY29uc3QgeCA9IG1vbWVudCgpLnR6KHZhbHVlKS5mb3JtYXQoJ1onKTtcbiAgICBjb25zdCBzcGxpdCA9IHguc3BsaXQoJzonKTtcbiAgICBjb25zdCBob3VyID0gTnVtYmVyKHNwbGl0WzBdKTtcbiAgICBjb25zdCBtaW4gPSBOdW1iZXIoc3BsaXRbMV0pO1xuICAgIGxldCBzZWMgPSAwO1xuICAgIHNlYyA9IGhvdXIgPCAwID8gLTEgKiAoaG91ciAqIC02MCAqIDYwICsgbWluICogNjApIDogaG91ciAqIDYwICogNjAgKyBtaW4gKiA2MDtcbiAgICByZXR1cm4gc2VjO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZGF0ZSBzdHJpbmcgaW50byBhIGZvcm1hdHRlZCB0aW1lc3RhbXAuXG4gKiBJZiBhIGZvcm1hdCBzdHJpbmcgaXMgcHJvdmlkZWQsIGl0IHVzZXMgdGhlIG1vbWVudCBsaWJyYXJ5IHRvIGZvcm1hdCB0aGUgZGF0ZS5cbiAqIElmIG5vIGZvcm1hdCBzdHJpbmcgaXMgcHJvdmlkZWQsIGl0IHJldHVybnMgdGhlIHRpbWVzdGFtcCBvZiB0aGUgZGF0ZS5cbiAqIEBwYXJhbSBkYXRlU3RyIC0gVGhlIGRhdGUgc3RyaW5nIHRvIGJlIGZvcm1hdHRlZC5cbiAqIEBwYXJhbSBmb3JtYXQgLSAoT3B0aW9uYWwpIFRoZSBmb3JtYXQgc3RyaW5nIHRvIGJlIHVzZWQgZm9yIGZvcm1hdHRpbmcgdGhlIGRhdGUuXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIGRhdGUgYXMgYSBzdHJpbmcgaWYgYSBmb3JtYXQgc3RyaW5nIGlzIHByb3ZpZGVkLFxuICogICAgICAgICAgb3RoZXJ3aXNlIHRoZSB0aW1lc3RhbXAgb2YgdGhlIGRhdGUgYXMgYSBudW1iZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtYXRUaW1lU3RhbXAgPSAoZGF0ZVN0cjogc3RyaW5nLCBmb3JtYXQ/OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGVTdHIpO1xuICAvLyBtb21lbnQgZm9ybWF0IGlzIHBhc3NlZC4gZm9ybWF0IGFjY29yZGluZ2x5XG4gIGlmIChmb3JtYXQpIHtcbiAgICByZXR1cm4gbW9tZW50LnV0YyhkYXRlKS5mb3JtYXQoZm9ybWF0KTtcbiAgfVxuXG4gIC8vIHJldHVybiBkZWZhdWx0IGZvcm1hdFxuICByZXR1cm4gZGF0ZS5nZXRUaW1lKCk7XG59O1xuXG5leHBvcnQgY29uc3QgaGFzaFRvU2hhMjU2ID0gKHZhbHVlOiBzdHJpbmcgfCBCdWZmZXIgfCBudW1iZXJbXSkgPT4gc2hhMjU2KHZhbHVlKTtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBVbml2ZXJzYWxseSBVbmlxdWUgSWRlbnRpZmllciAoVVVJRCkgdXNpbmcgdGhlIGBjcnlwdG8ucmFuZG9tVVVJRCgpYCBtZXRob2QuXG4gKiBUaGUgYGRpc2FibGVFbnRyb3B5Q2FjaGVgIG9wdGlvbiBpcyBzZXQgdG8gYHRydWVgIHRvIHByZXZlbnQgY2FjaGluZyBvZiBnZW5lcmF0ZWQgVVVJRHMuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gQSByYW5kb21seSBnZW5lcmF0ZWQgVVVJRC5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL25vZGVqcy5vcmcvYXBpL2NyeXB0by5odG1sI2NyeXB0b3JhbmRvbXV1aWRvcHRpb25zOn46dGV4dD1vcHRpb25zJTIwJTNDT2JqZWN0JTNFLSxkaXNhYmxlRW50cm9weUNhY2hlLC0lM0Nib29sZWFuJTNFJTIwQnl9XG4gKi9cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZVVVSUQgPSAoKTogc3RyaW5nID0+IGNyeXB0by5yYW5kb21VVUlEKHsgZGlzYWJsZUVudHJvcHlDYWNoZTogdHJ1ZSB9KTtcblxuLy8gUm91dGVyIHRyYW5zZm9ybWVyXG4vLyBFcnJvciByZXNwb25zZXNcbmV4cG9ydCBjb25zdCBnZXRFcnJvclJlc3BFdmVudHMgPSAoXG4gIG1ldGFkYXRhOiBNZXRhZGF0YVtdLFxuICBzdGF0dXNDb2RlOiBudW1iZXIsXG4gIGVycm9yOiBzdHJpbmcsXG4gIHN0YXRUYWdzOiBPYmplY3QsXG4gIGJhdGNoZWQ6IGJvb2xlYW4gPSBmYWxzZSxcbik6IHtcbiAgbWV0YWRhdGE6IE1ldGFkYXRhW107XG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgZXJyb3I6IHN0cmluZztcbiAgc3RhdFRhZ3M6IE9iamVjdDtcbiAgYmF0Y2hlZDogYm9vbGVhbjtcbn0gPT4gKHtcbiAgbWV0YWRhdGEsXG4gIGJhdGNoZWQsXG4gIHN0YXR1c0NvZGUsXG4gIGVycm9yLFxuICBzdGF0VGFncyxcbn0pO1xuIl19
|