@ngxs-labs/emitter
Advanced tools
Comparing version 1.1.0 to 1.2.0
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@ngxs/store'), require('rxjs/operators')) : | ||
typeof define === 'function' && define.amd ? define('@ngxs-labs/emitter', ['exports', '@angular/core', '@ngxs/store', 'rxjs/operators'], factory) : | ||
(factory((global['ngxs-labs'] = global['ngxs-labs'] || {}, global['ngxs-labs'].emitter = {}),global.ng.core,global['ngxs-store'],global.rxjs.operators)); | ||
typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@ngxs/store', 'rxjs/operators'], factory) : | ||
(factory((global['ngxs-labs'] = global['ngxs-labs'] || {}, global['ngxs-labs'].emitter = {}),global.ng.core,global.ngxs.store,global.rxjs.operators)); | ||
}(this, (function (exports,core,store,operators) { 'use strict'; | ||
/*! ***************************************************************************** | ||
Copyright (c) Microsoft Corporation. All rights reserved. | ||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use | ||
this file except in compliance with the License. You may obtain a copy of the | ||
License at http://www.apache.org/licenses/LICENSE-2.0 | ||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED | ||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, | ||
MERCHANTABLITY OR NON-INFRINGEMENT. | ||
See the Apache Version 2.0 License for specific language governing permissions | ||
and limitations under the License. | ||
***************************************************************************** */ | ||
/* global Reflect, Promise */ | ||
var extendStatics = Object.setPrototypeOf || | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; | ||
function __extends(d, b) { | ||
extendStatics(d, b); | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
} | ||
/** | ||
@@ -51,2 +77,4 @@ * @fileoverview added by tsickle | ||
*/ | ||
/** @type {?} */ | ||
var generate = require('nanoid/generate'); | ||
/** | ||
@@ -78,5 +106,17 @@ * Decorates a method with a receiver information | ||
/** @type {?} */ | ||
var type = action ? ( /** @type {?} */(action.type)) : ((options && options.type) || target.name + "." + key); | ||
var payload = options && options.payload; | ||
/** @type {?} */ | ||
var payload = options && options.payload; | ||
var actionId = generate('1234567890abcdef', 10); | ||
/** @type {?} */ | ||
var type = (/** @type {?} */ (null)); | ||
if (action) { | ||
type = (/** @type {?} */ (action.type)); | ||
} | ||
else { | ||
/** @type {?} */ | ||
var defaultType = options && options.type; | ||
/** @type {?} */ | ||
var customType = "[ID:" + actionId + "] " + target.name + "." + key; | ||
type = defaultType || customType; | ||
} | ||
if (meta.actions[type]) { | ||
@@ -90,3 +130,3 @@ throw new Error("Method decorated with such type `" + type + "` already exists"); | ||
}]; | ||
( /** @type {?} */(descriptor.value))[RECEIVER_META_KEY] = { | ||
(/** @type {?} */ (descriptor.value))[RECEIVER_META_KEY] = { | ||
type: type, | ||
@@ -127,8 +167,8 @@ action: action, | ||
*/ | ||
function () { | ||
if (!this.injector) { | ||
throw new Error("You've forgotten to import `NgxsEmitPluginModule`"); | ||
} | ||
return this.injector; | ||
}; | ||
function () { | ||
if (!this.injector) { | ||
throw new Error("You've forgotten to import `NgxsEmitPluginModule`"); | ||
} | ||
return this.injector; | ||
}; | ||
/** | ||
@@ -142,36 +182,8 @@ * Injector for accessing DI | ||
/** @nocollapse */ | ||
InjectorAccessor.ctorParameters = function () { | ||
return [ | ||
{ type: core.Injector } | ||
]; | ||
}; | ||
InjectorAccessor.ctorParameters = function () { return [ | ||
{ type: core.Injector } | ||
]; }; | ||
return InjectorAccessor; | ||
}()); | ||
/*! ***************************************************************************** | ||
Copyright (c) Microsoft Corporation. All rights reserved. | ||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use | ||
this file except in compliance with the License. You may obtain a copy of the | ||
License at http://www.apache.org/licenses/LICENSE-2.0 | ||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED | ||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, | ||
MERCHANTABLITY OR NON-INFRINGEMENT. | ||
See the Apache Version 2.0 License for specific language governing permissions | ||
and limitations under the License. | ||
***************************************************************************** */ | ||
/* global Reflect, Promise */ | ||
var extendStatics = Object.setPrototypeOf || | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) | ||
if (b.hasOwnProperty(p)) | ||
d[p] = b[p]; }; | ||
function __extends(d, b) { | ||
extendStatics(d, b); | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
} | ||
/** | ||
@@ -224,14 +236,14 @@ * @fileoverview added by tsickle | ||
*/ | ||
function (receiver) { | ||
var _this = this; | ||
/** @type {?} */ | ||
var metadata = receiver[RECEIVER_META_KEY]; | ||
if (!metadata) { | ||
throw new Error("I can't seem to find static metadata. Have you decorated " + receiver.name + " with @Receiver()?"); | ||
} | ||
return { | ||
emit: function (payload) { return _this.dispatchSingle(metadata, payload); }, | ||
emitMany: function (payloads) { return _this.dispatchMany(metadata, payloads); } | ||
}; | ||
function (receiver) { | ||
var _this = this; | ||
/** @type {?} */ | ||
var metadata = receiver[RECEIVER_META_KEY]; | ||
if (!metadata) { | ||
throw new Error("I can't seem to find static metadata. Have you decorated " + receiver.name + " with @Receiver()?"); | ||
} | ||
return { | ||
emit: function (payload) { return _this.dispatchSingle(metadata, payload); }, | ||
emitMany: function (payloads) { return _this.dispatchMany(metadata, payloads); } | ||
}; | ||
}; | ||
/** | ||
@@ -254,13 +266,13 @@ * @param metadata - Receiver function metadata | ||
*/ | ||
function (metadata, payload) { | ||
EmitterAction.type = metadata.type; | ||
/** @type {?} */ | ||
var shouldApplyDefaultPayload = typeof payload === 'undefined' && metadata.payload !== undefined; | ||
if (shouldApplyDefaultPayload) { | ||
payload = metadata.payload; | ||
} | ||
/** @type {?} */ | ||
var Action = metadata.action ? metadata.action : EmitterAction; | ||
return this.dispatch(new Action(payload)); | ||
}; | ||
function (metadata, payload) { | ||
EmitterAction.type = metadata.type; | ||
/** @type {?} */ | ||
var shouldApplyDefaultPayload = typeof payload === 'undefined' && metadata.payload !== undefined; | ||
if (shouldApplyDefaultPayload) { | ||
payload = metadata.payload; | ||
} | ||
/** @type {?} */ | ||
var Action = metadata.action ? metadata.action : EmitterAction; | ||
return this.dispatch(new Action(payload)); | ||
}; | ||
/** | ||
@@ -283,15 +295,15 @@ * @param metadata - Receiver function metadata | ||
*/ | ||
function (metadata, payloads) { | ||
EmitterAction.type = metadata.type; | ||
function (metadata, payloads) { | ||
EmitterAction.type = metadata.type; | ||
/** @type {?} */ | ||
var actions = []; | ||
if (Array.isArray(payloads)) { | ||
/** @type {?} */ | ||
var actions = []; | ||
if (Array.isArray(payloads)) { | ||
/** @type {?} */ | ||
var Action_1 = metadata.action ? metadata.action : EmitterAction; | ||
payloads.forEach(function (payload) { | ||
actions.push(new Action_1(payload)); | ||
}); | ||
} | ||
return this.dispatch(actions); | ||
}; | ||
var Action_1 = metadata.action ? metadata.action : EmitterAction; | ||
payloads.forEach(function (payload) { | ||
actions.push(new Action_1(payload)); | ||
}); | ||
} | ||
return this.dispatch(actions); | ||
}; | ||
EmitStore.decorators = [ | ||
@@ -342,7 +354,7 @@ { type: core.Injectable } | ||
*/ | ||
function () { | ||
return { | ||
ngModule: NgxsEmitPluginModule | ||
}; | ||
function () { | ||
return { | ||
ngModule: NgxsEmitPluginModule | ||
}; | ||
}; | ||
NgxsEmitPluginModule.decorators = [ | ||
@@ -357,7 +369,5 @@ { type: core.NgModule, args: [{ | ||
/** @nocollapse */ | ||
NgxsEmitPluginModule.ctorParameters = function () { | ||
return [ | ||
{ type: InjectorAccessor, decorators: [{ type: core.Self }] } | ||
]; | ||
}; | ||
NgxsEmitPluginModule.ctorParameters = function () { return [ | ||
{ type: InjectorAccessor, decorators: [{ type: core.Self }] } | ||
]; }; | ||
return NgxsEmitPluginModule; | ||
@@ -469,17 +479,2 @@ }()); | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc | ||
*/ | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc | ||
*/ | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc | ||
*/ | ||
exports.Receiver = Receiver; | ||
@@ -500,3 +495,1 @@ exports.Emitter = Emitter; | ||
}))); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy1sYWJzLWVtaXR0ZXIudW1kLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvbGliL2NvcmUvaW50ZXJuYWwvaW50ZXJuYWxzLnRzIiwibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvbGliL2NvcmUvZGVjb3JhdG9ycy9yZWNlaXZlci50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UudHMiLCJub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvbGliL2NvcmUvYWN0aW9ucy9hY3Rpb25zLnRzIiwibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvbGliL2NvcmUvc2VydmljZXMvZW1pdC1zdG9yZS5zZXJ2aWNlLnRzIiwibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvbGliL2NvcmUvZGVjb3JhdG9ycy9lbWl0dGVyLnRzIiwibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvbGliL2VtaXQubW9kdWxlLnRzIiwibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvbGliL2NvcmUvb3BlcmF0b3JzL29mLWVtaXR0YWJsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBTdGF0dXMgb2YgYSBkaXNwYXRjaGVkIGFjdGlvblxuICovXG5leHBvcnQgY29uc3QgZW51bSBBY3Rpb25TdGF0dXMge1xuICAgIERpc3BhdGNoZWQgPSAnRElTUEFUQ0hFRCcsXG4gICAgU3VjY2Vzc2Z1bCA9ICdTVUNDRVNTRlVMJyxcbiAgICBDYW5jZWxlZCA9ICdDQU5DRUxFRCcsXG4gICAgRXJyb3JlZCA9ICdFUlJPUkVEJyxcbn1cblxuLyoqXG4gKiBTdGF0aWMgbWV0YWRhdGEgZm9yIHRoZSByZWNlaXZlciBmdW5jdGlvblxuICpcbiAqIEBwcm9wZXJ0eSB0eXBlIC0gQWN0aW9uIHR5cGUgKG9wdGlvbmFsKVxuICogQHByb3BlcnR5IGFjdGlvbiAtIEN1c3RvbSBhY3Rpb24gdG8gZGlzcGF0Y2ggKG9wdGlvbmFsKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlY2VpdmVyTWV0YURhdGE8VCBleHRlbmRzIEZ1bmN0aW9uID0gYW55PiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIHBheWxvYWQ6IGFueTtcbiAgICBhY3Rpb246IFR5cGU8VD4gJiB7XG4gICAgICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBQbGFpbiBvYmplY3QgdGhhdCBjb250YWlucyBoZWxwZXJzIHRoYXQgZGlzcGF0Y2ggcGF5bG9hZFxuICpcbiAqIEBwcm9wZXJ0eSBlbWl0IC0gRnVuY3Rpb24gdGhhdCBkaXNwYXRjaGVzIHBheWxvYWQgdW5kZXIgdGhlIGhvb2RcbiAqIEBwcm9wZXJ0eSBlbWl0TWFueSAtIEZ1bmN0aW9uIHRoYXQgbWFrZXMgbXVsdGlwbGUgZGlzcGF0Y2hpbmcgdW5kZXIgdGhlIGhvb2RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWl0dGFibGU8VCA9IGFueSwgVSA9IGFueT4ge1xuICAgIGVtaXQocGF5bG9hZD86IFQpOiBPYnNlcnZhYmxlPFU+O1xuICAgIGVtaXRNYW55KHBheWxvYWRzPzogVFtdKTogT2JzZXJ2YWJsZTxVPjtcbn1cblxuLyoqXG4gKiBCYXNpYyB3cmFwcGVyIGFyb3VuZCBhY3Rpb25zXG4gKlxuICogQHByb3BlcnR5IHN0YXR1cyAtIFN0YXR1cyBvZiBkaXNwYXRjaGVkIGFjdGlvblxuICogQHByb3BlcnR5IGFjdGlvbiAtIEFjdGlvbiBpbnN0YW5jZVxuICogQHByb3BlcnR5IGVycm9yIC0gRXJyb3IgaWYgaGFwcGVuZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25Db250ZXh0IHtcbiAgICBzdGF0dXM6IEFjdGlvblN0YXR1cztcbiAgICBhY3Rpb246IGFueTtcbiAgICBlcnJvcj86IEVycm9yO1xufVxuXG4vKipcbiAqIEFjdGlvbiBjb250ZXh0IHRoYXQgbWFwcyBgb2ZFbWl0dGFibGVgIG9wZXJhdG9yXG4gKlxuICogQHByb3BlcnR5IHR5cGUgLSBBY3Rpb24gdHlwZVxuICogQHByb3BlcnR5IHBheWxvYWQgLSBEaXNwYXRjaGVkIGRhdGFcbiAqIEBwcm9wZXJ0eSBlcnJvciAtIEVycm9yIHRoYXQgaGFzIGJlZW4gdGhyb3dlZCBvciB1bmRlZmluZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8VCA9IGFueT4ge1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBwYXlsb2FkOiBUO1xuICAgIGVycm9yOiBFcnJvciB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBIYXNobWFwIHRoYXQgY29udGFpbnMgdHlwZXMgdG8gZmlsdGVyIHVzaW5nIGBvZkVtaXR0YWJsZWAgb3BlcmF0b3JcbiAqXG4gKiBAcHJvcGVydHkga2V5IC0gQW55IHN0cmluZyBrZXlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlcyB7XG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IE1FVEFfS0VZID0gJ05HWFNfTUVUQSc7XG5cbi8qKlxuICogQGNvbnN0IC0gVGhpcyBjb25zdGFudCBpcyBhIGtleSBmb3IgZGVmaW5pbmcgc3RhdGljIG1ldGFkYXRhIHVzaW5nIGBAUmVjZWl2ZXJgXG4gKi9cbmV4cG9ydCBjb25zdCBSRUNFSVZFUl9NRVRBX0tFWSA9ICdOR1hTX1JFQ0VJVkVSX01FVEEnO1xuXG4vKipcbiAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgYEBuZ3hzL3N0b3JlYCBmdW5jdGlvbiBhbmQgbm90IGFjY2Vzc2FibGUgZnJvbSBvdXRzaWRlLCBldmVuIHVzaW5nIHRoZXRhIHN5bWJvbFxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBUYXJnZXQgdG8gYXBwbHkgc3RhdGljIG1ldGFkYXRhIHRvXG4gKiBAcmV0dXJucyAtIFN0YXRpYyBtZXRhZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlU3RvcmVNZXRhZGF0YSh0YXJnZXQ6IEZ1bmN0aW9uKTogYW55IHtcbiAgICBpZiAoIXRhcmdldC5oYXNPd25Qcm9wZXJ0eShNRVRBX0tFWSkpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdE1ldGFkYXRhID0ge1xuICAgICAgICAgICAgbmFtZTogbnVsbCxcbiAgICAgICAgICAgIGFjdGlvbnM6IHt9LFxuICAgICAgICAgICAgZGVmYXVsdHM6IHt9LFxuICAgICAgICAgICAgcGF0aDogbnVsbCxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgIGluc3RhbmNlOiBudWxsXG4gICAgICAgIH07XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIE1FVEFfS0VZLCB7IHZhbHVlOiBkZWZhdWx0TWV0YWRhdGEgfSk7XG4gICAgfVxuICAgIHJldHVybiBnZXRTdG9yZU1ldGFkYXRhKHRhcmdldCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHRhcmdldCAtIFRhcmdldCB0byBnZXQgc3RhdGljIG1ldGFkYXRhIGZyb21cbiAqIEByZXR1cm5zIC0gU3RhdGljIG1ldGFkYXRhXG4gKi9cbmZ1bmN0aW9uIGdldFN0b3JlTWV0YWRhdGEodGFyZ2V0OiBGdW5jdGlvbik6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRhcmdldFtNRVRBX0tFWV07XG59XG4iLCJpbXBvcnQgeyBlbnN1cmVTdG9yZU1ldGFkYXRhLCBSZWNlaXZlck1ldGFEYXRhLCBSRUNFSVZFUl9NRVRBX0tFWSB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbi8qKlxuICogRGVjb3JhdGVzIGEgbWV0aG9kIHdpdGggYSByZWNlaXZlciBpbmZvcm1hdGlvblxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgc3RhdGljIG1ldGFkYXRhXG4gKiBAcmV0dXJucyAtIEZhY3RvcnkgZm9yIGRlY29yYXRpbmcgbWV0aG9kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBSZWNlaXZlcihvcHRpb25zPzogUGFydGlhbDxSZWNlaXZlck1ldGFEYXRhPik6IE1ldGhvZERlY29yYXRvciB7XG4gICAgcmV0dXJuIDxUPih0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcgfCBzeW1ib2wsIGRlc2NyaXB0b3I6IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPFQ+KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzTm90RnVuY3Rpb25Pck5vdFN0YXRpYyA9IHR5cGVvZiB0YXJnZXQucHJvdG90eXBlID09PSAndW5kZWZpbmVkJyB8fCAhZGVzY3JpcHRvciB8fCB0eXBlb2YgdGFyZ2V0W2tleV0gIT09ICdmdW5jdGlvbic7XG5cbiAgICAgICAgaWYgKGlzTm90RnVuY3Rpb25Pck5vdFN0YXRpYykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgT25seSBzdGF0aWMgZnVuY3Rpb25zIGNhbiBiZSBkZWNvcmF0ZWQgd2l0aCBAUmVjZWl2ZXIoKSBkZWNvcmF0b3JgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3ltYm9sJykge1xuICAgICAgICAgICAga2V5ID0ga2V5LnRvU3RyaW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZXRhID0gZW5zdXJlU3RvcmVNZXRhZGF0YSh0YXJnZXQpO1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBvcHRpb25zICYmIG9wdGlvbnMuYWN0aW9uO1xuICAgICAgICBjb25zdCB0eXBlSXNOb3RTdHJpbmcgPSBhY3Rpb24gJiYgdHlwZW9mIGFjdGlvbi50eXBlICE9PSAnc3RyaW5nJztcblxuICAgICAgICBpZiAodHlwZUlzTm90U3RyaW5nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjdGlvbiB0eXBlIHNob3VsZCBiZSBkZWZpbmVkIGFzIGEgc3RhdGljIHByb3BlcnR5IGB0eXBlYCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHlwZTogc3RyaW5nID0gYWN0aW9uID8gYWN0aW9uLnR5cGUhIDogKChvcHRpb25zICYmIG9wdGlvbnMudHlwZSkgfHwgYCR7dGFyZ2V0Lm5hbWV9LiR7a2V5fWApO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gb3B0aW9ucyAmJiBvcHRpb25zLnBheWxvYWQ7XG5cbiAgICAgICAgaWYgKG1ldGEuYWN0aW9uc1t0eXBlXSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNZXRob2QgZGVjb3JhdGVkIHdpdGggc3VjaCB0eXBlIFxcYCR7dHlwZX1cXGAgYWxyZWFkeSBleGlzdHNgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1ldGEuYWN0aW9uc1t0eXBlXSA9IFt7XG4gICAgICAgICAgICBmbjogYCR7a2V5fWAsXG4gICAgICAgICAgICBvcHRpb25zOiB7fSxcbiAgICAgICAgICAgIHR5cGVcbiAgICAgICAgfV07XG5cbiAgICAgICAgZGVzY3JpcHRvci52YWx1ZSFbUkVDRUlWRVJfTUVUQV9LRVldID0ge1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgfTtcblxuICAgICAgICB0YXJnZXQucHJvdG90eXBlW2tleV0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXRba2V5XS5hcHBseSh0YXJnZXQsIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQWxsb3dzIG11bHRpcGxlIGRlY29yYXRvcnMgdG8gZ2V0IGFjY2VzcyB0byB0aGUgREkgc3RvcmVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEluamVjdG9yQWNjZXNzb3Ige1xuICAgIC8qKlxuICAgICAqIEluamVjdG9yIGZvciBhY2Nlc3NpbmcgRElcbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyBpbmplY3RvcjogSW5qZWN0b3IgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgSW5qZWN0b3JBY2Nlc3NvciBpbnN0YW5jZVxuICAgICAqXG4gICAgICogQHBhcmFtIGluamVjdG9yIC0gUm9vdCBpbmplY3RvclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBJbmplY3RvckFjY2Vzc29yLmluamVjdG9yID0gaW5qZWN0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgLSBFcnJvciBpZiBgTmd4c0VtaXRQbHVnaW5Nb2R1bGVgIGlzIG5vdCBpbXBvcnRlZCBvciBpbmplY3RvciBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5qZWN0b3IoKTogbmV2ZXIgfCBJbmplY3RvciB7XG4gICAgICAgIGlmICghdGhpcy5pbmplY3Rvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UndmUgZm9yZ290dGVuIHRvIGltcG9ydCBcXGBOZ3hzRW1pdFBsdWdpbk1vZHVsZVxcYGApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0b3I7XG4gICAgfVxufVxuIiwiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2VcclxudGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGVcclxuTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuXHJcblRISVMgQ09ERSBJUyBQUk9WSURFRCBPTiBBTiAqQVMgSVMqIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcclxuS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBBTlkgSU1QTElFRFxyXG5XQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLFxyXG5NRVJDSEFOVEFCTElUWSBPUiBOT04tSU5GUklOR0VNRU5ULlxyXG5cclxuU2VlIHRoZSBBcGFjaGUgVmVyc2lvbiAyLjAgTGljZW5zZSBmb3Igc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXHJcbmFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDApXHJcbiAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUocmVzdWx0LnZhbHVlKTsgfSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSB5W29wWzBdICYgMiA/IFwicmV0dXJuXCIgOiBvcFswXSA/IFwidGhyb3dcIiA6IFwibmV4dFwiXSkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbMCwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIGV4cG9ydHMpIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKCFleHBvcnRzLmhhc093blByb3BlcnR5KHApKSBleHBvcnRzW3BdID0gbVtwXTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgIH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlmIChvW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9OyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XHJcbiAgICByZXN1bHQuZGVmYXVsdCA9IG1vZDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcbiIsIi8qKlxuICogVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgZGVmYXVsdCBhY3Rpb24gd2hlbiB0aGUgdXNlciBkb2Vzbid0IHBhc3MgYW55IGN1c3RvbSBhY3Rpb24gYXMgYW4gYXJndW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIEVtaXR0ZXJBY3Rpb248VCA9IGFueT4ge1xuICAgIC8qKlxuICAgICAqIEFjdGlvbiB0eXBlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyB0eXBlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgRW1pdHRlckFjdGlvbiBpbnN0YW5jZVxuICAgICAqXG4gICAgICogQHBhcmFtIHBheWxvYWQgLSBEYXRhIHRvIGRpc3BhdGNoXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ/OiBUKSB7fVxufVxuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUkVDRUlWRVJfTUVUQV9LRVksIEVtaXR0YWJsZSwgUmVjZWl2ZXJNZXRhRGF0YSB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5pbXBvcnQgeyBFbWl0dGVyQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy9hY3Rpb25zJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEVtaXRTdG9yZSBleHRlbmRzIFN0b3JlIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcmVjZWl2ZXIgLSBSZWZlcmVuY2UgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbiBmcm9tIHRoZSBzdG9yZVxuICAgICAqIEByZXR1cm5zIC0gQSBwbGFpbiBvYmplY3Qgd2l0aCBhbiBgZW1pdGAgZnVuY3Rpb24gZm9yIGNhbGxpbmcgZW1pdHRlclxuICAgICAqL1xuICAgIHB1YmxpYyBlbWl0dGVyPFQgPSBhbnksIFUgPSBhbnk+KHJlY2VpdmVyOiBGdW5jdGlvbik6IEVtaXR0YWJsZTxULCBVPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhOiBSZWNlaXZlck1ldGFEYXRhID0gcmVjZWl2ZXJbUkVDRUlWRVJfTUVUQV9LRVldO1xuXG4gICAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSSBjYW4ndCBzZWVtIHRvIGZpbmQgc3RhdGljIG1ldGFkYXRhLiBIYXZlIHlvdSBkZWNvcmF0ZWQgJHtyZWNlaXZlci5uYW1lfSB3aXRoIEBSZWNlaXZlcigpP2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVtaXQ6IChwYXlsb2FkPzogVCkgPT4gdGhpcy5kaXNwYXRjaFNpbmdsZTxULCBVPihtZXRhZGF0YSwgcGF5bG9hZCksXG4gICAgICAgICAgICBlbWl0TWFueTogKHBheWxvYWRzPzogVFtdKSA9PiB0aGlzLmRpc3BhdGNoTWFueTxULCBVPihtZXRhZGF0YSwgcGF5bG9hZHMpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG1ldGFkYXRhIC0gUmVjZWl2ZXIgZnVuY3Rpb24gbWV0YWRhdGFcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCAtIERhdGEgdG8gZGlzcGF0Y2hcbiAgICAgKiBAcmV0dXJucyAtIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyBldmVudHMgYWZ0ZXIgZGlzcGF0Y2hcbiAgICAgKi9cbiAgICBwcml2YXRlIGRpc3BhdGNoU2luZ2xlPFQsIFU+KG1ldGFkYXRhOiBSZWNlaXZlck1ldGFEYXRhLCBwYXlsb2FkPzogVCk6IE9ic2VydmFibGU8VT4ge1xuICAgICAgICBFbWl0dGVyQWN0aW9uLnR5cGUgPSBtZXRhZGF0YS50eXBlO1xuXG4gICAgICAgIGNvbnN0IHNob3VsZEFwcGx5RGVmYXVsdFBheWxvYWQgPSB0eXBlb2YgcGF5bG9hZCA9PT0gJ3VuZGVmaW5lZCcgJiYgbWV0YWRhdGEucGF5bG9hZCAhPT0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoc2hvdWxkQXBwbHlEZWZhdWx0UGF5bG9hZCkge1xuICAgICAgICAgICAgcGF5bG9hZCA9IG1ldGFkYXRhLnBheWxvYWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBBY3Rpb246IFR5cGU8YW55PiA9IG1ldGFkYXRhLmFjdGlvbiA/IG1ldGFkYXRhLmFjdGlvbiA6IEVtaXR0ZXJBY3Rpb247XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKG5ldyBBY3Rpb24ocGF5bG9hZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSAtIFJlY2VpdmVyIGZ1bmN0aW9uIG1ldGFkYXRhXG4gICAgICogQHBhcmFtIHBheWxvYWRzIC0gQXJyYXkgd2l0aCBkYXRhIHRvIGRpc3BhdGNoXG4gICAgICogQHJldHVybnMgLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZXZlbnRzIGFmdGVyIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNwYXRjaE1hbnk8VCwgVT4obWV0YWRhdGE6IFJlY2VpdmVyTWV0YURhdGEsIHBheWxvYWRzPzogVFtdKTogT2JzZXJ2YWJsZTxVPiB7XG4gICAgICAgIEVtaXR0ZXJBY3Rpb24udHlwZSA9IG1ldGFkYXRhLnR5cGU7XG5cbiAgICAgICAgY29uc3QgYWN0aW9uczogb2JqZWN0W10gPSBbXTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkcykpIHtcbiAgICAgICAgICAgIGNvbnN0IEFjdGlvbjogVHlwZTxhbnk+ID0gbWV0YWRhdGEuYWN0aW9uID8gbWV0YWRhdGEuYWN0aW9uIDogRW1pdHRlckFjdGlvbjtcbiAgICAgICAgICAgIHBheWxvYWRzLmZvckVhY2goKHBheWxvYWQ6IFQpID0+IHtcbiAgICAgICAgICAgICAgICBhY3Rpb25zLnB1c2gobmV3IEFjdGlvbihwYXlsb2FkKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGFjdGlvbnMpO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IEluamVjdG9yQWNjZXNzb3IgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbmplY3Rvci1hY2Nlc3Nvci5zZXJ2aWNlJztcbmltcG9ydCB7IEVtaXRTdG9yZSB9IGZyb20gJy4uL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZSc7XG5cbi8qKlxuICogRGVjb3JhdGVzIGEgcHJvcGVydHkgYW5kIGRlZmluZXMgbmV3IGdldHRlclxuICpcbiAqIEBwYXJhbSByZWNlaXZlciAtIFJlZmVyZW5jZSB0byB0aGUgc3RhdGljIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyAtIEZhY3RvcnkgZnVuY3Rpb24gZm9yIGRlY29yYXRpbmcgcHJvcGVydGllc1xuICovXG5leHBvcnQgZnVuY3Rpb24gRW1pdHRlcihyZWNlaXZlcjogRnVuY3Rpb24pOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gICAgcmV0dXJuICh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcgfCBzeW1ib2wpID0+IHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICAgICAgICBnZXQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9yZSA9IEluamVjdG9yQWNjZXNzb3IuZ2V0SW5qZWN0b3IoKS5nZXQ8RW1pdFN0b3JlPihFbWl0U3RvcmUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBzdG9yZS5lbWl0dGVyKHJlY2VpdmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEVtaXRTdG9yZSB9IGZyb20gJy4vY29yZS9zZXJ2aWNlcy9lbWl0LXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5qZWN0b3JBY2Nlc3NvciB9IGZyb20gJy4vY29yZS9zZXJ2aWNlcy9pbmplY3Rvci1hY2Nlc3Nvci5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgRW1pdFN0b3JlLFxuICAgICAgICBJbmplY3RvckFjY2Vzc29yXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hzRW1pdFBsdWdpbk1vZHVsZSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgcHVibGljIGluamVjdG9yQWNjZXNzb3I6IEluamVjdG9yQWNjZXNzb3JcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyAtIEEgd3JhcHBlciBhcm91bmQgYE5nTW9kdWxlYFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5neHNFbWl0UGx1Z2luTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogTmd4c0VtaXRQbHVnaW5Nb2R1bGVcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPcGVyYXRvckZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUkVDRUlWRVJfTUVUQV9LRVksIEFjdGlvblN0YXR1cywgQWN0aW9uQ29udGV4dCwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0LCBSZWNlaXZlck1ldGFEYXRhLCBUeXBlcyB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbi8qKlxuICogYGdldFJlY2VpdmVyVHlwZXMoW0NvdW50ZXJTdGF0ZS5pbmNyZW1lbnQsIENvdW50ZXJTdGF0ZS5kZWNyZW1lbnRdKWBcbiAqIHdpbGwgcmV0dXJuIGEgaGFzaG1hcCA9PiBgeyAnQ291bnRlclN0YXRlLmluY3JlbWVudCc6IHRydWUsICdDb3VudGVyU3RhdGUuZGVjcmVtZW50JzogdHJ1ZSB9YFxuICpcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnNcbiAqIEByZXR1cm5zIC0gQSBrZXktdmFsdWUgbWFwIHdoZXJlIGEga2V5IGlzIGEgdHlwZSBhbmQgdmFsdWUgaXMgYHRydWVgXG4gKi9cbmZ1bmN0aW9uIGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogVHlwZXMge1xuICAgIGNvbnN0IHR5cGVzOiBUeXBlcyA9IHt9O1xuXG4gICAgbGV0IGkgPSByZWNlaXZlcnMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgY29uc3QgcmVjZWl2ZXIgPSByZWNlaXZlcnNbaV07XG4gICAgICAgIGNvbnN0IGlzTm90RnVuY3Rpb24gPSB0eXBlb2YgcmVjZWl2ZXIgIT09ICdmdW5jdGlvbic7XG5cbiAgICAgICAgaWYgKGlzTm90RnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJlY2VpdmVyIHNob3VsZCBiZSBhIGZ1bmN0aW9uLCBnb3QgJHtyZWNlaXZlcn1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1ldGE6IFJlY2VpdmVyTWV0YURhdGEgPSByZWNlaXZlcltSRUNFSVZFUl9NRVRBX0tFWV07XG4gICAgICAgIGNvbnN0IGlzTm90QW5ub3RhdGVkID0gIW1ldGEgfHwgIW1ldGEudHlwZTtcblxuICAgICAgICBpZiAoaXNOb3RBbm5vdGF0ZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtyZWNlaXZlci5uYW1lfSBzaG91bGQgYmUgZGVjb3JhdGVkIHVzaW5nIEBSZWNlaXZlcigpIGRlY29yYXRvcmApO1xuICAgICAgICB9XG5cbiAgICAgICAgdHlwZXNbbWV0YS50eXBlXSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVzO1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggYEBSZWNlaXZlcigpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGVEaXNwYXRjaGVkKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5EaXNwYXRjaGVkKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlU3VjY2Vzc2Z1bCguLi5yZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gb2ZFbWl0dGFibGUoZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnMpLCBBY3Rpb25TdGF0dXMuU3VjY2Vzc2Z1bCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZUNhbmNlbGVkKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5DYW5jZWxlZCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZUVycm9yZWQoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLkVycm9yZWQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB0eXBlcyAtIEhhc2htYXAgdGhhdCBjb250YWlucyBhY3Rpb24gdHlwZXNcbiAqIEBwYXJhbSBzdGF0dXMgLSBTdGF0dXMgb2YgdGhlIGRpc3BhdGNoZWQgYWN0aW9uXG4gKiBAcmV0dXJucyAtIFJ4SlMgZmFjdG9yeSBvcGVyYXRvciBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGUodHlwZXM6IFR5cGVzLCBzdGF0dXM6IEFjdGlvblN0YXR1cyk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPEFjdGlvbkNvbnRleHQ+KSA9PiB7XG4gICAgICAgIHJldHVybiBzb3VyY2UucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoY3R4OiBBY3Rpb25Db250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzaE1hcEhhc1R5cGUgPSB0eXBlc1tnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGN0eC5hY3Rpb24pXTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0SGFzVHJhbnNtaXR0ZWRTdGF0dXMgPSBjdHguc3RhdHVzID09PSBzdGF0dXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hNYXBIYXNUeXBlICYmIGNvbnRleHRIYXNUcmFuc21pdHRlZFN0YXR1cztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCh7IGFjdGlvbiwgZXJyb3IgfTogQWN0aW9uQ29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGFjdGlvbiksXG4gICAgICAgICAgICAgICAgcGF5bG9hZDogYWN0aW9uLnBheWxvYWQsXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgIH07XG59XG4iXSwibmFtZXMiOlsiSW5qZWN0YWJsZSIsIkluamVjdG9yIiwidHNsaWJfMS5fX2V4dGVuZHMiLCJTdG9yZSIsInN0b3JlIiwi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 |
@@ -1,2 +0,2 @@ | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@ngxs/store"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@ngxs-labs/emitter",["exports","@angular/core","@ngxs/store","rxjs/operators"],e):e((t["ngxs-labs"]=t["ngxs-labs"]||{},t["ngxs-labs"].emitter={}),t.ng.core,t["ngxs-store"],t.rxjs.operators)}(this,function(t,r,i,e){"use strict";var n="NGXS_META",u="NGXS_RECEIVER_META";function f(t){if(!t.hasOwnProperty(n)){Object.defineProperty(t,n,{value:{name:null,actions:{},defaults:{},path:null,children:[],instance:null}})}return function e(t){return t[n]}(t)}var o=function(){function e(t){e.injector=t}return e.getInjector=function(){if(!this.injector)throw new Error("You've forgotten to import `NgxsEmitPluginModule`");return this.injector},e.injector=null,e.decorators=[{type:r.Injectable}],e.ctorParameters=function(){return[{type:r.Injector}]},e}(),a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};var c=function(){function t(t){this.payload=t}return t.type=null,t}(),p=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return function n(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}(e,t),e.prototype.emitter=function(t){var e=this,r=t[u];if(!r)throw new Error("I can't seem to find static metadata. Have you decorated "+t.name+" with @Receiver()?");return{emit:function(t){return e.dispatchSingle(r,t)},emitMany:function(t){return e.dispatchMany(r,t)}}},e.prototype.dispatchSingle=function(t,e){c.type=t.type,void 0===e&&t.payload!==undefined&&(e=t.payload);var r=t.action?t.action:c;return this.dispatch(new r(e))},e.prototype.dispatchMany=function(t,e){c.type=t.type;var r=[];if(Array.isArray(e)){var n=t.action?t.action:c;e.forEach(function(t){r.push(new n(t))})}return this.dispatch(r)},e.decorators=[{type:r.Injectable}],e}(i.Store);var s=function(){function t(t){this.injectorAccessor=t}return t.forRoot=function(){return{ngModule:t}},t.decorators=[{type:r.NgModule,args:[{providers:[p,o]}]}],t.ctorParameters=function(){return[{type:o,decorators:[{type:r.Self}]}]},t}();function y(t){for(var e={},r=t.length;r--;){var n=t[r];if("function"!=typeof n)throw new TypeError("Receiver should be a function, got "+n);var o=n[u];if(!o||!o.type)throw new Error(n.name+" should be decorated using @Receiver() decorator");e[o.type]=!0}return e}function l(n,o){return function(t){return t.pipe(e.filter(function(t){var e=n[i.getActionTypeFromInstance(t.action)],r=t.status===o;return e&&r}),e.map(function(t){var e=t.action,r=t.error;return{type:i.getActionTypeFromInstance(e),payload:e.payload,error:r}}))}}t.Receiver=function d(c){return function(t,e,r){if("undefined"==typeof t.prototype||!r||"function"!=typeof t[e])throw new TypeError("Only static functions can be decorated with @Receiver() decorator");"symbol"==typeof e&&(e=e.toString());var n=f(t),o=c&&c.action;if(o&&"string"!=typeof o.type)throw new Error("Action type should be defined as a static property `type`");var i=o?o.type:c&&c.type||t.name+"."+e,a=c&&c.payload;if(n.actions[i])throw new Error("Method decorated with such type `"+i+"` already exists");n.actions[i]=[{fn:""+e,options:{},type:i}],r.value[u]={type:i,action:o,payload:a},t.prototype[e]=function(){return t[e].apply(t,arguments)}}},t.Emitter=function h(r){return function(t,e){Object.defineProperty(t,e,{get:function(){return o.getInjector().get(p).emitter(r)}})}},t.EmitterAction=c,t.NgxsEmitPluginModule=s,t.ofEmittableDispatched=function g(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return l(y(t),"DISPATCHED")},t.ofEmittableSuccessful=function v(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return l(y(t),"SUCCESSFUL")},t.ofEmittableCanceled=function m(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return l(y(t),"CANCELED")},t.ofEmittableErrored=function E(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return l(y(t),"ERRORED")},t.ɵb=l,t.ɵc=p,t.ɵd=o,Object.defineProperty(t,"__esModule",{value:!0})}); | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@ngxs/store"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@ngxs-labs/emitter",["exports","@angular/core","@ngxs/store","rxjs/operators"],e):e((t["ngxs-labs"]=t["ngxs-labs"]||{},t["ngxs-labs"].emitter={}),t.ng.core,t["ngxs-store"],t.rxjs.operators)}(this,function(t,r,i,e){"use strict";var n="NGXS_META",s="NGXS_RECEIVER_META";function l(t){if(!t.hasOwnProperty(n)){Object.defineProperty(t,n,{value:{name:null,actions:{},defaults:{},path:null,children:[],instance:null}})}return function e(t){return t[n]}(t)}var y=require("nanoid/generate");var o=function(){function e(t){e.injector=t}return e.getInjector=function(){if(!this.injector)throw new Error("You've forgotten to import `NgxsEmitPluginModule`");return this.injector},e.injector=null,e.decorators=[{type:r.Injectable}],e.ctorParameters=function(){return[{type:r.Injector}]},e}(),a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};var c=function(){function t(t){this.payload=t}return t.type=null,t}(),u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return function n(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}(e,t),e.prototype.emitter=function(t){var e=this,r=t[s];if(!r)throw new Error("I can't seem to find static metadata. Have you decorated "+t.name+" with @Receiver()?");return{emit:function(t){return e.dispatchSingle(r,t)},emitMany:function(t){return e.dispatchMany(r,t)}}},e.prototype.dispatchSingle=function(t,e){c.type=t.type,void 0===e&&t.payload!==undefined&&(e=t.payload);var r=t.action?t.action:c;return this.dispatch(new r(e))},e.prototype.dispatchMany=function(t,e){c.type=t.type;var r=[];if(Array.isArray(e)){var n=t.action?t.action:c;e.forEach(function(t){r.push(new n(t))})}return this.dispatch(r)},e.decorators=[{type:r.Injectable}],e}(i.Store);var f=function(){function t(t){this.injectorAccessor=t}return t.forRoot=function(){return{ngModule:t}},t.decorators=[{type:r.NgModule,args:[{providers:[u,o]}]}],t.ctorParameters=function(){return[{type:o,decorators:[{type:r.Self}]}]},t}();function p(t){for(var e={},r=t.length;r--;){var n=t[r];if("function"!=typeof n)throw new TypeError("Receiver should be a function, got "+n);var o=n[s];if(!o||!o.type)throw new Error(n.name+" should be decorated using @Receiver() decorator");e[o.type]=!0}return e}function d(n,o){return function(t){return t.pipe(e.filter(function(t){var e=n[i.getActionTypeFromInstance(t.action)],r=t.status===o;return e&&r}),e.map(function(t){var e=t.action,r=t.error;return{type:i.getActionTypeFromInstance(e),payload:e.payload,error:r}}))}}t.Receiver=function h(p){return function(t,e,r){if("undefined"==typeof t.prototype||!r||"function"!=typeof t[e])throw new TypeError("Only static functions can be decorated with @Receiver() decorator");"symbol"==typeof e&&(e=e.toString());var n=l(t),o=p&&p.action;if(o&&"string"!=typeof o.type)throw new Error("Action type should be defined as a static property `type`");var i=p&&p.payload,a=y("1234567890abcdef",10),c=null;if(o)c=o.type;else{var u=p&&p.type,f="[ID:"+a+"] "+t.name+"."+e;c=u||f}if(n.actions[c])throw new Error("Method decorated with such type `"+c+"` already exists");n.actions[c]=[{fn:""+e,options:{},type:c}],r.value[s]={type:c,action:o,payload:i},t.prototype[e]=function(){return t[e].apply(t,arguments)}}},t.Emitter=function g(r){return function(t,e){Object.defineProperty(t,e,{get:function(){return o.getInjector().get(u).emitter(r)}})}},t.EmitterAction=c,t.NgxsEmitPluginModule=f,t.ofEmittableDispatched=function v(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return d(p(t),"DISPATCHED")},t.ofEmittableSuccessful=function m(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return d(p(t),"SUCCESSFUL")},t.ofEmittableCanceled=function E(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return d(p(t),"CANCELED")},t.ofEmittableErrored=function b(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return d(p(t),"ERRORED")},t.ɵb=d,t.ɵc=u,t.ɵd=o,Object.defineProperty(t,"__esModule",{value:!0})}); | ||
//# sourceMappingURL=ngxs-labs-emitter.umd.min.js.map |
@@ -5,2 +5,4 @@ /** | ||
*/ | ||
/** @type {?} */ | ||
const generate = require('nanoid/generate'); | ||
import { ensureStoreMetadata, RECEIVER_META_KEY } from '../internal/internals'; | ||
@@ -33,5 +35,17 @@ /** | ||
/** @type {?} */ | ||
const type = action ? (/** @type {?} */ (action.type)) : ((options && options.type) || `${target.name}.${key}`); | ||
const payload = options && options.payload; | ||
/** @type {?} */ | ||
const payload = options && options.payload; | ||
const actionId = generate('1234567890abcdef', 10); | ||
/** @type {?} */ | ||
let type = (/** @type {?} */ (null)); | ||
if (action) { | ||
type = (/** @type {?} */ (action.type)); | ||
} | ||
else { | ||
/** @type {?} */ | ||
const defaultType = options && options.type; | ||
/** @type {?} */ | ||
const customType = `[ID:${actionId}] ${target.name}.${key}`; | ||
type = defaultType || customType; | ||
} | ||
if (meta.actions[type]) { | ||
@@ -55,2 +69,2 @@ throw new Error(`Method decorated with such type \`${type}\` already exists`); | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjZWl2ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvIiwic291cmNlcyI6WyJsaWIvY29yZS9kZWNvcmF0b3JzL3JlY2VpdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQW9CLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFRakcsTUFBTSxVQUFVLFFBQVEsQ0FBQyxPQUFtQztJQUN4RCxPQUFPLENBQUksTUFBVyxFQUFFLEdBQW9CLEVBQUUsVUFBc0MsRUFBRSxFQUFFOztjQUM5RSx3QkFBd0IsR0FBRyxPQUFPLE1BQU0sQ0FBQyxTQUFTLEtBQUssV0FBVyxJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFVBQVU7UUFFNUgsSUFBSSx3QkFBd0IsRUFBRTtZQUMxQixNQUFNLElBQUksU0FBUyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7U0FDNUY7UUFFRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUN6QixHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3hCOztjQUVLLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7O2NBQ2xDLE1BQU0sR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU07O2NBQ2xDLGVBQWUsR0FBRyxNQUFNLElBQUksT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVE7UUFFakUsSUFBSSxlQUFlLEVBQUU7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1NBQ2hGOztjQUVLLElBQUksR0FBVyxNQUFNLENBQUMsQ0FBQyxDQUFDLG1CQUFBLE1BQU0sQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDOztjQUM3RixPQUFPLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPO1FBRTFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxJQUFJLG1CQUFtQixDQUFDLENBQUM7U0FDakY7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7Z0JBQ2xCLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRTtnQkFDWixPQUFPLEVBQUUsRUFBRTtnQkFDWCxJQUFJO2FBQ1AsQ0FBQyxDQUFDO1FBRUgsbUJBQUEsVUFBVSxDQUFDLEtBQUssRUFBQyxDQUFDLGlCQUFpQixDQUFDLEdBQUc7WUFDbkMsSUFBSTtZQUNKLE1BQU07WUFDTixPQUFPO1NBQ1YsQ0FBQztRQUVGLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUc7WUFDcEIsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUM7SUFDTixDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW5zdXJlU3RvcmVNZXRhZGF0YSwgUmVjZWl2ZXJNZXRhRGF0YSwgUkVDRUlWRVJfTUVUQV9LRVkgfSBmcm9tICcuLi9pbnRlcm5hbC9pbnRlcm5hbHMnO1xuXG4vKipcbiAqIERlY29yYXRlcyBhIG1ldGhvZCB3aXRoIGEgcmVjZWl2ZXIgaW5mb3JtYXRpb25cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHN0YXRpYyBtZXRhZGF0YVxuICogQHJldHVybnMgLSBGYWN0b3J5IGZvciBkZWNvcmF0aW5nIG1ldGhvZFxuICovXG5leHBvcnQgZnVuY3Rpb24gUmVjZWl2ZXIob3B0aW9ucz86IFBhcnRpYWw8UmVjZWl2ZXJNZXRhRGF0YT4pOiBNZXRob2REZWNvcmF0b3Ige1xuICAgIHJldHVybiA8VD4odGFyZ2V0OiBhbnksIGtleTogc3RyaW5nIHwgc3ltYm9sLCBkZXNjcmlwdG9yOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxUPikgPT4ge1xuICAgICAgICBjb25zdCBpc05vdEZ1bmN0aW9uT3JOb3RTdGF0aWMgPSB0eXBlb2YgdGFyZ2V0LnByb3RvdHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgIWRlc2NyaXB0b3IgfHwgdHlwZW9mIHRhcmdldFtrZXldICE9PSAnZnVuY3Rpb24nO1xuXG4gICAgICAgIGlmIChpc05vdEZ1bmN0aW9uT3JOb3RTdGF0aWMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE9ubHkgc3RhdGljIGZ1bmN0aW9ucyBjYW4gYmUgZGVjb3JhdGVkIHdpdGggQFJlY2VpdmVyKCkgZGVjb3JhdG9yYCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgICAgIGtleSA9IGtleS50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWV0YSA9IGVuc3VyZVN0b3JlTWV0YWRhdGEodGFyZ2V0KTtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gb3B0aW9ucyAmJiBvcHRpb25zLmFjdGlvbjtcbiAgICAgICAgY29uc3QgdHlwZUlzTm90U3RyaW5nID0gYWN0aW9uICYmIHR5cGVvZiBhY3Rpb24udHlwZSAhPT0gJ3N0cmluZyc7XG5cbiAgICAgICAgaWYgKHR5cGVJc05vdFN0cmluZykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBY3Rpb24gdHlwZSBzaG91bGQgYmUgZGVmaW5lZCBhcyBhIHN0YXRpYyBwcm9wZXJ0eSBgdHlwZWAnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHR5cGU6IHN0cmluZyA9IGFjdGlvbiA/IGFjdGlvbi50eXBlISA6ICgob3B0aW9ucyAmJiBvcHRpb25zLnR5cGUpIHx8IGAke3RhcmdldC5uYW1lfS4ke2tleX1gKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5wYXlsb2FkO1xuXG4gICAgICAgIGlmIChtZXRhLmFjdGlvbnNbdHlwZV0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTWV0aG9kIGRlY29yYXRlZCB3aXRoIHN1Y2ggdHlwZSBcXGAke3R5cGV9XFxgIGFscmVhZHkgZXhpc3RzYCk7XG4gICAgICAgIH1cblxuICAgICAgICBtZXRhLmFjdGlvbnNbdHlwZV0gPSBbe1xuICAgICAgICAgICAgZm46IGAke2tleX1gLFxuICAgICAgICAgICAgb3B0aW9uczoge30sXG4gICAgICAgICAgICB0eXBlXG4gICAgICAgIH1dO1xuXG4gICAgICAgIGRlc2NyaXB0b3IudmFsdWUhW1JFQ0VJVkVSX01FVEFfS0VZXSA9IHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgIH07XG5cbiAgICAgICAgdGFyZ2V0LnByb3RvdHlwZVtrZXldID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV0uYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgIH07XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjZWl2ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvIiwic291cmNlcyI6WyJsaWIvY29yZS9kZWNvcmF0b3JzL3JlY2VpdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O01BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQW9CLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFRakcsTUFBTSxVQUFVLFFBQVEsQ0FBQyxPQUFtQztJQUN4RCxPQUFPLENBQUksTUFBVyxFQUFFLEdBQW9CLEVBQUUsVUFBc0MsRUFBRSxFQUFFOztjQUM5RSx3QkFBd0IsR0FBRyxPQUFPLE1BQU0sQ0FBQyxTQUFTLEtBQUssV0FBVyxJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFVBQVU7UUFFNUgsSUFBSSx3QkFBd0IsRUFBRTtZQUMxQixNQUFNLElBQUksU0FBUyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7U0FDNUY7UUFFRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUN6QixHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3hCOztjQUVLLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7O2NBQ2xDLE1BQU0sR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU07O2NBQ2xDLGVBQWUsR0FBRyxNQUFNLElBQUksT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVE7UUFFakUsSUFBSSxlQUFlLEVBQUU7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1NBQ2hGOztjQUVLLE9BQU8sR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU87O2NBQ3BDLFFBQVEsR0FBVyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDOztZQUVyRCxJQUFJLEdBQVcsbUJBQUEsSUFBSSxFQUFDO1FBQ3hCLElBQUksTUFBTSxFQUFFO1lBQ1IsSUFBSSxHQUFHLG1CQUFBLE1BQU0sQ0FBQyxJQUFJLEVBQUMsQ0FBQztTQUN2QjthQUFNOztrQkFDRyxXQUFXLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJOztrQkFDckMsVUFBVSxHQUFHLE9BQU8sUUFBUSxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO1lBQzNELElBQUksR0FBRyxXQUFXLElBQUksVUFBVSxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLElBQUksbUJBQW1CLENBQUMsQ0FBQztTQUNqRjtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDbEIsRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFO2dCQUNaLE9BQU8sRUFBRSxFQUFFO2dCQUNYLElBQUk7YUFDUCxDQUFDLENBQUM7UUFFSCxtQkFBQSxVQUFVLENBQUMsS0FBSyxFQUFDLENBQUMsaUJBQWlCLENBQUMsR0FBRztZQUNuQyxJQUFJO1lBQ0osTUFBTTtZQUNOLE9BQU87U0FDVixDQUFDO1FBRUYsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRztZQUNwQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBnZW5lcmF0ZSA9IHJlcXVpcmUoJ25hbm9pZC9nZW5lcmF0ZScpO1xuXG5pbXBvcnQgeyBlbnN1cmVTdG9yZU1ldGFkYXRhLCBSZWNlaXZlck1ldGFEYXRhLCBSRUNFSVZFUl9NRVRBX0tFWSB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbi8qKlxuICogRGVjb3JhdGVzIGEgbWV0aG9kIHdpdGggYSByZWNlaXZlciBpbmZvcm1hdGlvblxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgc3RhdGljIG1ldGFkYXRhXG4gKiBAcmV0dXJucyAtIEZhY3RvcnkgZm9yIGRlY29yYXRpbmcgbWV0aG9kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBSZWNlaXZlcihvcHRpb25zPzogUGFydGlhbDxSZWNlaXZlck1ldGFEYXRhPik6IE1ldGhvZERlY29yYXRvciB7XG4gICAgcmV0dXJuIDxUPih0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcgfCBzeW1ib2wsIGRlc2NyaXB0b3I6IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPFQ+KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzTm90RnVuY3Rpb25Pck5vdFN0YXRpYyA9IHR5cGVvZiB0YXJnZXQucHJvdG90eXBlID09PSAndW5kZWZpbmVkJyB8fCAhZGVzY3JpcHRvciB8fCB0eXBlb2YgdGFyZ2V0W2tleV0gIT09ICdmdW5jdGlvbic7XG5cbiAgICAgICAgaWYgKGlzTm90RnVuY3Rpb25Pck5vdFN0YXRpYykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgT25seSBzdGF0aWMgZnVuY3Rpb25zIGNhbiBiZSBkZWNvcmF0ZWQgd2l0aCBAUmVjZWl2ZXIoKSBkZWNvcmF0b3JgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3ltYm9sJykge1xuICAgICAgICAgICAga2V5ID0ga2V5LnRvU3RyaW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZXRhID0gZW5zdXJlU3RvcmVNZXRhZGF0YSh0YXJnZXQpO1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBvcHRpb25zICYmIG9wdGlvbnMuYWN0aW9uO1xuICAgICAgICBjb25zdCB0eXBlSXNOb3RTdHJpbmcgPSBhY3Rpb24gJiYgdHlwZW9mIGFjdGlvbi50eXBlICE9PSAnc3RyaW5nJztcblxuICAgICAgICBpZiAodHlwZUlzTm90U3RyaW5nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjdGlvbiB0eXBlIHNob3VsZCBiZSBkZWZpbmVkIGFzIGEgc3RhdGljIHByb3BlcnR5IGB0eXBlYCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5wYXlsb2FkO1xuICAgICAgICBjb25zdCBhY3Rpb25JZDogc3RyaW5nID0gZ2VuZXJhdGUoJzEyMzQ1Njc4OTBhYmNkZWYnLCAxMCk7XG5cbiAgICAgICAgbGV0IHR5cGU6IHN0cmluZyA9IG51bGwhO1xuICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICB0eXBlID0gYWN0aW9uLnR5cGUhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFR5cGUgPSBvcHRpb25zICYmIG9wdGlvbnMudHlwZTtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbVR5cGUgPSBgW0lEOiR7YWN0aW9uSWR9XSAke3RhcmdldC5uYW1lfS4ke2tleX1gO1xuICAgICAgICAgICAgdHlwZSA9IGRlZmF1bHRUeXBlIHx8IGN1c3RvbVR5cGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWV0YS5hY3Rpb25zW3R5cGVdKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1ldGhvZCBkZWNvcmF0ZWQgd2l0aCBzdWNoIHR5cGUgXFxgJHt0eXBlfVxcYCBhbHJlYWR5IGV4aXN0c2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgbWV0YS5hY3Rpb25zW3R5cGVdID0gW3tcbiAgICAgICAgICAgIGZuOiBgJHtrZXl9YCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHt9LFxuICAgICAgICAgICAgdHlwZVxuICAgICAgICB9XTtcblxuICAgICAgICBkZXNjcmlwdG9yLnZhbHVlIVtSRUNFSVZFUl9NRVRBX0tFWV0gPSB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICB9O1xuXG4gICAgICAgIHRhcmdldC5wcm90b3R5cGVba2V5XSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtrZXldLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICB9O1xufVxuIl19 |
@@ -5,2 +5,4 @@ /** | ||
*/ | ||
/** @type {?} */ | ||
var generate = require('nanoid/generate'); | ||
import { ensureStoreMetadata, RECEIVER_META_KEY } from '../internal/internals'; | ||
@@ -33,5 +35,17 @@ /** | ||
/** @type {?} */ | ||
var type = action ? (/** @type {?} */ (action.type)) : ((options && options.type) || target.name + "." + key); | ||
var payload = options && options.payload; | ||
/** @type {?} */ | ||
var payload = options && options.payload; | ||
var actionId = generate('1234567890abcdef', 10); | ||
/** @type {?} */ | ||
var type = (/** @type {?} */ (null)); | ||
if (action) { | ||
type = (/** @type {?} */ (action.type)); | ||
} | ||
else { | ||
/** @type {?} */ | ||
var defaultType = options && options.type; | ||
/** @type {?} */ | ||
var customType = "[ID:" + actionId + "] " + target.name + "." + key; | ||
type = defaultType || customType; | ||
} | ||
if (meta.actions[type]) { | ||
@@ -55,2 +69,2 @@ throw new Error("Method decorated with such type `" + type + "` already exists"); | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjZWl2ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvIiwic291cmNlcyI6WyJsaWIvY29yZS9kZWNvcmF0b3JzL3JlY2VpdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQW9CLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFRakcsTUFBTSxVQUFVLFFBQVEsQ0FBQyxPQUFtQztJQUN4RCxPQUFPLFVBQUksTUFBVyxFQUFFLEdBQW9CLEVBQUUsVUFBc0M7O1lBQzFFLHdCQUF3QixHQUFHLE9BQU8sTUFBTSxDQUFDLFNBQVMsS0FBSyxXQUFXLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssVUFBVTtRQUU1SCxJQUFJLHdCQUF3QixFQUFFO1lBQzFCLE1BQU0sSUFBSSxTQUFTLENBQUMsbUVBQW1FLENBQUMsQ0FBQztTQUM1RjtRQUVELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQ3pCLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDeEI7O1lBRUssSUFBSSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQzs7WUFDbEMsTUFBTSxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTTs7WUFDbEMsZUFBZSxHQUFHLE1BQU0sSUFBSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUTtRQUVqRSxJQUFJLGVBQWUsRUFBRTtZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7U0FDaEY7O1lBRUssSUFBSSxHQUFXLE1BQU0sQ0FBQyxDQUFDLENBQUMsbUJBQUEsTUFBTSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBTyxNQUFNLENBQUMsSUFBSSxTQUFJLEdBQUssQ0FBQzs7WUFDN0YsT0FBTyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTztRQUUxQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBcUMsSUFBSSxxQkFBbUIsQ0FBQyxDQUFDO1NBQ2pGO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUNsQixFQUFFLEVBQUUsS0FBRyxHQUFLO2dCQUNaLE9BQU8sRUFBRSxFQUFFO2dCQUNYLElBQUksTUFBQTthQUNQLENBQUMsQ0FBQztRQUVILG1CQUFBLFVBQVUsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHO1lBQ25DLElBQUksTUFBQTtZQUNKLE1BQU0sUUFBQTtZQUNOLE9BQU8sU0FBQTtTQUNWLENBQUM7UUFFRixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHO1lBQ3BCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVuc3VyZVN0b3JlTWV0YWRhdGEsIFJlY2VpdmVyTWV0YURhdGEsIFJFQ0VJVkVSX01FVEFfS0VZIH0gZnJvbSAnLi4vaW50ZXJuYWwvaW50ZXJuYWxzJztcblxuLyoqXG4gKiBEZWNvcmF0ZXMgYSBtZXRob2Qgd2l0aCBhIHJlY2VpdmVyIGluZm9ybWF0aW9uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciBjb25maWd1cmluZyBzdGF0aWMgbWV0YWRhdGFcbiAqIEByZXR1cm5zIC0gRmFjdG9yeSBmb3IgZGVjb3JhdGluZyBtZXRob2RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJlY2VpdmVyKG9wdGlvbnM/OiBQYXJ0aWFsPFJlY2VpdmVyTWV0YURhdGE+KTogTWV0aG9kRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gPFQ+KHRhcmdldDogYW55LCBrZXk6IHN0cmluZyB8IHN5bWJvbCwgZGVzY3JpcHRvcjogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8VD4pID0+IHtcbiAgICAgICAgY29uc3QgaXNOb3RGdW5jdGlvbk9yTm90U3RhdGljID0gdHlwZW9mIHRhcmdldC5wcm90b3R5cGUgPT09ICd1bmRlZmluZWQnIHx8ICFkZXNjcmlwdG9yIHx8IHR5cGVvZiB0YXJnZXRba2V5XSAhPT0gJ2Z1bmN0aW9uJztcblxuICAgICAgICBpZiAoaXNOb3RGdW5jdGlvbk9yTm90U3RhdGljKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBPbmx5IHN0YXRpYyBmdW5jdGlvbnMgY2FuIGJlIGRlY29yYXRlZCB3aXRoIEBSZWNlaXZlcigpIGRlY29yYXRvcmApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBrZXkgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgICAgICBrZXkgPSBrZXkudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1ldGEgPSBlbnN1cmVTdG9yZU1ldGFkYXRhKHRhcmdldCk7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IG9wdGlvbnMgJiYgb3B0aW9ucy5hY3Rpb247XG4gICAgICAgIGNvbnN0IHR5cGVJc05vdFN0cmluZyA9IGFjdGlvbiAmJiB0eXBlb2YgYWN0aW9uLnR5cGUgIT09ICdzdHJpbmcnO1xuXG4gICAgICAgIGlmICh0eXBlSXNOb3RTdHJpbmcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQWN0aW9uIHR5cGUgc2hvdWxkIGJlIGRlZmluZWQgYXMgYSBzdGF0aWMgcHJvcGVydHkgYHR5cGVgJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0eXBlOiBzdHJpbmcgPSBhY3Rpb24gPyBhY3Rpb24udHlwZSEgOiAoKG9wdGlvbnMgJiYgb3B0aW9ucy50eXBlKSB8fCBgJHt0YXJnZXQubmFtZX0uJHtrZXl9YCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBvcHRpb25zICYmIG9wdGlvbnMucGF5bG9hZDtcblxuICAgICAgICBpZiAobWV0YS5hY3Rpb25zW3R5cGVdKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1ldGhvZCBkZWNvcmF0ZWQgd2l0aCBzdWNoIHR5cGUgXFxgJHt0eXBlfVxcYCBhbHJlYWR5IGV4aXN0c2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgbWV0YS5hY3Rpb25zW3R5cGVdID0gW3tcbiAgICAgICAgICAgIGZuOiBgJHtrZXl9YCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHt9LFxuICAgICAgICAgICAgdHlwZVxuICAgICAgICB9XTtcblxuICAgICAgICBkZXNjcmlwdG9yLnZhbHVlIVtSRUNFSVZFUl9NRVRBX0tFWV0gPSB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICB9O1xuXG4gICAgICAgIHRhcmdldC5wcm90b3R5cGVba2V5XSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtrZXldLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICB9O1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjZWl2ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvIiwic291cmNlcyI6WyJsaWIvY29yZS9kZWNvcmF0b3JzL3JlY2VpdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0lBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQW9CLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFRakcsTUFBTSxVQUFVLFFBQVEsQ0FBQyxPQUFtQztJQUN4RCxPQUFPLFVBQUksTUFBVyxFQUFFLEdBQW9CLEVBQUUsVUFBc0M7O1lBQzFFLHdCQUF3QixHQUFHLE9BQU8sTUFBTSxDQUFDLFNBQVMsS0FBSyxXQUFXLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssVUFBVTtRQUU1SCxJQUFJLHdCQUF3QixFQUFFO1lBQzFCLE1BQU0sSUFBSSxTQUFTLENBQUMsbUVBQW1FLENBQUMsQ0FBQztTQUM1RjtRQUVELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQ3pCLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDeEI7O1lBRUssSUFBSSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQzs7WUFDbEMsTUFBTSxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTTs7WUFDbEMsZUFBZSxHQUFHLE1BQU0sSUFBSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUTtRQUVqRSxJQUFJLGVBQWUsRUFBRTtZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7U0FDaEY7O1lBRUssT0FBTyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTzs7WUFDcEMsUUFBUSxHQUFXLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7O1lBRXJELElBQUksR0FBVyxtQkFBQSxJQUFJLEVBQUM7UUFDeEIsSUFBSSxNQUFNLEVBQUU7WUFDUixJQUFJLEdBQUcsbUJBQUEsTUFBTSxDQUFDLElBQUksRUFBQyxDQUFDO1NBQ3ZCO2FBQU07O2dCQUNHLFdBQVcsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUk7O2dCQUNyQyxVQUFVLEdBQUcsU0FBTyxRQUFRLFVBQUssTUFBTSxDQUFDLElBQUksU0FBSSxHQUFLO1lBQzNELElBQUksR0FBRyxXQUFXLElBQUksVUFBVSxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXFDLElBQUkscUJBQW1CLENBQUMsQ0FBQztTQUNqRjtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDbEIsRUFBRSxFQUFFLEtBQUcsR0FBSztnQkFDWixPQUFPLEVBQUUsRUFBRTtnQkFDWCxJQUFJLE1BQUE7YUFDUCxDQUFDLENBQUM7UUFFSCxtQkFBQSxVQUFVLENBQUMsS0FBSyxFQUFDLENBQUMsaUJBQWlCLENBQUMsR0FBRztZQUNuQyxJQUFJLE1BQUE7WUFDSixNQUFNLFFBQUE7WUFDTixPQUFPLFNBQUE7U0FDVixDQUFDO1FBRUYsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRztZQUNwQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBnZW5lcmF0ZSA9IHJlcXVpcmUoJ25hbm9pZC9nZW5lcmF0ZScpO1xuXG5pbXBvcnQgeyBlbnN1cmVTdG9yZU1ldGFkYXRhLCBSZWNlaXZlck1ldGFEYXRhLCBSRUNFSVZFUl9NRVRBX0tFWSB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbi8qKlxuICogRGVjb3JhdGVzIGEgbWV0aG9kIHdpdGggYSByZWNlaXZlciBpbmZvcm1hdGlvblxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgc3RhdGljIG1ldGFkYXRhXG4gKiBAcmV0dXJucyAtIEZhY3RvcnkgZm9yIGRlY29yYXRpbmcgbWV0aG9kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBSZWNlaXZlcihvcHRpb25zPzogUGFydGlhbDxSZWNlaXZlck1ldGFEYXRhPik6IE1ldGhvZERlY29yYXRvciB7XG4gICAgcmV0dXJuIDxUPih0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcgfCBzeW1ib2wsIGRlc2NyaXB0b3I6IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPFQ+KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzTm90RnVuY3Rpb25Pck5vdFN0YXRpYyA9IHR5cGVvZiB0YXJnZXQucHJvdG90eXBlID09PSAndW5kZWZpbmVkJyB8fCAhZGVzY3JpcHRvciB8fCB0eXBlb2YgdGFyZ2V0W2tleV0gIT09ICdmdW5jdGlvbic7XG5cbiAgICAgICAgaWYgKGlzTm90RnVuY3Rpb25Pck5vdFN0YXRpYykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgT25seSBzdGF0aWMgZnVuY3Rpb25zIGNhbiBiZSBkZWNvcmF0ZWQgd2l0aCBAUmVjZWl2ZXIoKSBkZWNvcmF0b3JgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3ltYm9sJykge1xuICAgICAgICAgICAga2V5ID0ga2V5LnRvU3RyaW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZXRhID0gZW5zdXJlU3RvcmVNZXRhZGF0YSh0YXJnZXQpO1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBvcHRpb25zICYmIG9wdGlvbnMuYWN0aW9uO1xuICAgICAgICBjb25zdCB0eXBlSXNOb3RTdHJpbmcgPSBhY3Rpb24gJiYgdHlwZW9mIGFjdGlvbi50eXBlICE9PSAnc3RyaW5nJztcblxuICAgICAgICBpZiAodHlwZUlzTm90U3RyaW5nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjdGlvbiB0eXBlIHNob3VsZCBiZSBkZWZpbmVkIGFzIGEgc3RhdGljIHByb3BlcnR5IGB0eXBlYCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5wYXlsb2FkO1xuICAgICAgICBjb25zdCBhY3Rpb25JZDogc3RyaW5nID0gZ2VuZXJhdGUoJzEyMzQ1Njc4OTBhYmNkZWYnLCAxMCk7XG5cbiAgICAgICAgbGV0IHR5cGU6IHN0cmluZyA9IG51bGwhO1xuICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICB0eXBlID0gYWN0aW9uLnR5cGUhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFR5cGUgPSBvcHRpb25zICYmIG9wdGlvbnMudHlwZTtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbVR5cGUgPSBgW0lEOiR7YWN0aW9uSWR9XSAke3RhcmdldC5uYW1lfS4ke2tleX1gO1xuICAgICAgICAgICAgdHlwZSA9IGRlZmF1bHRUeXBlIHx8IGN1c3RvbVR5cGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWV0YS5hY3Rpb25zW3R5cGVdKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1ldGhvZCBkZWNvcmF0ZWQgd2l0aCBzdWNoIHR5cGUgXFxgJHt0eXBlfVxcYCBhbHJlYWR5IGV4aXN0c2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgbWV0YS5hY3Rpb25zW3R5cGVdID0gW3tcbiAgICAgICAgICAgIGZuOiBgJHtrZXl9YCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHt9LFxuICAgICAgICAgICAgdHlwZVxuICAgICAgICB9XTtcblxuICAgICAgICBkZXNjcmlwdG9yLnZhbHVlIVtSRUNFSVZFUl9NRVRBX0tFWV0gPSB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICB9O1xuXG4gICAgICAgIHRhcmdldC5wcm90b3R5cGVba2V5XSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtrZXldLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICB9O1xufVxuIl19 |
@@ -49,2 +49,4 @@ import { Injectable, Injector, NgModule, Self } from '@angular/core'; | ||
*/ | ||
/** @type {?} */ | ||
const generate = require('nanoid/generate'); | ||
/** | ||
@@ -76,5 +78,17 @@ * Decorates a method with a receiver information | ||
/** @type {?} */ | ||
const type = action ? (/** @type {?} */ (action.type)) : ((options && options.type) || `${target.name}.${key}`); | ||
const payload = options && options.payload; | ||
/** @type {?} */ | ||
const payload = options && options.payload; | ||
const actionId = generate('1234567890abcdef', 10); | ||
/** @type {?} */ | ||
let type = (/** @type {?} */ (null)); | ||
if (action) { | ||
type = (/** @type {?} */ (action.type)); | ||
} | ||
else { | ||
/** @type {?} */ | ||
const defaultType = options && options.type; | ||
/** @type {?} */ | ||
const customType = `[ID:${actionId}] ${target.name}.${key}`; | ||
type = defaultType || customType; | ||
} | ||
if (meta.actions[type]) { | ||
@@ -378,2 +392,2 @@ throw new Error(`Method decorated with such type \`${type}\` already exists`); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy1sYWJzLWVtaXR0ZXIuanMubWFwIiwic291cmNlcyI6WyJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci9saWIvY29yZS9pbnRlcm5hbC9pbnRlcm5hbHMudHMiLCJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci9saWIvY29yZS9kZWNvcmF0b3JzL3JlY2VpdmVyLnRzIiwibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvbGliL2NvcmUvc2VydmljZXMvaW5qZWN0b3ItYWNjZXNzb3Iuc2VydmljZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL2FjdGlvbnMvYWN0aW9ucy50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL2RlY29yYXRvcnMvZW1pdHRlci50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9lbWl0Lm1vZHVsZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL29wZXJhdG9ycy9vZi1lbWl0dGFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogU3RhdHVzIG9mIGEgZGlzcGF0Y2hlZCBhY3Rpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gQWN0aW9uU3RhdHVzIHtcbiAgICBEaXNwYXRjaGVkID0gJ0RJU1BBVENIRUQnLFxuICAgIFN1Y2Nlc3NmdWwgPSAnU1VDQ0VTU0ZVTCcsXG4gICAgQ2FuY2VsZWQgPSAnQ0FOQ0VMRUQnLFxuICAgIEVycm9yZWQgPSAnRVJST1JFRCcsXG59XG5cbi8qKlxuICogU3RhdGljIG1ldGFkYXRhIGZvciB0aGUgcmVjZWl2ZXIgZnVuY3Rpb25cbiAqXG4gKiBAcHJvcGVydHkgdHlwZSAtIEFjdGlvbiB0eXBlIChvcHRpb25hbClcbiAqIEBwcm9wZXJ0eSBhY3Rpb24gLSBDdXN0b20gYWN0aW9uIHRvIGRpc3BhdGNoIChvcHRpb25hbClcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWNlaXZlck1ldGFEYXRhPFQgZXh0ZW5kcyBGdW5jdGlvbiA9IGFueT4ge1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBwYXlsb2FkOiBhbnk7XG4gICAgYWN0aW9uOiBUeXBlPFQ+ICYge1xuICAgICAgICB0eXBlPzogc3RyaW5nO1xuICAgIH07XG59XG5cbi8qKlxuICogUGxhaW4gb2JqZWN0IHRoYXQgY29udGFpbnMgaGVscGVycyB0aGF0IGRpc3BhdGNoIHBheWxvYWRcbiAqXG4gKiBAcHJvcGVydHkgZW1pdCAtIEZ1bmN0aW9uIHRoYXQgZGlzcGF0Y2hlcyBwYXlsb2FkIHVuZGVyIHRoZSBob29kXG4gKiBAcHJvcGVydHkgZW1pdE1hbnkgLSBGdW5jdGlvbiB0aGF0IG1ha2VzIG11bHRpcGxlIGRpc3BhdGNoaW5nIHVuZGVyIHRoZSBob29kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1pdHRhYmxlPFQgPSBhbnksIFUgPSBhbnk+IHtcbiAgICBlbWl0KHBheWxvYWQ/OiBUKTogT2JzZXJ2YWJsZTxVPjtcbiAgICBlbWl0TWFueShwYXlsb2Fkcz86IFRbXSk6IE9ic2VydmFibGU8VT47XG59XG5cbi8qKlxuICogQmFzaWMgd3JhcHBlciBhcm91bmQgYWN0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSBzdGF0dXMgLSBTdGF0dXMgb2YgZGlzcGF0Y2hlZCBhY3Rpb25cbiAqIEBwcm9wZXJ0eSBhY3Rpb24gLSBBY3Rpb24gaW5zdGFuY2VcbiAqIEBwcm9wZXJ0eSBlcnJvciAtIEVycm9yIGlmIGhhcHBlbmVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uQ29udGV4dCB7XG4gICAgc3RhdHVzOiBBY3Rpb25TdGF0dXM7XG4gICAgYWN0aW9uOiBhbnk7XG4gICAgZXJyb3I/OiBFcnJvcjtcbn1cblxuLyoqXG4gKiBBY3Rpb24gY29udGV4dCB0aGF0IG1hcHMgYG9mRW1pdHRhYmxlYCBvcGVyYXRvclxuICpcbiAqIEBwcm9wZXJ0eSB0eXBlIC0gQWN0aW9uIHR5cGVcbiAqIEBwcm9wZXJ0eSBwYXlsb2FkIC0gRGlzcGF0Y2hlZCBkYXRhXG4gKiBAcHJvcGVydHkgZXJyb3IgLSBFcnJvciB0aGF0IGhhcyBiZWVuIHRocm93ZWQgb3IgdW5kZWZpbmVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PFQgPSBhbnk+IHtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgcGF5bG9hZDogVDtcbiAgICBlcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogSGFzaG1hcCB0aGF0IGNvbnRhaW5zIHR5cGVzIHRvIGZpbHRlciB1c2luZyBgb2ZFbWl0dGFibGVgIG9wZXJhdG9yXG4gKlxuICogQHByb3BlcnR5IGtleSAtIEFueSBzdHJpbmcga2V5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZXMge1xuICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBNRVRBX0tFWSA9ICdOR1hTX01FVEEnO1xuXG4vKipcbiAqIEBjb25zdCAtIFRoaXMgY29uc3RhbnQgaXMgYSBrZXkgZm9yIGRlZmluaW5nIHN0YXRpYyBtZXRhZGF0YSB1c2luZyBgQFJlY2VpdmVyYFxuICovXG5leHBvcnQgY29uc3QgUkVDRUlWRVJfTUVUQV9LRVkgPSAnTkdYU19SRUNFSVZFUl9NRVRBJztcblxuLyoqXG4gKiBUaGlzIGlzIGFuIGludGVybmFsIGBAbmd4cy9zdG9yZWAgZnVuY3Rpb24gYW5kIG5vdCBhY2Nlc3NhYmxlIGZyb20gb3V0c2lkZSwgZXZlbiB1c2luZyB0aGV0YSBzeW1ib2xcbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGFyZ2V0IHRvIGFwcGx5IHN0YXRpYyBtZXRhZGF0YSB0b1xuICogQHJldHVybnMgLSBTdGF0aWMgbWV0YWRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZVN0b3JlTWV0YWRhdGEodGFyZ2V0OiBGdW5jdGlvbik6IGFueSB7XG4gICAgaWYgKCF0YXJnZXQuaGFzT3duUHJvcGVydHkoTUVUQV9LRVkpKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRNZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIG5hbWU6IG51bGwsXG4gICAgICAgICAgICBhY3Rpb25zOiB7fSxcbiAgICAgICAgICAgIGRlZmF1bHRzOiB7fSxcbiAgICAgICAgICAgIHBhdGg6IG51bGwsXG4gICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICBpbnN0YW5jZTogbnVsbFxuICAgICAgICB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBNRVRBX0tFWSwgeyB2YWx1ZTogZGVmYXVsdE1ldGFkYXRhIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0U3RvcmVNZXRhZGF0YSh0YXJnZXQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB0YXJnZXQgLSBUYXJnZXQgdG8gZ2V0IHN0YXRpYyBtZXRhZGF0YSBmcm9tXG4gKiBAcmV0dXJucyAtIFN0YXRpYyBtZXRhZGF0YVxuICovXG5mdW5jdGlvbiBnZXRTdG9yZU1ldGFkYXRhKHRhcmdldDogRnVuY3Rpb24pOiBhbnkgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0YXJnZXRbTUVUQV9LRVldO1xufVxuIiwiaW1wb3J0IHsgZW5zdXJlU3RvcmVNZXRhZGF0YSwgUmVjZWl2ZXJNZXRhRGF0YSwgUkVDRUlWRVJfTUVUQV9LRVkgfSBmcm9tICcuLi9pbnRlcm5hbC9pbnRlcm5hbHMnO1xuXG4vKipcbiAqIERlY29yYXRlcyBhIG1ldGhvZCB3aXRoIGEgcmVjZWl2ZXIgaW5mb3JtYXRpb25cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHN0YXRpYyBtZXRhZGF0YVxuICogQHJldHVybnMgLSBGYWN0b3J5IGZvciBkZWNvcmF0aW5nIG1ldGhvZFxuICovXG5leHBvcnQgZnVuY3Rpb24gUmVjZWl2ZXIob3B0aW9ucz86IFBhcnRpYWw8UmVjZWl2ZXJNZXRhRGF0YT4pOiBNZXRob2REZWNvcmF0b3Ige1xuICAgIHJldHVybiA8VD4odGFyZ2V0OiBhbnksIGtleTogc3RyaW5nIHwgc3ltYm9sLCBkZXNjcmlwdG9yOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxUPikgPT4ge1xuICAgICAgICBjb25zdCBpc05vdEZ1bmN0aW9uT3JOb3RTdGF0aWMgPSB0eXBlb2YgdGFyZ2V0LnByb3RvdHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgIWRlc2NyaXB0b3IgfHwgdHlwZW9mIHRhcmdldFtrZXldICE9PSAnZnVuY3Rpb24nO1xuXG4gICAgICAgIGlmIChpc05vdEZ1bmN0aW9uT3JOb3RTdGF0aWMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE9ubHkgc3RhdGljIGZ1bmN0aW9ucyBjYW4gYmUgZGVjb3JhdGVkIHdpdGggQFJlY2VpdmVyKCkgZGVjb3JhdG9yYCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgICAgIGtleSA9IGtleS50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWV0YSA9IGVuc3VyZVN0b3JlTWV0YWRhdGEodGFyZ2V0KTtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gb3B0aW9ucyAmJiBvcHRpb25zLmFjdGlvbjtcbiAgICAgICAgY29uc3QgdHlwZUlzTm90U3RyaW5nID0gYWN0aW9uICYmIHR5cGVvZiBhY3Rpb24udHlwZSAhPT0gJ3N0cmluZyc7XG5cbiAgICAgICAgaWYgKHR5cGVJc05vdFN0cmluZykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBY3Rpb24gdHlwZSBzaG91bGQgYmUgZGVmaW5lZCBhcyBhIHN0YXRpYyBwcm9wZXJ0eSBgdHlwZWAnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHR5cGU6IHN0cmluZyA9IGFjdGlvbiA/IGFjdGlvbi50eXBlISA6ICgob3B0aW9ucyAmJiBvcHRpb25zLnR5cGUpIHx8IGAke3RhcmdldC5uYW1lfS4ke2tleX1gKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5wYXlsb2FkO1xuXG4gICAgICAgIGlmIChtZXRhLmFjdGlvbnNbdHlwZV0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTWV0aG9kIGRlY29yYXRlZCB3aXRoIHN1Y2ggdHlwZSBcXGAke3R5cGV9XFxgIGFscmVhZHkgZXhpc3RzYCk7XG4gICAgICAgIH1cblxuICAgICAgICBtZXRhLmFjdGlvbnNbdHlwZV0gPSBbe1xuICAgICAgICAgICAgZm46IGAke2tleX1gLFxuICAgICAgICAgICAgb3B0aW9uczoge30sXG4gICAgICAgICAgICB0eXBlXG4gICAgICAgIH1dO1xuXG4gICAgICAgIGRlc2NyaXB0b3IudmFsdWUhW1JFQ0VJVkVSX01FVEFfS0VZXSA9IHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgIH07XG5cbiAgICAgICAgdGFyZ2V0LnByb3RvdHlwZVtrZXldID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV0uYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEFsbG93cyBtdWx0aXBsZSBkZWNvcmF0b3JzIHRvIGdldCBhY2Nlc3MgdG8gdGhlIERJIHN0b3JlXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJbmplY3RvckFjY2Vzc29yIHtcbiAgICAvKipcbiAgICAgKiBJbmplY3RvciBmb3IgYWNjZXNzaW5nIERJXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5qZWN0b3I6IEluamVjdG9yIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIEluamVjdG9yQWNjZXNzb3IgaW5zdGFuY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmplY3RvciAtIFJvb3QgaW5qZWN0b3JcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgSW5qZWN0b3JBY2Nlc3Nvci5pbmplY3RvciA9IGluamVjdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIC0gRXJyb3IgaWYgYE5neHNFbWl0UGx1Z2luTW9kdWxlYCBpcyBub3QgaW1wb3J0ZWQgb3IgaW5qZWN0b3IgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEluamVjdG9yKCk6IG5ldmVyIHwgSW5qZWN0b3Ige1xuICAgICAgICBpZiAoIXRoaXMuaW5qZWN0b3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91J3ZlIGZvcmdvdHRlbiB0byBpbXBvcnQgXFxgTmd4c0VtaXRQbHVnaW5Nb2R1bGVcXGBgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yO1xuICAgIH1cbn1cbiIsIi8qKlxuICogVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgZGVmYXVsdCBhY3Rpb24gd2hlbiB0aGUgdXNlciBkb2Vzbid0IHBhc3MgYW55IGN1c3RvbSBhY3Rpb24gYXMgYW4gYXJndW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIEVtaXR0ZXJBY3Rpb248VCA9IGFueT4ge1xuICAgIC8qKlxuICAgICAqIEFjdGlvbiB0eXBlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyB0eXBlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgRW1pdHRlckFjdGlvbiBpbnN0YW5jZVxuICAgICAqXG4gICAgICogQHBhcmFtIHBheWxvYWQgLSBEYXRhIHRvIGRpc3BhdGNoXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ/OiBUKSB7fVxufVxuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUkVDRUlWRVJfTUVUQV9LRVksIEVtaXR0YWJsZSwgUmVjZWl2ZXJNZXRhRGF0YSB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5pbXBvcnQgeyBFbWl0dGVyQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy9hY3Rpb25zJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEVtaXRTdG9yZSBleHRlbmRzIFN0b3JlIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcmVjZWl2ZXIgLSBSZWZlcmVuY2UgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbiBmcm9tIHRoZSBzdG9yZVxuICAgICAqIEByZXR1cm5zIC0gQSBwbGFpbiBvYmplY3Qgd2l0aCBhbiBgZW1pdGAgZnVuY3Rpb24gZm9yIGNhbGxpbmcgZW1pdHRlclxuICAgICAqL1xuICAgIHB1YmxpYyBlbWl0dGVyPFQgPSBhbnksIFUgPSBhbnk+KHJlY2VpdmVyOiBGdW5jdGlvbik6IEVtaXR0YWJsZTxULCBVPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhOiBSZWNlaXZlck1ldGFEYXRhID0gcmVjZWl2ZXJbUkVDRUlWRVJfTUVUQV9LRVldO1xuXG4gICAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSSBjYW4ndCBzZWVtIHRvIGZpbmQgc3RhdGljIG1ldGFkYXRhLiBIYXZlIHlvdSBkZWNvcmF0ZWQgJHtyZWNlaXZlci5uYW1lfSB3aXRoIEBSZWNlaXZlcigpP2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVtaXQ6IChwYXlsb2FkPzogVCkgPT4gdGhpcy5kaXNwYXRjaFNpbmdsZTxULCBVPihtZXRhZGF0YSwgcGF5bG9hZCksXG4gICAgICAgICAgICBlbWl0TWFueTogKHBheWxvYWRzPzogVFtdKSA9PiB0aGlzLmRpc3BhdGNoTWFueTxULCBVPihtZXRhZGF0YSwgcGF5bG9hZHMpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG1ldGFkYXRhIC0gUmVjZWl2ZXIgZnVuY3Rpb24gbWV0YWRhdGFcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCAtIERhdGEgdG8gZGlzcGF0Y2hcbiAgICAgKiBAcmV0dXJucyAtIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyBldmVudHMgYWZ0ZXIgZGlzcGF0Y2hcbiAgICAgKi9cbiAgICBwcml2YXRlIGRpc3BhdGNoU2luZ2xlPFQsIFU+KG1ldGFkYXRhOiBSZWNlaXZlck1ldGFEYXRhLCBwYXlsb2FkPzogVCk6IE9ic2VydmFibGU8VT4ge1xuICAgICAgICBFbWl0dGVyQWN0aW9uLnR5cGUgPSBtZXRhZGF0YS50eXBlO1xuXG4gICAgICAgIGNvbnN0IHNob3VsZEFwcGx5RGVmYXVsdFBheWxvYWQgPSB0eXBlb2YgcGF5bG9hZCA9PT0gJ3VuZGVmaW5lZCcgJiYgbWV0YWRhdGEucGF5bG9hZCAhPT0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoc2hvdWxkQXBwbHlEZWZhdWx0UGF5bG9hZCkge1xuICAgICAgICAgICAgcGF5bG9hZCA9IG1ldGFkYXRhLnBheWxvYWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBBY3Rpb246IFR5cGU8YW55PiA9IG1ldGFkYXRhLmFjdGlvbiA/IG1ldGFkYXRhLmFjdGlvbiA6IEVtaXR0ZXJBY3Rpb247XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKG5ldyBBY3Rpb24ocGF5bG9hZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSAtIFJlY2VpdmVyIGZ1bmN0aW9uIG1ldGFkYXRhXG4gICAgICogQHBhcmFtIHBheWxvYWRzIC0gQXJyYXkgd2l0aCBkYXRhIHRvIGRpc3BhdGNoXG4gICAgICogQHJldHVybnMgLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZXZlbnRzIGFmdGVyIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNwYXRjaE1hbnk8VCwgVT4obWV0YWRhdGE6IFJlY2VpdmVyTWV0YURhdGEsIHBheWxvYWRzPzogVFtdKTogT2JzZXJ2YWJsZTxVPiB7XG4gICAgICAgIEVtaXR0ZXJBY3Rpb24udHlwZSA9IG1ldGFkYXRhLnR5cGU7XG5cbiAgICAgICAgY29uc3QgYWN0aW9uczogb2JqZWN0W10gPSBbXTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkcykpIHtcbiAgICAgICAgICAgIGNvbnN0IEFjdGlvbjogVHlwZTxhbnk+ID0gbWV0YWRhdGEuYWN0aW9uID8gbWV0YWRhdGEuYWN0aW9uIDogRW1pdHRlckFjdGlvbjtcbiAgICAgICAgICAgIHBheWxvYWRzLmZvckVhY2goKHBheWxvYWQ6IFQpID0+IHtcbiAgICAgICAgICAgICAgICBhY3Rpb25zLnB1c2gobmV3IEFjdGlvbihwYXlsb2FkKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGFjdGlvbnMpO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IEluamVjdG9yQWNjZXNzb3IgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbmplY3Rvci1hY2Nlc3Nvci5zZXJ2aWNlJztcbmltcG9ydCB7IEVtaXRTdG9yZSB9IGZyb20gJy4uL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZSc7XG5cbi8qKlxuICogRGVjb3JhdGVzIGEgcHJvcGVydHkgYW5kIGRlZmluZXMgbmV3IGdldHRlclxuICpcbiAqIEBwYXJhbSByZWNlaXZlciAtIFJlZmVyZW5jZSB0byB0aGUgc3RhdGljIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyAtIEZhY3RvcnkgZnVuY3Rpb24gZm9yIGRlY29yYXRpbmcgcHJvcGVydGllc1xuICovXG5leHBvcnQgZnVuY3Rpb24gRW1pdHRlcihyZWNlaXZlcjogRnVuY3Rpb24pOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gICAgcmV0dXJuICh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcgfCBzeW1ib2wpID0+IHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICAgICAgICBnZXQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9yZSA9IEluamVjdG9yQWNjZXNzb3IuZ2V0SW5qZWN0b3IoKS5nZXQ8RW1pdFN0b3JlPihFbWl0U3RvcmUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBzdG9yZS5lbWl0dGVyKHJlY2VpdmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEVtaXRTdG9yZSB9IGZyb20gJy4vY29yZS9zZXJ2aWNlcy9lbWl0LXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5qZWN0b3JBY2Nlc3NvciB9IGZyb20gJy4vY29yZS9zZXJ2aWNlcy9pbmplY3Rvci1hY2Nlc3Nvci5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgRW1pdFN0b3JlLFxuICAgICAgICBJbmplY3RvckFjY2Vzc29yXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hzRW1pdFBsdWdpbk1vZHVsZSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgcHVibGljIGluamVjdG9yQWNjZXNzb3I6IEluamVjdG9yQWNjZXNzb3JcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyAtIEEgd3JhcHBlciBhcm91bmQgYE5nTW9kdWxlYFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5neHNFbWl0UGx1Z2luTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogTmd4c0VtaXRQbHVnaW5Nb2R1bGVcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPcGVyYXRvckZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUkVDRUlWRVJfTUVUQV9LRVksIEFjdGlvblN0YXR1cywgQWN0aW9uQ29udGV4dCwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0LCBSZWNlaXZlck1ldGFEYXRhLCBUeXBlcyB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbi8qKlxuICogYGdldFJlY2VpdmVyVHlwZXMoW0NvdW50ZXJTdGF0ZS5pbmNyZW1lbnQsIENvdW50ZXJTdGF0ZS5kZWNyZW1lbnRdKWBcbiAqIHdpbGwgcmV0dXJuIGEgaGFzaG1hcCA9PiBgeyAnQ291bnRlclN0YXRlLmluY3JlbWVudCc6IHRydWUsICdDb3VudGVyU3RhdGUuZGVjcmVtZW50JzogdHJ1ZSB9YFxuICpcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnNcbiAqIEByZXR1cm5zIC0gQSBrZXktdmFsdWUgbWFwIHdoZXJlIGEga2V5IGlzIGEgdHlwZSBhbmQgdmFsdWUgaXMgYHRydWVgXG4gKi9cbmZ1bmN0aW9uIGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogVHlwZXMge1xuICAgIGNvbnN0IHR5cGVzOiBUeXBlcyA9IHt9O1xuXG4gICAgbGV0IGkgPSByZWNlaXZlcnMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgY29uc3QgcmVjZWl2ZXIgPSByZWNlaXZlcnNbaV07XG4gICAgICAgIGNvbnN0IGlzTm90RnVuY3Rpb24gPSB0eXBlb2YgcmVjZWl2ZXIgIT09ICdmdW5jdGlvbic7XG5cbiAgICAgICAgaWYgKGlzTm90RnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJlY2VpdmVyIHNob3VsZCBiZSBhIGZ1bmN0aW9uLCBnb3QgJHtyZWNlaXZlcn1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1ldGE6IFJlY2VpdmVyTWV0YURhdGEgPSByZWNlaXZlcltSRUNFSVZFUl9NRVRBX0tFWV07XG4gICAgICAgIGNvbnN0IGlzTm90QW5ub3RhdGVkID0gIW1ldGEgfHwgIW1ldGEudHlwZTtcblxuICAgICAgICBpZiAoaXNOb3RBbm5vdGF0ZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtyZWNlaXZlci5uYW1lfSBzaG91bGQgYmUgZGVjb3JhdGVkIHVzaW5nIEBSZWNlaXZlcigpIGRlY29yYXRvcmApO1xuICAgICAgICB9XG5cbiAgICAgICAgdHlwZXNbbWV0YS50eXBlXSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVzO1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggYEBSZWNlaXZlcigpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGVEaXNwYXRjaGVkKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5EaXNwYXRjaGVkKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlU3VjY2Vzc2Z1bCguLi5yZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gb2ZFbWl0dGFibGUoZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnMpLCBBY3Rpb25TdGF0dXMuU3VjY2Vzc2Z1bCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZUNhbmNlbGVkKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5DYW5jZWxlZCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZUVycm9yZWQoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLkVycm9yZWQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB0eXBlcyAtIEhhc2htYXAgdGhhdCBjb250YWlucyBhY3Rpb24gdHlwZXNcbiAqIEBwYXJhbSBzdGF0dXMgLSBTdGF0dXMgb2YgdGhlIGRpc3BhdGNoZWQgYWN0aW9uXG4gKiBAcmV0dXJucyAtIFJ4SlMgZmFjdG9yeSBvcGVyYXRvciBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGUodHlwZXM6IFR5cGVzLCBzdGF0dXM6IEFjdGlvblN0YXR1cyk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPEFjdGlvbkNvbnRleHQ+KSA9PiB7XG4gICAgICAgIHJldHVybiBzb3VyY2UucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoY3R4OiBBY3Rpb25Db250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzaE1hcEhhc1R5cGUgPSB0eXBlc1tnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGN0eC5hY3Rpb24pXTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0SGFzVHJhbnNtaXR0ZWRTdGF0dXMgPSBjdHguc3RhdHVzID09PSBzdGF0dXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hNYXBIYXNUeXBlICYmIGNvbnRleHRIYXNUcmFuc21pdHRlZFN0YXR1cztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCh7IGFjdGlvbiwgZXJyb3IgfTogQWN0aW9uQ29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGFjdGlvbiksXG4gICAgICAgICAgICAgICAgcGF5bG9hZDogYWN0aW9uLnBheWxvYWQsXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgIH07XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBMEVBLE1BQWEsUUFBUSxHQUFHLFdBQVc7Ozs7O0FBS25DLE1BQWEsaUJBQWlCLEdBQUcsb0JBQW9COzs7Ozs7O0FBUXJELFNBQWdCLG1CQUFtQixDQUFDLE1BQWdCO0lBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFOztjQUM1QixlQUFlLEdBQUc7WUFDcEIsSUFBSSxFQUFFLElBQUk7WUFDVixPQUFPLEVBQUUsRUFBRTtZQUNYLFFBQVEsRUFBRSxFQUFFO1lBQ1osSUFBSSxFQUFFLElBQUk7WUFDVixRQUFRLEVBQUUsRUFBRTtZQUNaLFFBQVEsRUFBRSxJQUFJO1NBQ2pCO1FBQ0QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7S0FDdkU7SUFDRCxPQUFPLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0NBQ25DOzs7OztBQU1ELFNBQVMsZ0JBQWdCLENBQUMsTUFBZ0I7SUFDdEMsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Q0FDM0I7Ozs7OztBQzVHRDs7Ozs7O0FBUUEsU0FBZ0IsUUFBUSxDQUFDLE9BQW1DO0lBQ3hELE9BQU8sQ0FBSSxNQUFXLEVBQUUsR0FBb0IsRUFBRSxVQUFzQzs7Y0FDMUUsd0JBQXdCLEdBQUcsT0FBTyxNQUFNLENBQUMsU0FBUyxLQUFLLFdBQVcsSUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxVQUFVO1FBRTVILElBQUksd0JBQXdCLEVBQUU7WUFDMUIsTUFBTSxJQUFJLFNBQVMsQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO1NBQzVGO1FBRUQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7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 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy1sYWJzLWVtaXR0ZXIuanMubWFwIiwic291cmNlcyI6WyJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci9saWIvY29yZS9pbnRlcm5hbC9pbnRlcm5hbHMudHMiLCJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci9saWIvY29yZS9kZWNvcmF0b3JzL3JlY2VpdmVyLnRzIiwibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvbGliL2NvcmUvc2VydmljZXMvaW5qZWN0b3ItYWNjZXNzb3Iuc2VydmljZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL2FjdGlvbnMvYWN0aW9ucy50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL2RlY29yYXRvcnMvZW1pdHRlci50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9lbWl0Lm1vZHVsZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL29wZXJhdG9ycy9vZi1lbWl0dGFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogU3RhdHVzIG9mIGEgZGlzcGF0Y2hlZCBhY3Rpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gQWN0aW9uU3RhdHVzIHtcbiAgICBEaXNwYXRjaGVkID0gJ0RJU1BBVENIRUQnLFxuICAgIFN1Y2Nlc3NmdWwgPSAnU1VDQ0VTU0ZVTCcsXG4gICAgQ2FuY2VsZWQgPSAnQ0FOQ0VMRUQnLFxuICAgIEVycm9yZWQgPSAnRVJST1JFRCcsXG59XG5cbi8qKlxuICogU3RhdGljIG1ldGFkYXRhIGZvciB0aGUgcmVjZWl2ZXIgZnVuY3Rpb25cbiAqXG4gKiBAcHJvcGVydHkgdHlwZSAtIEFjdGlvbiB0eXBlIChvcHRpb25hbClcbiAqIEBwcm9wZXJ0eSBhY3Rpb24gLSBDdXN0b20gYWN0aW9uIHRvIGRpc3BhdGNoIChvcHRpb25hbClcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWNlaXZlck1ldGFEYXRhPFQgZXh0ZW5kcyBGdW5jdGlvbiA9IGFueT4ge1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBwYXlsb2FkOiBhbnk7XG4gICAgYWN0aW9uOiBUeXBlPFQ+ICYge1xuICAgICAgICB0eXBlPzogc3RyaW5nO1xuICAgIH07XG59XG5cbi8qKlxuICogUGxhaW4gb2JqZWN0IHRoYXQgY29udGFpbnMgaGVscGVycyB0aGF0IGRpc3BhdGNoIHBheWxvYWRcbiAqXG4gKiBAcHJvcGVydHkgZW1pdCAtIEZ1bmN0aW9uIHRoYXQgZGlzcGF0Y2hlcyBwYXlsb2FkIHVuZGVyIHRoZSBob29kXG4gKiBAcHJvcGVydHkgZW1pdE1hbnkgLSBGdW5jdGlvbiB0aGF0IG1ha2VzIG11bHRpcGxlIGRpc3BhdGNoaW5nIHVuZGVyIHRoZSBob29kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1pdHRhYmxlPFQgPSBhbnksIFUgPSBhbnk+IHtcbiAgICBlbWl0KHBheWxvYWQ/OiBUKTogT2JzZXJ2YWJsZTxVPjtcbiAgICBlbWl0TWFueShwYXlsb2Fkcz86IFRbXSk6IE9ic2VydmFibGU8VT47XG59XG5cbi8qKlxuICogQmFzaWMgd3JhcHBlciBhcm91bmQgYWN0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSBzdGF0dXMgLSBTdGF0dXMgb2YgZGlzcGF0Y2hlZCBhY3Rpb25cbiAqIEBwcm9wZXJ0eSBhY3Rpb24gLSBBY3Rpb24gaW5zdGFuY2VcbiAqIEBwcm9wZXJ0eSBlcnJvciAtIEVycm9yIGlmIGhhcHBlbmVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uQ29udGV4dCB7XG4gICAgc3RhdHVzOiBBY3Rpb25TdGF0dXM7XG4gICAgYWN0aW9uOiBhbnk7XG4gICAgZXJyb3I/OiBFcnJvcjtcbn1cblxuLyoqXG4gKiBBY3Rpb24gY29udGV4dCB0aGF0IG1hcHMgYG9mRW1pdHRhYmxlYCBvcGVyYXRvclxuICpcbiAqIEBwcm9wZXJ0eSB0eXBlIC0gQWN0aW9uIHR5cGVcbiAqIEBwcm9wZXJ0eSBwYXlsb2FkIC0gRGlzcGF0Y2hlZCBkYXRhXG4gKiBAcHJvcGVydHkgZXJyb3IgLSBFcnJvciB0aGF0IGhhcyBiZWVuIHRocm93ZWQgb3IgdW5kZWZpbmVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PFQgPSBhbnk+IHtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgcGF5bG9hZDogVDtcbiAgICBlcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogSGFzaG1hcCB0aGF0IGNvbnRhaW5zIHR5cGVzIHRvIGZpbHRlciB1c2luZyBgb2ZFbWl0dGFibGVgIG9wZXJhdG9yXG4gKlxuICogQHByb3BlcnR5IGtleSAtIEFueSBzdHJpbmcga2V5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZXMge1xuICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBNRVRBX0tFWSA9ICdOR1hTX01FVEEnO1xuXG4vKipcbiAqIEBjb25zdCAtIFRoaXMgY29uc3RhbnQgaXMgYSBrZXkgZm9yIGRlZmluaW5nIHN0YXRpYyBtZXRhZGF0YSB1c2luZyBgQFJlY2VpdmVyYFxuICovXG5leHBvcnQgY29uc3QgUkVDRUlWRVJfTUVUQV9LRVkgPSAnTkdYU19SRUNFSVZFUl9NRVRBJztcblxuLyoqXG4gKiBUaGlzIGlzIGFuIGludGVybmFsIGBAbmd4cy9zdG9yZWAgZnVuY3Rpb24gYW5kIG5vdCBhY2Nlc3NhYmxlIGZyb20gb3V0c2lkZSwgZXZlbiB1c2luZyB0aGV0YSBzeW1ib2xcbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGFyZ2V0IHRvIGFwcGx5IHN0YXRpYyBtZXRhZGF0YSB0b1xuICogQHJldHVybnMgLSBTdGF0aWMgbWV0YWRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZVN0b3JlTWV0YWRhdGEodGFyZ2V0OiBGdW5jdGlvbik6IGFueSB7XG4gICAgaWYgKCF0YXJnZXQuaGFzT3duUHJvcGVydHkoTUVUQV9LRVkpKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRNZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIG5hbWU6IG51bGwsXG4gICAgICAgICAgICBhY3Rpb25zOiB7fSxcbiAgICAgICAgICAgIGRlZmF1bHRzOiB7fSxcbiAgICAgICAgICAgIHBhdGg6IG51bGwsXG4gICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICBpbnN0YW5jZTogbnVsbFxuICAgICAgICB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBNRVRBX0tFWSwgeyB2YWx1ZTogZGVmYXVsdE1ldGFkYXRhIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0U3RvcmVNZXRhZGF0YSh0YXJnZXQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB0YXJnZXQgLSBUYXJnZXQgdG8gZ2V0IHN0YXRpYyBtZXRhZGF0YSBmcm9tXG4gKiBAcmV0dXJucyAtIFN0YXRpYyBtZXRhZGF0YVxuICovXG5mdW5jdGlvbiBnZXRTdG9yZU1ldGFkYXRhKHRhcmdldDogRnVuY3Rpb24pOiBhbnkgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0YXJnZXRbTUVUQV9LRVldO1xufVxuIiwiY29uc3QgZ2VuZXJhdGUgPSByZXF1aXJlKCduYW5vaWQvZ2VuZXJhdGUnKTtcblxuaW1wb3J0IHsgZW5zdXJlU3RvcmVNZXRhZGF0YSwgUmVjZWl2ZXJNZXRhRGF0YSwgUkVDRUlWRVJfTUVUQV9LRVkgfSBmcm9tICcuLi9pbnRlcm5hbC9pbnRlcm5hbHMnO1xuXG4vKipcbiAqIERlY29yYXRlcyBhIG1ldGhvZCB3aXRoIGEgcmVjZWl2ZXIgaW5mb3JtYXRpb25cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHN0YXRpYyBtZXRhZGF0YVxuICogQHJldHVybnMgLSBGYWN0b3J5IGZvciBkZWNvcmF0aW5nIG1ldGhvZFxuICovXG5leHBvcnQgZnVuY3Rpb24gUmVjZWl2ZXIob3B0aW9ucz86IFBhcnRpYWw8UmVjZWl2ZXJNZXRhRGF0YT4pOiBNZXRob2REZWNvcmF0b3Ige1xuICAgIHJldHVybiA8VD4odGFyZ2V0OiBhbnksIGtleTogc3RyaW5nIHwgc3ltYm9sLCBkZXNjcmlwdG9yOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxUPikgPT4ge1xuICAgICAgICBjb25zdCBpc05vdEZ1bmN0aW9uT3JOb3RTdGF0aWMgPSB0eXBlb2YgdGFyZ2V0LnByb3RvdHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgIWRlc2NyaXB0b3IgfHwgdHlwZW9mIHRhcmdldFtrZXldICE9PSAnZnVuY3Rpb24nO1xuXG4gICAgICAgIGlmIChpc05vdEZ1bmN0aW9uT3JOb3RTdGF0aWMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE9ubHkgc3RhdGljIGZ1bmN0aW9ucyBjYW4gYmUgZGVjb3JhdGVkIHdpdGggQFJlY2VpdmVyKCkgZGVjb3JhdG9yYCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgICAgIGtleSA9IGtleS50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWV0YSA9IGVuc3VyZVN0b3JlTWV0YWRhdGEodGFyZ2V0KTtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gb3B0aW9ucyAmJiBvcHRpb25zLmFjdGlvbjtcbiAgICAgICAgY29uc3QgdHlwZUlzTm90U3RyaW5nID0gYWN0aW9uICYmIHR5cGVvZiBhY3Rpb24udHlwZSAhPT0gJ3N0cmluZyc7XG5cbiAgICAgICAgaWYgKHR5cGVJc05vdFN0cmluZykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBY3Rpb24gdHlwZSBzaG91bGQgYmUgZGVmaW5lZCBhcyBhIHN0YXRpYyBwcm9wZXJ0eSBgdHlwZWAnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBvcHRpb25zICYmIG9wdGlvbnMucGF5bG9hZDtcbiAgICAgICAgY29uc3QgYWN0aW9uSWQ6IHN0cmluZyA9IGdlbmVyYXRlKCcxMjM0NTY3ODkwYWJjZGVmJywgMTApO1xuXG4gICAgICAgIGxldCB0eXBlOiBzdHJpbmcgPSBudWxsITtcbiAgICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICAgICAgdHlwZSA9IGFjdGlvbi50eXBlITtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRUeXBlID0gb3B0aW9ucyAmJiBvcHRpb25zLnR5cGU7XG4gICAgICAgICAgICBjb25zdCBjdXN0b21UeXBlID0gYFtJRDoke2FjdGlvbklkfV0gJHt0YXJnZXQubmFtZX0uJHtrZXl9YDtcbiAgICAgICAgICAgIHR5cGUgPSBkZWZhdWx0VHlwZSB8fCBjdXN0b21UeXBlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1ldGEuYWN0aW9uc1t0eXBlXSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNZXRob2QgZGVjb3JhdGVkIHdpdGggc3VjaCB0eXBlIFxcYCR7dHlwZX1cXGAgYWxyZWFkeSBleGlzdHNgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1ldGEuYWN0aW9uc1t0eXBlXSA9IFt7XG4gICAgICAgICAgICBmbjogYCR7a2V5fWAsXG4gICAgICAgICAgICBvcHRpb25zOiB7fSxcbiAgICAgICAgICAgIHR5cGVcbiAgICAgICAgfV07XG5cbiAgICAgICAgZGVzY3JpcHRvci52YWx1ZSFbUkVDRUlWRVJfTUVUQV9LRVldID0ge1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgfTtcblxuICAgICAgICB0YXJnZXQucHJvdG90eXBlW2tleV0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXRba2V5XS5hcHBseSh0YXJnZXQsIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQWxsb3dzIG11bHRpcGxlIGRlY29yYXRvcnMgdG8gZ2V0IGFjY2VzcyB0byB0aGUgREkgc3RvcmVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEluamVjdG9yQWNjZXNzb3Ige1xuICAgIC8qKlxuICAgICAqIEluamVjdG9yIGZvciBhY2Nlc3NpbmcgRElcbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyBpbmplY3RvcjogSW5qZWN0b3IgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgSW5qZWN0b3JBY2Nlc3NvciBpbnN0YW5jZVxuICAgICAqXG4gICAgICogQHBhcmFtIGluamVjdG9yIC0gUm9vdCBpbmplY3RvclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBJbmplY3RvckFjY2Vzc29yLmluamVjdG9yID0gaW5qZWN0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgLSBFcnJvciBpZiBgTmd4c0VtaXRQbHVnaW5Nb2R1bGVgIGlzIG5vdCBpbXBvcnRlZCBvciBpbmplY3RvciBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5qZWN0b3IoKTogbmV2ZXIgfCBJbmplY3RvciB7XG4gICAgICAgIGlmICghdGhpcy5pbmplY3Rvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UndmUgZm9yZ290dGVuIHRvIGltcG9ydCBcXGBOZ3hzRW1pdFBsdWdpbk1vZHVsZVxcYGApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0b3I7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBUaGlzIGNsYXNzIGlzIHVzZWQgYXMgYSBkZWZhdWx0IGFjdGlvbiB3aGVuIHRoZSB1c2VyIGRvZXNuJ3QgcGFzcyBhbnkgY3VzdG9tIGFjdGlvbiBhcyBhbiBhcmd1bWVudFxuICovXG5leHBvcnQgY2xhc3MgRW1pdHRlckFjdGlvbjxUID0gYW55PiB7XG4gICAgLyoqXG4gICAgICogQWN0aW9uIHR5cGVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHR5cGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBFbWl0dGVyQWN0aW9uIGluc3RhbmNlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCAtIERhdGEgdG8gZGlzcGF0Y2hcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZD86IFQpIHt9XG59XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBSRUNFSVZFUl9NRVRBX0tFWSwgRW1pdHRhYmxlLCBSZWNlaXZlck1ldGFEYXRhIH0gZnJvbSAnLi4vaW50ZXJuYWwvaW50ZXJuYWxzJztcbmltcG9ydCB7IEVtaXR0ZXJBY3Rpb24gfSBmcm9tICcuLi9hY3Rpb25zL2FjdGlvbnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRW1pdFN0b3JlIGV4dGVuZHMgU3RvcmUge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSByZWNlaXZlciAtIFJlZmVyZW5jZSB0byB0aGUgc3RhdGljIGZ1bmN0aW9uIGZyb20gdGhlIHN0b3JlXG4gICAgICogQHJldHVybnMgLSBBIHBsYWluIG9iamVjdCB3aXRoIGFuIGBlbWl0YCBmdW5jdGlvbiBmb3IgY2FsbGluZyBlbWl0dGVyXG4gICAgICovXG4gICAgcHVibGljIGVtaXR0ZXI8VCA9IGFueSwgVSA9IGFueT4ocmVjZWl2ZXI6IEZ1bmN0aW9uKTogRW1pdHRhYmxlPFQsIFU+IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGE6IFJlY2VpdmVyTWV0YURhdGEgPSByZWNlaXZlcltSRUNFSVZFUl9NRVRBX0tFWV07XG5cbiAgICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJIGNhbid0IHNlZW0gdG8gZmluZCBzdGF0aWMgbWV0YWRhdGEuIEhhdmUgeW91IGRlY29yYXRlZCAke3JlY2VpdmVyLm5hbWV9IHdpdGggQFJlY2VpdmVyKCk/YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW1pdDogKHBheWxvYWQ/OiBUKSA9PiB0aGlzLmRpc3BhdGNoU2luZ2xlPFQsIFU+KG1ldGFkYXRhLCBwYXlsb2FkKSxcbiAgICAgICAgICAgIGVtaXRNYW55OiAocGF5bG9hZHM/OiBUW10pID0+IHRoaXMuZGlzcGF0Y2hNYW55PFQsIFU+KG1ldGFkYXRhLCBwYXlsb2FkcylcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbWV0YWRhdGEgLSBSZWNlaXZlciBmdW5jdGlvbiBtZXRhZGF0YVxuICAgICAqIEBwYXJhbSBwYXlsb2FkIC0gRGF0YSB0byBkaXNwYXRjaFxuICAgICAqIEByZXR1cm5zIC0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGV2ZW50cyBhZnRlciBkaXNwYXRjaFxuICAgICAqL1xuICAgIHByaXZhdGUgZGlzcGF0Y2hTaW5nbGU8VCwgVT4obWV0YWRhdGE6IFJlY2VpdmVyTWV0YURhdGEsIHBheWxvYWQ/OiBUKTogT2JzZXJ2YWJsZTxVPiB7XG4gICAgICAgIEVtaXR0ZXJBY3Rpb24udHlwZSA9IG1ldGFkYXRhLnR5cGU7XG5cbiAgICAgICAgY29uc3Qgc2hvdWxkQXBwbHlEZWZhdWx0UGF5bG9hZCA9IHR5cGVvZiBwYXlsb2FkID09PSAndW5kZWZpbmVkJyAmJiBtZXRhZGF0YS5wYXlsb2FkICE9PSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChzaG91bGRBcHBseURlZmF1bHRQYXlsb2FkKSB7XG4gICAgICAgICAgICBwYXlsb2FkID0gbWV0YWRhdGEucGF5bG9hZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IEFjdGlvbjogVHlwZTxhbnk+ID0gbWV0YWRhdGEuYWN0aW9uID8gbWV0YWRhdGEuYWN0aW9uIDogRW1pdHRlckFjdGlvbjtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2gobmV3IEFjdGlvbihwYXlsb2FkKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG1ldGFkYXRhIC0gUmVjZWl2ZXIgZnVuY3Rpb24gbWV0YWRhdGFcbiAgICAgKiBAcGFyYW0gcGF5bG9hZHMgLSBBcnJheSB3aXRoIGRhdGEgdG8gZGlzcGF0Y2hcbiAgICAgKiBAcmV0dXJucyAtIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyBldmVudHMgYWZ0ZXIgZGlzcGF0Y2hcbiAgICAgKi9cbiAgICBwcml2YXRlIGRpc3BhdGNoTWFueTxULCBVPihtZXRhZGF0YTogUmVjZWl2ZXJNZXRhRGF0YSwgcGF5bG9hZHM/OiBUW10pOiBPYnNlcnZhYmxlPFU+IHtcbiAgICAgICAgRW1pdHRlckFjdGlvbi50eXBlID0gbWV0YWRhdGEudHlwZTtcblxuICAgICAgICBjb25zdCBhY3Rpb25zOiBvYmplY3RbXSA9IFtdO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWRzKSkge1xuICAgICAgICAgICAgY29uc3QgQWN0aW9uOiBUeXBlPGFueT4gPSBtZXRhZGF0YS5hY3Rpb24gPyBtZXRhZGF0YS5hY3Rpb24gOiBFbWl0dGVyQWN0aW9uO1xuICAgICAgICAgICAgcGF5bG9hZHMuZm9yRWFjaCgocGF5bG9hZDogVCkgPT4ge1xuICAgICAgICAgICAgICAgIGFjdGlvbnMucHVzaChuZXcgQWN0aW9uKHBheWxvYWQpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goYWN0aW9ucyk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgSW5qZWN0b3JBY2Nlc3NvciB9IGZyb20gJy4uL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW1pdFN0b3JlIH0gZnJvbSAnLi4vc2VydmljZXMvZW1pdC1zdG9yZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBEZWNvcmF0ZXMgYSBwcm9wZXJ0eSBhbmQgZGVmaW5lcyBuZXcgZ2V0dGVyXG4gKlxuICogQHBhcmFtIHJlY2VpdmVyIC0gUmVmZXJlbmNlIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25cbiAqIEByZXR1cm5zIC0gRmFjdG9yeSBmdW5jdGlvbiBmb3IgZGVjb3JhdGluZyBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbWl0dGVyKHJlY2VpdmVyOiBGdW5jdGlvbik6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgICByZXR1cm4gKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gSW5qZWN0b3JBY2Nlc3Nvci5nZXRJbmplY3RvcigpLmdldDxFbWl0U3RvcmU+KEVtaXRTdG9yZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmVtaXR0ZXIocmVjZWl2ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMsIFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRW1pdFN0b3JlIH0gZnJvbSAnLi9jb3JlL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBJbmplY3RvckFjY2Vzc29yIH0gZnJvbSAnLi9jb3JlL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBFbWl0U3RvcmUsXG4gICAgICAgIEluamVjdG9yQWNjZXNzb3JcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neHNFbWl0UGx1Z2luTW9kdWxlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBwdWJsaWMgaW5qZWN0b3JBY2Nlc3NvcjogSW5qZWN0b3JBY2Nlc3NvclxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIC0gQSB3cmFwcGVyIGFyb3VuZCBgTmdNb2R1bGVgXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Tmd4c0VtaXRQbHVnaW5Nb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBOZ3hzRW1pdFBsdWdpbk1vZHVsZVxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsImltcG9ydCB7IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIE9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBSRUNFSVZFUl9NRVRBX0tFWSwgQWN0aW9uU3RhdHVzLCBBY3Rpb25Db250ZXh0LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQsIFJlY2VpdmVyTWV0YURhdGEsIFR5cGVzIH0gZnJvbSAnLi4vaW50ZXJuYWwvaW50ZXJuYWxzJztcblxuLyoqXG4gKiBgZ2V0UmVjZWl2ZXJUeXBlcyhbQ291bnRlclN0YXRlLmluY3JlbWVudCwgQ291bnRlclN0YXRlLmRlY3JlbWVudF0pYFxuICogd2lsbCByZXR1cm4gYSBoYXNobWFwID0+IGB7ICdDb3VudGVyU3RhdGUuaW5jcmVtZW50JzogdHJ1ZSwgJ0NvdW50ZXJTdGF0ZS5kZWNyZW1lbnQnOiB0cnVlIH1gXG4gKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9uc1xuICogQHJldHVybnMgLSBBIGtleS12YWx1ZSBtYXAgd2hlcmUgYSBrZXkgaXMgYSB0eXBlIGFuZCB2YWx1ZSBpcyBgdHJ1ZWBcbiAqL1xuZnVuY3Rpb24gZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBUeXBlcyB7XG4gICAgY29uc3QgdHlwZXM6IFR5cGVzID0ge307XG5cbiAgICBsZXQgaSA9IHJlY2VpdmVycy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgICBjb25zdCByZWNlaXZlciA9IHJlY2VpdmVyc1tpXTtcbiAgICAgICAgY29uc3QgaXNOb3RGdW5jdGlvbiA9IHR5cGVvZiByZWNlaXZlciAhPT0gJ2Z1bmN0aW9uJztcblxuICAgICAgICBpZiAoaXNOb3RGdW5jdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmVjZWl2ZXIgc2hvdWxkIGJlIGEgZnVuY3Rpb24sIGdvdCAke3JlY2VpdmVyfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWV0YTogUmVjZWl2ZXJNZXRhRGF0YSA9IHJlY2VpdmVyW1JFQ0VJVkVSX01FVEFfS0VZXTtcbiAgICAgICAgY29uc3QgaXNOb3RBbm5vdGF0ZWQgPSAhbWV0YSB8fCAhbWV0YS50eXBlO1xuXG4gICAgICAgIGlmIChpc05vdEFubm90YXRlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3JlY2VpdmVyLm5hbWV9IHNob3VsZCBiZSBkZWNvcmF0ZWQgdXNpbmcgQFJlY2VpdmVyKCkgZGVjb3JhdG9yYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0eXBlc1ttZXRhLnR5cGVdID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZXM7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZURpc3BhdGNoZWQoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLkRpc3BhdGNoZWQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggYEBSZWNlaXZlcigpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGVTdWNjZXNzZnVsKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5TdWNjZXNzZnVsKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlQ2FuY2VsZWQoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLkNhbmNlbGVkKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlRXJyb3JlZCguLi5yZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gb2ZFbWl0dGFibGUoZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnMpLCBBY3Rpb25TdGF0dXMuRXJyb3JlZCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHR5cGVzIC0gSGFzaG1hcCB0aGF0IGNvbnRhaW5zIGFjdGlvbiB0eXBlc1xuICogQHBhcmFtIHN0YXR1cyAtIFN0YXR1cyBvZiB0aGUgZGlzcGF0Y2hlZCBhY3Rpb25cbiAqIEByZXR1cm5zIC0gUnhKUyBmYWN0b3J5IG9wZXJhdG9yIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZSh0eXBlczogVHlwZXMsIHN0YXR1czogQWN0aW9uU3RhdHVzKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIChzb3VyY2U6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dD4pID0+IHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKChjdHg6IEFjdGlvbkNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNoTWFwSGFzVHlwZSA9IHR5cGVzW2dldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UoY3R4LmFjdGlvbildO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHRIYXNUcmFuc21pdHRlZFN0YXR1cyA9IGN0eC5zdGF0dXMgPT09IHN0YXR1cztcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFzaE1hcEhhc1R5cGUgJiYgY29udGV4dEhhc1RyYW5zbWl0dGVkU3RhdHVzO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKHsgYWN0aW9uLCBlcnJvciB9OiBBY3Rpb25Db250ZXh0KSA9PiAoe1xuICAgICAgICAgICAgICAgIHR5cGU6IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UoYWN0aW9uKSxcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUEwRUEsTUFBYSxRQUFRLEdBQUcsV0FBVzs7Ozs7QUFLbkMsTUFBYSxpQkFBaUIsR0FBRyxvQkFBb0I7Ozs7Ozs7QUFRckQsU0FBZ0IsbUJBQW1CLENBQUMsTUFBZ0I7SUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7O2NBQzVCLGVBQWUsR0FBRztZQUNwQixJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRSxFQUFFO1lBQ1gsUUFBUSxFQUFFLEVBQUU7WUFDWixJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxFQUFFO1lBQ1osUUFBUSxFQUFFLElBQUk7U0FDakI7UUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztLQUN2RTtJQUNELE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7Q0FDbkM7Ozs7O0FBTUQsU0FBUyxnQkFBZ0IsQ0FBQyxNQUFnQjtJQUN0QyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMs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 |
@@ -50,2 +50,4 @@ import { Injectable, Injector, NgModule, Self } from '@angular/core'; | ||
*/ | ||
/** @type {?} */ | ||
var generate = require('nanoid/generate'); | ||
/** | ||
@@ -77,5 +79,17 @@ * Decorates a method with a receiver information | ||
/** @type {?} */ | ||
var type = action ? (/** @type {?} */ (action.type)) : ((options && options.type) || target.name + "." + key); | ||
var payload = options && options.payload; | ||
/** @type {?} */ | ||
var payload = options && options.payload; | ||
var actionId = generate('1234567890abcdef', 10); | ||
/** @type {?} */ | ||
var type = (/** @type {?} */ (null)); | ||
if (action) { | ||
type = (/** @type {?} */ (action.type)); | ||
} | ||
else { | ||
/** @type {?} */ | ||
var defaultType = options && options.type; | ||
/** @type {?} */ | ||
var customType = "[ID:" + actionId + "] " + target.name + "." + key; | ||
type = defaultType || customType; | ||
} | ||
if (meta.actions[type]) { | ||
@@ -447,2 +461,2 @@ throw new Error("Method decorated with such type `" + type + "` already exists"); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy1sYWJzLWVtaXR0ZXIuanMubWFwIiwic291cmNlcyI6WyJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci9saWIvY29yZS9pbnRlcm5hbC9pbnRlcm5hbHMudHMiLCJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci9saWIvY29yZS9kZWNvcmF0b3JzL3JlY2VpdmVyLnRzIiwibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvbGliL2NvcmUvc2VydmljZXMvaW5qZWN0b3ItYWNjZXNzb3Iuc2VydmljZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL2FjdGlvbnMvYWN0aW9ucy50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL2RlY29yYXRvcnMvZW1pdHRlci50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9lbWl0Lm1vZHVsZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL29wZXJhdG9ycy9vZi1lbWl0dGFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogU3RhdHVzIG9mIGEgZGlzcGF0Y2hlZCBhY3Rpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gQWN0aW9uU3RhdHVzIHtcbiAgICBEaXNwYXRjaGVkID0gJ0RJU1BBVENIRUQnLFxuICAgIFN1Y2Nlc3NmdWwgPSAnU1VDQ0VTU0ZVTCcsXG4gICAgQ2FuY2VsZWQgPSAnQ0FOQ0VMRUQnLFxuICAgIEVycm9yZWQgPSAnRVJST1JFRCcsXG59XG5cbi8qKlxuICogU3RhdGljIG1ldGFkYXRhIGZvciB0aGUgcmVjZWl2ZXIgZnVuY3Rpb25cbiAqXG4gKiBAcHJvcGVydHkgdHlwZSAtIEFjdGlvbiB0eXBlIChvcHRpb25hbClcbiAqIEBwcm9wZXJ0eSBhY3Rpb24gLSBDdXN0b20gYWN0aW9uIHRvIGRpc3BhdGNoIChvcHRpb25hbClcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWNlaXZlck1ldGFEYXRhPFQgZXh0ZW5kcyBGdW5jdGlvbiA9IGFueT4ge1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBwYXlsb2FkOiBhbnk7XG4gICAgYWN0aW9uOiBUeXBlPFQ+ICYge1xuICAgICAgICB0eXBlPzogc3RyaW5nO1xuICAgIH07XG59XG5cbi8qKlxuICogUGxhaW4gb2JqZWN0IHRoYXQgY29udGFpbnMgaGVscGVycyB0aGF0IGRpc3BhdGNoIHBheWxvYWRcbiAqXG4gKiBAcHJvcGVydHkgZW1pdCAtIEZ1bmN0aW9uIHRoYXQgZGlzcGF0Y2hlcyBwYXlsb2FkIHVuZGVyIHRoZSBob29kXG4gKiBAcHJvcGVydHkgZW1pdE1hbnkgLSBGdW5jdGlvbiB0aGF0IG1ha2VzIG11bHRpcGxlIGRpc3BhdGNoaW5nIHVuZGVyIHRoZSBob29kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1pdHRhYmxlPFQgPSBhbnksIFUgPSBhbnk+IHtcbiAgICBlbWl0KHBheWxvYWQ/OiBUKTogT2JzZXJ2YWJsZTxVPjtcbiAgICBlbWl0TWFueShwYXlsb2Fkcz86IFRbXSk6IE9ic2VydmFibGU8VT47XG59XG5cbi8qKlxuICogQmFzaWMgd3JhcHBlciBhcm91bmQgYWN0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSBzdGF0dXMgLSBTdGF0dXMgb2YgZGlzcGF0Y2hlZCBhY3Rpb25cbiAqIEBwcm9wZXJ0eSBhY3Rpb24gLSBBY3Rpb24gaW5zdGFuY2VcbiAqIEBwcm9wZXJ0eSBlcnJvciAtIEVycm9yIGlmIGhhcHBlbmVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uQ29udGV4dCB7XG4gICAgc3RhdHVzOiBBY3Rpb25TdGF0dXM7XG4gICAgYWN0aW9uOiBhbnk7XG4gICAgZXJyb3I/OiBFcnJvcjtcbn1cblxuLyoqXG4gKiBBY3Rpb24gY29udGV4dCB0aGF0IG1hcHMgYG9mRW1pdHRhYmxlYCBvcGVyYXRvclxuICpcbiAqIEBwcm9wZXJ0eSB0eXBlIC0gQWN0aW9uIHR5cGVcbiAqIEBwcm9wZXJ0eSBwYXlsb2FkIC0gRGlzcGF0Y2hlZCBkYXRhXG4gKiBAcHJvcGVydHkgZXJyb3IgLSBFcnJvciB0aGF0IGhhcyBiZWVuIHRocm93ZWQgb3IgdW5kZWZpbmVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PFQgPSBhbnk+IHtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgcGF5bG9hZDogVDtcbiAgICBlcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogSGFzaG1hcCB0aGF0IGNvbnRhaW5zIHR5cGVzIHRvIGZpbHRlciB1c2luZyBgb2ZFbWl0dGFibGVgIG9wZXJhdG9yXG4gKlxuICogQHByb3BlcnR5IGtleSAtIEFueSBzdHJpbmcga2V5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZXMge1xuICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBNRVRBX0tFWSA9ICdOR1hTX01FVEEnO1xuXG4vKipcbiAqIEBjb25zdCAtIFRoaXMgY29uc3RhbnQgaXMgYSBrZXkgZm9yIGRlZmluaW5nIHN0YXRpYyBtZXRhZGF0YSB1c2luZyBgQFJlY2VpdmVyYFxuICovXG5leHBvcnQgY29uc3QgUkVDRUlWRVJfTUVUQV9LRVkgPSAnTkdYU19SRUNFSVZFUl9NRVRBJztcblxuLyoqXG4gKiBUaGlzIGlzIGFuIGludGVybmFsIGBAbmd4cy9zdG9yZWAgZnVuY3Rpb24gYW5kIG5vdCBhY2Nlc3NhYmxlIGZyb20gb3V0c2lkZSwgZXZlbiB1c2luZyB0aGV0YSBzeW1ib2xcbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGFyZ2V0IHRvIGFwcGx5IHN0YXRpYyBtZXRhZGF0YSB0b1xuICogQHJldHVybnMgLSBTdGF0aWMgbWV0YWRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZVN0b3JlTWV0YWRhdGEodGFyZ2V0OiBGdW5jdGlvbik6IGFueSB7XG4gICAgaWYgKCF0YXJnZXQuaGFzT3duUHJvcGVydHkoTUVUQV9LRVkpKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRNZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIG5hbWU6IG51bGwsXG4gICAgICAgICAgICBhY3Rpb25zOiB7fSxcbiAgICAgICAgICAgIGRlZmF1bHRzOiB7fSxcbiAgICAgICAgICAgIHBhdGg6IG51bGwsXG4gICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICBpbnN0YW5jZTogbnVsbFxuICAgICAgICB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBNRVRBX0tFWSwgeyB2YWx1ZTogZGVmYXVsdE1ldGFkYXRhIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0U3RvcmVNZXRhZGF0YSh0YXJnZXQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB0YXJnZXQgLSBUYXJnZXQgdG8gZ2V0IHN0YXRpYyBtZXRhZGF0YSBmcm9tXG4gKiBAcmV0dXJucyAtIFN0YXRpYyBtZXRhZGF0YVxuICovXG5mdW5jdGlvbiBnZXRTdG9yZU1ldGFkYXRhKHRhcmdldDogRnVuY3Rpb24pOiBhbnkgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0YXJnZXRbTUVUQV9LRVldO1xufVxuIiwiaW1wb3J0IHsgZW5zdXJlU3RvcmVNZXRhZGF0YSwgUmVjZWl2ZXJNZXRhRGF0YSwgUkVDRUlWRVJfTUVUQV9LRVkgfSBmcm9tICcuLi9pbnRlcm5hbC9pbnRlcm5hbHMnO1xuXG4vKipcbiAqIERlY29yYXRlcyBhIG1ldGhvZCB3aXRoIGEgcmVjZWl2ZXIgaW5mb3JtYXRpb25cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHN0YXRpYyBtZXRhZGF0YVxuICogQHJldHVybnMgLSBGYWN0b3J5IGZvciBkZWNvcmF0aW5nIG1ldGhvZFxuICovXG5leHBvcnQgZnVuY3Rpb24gUmVjZWl2ZXIob3B0aW9ucz86IFBhcnRpYWw8UmVjZWl2ZXJNZXRhRGF0YT4pOiBNZXRob2REZWNvcmF0b3Ige1xuICAgIHJldHVybiA8VD4odGFyZ2V0OiBhbnksIGtleTogc3RyaW5nIHwgc3ltYm9sLCBkZXNjcmlwdG9yOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxUPikgPT4ge1xuICAgICAgICBjb25zdCBpc05vdEZ1bmN0aW9uT3JOb3RTdGF0aWMgPSB0eXBlb2YgdGFyZ2V0LnByb3RvdHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgIWRlc2NyaXB0b3IgfHwgdHlwZW9mIHRhcmdldFtrZXldICE9PSAnZnVuY3Rpb24nO1xuXG4gICAgICAgIGlmIChpc05vdEZ1bmN0aW9uT3JOb3RTdGF0aWMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE9ubHkgc3RhdGljIGZ1bmN0aW9ucyBjYW4gYmUgZGVjb3JhdGVkIHdpdGggQFJlY2VpdmVyKCkgZGVjb3JhdG9yYCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgICAgIGtleSA9IGtleS50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWV0YSA9IGVuc3VyZVN0b3JlTWV0YWRhdGEodGFyZ2V0KTtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gb3B0aW9ucyAmJiBvcHRpb25zLmFjdGlvbjtcbiAgICAgICAgY29uc3QgdHlwZUlzTm90U3RyaW5nID0gYWN0aW9uICYmIHR5cGVvZiBhY3Rpb24udHlwZSAhPT0gJ3N0cmluZyc7XG5cbiAgICAgICAgaWYgKHR5cGVJc05vdFN0cmluZykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBY3Rpb24gdHlwZSBzaG91bGQgYmUgZGVmaW5lZCBhcyBhIHN0YXRpYyBwcm9wZXJ0eSBgdHlwZWAnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHR5cGU6IHN0cmluZyA9IGFjdGlvbiA/IGFjdGlvbi50eXBlISA6ICgob3B0aW9ucyAmJiBvcHRpb25zLnR5cGUpIHx8IGAke3RhcmdldC5uYW1lfS4ke2tleX1gKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5wYXlsb2FkO1xuXG4gICAgICAgIGlmIChtZXRhLmFjdGlvbnNbdHlwZV0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTWV0aG9kIGRlY29yYXRlZCB3aXRoIHN1Y2ggdHlwZSBcXGAke3R5cGV9XFxgIGFscmVhZHkgZXhpc3RzYCk7XG4gICAgICAgIH1cblxuICAgICAgICBtZXRhLmFjdGlvbnNbdHlwZV0gPSBbe1xuICAgICAgICAgICAgZm46IGAke2tleX1gLFxuICAgICAgICAgICAgb3B0aW9uczoge30sXG4gICAgICAgICAgICB0eXBlXG4gICAgICAgIH1dO1xuXG4gICAgICAgIGRlc2NyaXB0b3IudmFsdWUhW1JFQ0VJVkVSX01FVEFfS0VZXSA9IHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgIH07XG5cbiAgICAgICAgdGFyZ2V0LnByb3RvdHlwZVtrZXldID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV0uYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEFsbG93cyBtdWx0aXBsZSBkZWNvcmF0b3JzIHRvIGdldCBhY2Nlc3MgdG8gdGhlIERJIHN0b3JlXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJbmplY3RvckFjY2Vzc29yIHtcbiAgICAvKipcbiAgICAgKiBJbmplY3RvciBmb3IgYWNjZXNzaW5nIERJXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5qZWN0b3I6IEluamVjdG9yIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIEluamVjdG9yQWNjZXNzb3IgaW5zdGFuY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmplY3RvciAtIFJvb3QgaW5qZWN0b3JcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgSW5qZWN0b3JBY2Nlc3Nvci5pbmplY3RvciA9IGluamVjdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIC0gRXJyb3IgaWYgYE5neHNFbWl0UGx1Z2luTW9kdWxlYCBpcyBub3QgaW1wb3J0ZWQgb3IgaW5qZWN0b3IgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEluamVjdG9yKCk6IG5ldmVyIHwgSW5qZWN0b3Ige1xuICAgICAgICBpZiAoIXRoaXMuaW5qZWN0b3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91J3ZlIGZvcmdvdHRlbiB0byBpbXBvcnQgXFxgTmd4c0VtaXRQbHVnaW5Nb2R1bGVcXGBgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yO1xuICAgIH1cbn1cbiIsIi8qKlxuICogVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgZGVmYXVsdCBhY3Rpb24gd2hlbiB0aGUgdXNlciBkb2Vzbid0IHBhc3MgYW55IGN1c3RvbSBhY3Rpb24gYXMgYW4gYXJndW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIEVtaXR0ZXJBY3Rpb248VCA9IGFueT4ge1xuICAgIC8qKlxuICAgICAqIEFjdGlvbiB0eXBlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyB0eXBlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgRW1pdHRlckFjdGlvbiBpbnN0YW5jZVxuICAgICAqXG4gICAgICogQHBhcmFtIHBheWxvYWQgLSBEYXRhIHRvIGRpc3BhdGNoXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ/OiBUKSB7fVxufVxuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUkVDRUlWRVJfTUVUQV9LRVksIEVtaXR0YWJsZSwgUmVjZWl2ZXJNZXRhRGF0YSB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5pbXBvcnQgeyBFbWl0dGVyQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy9hY3Rpb25zJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEVtaXRTdG9yZSBleHRlbmRzIFN0b3JlIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcmVjZWl2ZXIgLSBSZWZlcmVuY2UgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbiBmcm9tIHRoZSBzdG9yZVxuICAgICAqIEByZXR1cm5zIC0gQSBwbGFpbiBvYmplY3Qgd2l0aCBhbiBgZW1pdGAgZnVuY3Rpb24gZm9yIGNhbGxpbmcgZW1pdHRlclxuICAgICAqL1xuICAgIHB1YmxpYyBlbWl0dGVyPFQgPSBhbnksIFUgPSBhbnk+KHJlY2VpdmVyOiBGdW5jdGlvbik6IEVtaXR0YWJsZTxULCBVPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhOiBSZWNlaXZlck1ldGFEYXRhID0gcmVjZWl2ZXJbUkVDRUlWRVJfTUVUQV9LRVldO1xuXG4gICAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSSBjYW4ndCBzZWVtIHRvIGZpbmQgc3RhdGljIG1ldGFkYXRhLiBIYXZlIHlvdSBkZWNvcmF0ZWQgJHtyZWNlaXZlci5uYW1lfSB3aXRoIEBSZWNlaXZlcigpP2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVtaXQ6IChwYXlsb2FkPzogVCkgPT4gdGhpcy5kaXNwYXRjaFNpbmdsZTxULCBVPihtZXRhZGF0YSwgcGF5bG9hZCksXG4gICAgICAgICAgICBlbWl0TWFueTogKHBheWxvYWRzPzogVFtdKSA9PiB0aGlzLmRpc3BhdGNoTWFueTxULCBVPihtZXRhZGF0YSwgcGF5bG9hZHMpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG1ldGFkYXRhIC0gUmVjZWl2ZXIgZnVuY3Rpb24gbWV0YWRhdGFcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCAtIERhdGEgdG8gZGlzcGF0Y2hcbiAgICAgKiBAcmV0dXJucyAtIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyBldmVudHMgYWZ0ZXIgZGlzcGF0Y2hcbiAgICAgKi9cbiAgICBwcml2YXRlIGRpc3BhdGNoU2luZ2xlPFQsIFU+KG1ldGFkYXRhOiBSZWNlaXZlck1ldGFEYXRhLCBwYXlsb2FkPzogVCk6IE9ic2VydmFibGU8VT4ge1xuICAgICAgICBFbWl0dGVyQWN0aW9uLnR5cGUgPSBtZXRhZGF0YS50eXBlO1xuXG4gICAgICAgIGNvbnN0IHNob3VsZEFwcGx5RGVmYXVsdFBheWxvYWQgPSB0eXBlb2YgcGF5bG9hZCA9PT0gJ3VuZGVmaW5lZCcgJiYgbWV0YWRhdGEucGF5bG9hZCAhPT0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoc2hvdWxkQXBwbHlEZWZhdWx0UGF5bG9hZCkge1xuICAgICAgICAgICAgcGF5bG9hZCA9IG1ldGFkYXRhLnBheWxvYWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBBY3Rpb246IFR5cGU8YW55PiA9IG1ldGFkYXRhLmFjdGlvbiA/IG1ldGFkYXRhLmFjdGlvbiA6IEVtaXR0ZXJBY3Rpb247XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKG5ldyBBY3Rpb24ocGF5bG9hZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSAtIFJlY2VpdmVyIGZ1bmN0aW9uIG1ldGFkYXRhXG4gICAgICogQHBhcmFtIHBheWxvYWRzIC0gQXJyYXkgd2l0aCBkYXRhIHRvIGRpc3BhdGNoXG4gICAgICogQHJldHVybnMgLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgZXZlbnRzIGFmdGVyIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNwYXRjaE1hbnk8VCwgVT4obWV0YWRhdGE6IFJlY2VpdmVyTWV0YURhdGEsIHBheWxvYWRzPzogVFtdKTogT2JzZXJ2YWJsZTxVPiB7XG4gICAgICAgIEVtaXR0ZXJBY3Rpb24udHlwZSA9IG1ldGFkYXRhLnR5cGU7XG5cbiAgICAgICAgY29uc3QgYWN0aW9uczogb2JqZWN0W10gPSBbXTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkcykpIHtcbiAgICAgICAgICAgIGNvbnN0IEFjdGlvbjogVHlwZTxhbnk+ID0gbWV0YWRhdGEuYWN0aW9uID8gbWV0YWRhdGEuYWN0aW9uIDogRW1pdHRlckFjdGlvbjtcbiAgICAgICAgICAgIHBheWxvYWRzLmZvckVhY2goKHBheWxvYWQ6IFQpID0+IHtcbiAgICAgICAgICAgICAgICBhY3Rpb25zLnB1c2gobmV3IEFjdGlvbihwYXlsb2FkKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGFjdGlvbnMpO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IEluamVjdG9yQWNjZXNzb3IgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbmplY3Rvci1hY2Nlc3Nvci5zZXJ2aWNlJztcbmltcG9ydCB7IEVtaXRTdG9yZSB9IGZyb20gJy4uL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZSc7XG5cbi8qKlxuICogRGVjb3JhdGVzIGEgcHJvcGVydHkgYW5kIGRlZmluZXMgbmV3IGdldHRlclxuICpcbiAqIEBwYXJhbSByZWNlaXZlciAtIFJlZmVyZW5jZSB0byB0aGUgc3RhdGljIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyAtIEZhY3RvcnkgZnVuY3Rpb24gZm9yIGRlY29yYXRpbmcgcHJvcGVydGllc1xuICovXG5leHBvcnQgZnVuY3Rpb24gRW1pdHRlcihyZWNlaXZlcjogRnVuY3Rpb24pOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gICAgcmV0dXJuICh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcgfCBzeW1ib2wpID0+IHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICAgICAgICBnZXQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9yZSA9IEluamVjdG9yQWNjZXNzb3IuZ2V0SW5qZWN0b3IoKS5nZXQ8RW1pdFN0b3JlPihFbWl0U3RvcmUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBzdG9yZS5lbWl0dGVyKHJlY2VpdmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEVtaXRTdG9yZSB9IGZyb20gJy4vY29yZS9zZXJ2aWNlcy9lbWl0LXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5qZWN0b3JBY2Nlc3NvciB9IGZyb20gJy4vY29yZS9zZXJ2aWNlcy9pbmplY3Rvci1hY2Nlc3Nvci5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgRW1pdFN0b3JlLFxuICAgICAgICBJbmplY3RvckFjY2Vzc29yXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hzRW1pdFBsdWdpbk1vZHVsZSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgcHVibGljIGluamVjdG9yQWNjZXNzb3I6IEluamVjdG9yQWNjZXNzb3JcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyAtIEEgd3JhcHBlciBhcm91bmQgYE5nTW9kdWxlYFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5neHNFbWl0UGx1Z2luTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogTmd4c0VtaXRQbHVnaW5Nb2R1bGVcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPcGVyYXRvckZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUkVDRUlWRVJfTUVUQV9LRVksIEFjdGlvblN0YXR1cywgQWN0aW9uQ29udGV4dCwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0LCBSZWNlaXZlck1ldGFEYXRhLCBUeXBlcyB9IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XG5cbi8qKlxuICogYGdldFJlY2VpdmVyVHlwZXMoW0NvdW50ZXJTdGF0ZS5pbmNyZW1lbnQsIENvdW50ZXJTdGF0ZS5kZWNyZW1lbnRdKWBcbiAqIHdpbGwgcmV0dXJuIGEgaGFzaG1hcCA9PiBgeyAnQ291bnRlclN0YXRlLmluY3JlbWVudCc6IHRydWUsICdDb3VudGVyU3RhdGUuZGVjcmVtZW50JzogdHJ1ZSB9YFxuICpcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnNcbiAqIEByZXR1cm5zIC0gQSBrZXktdmFsdWUgbWFwIHdoZXJlIGEga2V5IGlzIGEgdHlwZSBhbmQgdmFsdWUgaXMgYHRydWVgXG4gKi9cbmZ1bmN0aW9uIGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogVHlwZXMge1xuICAgIGNvbnN0IHR5cGVzOiBUeXBlcyA9IHt9O1xuXG4gICAgbGV0IGkgPSByZWNlaXZlcnMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgY29uc3QgcmVjZWl2ZXIgPSByZWNlaXZlcnNbaV07XG4gICAgICAgIGNvbnN0IGlzTm90RnVuY3Rpb24gPSB0eXBlb2YgcmVjZWl2ZXIgIT09ICdmdW5jdGlvbic7XG5cbiAgICAgICAgaWYgKGlzTm90RnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJlY2VpdmVyIHNob3VsZCBiZSBhIGZ1bmN0aW9uLCBnb3QgJHtyZWNlaXZlcn1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1ldGE6IFJlY2VpdmVyTWV0YURhdGEgPSByZWNlaXZlcltSRUNFSVZFUl9NRVRBX0tFWV07XG4gICAgICAgIGNvbnN0IGlzTm90QW5ub3RhdGVkID0gIW1ldGEgfHwgIW1ldGEudHlwZTtcblxuICAgICAgICBpZiAoaXNOb3RBbm5vdGF0ZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtyZWNlaXZlci5uYW1lfSBzaG91bGQgYmUgZGVjb3JhdGVkIHVzaW5nIEBSZWNlaXZlcigpIGRlY29yYXRvcmApO1xuICAgICAgICB9XG5cbiAgICAgICAgdHlwZXNbbWV0YS50eXBlXSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVzO1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggYEBSZWNlaXZlcigpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGVEaXNwYXRjaGVkKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5EaXNwYXRjaGVkKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlU3VjY2Vzc2Z1bCguLi5yZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gb2ZFbWl0dGFibGUoZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnMpLCBBY3Rpb25TdGF0dXMuU3VjY2Vzc2Z1bCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZUNhbmNlbGVkKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5DYW5jZWxlZCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZUVycm9yZWQoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLkVycm9yZWQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB0eXBlcyAtIEhhc2htYXAgdGhhdCBjb250YWlucyBhY3Rpb24gdHlwZXNcbiAqIEBwYXJhbSBzdGF0dXMgLSBTdGF0dXMgb2YgdGhlIGRpc3BhdGNoZWQgYWN0aW9uXG4gKiBAcmV0dXJucyAtIFJ4SlMgZmFjdG9yeSBvcGVyYXRvciBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGUodHlwZXM6IFR5cGVzLCBzdGF0dXM6IEFjdGlvblN0YXR1cyk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPEFjdGlvbkNvbnRleHQ+KSA9PiB7XG4gICAgICAgIHJldHVybiBzb3VyY2UucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoY3R4OiBBY3Rpb25Db250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzaE1hcEhhc1R5cGUgPSB0eXBlc1tnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGN0eC5hY3Rpb24pXTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0SGFzVHJhbnNtaXR0ZWRTdGF0dXMgPSBjdHguc3RhdHVzID09PSBzdGF0dXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hNYXBIYXNUeXBlICYmIGNvbnRleHRIYXNUcmFuc21pdHRlZFN0YXR1cztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCh7IGFjdGlvbiwgZXJyb3IgfTogQWN0aW9uQ29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGFjdGlvbiksXG4gICAgICAgICAgICAgICAgcGF5bG9hZDogYWN0aW9uLnBheWxvYWQsXG4gICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgIH07XG59XG4iXSwibmFtZXMiOlsidHNsaWJfMS5fX2V4dGVuZHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUEwRUEsSUFBYSxRQUFRLEdBQUcsV0FBVzs7Ozs7QUFLbkMsSUFBYSxpQkFBaUIsR0FBRyxvQkFBb0I7Ozs7Ozs7QUFRckQsU0FBZ0IsbUJBQW1CLENBQUMsTUFBZ0I7SUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7O1lBQzVCLGVBQWUsR0FBRztZQUNwQixJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRSxFQUFFO1lBQ1gsUUFBUSxFQUFFLEVBQUU7WUFDWixJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxFQUFFO1lBQ1osUUFBUSxFQUFFLElBQUk7U0FDakI7UUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztLQUN2RTtJQUNELE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7Q0FDbkM7Ozs7O0FBTUQsU0FBUyxnQkFBZ0IsQ0FBQyxNQUFnQjtJQUN0QyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztDQUMzQjs7Ozs7O0FDNUdEOzs7Ozs7QUFRQSxTQUFnQixRQUFRLENBQUMsT0FBbUM7SUFDeEQsT0FBTyxVQUFJLE1BQVcsRUFBRSxHQUFvQixFQUFFLFVBQXNDOztZQUMxRSx3QkFBd0IsR0FBRyxPQUFPLE1BQU0sQ0FBQyxTQUFTLEtBQUssV0FBVyxJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFVBQVU7UUFFNUgsSUFBSSx3QkFBd0IsRUFBRTtZQUMxQixNQUFNLElBQUksU0FBUyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7U0FDNUY7UUFFRCxJQUFJLE9BQU8s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 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy1sYWJzLWVtaXR0ZXIuanMubWFwIiwic291cmNlcyI6WyJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci9saWIvY29yZS9pbnRlcm5hbC9pbnRlcm5hbHMudHMiLCJuZzovL0BuZ3hzLWxhYnMvZW1pdHRlci9saWIvY29yZS9kZWNvcmF0b3JzL3JlY2VpdmVyLnRzIiwibmc6Ly9Abmd4cy1sYWJzL2VtaXR0ZXIvbGliL2NvcmUvc2VydmljZXMvaW5qZWN0b3ItYWNjZXNzb3Iuc2VydmljZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL2FjdGlvbnMvYWN0aW9ucy50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL2RlY29yYXRvcnMvZW1pdHRlci50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9lbWl0Lm1vZHVsZS50cyIsIm5nOi8vQG5neHMtbGFicy9lbWl0dGVyL2xpYi9jb3JlL29wZXJhdG9ycy9vZi1lbWl0dGFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogU3RhdHVzIG9mIGEgZGlzcGF0Y2hlZCBhY3Rpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gQWN0aW9uU3RhdHVzIHtcbiAgICBEaXNwYXRjaGVkID0gJ0RJU1BBVENIRUQnLFxuICAgIFN1Y2Nlc3NmdWwgPSAnU1VDQ0VTU0ZVTCcsXG4gICAgQ2FuY2VsZWQgPSAnQ0FOQ0VMRUQnLFxuICAgIEVycm9yZWQgPSAnRVJST1JFRCcsXG59XG5cbi8qKlxuICogU3RhdGljIG1ldGFkYXRhIGZvciB0aGUgcmVjZWl2ZXIgZnVuY3Rpb25cbiAqXG4gKiBAcHJvcGVydHkgdHlwZSAtIEFjdGlvbiB0eXBlIChvcHRpb25hbClcbiAqIEBwcm9wZXJ0eSBhY3Rpb24gLSBDdXN0b20gYWN0aW9uIHRvIGRpc3BhdGNoIChvcHRpb25hbClcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWNlaXZlck1ldGFEYXRhPFQgZXh0ZW5kcyBGdW5jdGlvbiA9IGFueT4ge1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBwYXlsb2FkOiBhbnk7XG4gICAgYWN0aW9uOiBUeXBlPFQ+ICYge1xuICAgICAgICB0eXBlPzogc3RyaW5nO1xuICAgIH07XG59XG5cbi8qKlxuICogUGxhaW4gb2JqZWN0IHRoYXQgY29udGFpbnMgaGVscGVycyB0aGF0IGRpc3BhdGNoIHBheWxvYWRcbiAqXG4gKiBAcHJvcGVydHkgZW1pdCAtIEZ1bmN0aW9uIHRoYXQgZGlzcGF0Y2hlcyBwYXlsb2FkIHVuZGVyIHRoZSBob29kXG4gKiBAcHJvcGVydHkgZW1pdE1hbnkgLSBGdW5jdGlvbiB0aGF0IG1ha2VzIG11bHRpcGxlIGRpc3BhdGNoaW5nIHVuZGVyIHRoZSBob29kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1pdHRhYmxlPFQgPSBhbnksIFUgPSBhbnk+IHtcbiAgICBlbWl0KHBheWxvYWQ/OiBUKTogT2JzZXJ2YWJsZTxVPjtcbiAgICBlbWl0TWFueShwYXlsb2Fkcz86IFRbXSk6IE9ic2VydmFibGU8VT47XG59XG5cbi8qKlxuICogQmFzaWMgd3JhcHBlciBhcm91bmQgYWN0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSBzdGF0dXMgLSBTdGF0dXMgb2YgZGlzcGF0Y2hlZCBhY3Rpb25cbiAqIEBwcm9wZXJ0eSBhY3Rpb24gLSBBY3Rpb24gaW5zdGFuY2VcbiAqIEBwcm9wZXJ0eSBlcnJvciAtIEVycm9yIGlmIGhhcHBlbmVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uQ29udGV4dCB7XG4gICAgc3RhdHVzOiBBY3Rpb25TdGF0dXM7XG4gICAgYWN0aW9uOiBhbnk7XG4gICAgZXJyb3I/OiBFcnJvcjtcbn1cblxuLyoqXG4gKiBBY3Rpb24gY29udGV4dCB0aGF0IG1hcHMgYG9mRW1pdHRhYmxlYCBvcGVyYXRvclxuICpcbiAqIEBwcm9wZXJ0eSB0eXBlIC0gQWN0aW9uIHR5cGVcbiAqIEBwcm9wZXJ0eSBwYXlsb2FkIC0gRGlzcGF0Y2hlZCBkYXRhXG4gKiBAcHJvcGVydHkgZXJyb3IgLSBFcnJvciB0aGF0IGhhcyBiZWVuIHRocm93ZWQgb3IgdW5kZWZpbmVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PFQgPSBhbnk+IHtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgcGF5bG9hZDogVDtcbiAgICBlcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogSGFzaG1hcCB0aGF0IGNvbnRhaW5zIHR5cGVzIHRvIGZpbHRlciB1c2luZyBgb2ZFbWl0dGFibGVgIG9wZXJhdG9yXG4gKlxuICogQHByb3BlcnR5IGtleSAtIEFueSBzdHJpbmcga2V5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZXMge1xuICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBNRVRBX0tFWSA9ICdOR1hTX01FVEEnO1xuXG4vKipcbiAqIEBjb25zdCAtIFRoaXMgY29uc3RhbnQgaXMgYSBrZXkgZm9yIGRlZmluaW5nIHN0YXRpYyBtZXRhZGF0YSB1c2luZyBgQFJlY2VpdmVyYFxuICovXG5leHBvcnQgY29uc3QgUkVDRUlWRVJfTUVUQV9LRVkgPSAnTkdYU19SRUNFSVZFUl9NRVRBJztcblxuLyoqXG4gKiBUaGlzIGlzIGFuIGludGVybmFsIGBAbmd4cy9zdG9yZWAgZnVuY3Rpb24gYW5kIG5vdCBhY2Nlc3NhYmxlIGZyb20gb3V0c2lkZSwgZXZlbiB1c2luZyB0aGV0YSBzeW1ib2xcbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGFyZ2V0IHRvIGFwcGx5IHN0YXRpYyBtZXRhZGF0YSB0b1xuICogQHJldHVybnMgLSBTdGF0aWMgbWV0YWRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZVN0b3JlTWV0YWRhdGEodGFyZ2V0OiBGdW5jdGlvbik6IGFueSB7XG4gICAgaWYgKCF0YXJnZXQuaGFzT3duUHJvcGVydHkoTUVUQV9LRVkpKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRNZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIG5hbWU6IG51bGwsXG4gICAgICAgICAgICBhY3Rpb25zOiB7fSxcbiAgICAgICAgICAgIGRlZmF1bHRzOiB7fSxcbiAgICAgICAgICAgIHBhdGg6IG51bGwsXG4gICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICBpbnN0YW5jZTogbnVsbFxuICAgICAgICB9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBNRVRBX0tFWSwgeyB2YWx1ZTogZGVmYXVsdE1ldGFkYXRhIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0U3RvcmVNZXRhZGF0YSh0YXJnZXQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB0YXJnZXQgLSBUYXJnZXQgdG8gZ2V0IHN0YXRpYyBtZXRhZGF0YSBmcm9tXG4gKiBAcmV0dXJucyAtIFN0YXRpYyBtZXRhZGF0YVxuICovXG5mdW5jdGlvbiBnZXRTdG9yZU1ldGFkYXRhKHRhcmdldDogRnVuY3Rpb24pOiBhbnkgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0YXJnZXRbTUVUQV9LRVldO1xufVxuIiwiY29uc3QgZ2VuZXJhdGUgPSByZXF1aXJlKCduYW5vaWQvZ2VuZXJhdGUnKTtcblxuaW1wb3J0IHsgZW5zdXJlU3RvcmVNZXRhZGF0YSwgUmVjZWl2ZXJNZXRhRGF0YSwgUkVDRUlWRVJfTUVUQV9LRVkgfSBmcm9tICcuLi9pbnRlcm5hbC9pbnRlcm5hbHMnO1xuXG4vKipcbiAqIERlY29yYXRlcyBhIG1ldGhvZCB3aXRoIGEgcmVjZWl2ZXIgaW5mb3JtYXRpb25cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHN0YXRpYyBtZXRhZGF0YVxuICogQHJldHVybnMgLSBGYWN0b3J5IGZvciBkZWNvcmF0aW5nIG1ldGhvZFxuICovXG5leHBvcnQgZnVuY3Rpb24gUmVjZWl2ZXIob3B0aW9ucz86IFBhcnRpYWw8UmVjZWl2ZXJNZXRhRGF0YT4pOiBNZXRob2REZWNvcmF0b3Ige1xuICAgIHJldHVybiA8VD4odGFyZ2V0OiBhbnksIGtleTogc3RyaW5nIHwgc3ltYm9sLCBkZXNjcmlwdG9yOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxUPikgPT4ge1xuICAgICAgICBjb25zdCBpc05vdEZ1bmN0aW9uT3JOb3RTdGF0aWMgPSB0eXBlb2YgdGFyZ2V0LnByb3RvdHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgIWRlc2NyaXB0b3IgfHwgdHlwZW9mIHRhcmdldFtrZXldICE9PSAnZnVuY3Rpb24nO1xuXG4gICAgICAgIGlmIChpc05vdEZ1bmN0aW9uT3JOb3RTdGF0aWMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE9ubHkgc3RhdGljIGZ1bmN0aW9ucyBjYW4gYmUgZGVjb3JhdGVkIHdpdGggQFJlY2VpdmVyKCkgZGVjb3JhdG9yYCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgICAgIGtleSA9IGtleS50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWV0YSA9IGVuc3VyZVN0b3JlTWV0YWRhdGEodGFyZ2V0KTtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gb3B0aW9ucyAmJiBvcHRpb25zLmFjdGlvbjtcbiAgICAgICAgY29uc3QgdHlwZUlzTm90U3RyaW5nID0gYWN0aW9uICYmIHR5cGVvZiBhY3Rpb24udHlwZSAhPT0gJ3N0cmluZyc7XG5cbiAgICAgICAgaWYgKHR5cGVJc05vdFN0cmluZykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBY3Rpb24gdHlwZSBzaG91bGQgYmUgZGVmaW5lZCBhcyBhIHN0YXRpYyBwcm9wZXJ0eSBgdHlwZWAnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBvcHRpb25zICYmIG9wdGlvbnMucGF5bG9hZDtcbiAgICAgICAgY29uc3QgYWN0aW9uSWQ6IHN0cmluZyA9IGdlbmVyYXRlKCcxMjM0NTY3ODkwYWJjZGVmJywgMTApO1xuXG4gICAgICAgIGxldCB0eXBlOiBzdHJpbmcgPSBudWxsITtcbiAgICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICAgICAgdHlwZSA9IGFjdGlvbi50eXBlITtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRUeXBlID0gb3B0aW9ucyAmJiBvcHRpb25zLnR5cGU7XG4gICAgICAgICAgICBjb25zdCBjdXN0b21UeXBlID0gYFtJRDoke2FjdGlvbklkfV0gJHt0YXJnZXQubmFtZX0uJHtrZXl9YDtcbiAgICAgICAgICAgIHR5cGUgPSBkZWZhdWx0VHlwZSB8fCBjdXN0b21UeXBlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1ldGEuYWN0aW9uc1t0eXBlXSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNZXRob2QgZGVjb3JhdGVkIHdpdGggc3VjaCB0eXBlIFxcYCR7dHlwZX1cXGAgYWxyZWFkeSBleGlzdHNgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1ldGEuYWN0aW9uc1t0eXBlXSA9IFt7XG4gICAgICAgICAgICBmbjogYCR7a2V5fWAsXG4gICAgICAgICAgICBvcHRpb25zOiB7fSxcbiAgICAgICAgICAgIHR5cGVcbiAgICAgICAgfV07XG5cbiAgICAgICAgZGVzY3JpcHRvci52YWx1ZSFbUkVDRUlWRVJfTUVUQV9LRVldID0ge1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgfTtcblxuICAgICAgICB0YXJnZXQucHJvdG90eXBlW2tleV0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXRba2V5XS5hcHBseSh0YXJnZXQsIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQWxsb3dzIG11bHRpcGxlIGRlY29yYXRvcnMgdG8gZ2V0IGFjY2VzcyB0byB0aGUgREkgc3RvcmVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEluamVjdG9yQWNjZXNzb3Ige1xuICAgIC8qKlxuICAgICAqIEluamVjdG9yIGZvciBhY2Nlc3NpbmcgRElcbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyBpbmplY3RvcjogSW5qZWN0b3IgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgSW5qZWN0b3JBY2Nlc3NvciBpbnN0YW5jZVxuICAgICAqXG4gICAgICogQHBhcmFtIGluamVjdG9yIC0gUm9vdCBpbmplY3RvclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBJbmplY3RvckFjY2Vzc29yLmluamVjdG9yID0gaW5qZWN0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgLSBFcnJvciBpZiBgTmd4c0VtaXRQbHVnaW5Nb2R1bGVgIGlzIG5vdCBpbXBvcnRlZCBvciBpbmplY3RvciBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5qZWN0b3IoKTogbmV2ZXIgfCBJbmplY3RvciB7XG4gICAgICAgIGlmICghdGhpcy5pbmplY3Rvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UndmUgZm9yZ290dGVuIHRvIGltcG9ydCBcXGBOZ3hzRW1pdFBsdWdpbk1vZHVsZVxcYGApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0b3I7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBUaGlzIGNsYXNzIGlzIHVzZWQgYXMgYSBkZWZhdWx0IGFjdGlvbiB3aGVuIHRoZSB1c2VyIGRvZXNuJ3QgcGFzcyBhbnkgY3VzdG9tIGFjdGlvbiBhcyBhbiBhcmd1bWVudFxuICovXG5leHBvcnQgY2xhc3MgRW1pdHRlckFjdGlvbjxUID0gYW55PiB7XG4gICAgLyoqXG4gICAgICogQWN0aW9uIHR5cGVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHR5cGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBFbWl0dGVyQWN0aW9uIGluc3RhbmNlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCAtIERhdGEgdG8gZGlzcGF0Y2hcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZD86IFQpIHt9XG59XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBSRUNFSVZFUl9NRVRBX0tFWSwgRW1pdHRhYmxlLCBSZWNlaXZlck1ldGFEYXRhIH0gZnJvbSAnLi4vaW50ZXJuYWwvaW50ZXJuYWxzJztcbmltcG9ydCB7IEVtaXR0ZXJBY3Rpb24gfSBmcm9tICcuLi9hY3Rpb25zL2FjdGlvbnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRW1pdFN0b3JlIGV4dGVuZHMgU3RvcmUge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSByZWNlaXZlciAtIFJlZmVyZW5jZSB0byB0aGUgc3RhdGljIGZ1bmN0aW9uIGZyb20gdGhlIHN0b3JlXG4gICAgICogQHJldHVybnMgLSBBIHBsYWluIG9iamVjdCB3aXRoIGFuIGBlbWl0YCBmdW5jdGlvbiBmb3IgY2FsbGluZyBlbWl0dGVyXG4gICAgICovXG4gICAgcHVibGljIGVtaXR0ZXI8VCA9IGFueSwgVSA9IGFueT4ocmVjZWl2ZXI6IEZ1bmN0aW9uKTogRW1pdHRhYmxlPFQsIFU+IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGE6IFJlY2VpdmVyTWV0YURhdGEgPSByZWNlaXZlcltSRUNFSVZFUl9NRVRBX0tFWV07XG5cbiAgICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJIGNhbid0IHNlZW0gdG8gZmluZCBzdGF0aWMgbWV0YWRhdGEuIEhhdmUgeW91IGRlY29yYXRlZCAke3JlY2VpdmVyLm5hbWV9IHdpdGggQFJlY2VpdmVyKCk/YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW1pdDogKHBheWxvYWQ/OiBUKSA9PiB0aGlzLmRpc3BhdGNoU2luZ2xlPFQsIFU+KG1ldGFkYXRhLCBwYXlsb2FkKSxcbiAgICAgICAgICAgIGVtaXRNYW55OiAocGF5bG9hZHM/OiBUW10pID0+IHRoaXMuZGlzcGF0Y2hNYW55PFQsIFU+KG1ldGFkYXRhLCBwYXlsb2FkcylcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbWV0YWRhdGEgLSBSZWNlaXZlciBmdW5jdGlvbiBtZXRhZGF0YVxuICAgICAqIEBwYXJhbSBwYXlsb2FkIC0gRGF0YSB0byBkaXNwYXRjaFxuICAgICAqIEByZXR1cm5zIC0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGV2ZW50cyBhZnRlciBkaXNwYXRjaFxuICAgICAqL1xuICAgIHByaXZhdGUgZGlzcGF0Y2hTaW5nbGU8VCwgVT4obWV0YWRhdGE6IFJlY2VpdmVyTWV0YURhdGEsIHBheWxvYWQ/OiBUKTogT2JzZXJ2YWJsZTxVPiB7XG4gICAgICAgIEVtaXR0ZXJBY3Rpb24udHlwZSA9IG1ldGFkYXRhLnR5cGU7XG5cbiAgICAgICAgY29uc3Qgc2hvdWxkQXBwbHlEZWZhdWx0UGF5bG9hZCA9IHR5cGVvZiBwYXlsb2FkID09PSAndW5kZWZpbmVkJyAmJiBtZXRhZGF0YS5wYXlsb2FkICE9PSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChzaG91bGRBcHBseURlZmF1bHRQYXlsb2FkKSB7XG4gICAgICAgICAgICBwYXlsb2FkID0gbWV0YWRhdGEucGF5bG9hZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IEFjdGlvbjogVHlwZTxhbnk+ID0gbWV0YWRhdGEuYWN0aW9uID8gbWV0YWRhdGEuYWN0aW9uIDogRW1pdHRlckFjdGlvbjtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2gobmV3IEFjdGlvbihwYXlsb2FkKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG1ldGFkYXRhIC0gUmVjZWl2ZXIgZnVuY3Rpb24gbWV0YWRhdGFcbiAgICAgKiBAcGFyYW0gcGF5bG9hZHMgLSBBcnJheSB3aXRoIGRhdGEgdG8gZGlzcGF0Y2hcbiAgICAgKiBAcmV0dXJucyAtIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyBldmVudHMgYWZ0ZXIgZGlzcGF0Y2hcbiAgICAgKi9cbiAgICBwcml2YXRlIGRpc3BhdGNoTWFueTxULCBVPihtZXRhZGF0YTogUmVjZWl2ZXJNZXRhRGF0YSwgcGF5bG9hZHM/OiBUW10pOiBPYnNlcnZhYmxlPFU+IHtcbiAgICAgICAgRW1pdHRlckFjdGlvbi50eXBlID0gbWV0YWRhdGEudHlwZTtcblxuICAgICAgICBjb25zdCBhY3Rpb25zOiBvYmplY3RbXSA9IFtdO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWRzKSkge1xuICAgICAgICAgICAgY29uc3QgQWN0aW9uOiBUeXBlPGFueT4gPSBtZXRhZGF0YS5hY3Rpb24gPyBtZXRhZGF0YS5hY3Rpb24gOiBFbWl0dGVyQWN0aW9uO1xuICAgICAgICAgICAgcGF5bG9hZHMuZm9yRWFjaCgocGF5bG9hZDogVCkgPT4ge1xuICAgICAgICAgICAgICAgIGFjdGlvbnMucHVzaChuZXcgQWN0aW9uKHBheWxvYWQpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goYWN0aW9ucyk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgSW5qZWN0b3JBY2Nlc3NvciB9IGZyb20gJy4uL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW1pdFN0b3JlIH0gZnJvbSAnLi4vc2VydmljZXMvZW1pdC1zdG9yZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBEZWNvcmF0ZXMgYSBwcm9wZXJ0eSBhbmQgZGVmaW5lcyBuZXcgZ2V0dGVyXG4gKlxuICogQHBhcmFtIHJlY2VpdmVyIC0gUmVmZXJlbmNlIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25cbiAqIEByZXR1cm5zIC0gRmFjdG9yeSBmdW5jdGlvbiBmb3IgZGVjb3JhdGluZyBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbWl0dGVyKHJlY2VpdmVyOiBGdW5jdGlvbik6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgICByZXR1cm4gKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZyB8IHN5bWJvbCkgPT4ge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gSW5qZWN0b3JBY2Nlc3Nvci5nZXRJbmplY3RvcigpLmdldDxFbWl0U3RvcmU+KEVtaXRTdG9yZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmVtaXR0ZXIocmVjZWl2ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMsIFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRW1pdFN0b3JlIH0gZnJvbSAnLi9jb3JlL3NlcnZpY2VzL2VtaXQtc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBJbmplY3RvckFjY2Vzc29yIH0gZnJvbSAnLi9jb3JlL3NlcnZpY2VzL2luamVjdG9yLWFjY2Vzc29yLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBFbWl0U3RvcmUsXG4gICAgICAgIEluamVjdG9yQWNjZXNzb3JcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neHNFbWl0UGx1Z2luTW9kdWxlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBwdWJsaWMgaW5qZWN0b3JBY2Nlc3NvcjogSW5qZWN0b3JBY2Nlc3NvclxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIC0gQSB3cmFwcGVyIGFyb3VuZCBgTmdNb2R1bGVgXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Tmd4c0VtaXRQbHVnaW5Nb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBOZ3hzRW1pdFBsdWdpbk1vZHVsZVxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsImltcG9ydCB7IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIE9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBSRUNFSVZFUl9NRVRBX0tFWSwgQWN0aW9uU3RhdHVzLCBBY3Rpb25Db250ZXh0LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQsIFJlY2VpdmVyTWV0YURhdGEsIFR5cGVzIH0gZnJvbSAnLi4vaW50ZXJuYWwvaW50ZXJuYWxzJztcblxuLyoqXG4gKiBgZ2V0UmVjZWl2ZXJUeXBlcyhbQ291bnRlclN0YXRlLmluY3JlbWVudCwgQ291bnRlclN0YXRlLmRlY3JlbWVudF0pYFxuICogd2lsbCByZXR1cm4gYSBoYXNobWFwID0+IGB7ICdDb3VudGVyU3RhdGUuaW5jcmVtZW50JzogdHJ1ZSwgJ0NvdW50ZXJTdGF0ZS5kZWNyZW1lbnQnOiB0cnVlIH1gXG4gKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9uc1xuICogQHJldHVybnMgLSBBIGtleS12YWx1ZSBtYXAgd2hlcmUgYSBrZXkgaXMgYSB0eXBlIGFuZCB2YWx1ZSBpcyBgdHJ1ZWBcbiAqL1xuZnVuY3Rpb24gZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBUeXBlcyB7XG4gICAgY29uc3QgdHlwZXM6IFR5cGVzID0ge307XG5cbiAgICBsZXQgaSA9IHJlY2VpdmVycy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgICBjb25zdCByZWNlaXZlciA9IHJlY2VpdmVyc1tpXTtcbiAgICAgICAgY29uc3QgaXNOb3RGdW5jdGlvbiA9IHR5cGVvZiByZWNlaXZlciAhPT0gJ2Z1bmN0aW9uJztcblxuICAgICAgICBpZiAoaXNOb3RGdW5jdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmVjZWl2ZXIgc2hvdWxkIGJlIGEgZnVuY3Rpb24sIGdvdCAke3JlY2VpdmVyfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWV0YTogUmVjZWl2ZXJNZXRhRGF0YSA9IHJlY2VpdmVyW1JFQ0VJVkVSX01FVEFfS0VZXTtcbiAgICAgICAgY29uc3QgaXNOb3RBbm5vdGF0ZWQgPSAhbWV0YSB8fCAhbWV0YS50eXBlO1xuXG4gICAgICAgIGlmIChpc05vdEFubm90YXRlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3JlY2VpdmVyLm5hbWV9IHNob3VsZCBiZSBkZWNvcmF0ZWQgdXNpbmcgQFJlY2VpdmVyKCkgZGVjb3JhdG9yYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0eXBlc1ttZXRhLnR5cGVdID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZXM7XG59XG5cbi8qKlxuICogQHBhcmFtIHJlY2VpdmVycyAtIEFycmF5IHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3RhdGljIGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBgQFJlY2VpdmVyKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZURpc3BhdGNoZWQoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLkRpc3BhdGNoZWQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWNlaXZlcnMgLSBBcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIHN0YXRpYyBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggYEBSZWNlaXZlcigpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2ZFbWl0dGFibGVTdWNjZXNzZnVsKC4uLnJlY2VpdmVyczogRnVuY3Rpb25bXSk6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBPZkVtaXR0YWJsZUFjdGlvbkNvbnRleHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZkVtaXR0YWJsZShnZXRSZWNlaXZlclR5cGVzKHJlY2VpdmVycyksIEFjdGlvblN0YXR1cy5TdWNjZXNzZnVsKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlQ2FuY2VsZWQoLi4ucmVjZWl2ZXJzOiBGdW5jdGlvbltdKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIG9mRW1pdHRhYmxlKGdldFJlY2VpdmVyVHlwZXMocmVjZWl2ZXJzKSwgQWN0aW9uU3RhdHVzLkNhbmNlbGVkKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjZWl2ZXJzIC0gQXJyYXkgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGRlY29yYXRlZCB3aXRoIGBAUmVjZWl2ZXIoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mRW1pdHRhYmxlRXJyb3JlZCguLi5yZWNlaXZlcnM6IEZ1bmN0aW9uW10pOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgT2ZFbWl0dGFibGVBY3Rpb25Db250ZXh0PGFueT4+IHtcbiAgICByZXR1cm4gb2ZFbWl0dGFibGUoZ2V0UmVjZWl2ZXJUeXBlcyhyZWNlaXZlcnMpLCBBY3Rpb25TdGF0dXMuRXJyb3JlZCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHR5cGVzIC0gSGFzaG1hcCB0aGF0IGNvbnRhaW5zIGFjdGlvbiB0eXBlc1xuICogQHBhcmFtIHN0YXR1cyAtIFN0YXR1cyBvZiB0aGUgZGlzcGF0Y2hlZCBhY3Rpb25cbiAqIEByZXR1cm5zIC0gUnhKUyBmYWN0b3J5IG9wZXJhdG9yIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvZkVtaXR0YWJsZSh0eXBlczogVHlwZXMsIHN0YXR1czogQWN0aW9uU3RhdHVzKTogT3BlcmF0b3JGdW5jdGlvbjxhbnksIE9mRW1pdHRhYmxlQWN0aW9uQ29udGV4dDxhbnk+PiB7XG4gICAgcmV0dXJuIChzb3VyY2U6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dD4pID0+IHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKChjdHg6IEFjdGlvbkNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNoTWFwSGFzVHlwZSA9IHR5cGVzW2dldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UoY3R4LmFjdGlvbildO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHRIYXNUcmFuc21pdHRlZFN0YXR1cyA9IGN0eC5zdGF0dXMgPT09IHN0YXR1cztcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFzaE1hcEhhc1R5cGUgJiYgY29udGV4dEhhc1RyYW5zbWl0dGVkU3RhdHVzO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKHsgYWN0aW9uLCBlcnJvciB9OiBBY3Rpb25Db250ZXh0KSA9PiAoe1xuICAgICAgICAgICAgICAgIHR5cGU6IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UoYWN0aW9uKSxcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG4gICAgfTtcbn1cbiJdLCJuYW1lcyI6WyJ0c2xpYl8xLl9fZXh0ZW5kcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQTBFQSxJQUFhLFFBQVEsR0FBRyxXQUFXOzs7OztBQUtuQyxJQUFhLGlCQUFpQixHQUFHLG9CQUFvQjs7Ozs7OztBQVFyRCxTQUFnQixtQkFBbUIsQ0FBQyxNQUFnQjtJQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTs7WUFDNUIsZUFBZSxHQUFHO1lBQ3BCLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTyxFQUFFLEVBQUU7WUFDWCxRQUFRLEVBQUUsRUFBRTtZQUNaLElBQUksRUFBRSxJQUFJO1lBQ1YsUUFBUSxFQUFFLEVBQUU7WUFDWixRQUFRLEVBQUUsSUFBSTtTQUNqQjtRQUNELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZFO0lBQ0QsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztDQUNuQzs7Ozs7QUFNRCxTQUFTLGdCQUFnQixDQUFDLE1BQWdCO0lBQ3RDLE9BQU8s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 |
@@ -1,1 +0,1 @@ | ||
{"__symbolic":"module","version":4,"metadata":{"ɵa":{"Dispatched":"DISPATCHED","Successful":"SUCCESSFUL","Canceled":"CANCELED","Errored":"ERRORED"},"ɵb":{"__symbolic":"function","parameters":["types","status"],"value":{"__symbolic":"error","message":"Lambda not supported","line":73,"character":11,"module":"./lib/core/operators/of-emittable"}},"Receiver":{"__symbolic":"function","parameters":["options"],"value":{"__symbolic":"error","message":"Lambda not supported","line":9,"character":11,"module":"./lib/core/decorators/receiver"}},"Emitter":{"__symbolic":"function","parameters":["receiver"],"value":{"__symbolic":"error","message":"Lambda not supported","line":10,"character":11,"module":"./lib/core/decorators/emitter"}},"Emittable":{"__symbolic":"interface"},"OfEmittableActionContext":{"__symbolic":"interface"},"EmitterAction":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":14,"character":33,"context":{"typeName":"T"},"module":"./lib/core/actions/actions"}]}]},"statics":{"type":null}},"NgxsEmitPluginModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵd"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":13,"character":9}}]],"parameters":[{"__symbolic":"reference","name":"ɵd"}]}]},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"NgxsEmitPluginModule"}}}}},"ofEmittableDispatched":{"__symbolic":"function","parameters":["receivers"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵb"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":14,"character":9,"context":{"name":"getReceiverTypes"},"module":"./lib/core/operators/of-emittable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"Dispatched"}]}},"ofEmittableSuccessful":{"__symbolic":"function","parameters":["receivers"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵb"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":14,"character":9,"context":{"name":"getReceiverTypes"},"module":"./lib/core/operators/of-emittable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"Successful"}]}},"ofEmittableCanceled":{"__symbolic":"function","parameters":["receivers"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵb"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":14,"character":9,"context":{"name":"getReceiverTypes"},"module":"./lib/core/operators/of-emittable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"Canceled"}]}},"ofEmittableErrored":{"__symbolic":"function","parameters":["receivers"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵb"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":14,"character":9,"context":{"name":"getReceiverTypes"},"module":"./lib/core/operators/of-emittable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"Errored"}]}},"ɵc":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":9,"character":31},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"emitter":[{"__symbolic":"method"}],"dispatchSingle":[{"__symbolic":"method"}],"dispatchMany":[{"__symbolic":"method"}]}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":17,"character":26}]}]},"statics":{"injector":null}}},"origins":{"ɵa":"./lib/core/internal/internals","ɵb":"./lib/core/operators/of-emittable","Receiver":"./lib/core/decorators/receiver","Emitter":"./lib/core/decorators/emitter","Emittable":"./lib/core/internal/internals","OfEmittableActionContext":"./lib/core/internal/internals","EmitterAction":"./lib/core/actions/actions","NgxsEmitPluginModule":"./lib/emit.module","ofEmittableDispatched":"./lib/core/operators/of-emittable","ofEmittableSuccessful":"./lib/core/operators/of-emittable","ofEmittableCanceled":"./lib/core/operators/of-emittable","ofEmittableErrored":"./lib/core/operators/of-emittable","ɵc":"./lib/core/services/emit-store.service","ɵd":"./lib/core/services/injector-accessor.service"},"importAs":"@ngxs-labs/emitter"} | ||
{"__symbolic":"module","version":4,"metadata":{"ɵa":{"Dispatched":"DISPATCHED","Successful":"SUCCESSFUL","Canceled":"CANCELED","Errored":"ERRORED"},"ɵb":{"__symbolic":"function","parameters":["types","status"],"value":{"__symbolic":"error","message":"Lambda not supported","line":73,"character":11,"module":"./lib/core/operators/of-emittable"}},"Receiver":{"__symbolic":"function","parameters":["options"],"value":{"__symbolic":"error","message":"Lambda not supported","line":11,"character":11,"module":"./lib/core/decorators/receiver"}},"Emitter":{"__symbolic":"function","parameters":["receiver"],"value":{"__symbolic":"error","message":"Lambda not supported","line":10,"character":11,"module":"./lib/core/decorators/emitter"}},"Emittable":{"__symbolic":"interface"},"OfEmittableActionContext":{"__symbolic":"interface"},"EmitterAction":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":14,"character":33,"context":{"typeName":"T"},"module":"./lib/core/actions/actions"}]}]},"statics":{"type":null}},"NgxsEmitPluginModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵd"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":13,"character":9}}]],"parameters":[{"__symbolic":"reference","name":"ɵd"}]}]},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"NgxsEmitPluginModule"}}}}},"ofEmittableDispatched":{"__symbolic":"function","parameters":["receivers"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵb"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":14,"character":9,"context":{"name":"getReceiverTypes"},"module":"./lib/core/operators/of-emittable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"Dispatched"}]}},"ofEmittableSuccessful":{"__symbolic":"function","parameters":["receivers"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵb"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":14,"character":9,"context":{"name":"getReceiverTypes"},"module":"./lib/core/operators/of-emittable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"Successful"}]}},"ofEmittableCanceled":{"__symbolic":"function","parameters":["receivers"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵb"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":14,"character":9,"context":{"name":"getReceiverTypes"},"module":"./lib/core/operators/of-emittable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"Canceled"}]}},"ofEmittableErrored":{"__symbolic":"function","parameters":["receivers"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵb"},"arguments":[{"__symbolic":"error","message":"Reference to a non-exported function","line":14,"character":9,"context":{"name":"getReceiverTypes"},"module":"./lib/core/operators/of-emittable"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ɵa"},"member":"Errored"}]}},"ɵc":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@ngxs/store","name":"Store","line":9,"character":31},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"emitter":[{"__symbolic":"method"}],"dispatchSingle":[{"__symbolic":"method"}],"dispatchMany":[{"__symbolic":"method"}]}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":17,"character":26}]}]},"statics":{"injector":null}}},"origins":{"ɵa":"./lib/core/internal/internals","ɵb":"./lib/core/operators/of-emittable","Receiver":"./lib/core/decorators/receiver","Emitter":"./lib/core/decorators/emitter","Emittable":"./lib/core/internal/internals","OfEmittableActionContext":"./lib/core/internal/internals","EmitterAction":"./lib/core/actions/actions","NgxsEmitPluginModule":"./lib/emit.module","ofEmittableDispatched":"./lib/core/operators/of-emittable","ofEmittableSuccessful":"./lib/core/operators/of-emittable","ofEmittableCanceled":"./lib/core/operators/of-emittable","ofEmittableErrored":"./lib/core/operators/of-emittable","ɵc":"./lib/core/services/emit-store.service","ɵd":"./lib/core/services/injector-accessor.service"},"importAs":"@ngxs-labs/emitter"} |
{ | ||
"$schema": "../node_modules/ng-packagr/package.schema.json", | ||
"name": "@ngxs-labs/emitter", | ||
"version": "1.1.0", | ||
"version": "1.2.0", | ||
"repository": { | ||
@@ -22,3 +22,4 @@ "type": "git", | ||
"@angular/core": "^7.0.0", | ||
"@ngxs/store": "^0.0.0" | ||
"@ngxs/store": "^0.0.0", | ||
"nanoid": "^0.0.0" | ||
}, | ||
@@ -25,0 +26,0 @@ "main": "bundles/ngxs-labs-emitter.umd.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Mixed license
License(Experimental) Package contains multiple licenses.
Found 1 instance in 1 package
2591
313853
4
1