@micropermit/client-angular 0.2.10 → 0.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -145,13 +145,8 @@ export class MicroClient {
145
145
  val => {
146
146
  /** @type {?} */
147
147
  const entryPoint = MicroObject.fromObject(val, this);
148
- if (entryPoint instanceof MicroObject) {
149
- this.setEntryPoint(entryPoint);
150
- return (/** @type {?} */ (entryPoint));
151
- }
152
- else {
153
- throw Error('Expected the entryPoint to be a Object');
154
- }
148
+ this.setEntryPoint(entryPoint);
149
+ return (/** @type {?} */ (entryPoint));
155
150
  })), this.catchAndHandleError());
156
151
  }
157
152
  /**
@@ -496,4 +491,4 @@ if (false) {
496
491
  */
497
492
  MicroClientLoadError.prototype.defaultHandler;
498
493
  }
499
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3Blcm1pdC9jbGllbnQtYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9taWNyb2NsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQXFCLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFhLGFBQWEsRUFBVyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRzlDLE1BQU0sT0FBTyxXQUFXOzs7O0lBY3BCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFSbEMsc0JBQWlCLEdBQStCLElBQUksYUFBYSxFQUFlLENBQUM7UUFJbEYsWUFBTyxHQUFHLElBQUksQ0FBQztRQUVmLDRCQUF1QixHQUFHLElBQUksQ0FBQztJQUl0QyxDQUFDOzs7OztJQUVNLDBCQUEwQixDQUFDLHVCQUFnQztRQUM5RCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7SUFDM0QsQ0FBQzs7Ozs7SUFFTSxZQUFZLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQzs7Ozs7SUFFTSxhQUFhLENBQUMsVUFBa0I7UUFDbkMsSUFBSSxD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SUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDdkI7SUFDTCxDQUFDOzs7OztJQUVNLFdBQVcsQ0FBQyxPQUE2QjtRQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7Ozs7SUFFTSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7Ozs7SUFFTSxvQkFBb0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDakMsQ0FBQzs7OztJQUVNLGNBQWM7UUFDakIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUNqQyxDQUFDOzs7O0lBRU0saUJBQWlCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUM7SUFDdkMsQ0FBQztDQUNKOzs7Ozs7SUFsQ0csdUNBQXdCOzs7OztJQUN4QixnREFBaUM7Ozs7O0lBRXJCLHFDQUFrQjs7Ozs7SUFBRSw4Q0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7TWljcm9PYmplY3R9IGZyb20gJy4vbWljcm9vYmplY3QnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZmluYWxpemUsIG1hcCwgdGFrZSwgc2hhcmVSZXBsYXl9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7UGFyYW1VdGlsc30gZnJvbSAnLi9wYXJhbXV0aWxzJztcbmltcG9ydCB7TWljcm9FcnJvcn0gZnJvbSAnLi9lcnJvci9taWNyb2Vycm9yJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1pY3JvQ2xpZW50IHtcblxuICAgIHByaXZhdGUgYXV0aEhlYWRlcjogc3RyaW5nO1xuICAgIHByaXZhdGUgcGVybWl0VG9rZW46IHN0cmluZztcbiAgICBwcml2YXRlIGVudHJ5UG9pbnQ6IE1pY3JvT2JqZWN0O1xuXG4gICAgcHJpdmF0ZSBlbnRyeVBvaW50U3ViamVjdDogUmVwbGF5U3ViamVjdDxNaWNyb09iamVjdD4gPSBuZXcgUmVwbGF5U3ViamVjdDxNaWNyb09iamVjdD4oKTtcblxuICAgIHByaXZhdGUgdXJsUmV3cml0ZXI6IChzdHJpbmcpID0+IHN0cmluZztcbiAgICBwcml2YXRlIGRlZmF1bHRFcnJvckhhbmRsZXI6IChodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLCBtaWNyb0Vycm9yOiBNaWNyb09iamVjdCkgPT4gdm9pZDtcbiAgICBwdWJsaWMgdXNlUG9zdCA9IHRydWU7XG5cbiAgICBwdWJsaWMgc2VuZEFzUGVybWl0VG9rZW5IZWFkZXIgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0U2VuZEFzUGVybWl0VG9rZW5IZWFkZXIoc2VuZEFzUGVybWl0VG9rZW5IZWFkZXI6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZW5kQXNQZXJtaXRUb2tlbkhlYWRlciA9IHNlbmRBc1Blcm1pdFRva2VuSGVhZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBdXRoVG9rZW4odG9rZW46IHN0cmluZykge1xuICAgICAgICB0aGlzLmF1dGhIZWFkZXIgPSAnQmVhcmVyICcgKyB0b2tlbjtcbiAgICAgICAgdGhpcy5wZXJtaXRUb2tlbiA9IHRva2VuO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBdXRoSGVhZGVyKGF1dGhIZWFkZXI6IHN0cmluZykge1xuICAgICAgICB0aGlzLmF1dGhIZWFkZXIgPSBhdXRoSGVhZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFbnRyeVBvaW50KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJ5UG9pbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIHdhaXRGb3JFbnRyeVBvaW50KGNiPzogKGVudHJ5UG9pbnQ6IGFueSkgPT4gdm9pZCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGlmIChjYiAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmVudHJ5UG9pbnRTdWJqZWN0LnN1YnNjcmliZShjYik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lbnRyeVBvaW50U3ViamVjdC50b1Byb21pc2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weUF1dGhBbmRFbnRyeXBvaW50T2Yob3RoZXI6IE1pY3JvQ2xpZW50KSB7XG4gICAgICAgIHRoaXMuYXV0aEhlYWRlciA9IG90aGVyLmF1dGhIZWFkZXI7XG4gICAgICAgIHRoaXMucGVybWl0VG9rZW4gPSBvdGhlci5wZXJtaXRUb2tlbjtcbiAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gb3RoZXIuZW50cnlQb2ludDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RW50cnlQb2ludDxUIGV4dGVuZHMgTWljcm9PYmplY3Q+KGVudHJ5UG9pbnQ6IGFueSkge1xuICAgICAgICBpZiAoZW50cnlQb2ludCA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmF1dGhIZWFkZXIgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMucGVybWl0VG9rZW4gPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gZW50cnlQb2ludDtcbiAgICAgICAgICAgIGlmICh0aGlzLmVudHJ5UG9pbnQuX19tZXRhICYmIHRoaXMuZW50cnlQb2ludC5fX21ldGEucGVybWl0VG9rZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEF1dGhUb2tlbih0aGlzLmVudHJ5UG9pbnQuX19tZXRhLnBlcm1pdFRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGVkIHRoZSBlbnRyeVBvaW50IHRvIGNvbnRhaW4gYSBcInBlcm1pdFRva2VuXCIgd2l0aGluIHRoZSBcIl9fbWV0YVwiIGZpZWxkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVudHJ5UG9pbnRTdWJqZWN0Lm5leHQoZW50cnlQb2ludCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGVmYXVsdEVycm9ySGFuZGxlcihoYW5kbGVyOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSwgbWljcm9FcnJvcjogTWljcm9PYmplY3QpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0RXJyb3JIYW5kbGVyID0gaGFuZGxlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlRXJyb3IoaHR0cEVycjogSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEVycm9ySGFuZGxlcikge1xuICAgICAgICAgICAgY29uc3QgbWljcm9FcnJvciA9IE1pY3JvQ2xpZW50LnRvTWljcm9FcnJvcihodHRwRXJyKTtcbiAgICAgICAgICAgIGlmIChtaWNyb0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWljcm9SZXN1bHRPYmo6IE1pY3JvT2JqZWN0ID0gPE1pY3JvT2JqZWN0Pk1pY3JvT2JqZWN0LmZyb21PYmplY3QoaHR0cEVyci5lcnJvciwgdGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0RXJyb3JIYW5kbGVyKGh0dHBFcnIsIG1pY3JvUmVzdWx0T2JqKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0RXJyb3JIYW5kbGVyKGh0dHBFcnIsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlnbml0ZTxUIGV4dGVuZHMgKE1pY3JvT2JqZWN0IHwgTWljcm9PYmplY3RbXSk+KFxuICAgICAgICB1cmw6IHN0cmluZyxcbiAgICAgICAgdXNlcm5hbWU6IFN0cmluZyA9IG51bGwsXG4gICAgICAgIHBhc3N3b3JkOiBTdHJpbmcgPSBudWxsLFxuICAgICAgICBoZWFkZXJzOiBvYmplY3QgPSB7fVxuICAgICk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICBpZiAodGhpcy51cmxSZXdyaXRlcikge1xuICAgICAgICAgICAgdXJsID0gdGhpcy51cmxSZXdyaXRlcih1cmwpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlcXVlc3RIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgICAgIGZvciAoY29uc3QgaGVhZGVyS2V5IGluIGhlYWRlcnMpIHtcbiAgICAgICAgICAgIGlmIChoZWFkZXJzLmhhc093blByb3BlcnR5KGhlYWRlcktleSkpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzLnNldChoZWFkZXJLZXksIGhlYWRlcnNbaGVhZGVyS2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXNlcm5hbWUgIT0gbnVsbCB8fCBwYXNzd29yZCAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsICdCYXNpYyAnICsgYnRvYSh1c2VybmFtZSArICc6JyArIHBhc3N3b3JkKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh1cmwsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHJlcXVlc3RIZWFkZXJzXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAodmFsID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeVBvaW50ID0gTWljcm9PYmplY3QuZnJvbU9iamVjdCh2YWwsIHRoaXMpO1xuICAgICAgICAgICAgICAgIGlmIChlbnRyeVBvaW50IGluc3RhbmNlb2YgTWljcm9PYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRFbnRyeVBvaW50KGVudHJ5UG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnlQb2ludCBhcyBUO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdFeHBlY3RlZCB0aGUgZW50cnlQb2ludCB0byBiZSBhIE9iamVjdCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5jYXRjaEFuZEhhbmRsZUVycm9yKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZDxUPihcbiAgICAgICAgdXJsOiBzdHJpbmcsXG4gICAgICAgIHBhcmFtcz86IG9iamVjdCxcbiAgICAgICAgcmVxdWVzdE9wdGlvbnM/OiBvYmplY3RcbiAgICApOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgbGV0IHJlcXVlc3RIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgICAgIGlmICh0aGlzLmF1dGhIZWFkZXIpIHtcbiAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJzID0gcmVxdWVzdEhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5hdXRoSGVhZGVyKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc2VuZEFzUGVybWl0VG9rZW5IZWFkZXIpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzLnNldCgnTWljcm9QZXJtaXRUb2tlbicsIHRoaXMucGVybWl0VG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG9QYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIGlmIChwYXJhbXMgIT0gbnVsbCB8fCB0aGlzLnVzZVBvc3QpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nUGFyYW1zU3RyID0gUGFyYW1VdGlscy5nZXRQYXJhbSh1cmwsICdvUGFyYW1zJywgdHJ1ZSk7XG4gICAgICAgICAgICBsZXQgZXhpc3RpbmdQYXJhbXM7XG4gICAgICAgICAgICBpZiAoZXhpc3RpbmdQYXJhbXNTdHIpIHtcbiAgICAgICAgICAgICAgICBleGlzdGluZ1BhcmFtcyA9IEpTT04ucGFyc2UoZXhpc3RpbmdQYXJhbXNTdHIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBleGlzdGluZ1BhcmFtcyA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb1BhcmFtcyA9IE9iamVjdC5hc3NpZ24oZXhpc3RpbmdQYXJhbXMsIHBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb3B0aW9ucyA9IHJlcXVlc3RPcHRpb25zO1xuICAgICAgICBpZiAocmVxdWVzdE9wdGlvbnMgIT0gbnVsbCB8fCB0aGlzLnVzZVBvc3QpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZPcHRpb25zU3RyID0gUGFyYW1VdGlscy5nZXRQYXJhbSh1cmwsICdvcHRpb25zJywgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAocHJldk9wdGlvbnNTdHIpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zID0gSlNPTi5wYXJzZShwcmV2T3B0aW9uc1N0cik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucywgcmVxdWVzdE9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBQYXJhbVV0aWxzLmdldFBhcmFtcyh1cmwpO1xuXG4gICAgICAgIGxldCBodHRwT2JzID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMudXNlUG9zdCkge1xuXG4gICAgICAgICAgICBsZXQgYk9QYXJhbXM7XG4gICAgICAgICAgICBjb25zdCBlbmNCT1BhcmFtcyA9IHF1ZXJ5UGFyYW1zWydiT1BhcmFtcyddO1xuICAgICAgICAgICAgaWYgKGVuY0JPUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgYk9QYXJhbXMgPSBKU09OLnBhcnNlKFBhcmFtVXRpbHMuYmFzZTY0VXJsRGVjb2RlKGVuY0JPUGFyYW1zKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBib2R5ID0ge1xuICAgICAgICAgICAgICAgIHBhcmFtczogcXVlcnlQYXJhbXNbJ3BhcmFtcyddLFxuICAgICAgICAgICAgICAgIG9QYXJhbXM6IG9QYXJhbXMsXG4gICAgICAgICAgICAgICAgYlBhcmFtczogcXVlcnlQYXJhbXNbJ2JQYXJhbXMnXSxcbiAgICAgICAgICAgICAgICBiT1BhcmFtczogYk9QYXJhbXMsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1sncGFyYW1zJ107XG4gICAgICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNbJ29QYXJhbXMnXTtcbiAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1snYlBhcmFtcyddO1xuICAgICAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zWydiT1BhcmFtcyddO1xuICAgICAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zWydvcHRpb25zJ107XG5cbiAgICAgICAgICAgIHVybCA9IFBhcmFtVXRpbHMuc2V0UGFyYW1zKHVybCwgcXVlcnlQYXJhbXMpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy51cmxSZXdyaXRlcikge1xuICAgICAgICAgICAgICAgIHVybCA9IHRoaXMudXJsUmV3cml0ZXIodXJsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaHR0cE9icyA9IHRoaXMuaHR0cENsaWVudC5wb3N0KHVybCwgYm9keSwge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlcXVlc3RIZWFkZXJzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNbJ29QYXJhbXMnXSA9IFBhcmFtVXRpbHMuYmFzZTY0VXJsRW5jb2RlKEpTT04uc3RyaW5naWZ5KG9QYXJhbXMpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc1snb3B0aW9ucyddID0gUGFyYW1VdGlscy5iYXNlNjRVcmxFbmNvZGUoSlNPTi5zdHJpbmdpZnkob3B0aW9ucykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdXJsID0gUGFyYW1VdGlscy5zZXRQYXJhbXModXJsLCBxdWVyeVBhcmFtcyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnVybFJld3JpdGVyKSB7XG4gICAgICAgICAgICAgICAgdXJsID0gdGhpcy51cmxSZXdyaXRlcih1cmwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBodHRwT2JzID0gdGhpcy5odHRwQ2xpZW50LmdldCh1cmwsIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVyc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBodHRwT2JzID0gaHR0cE9icy5waXBlKFxuICAgICAgICAgICAgbWFwKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1pY3JvT2JqZWN0LmZyb21PYmplY3QodmFsLCB0aGlzKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5jYXRjaEFuZEhhbmRsZUVycm9yKClcbiAgICAgICAgKVxuICAgICAgICA7XG5cbiAgICAgICAgcmV0dXJuIGh0dHBPYnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYXRjaEFuZEhhbmRsZUVycm9yPFQ+KCk6ICgoc291cmNlOiBPYnNlcnZhYmxlPFQ+KSA9PiBPYnNlcnZhYmxlPFQ+KSB7XG4gICAgICAgIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPFQ+KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc291cmNlLnBpcGUoXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbG9hZEVycm9yID0gbmV3IE1pY3JvQ2xpZW50TG9hZEVycm9yKGVyciwgKGVyclRvSGFuZGxlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVyclRvSGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGxvYWRFcnJvcikucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvYWRFcnJvci5zaG91bGRQcmV2ZW50RGVmYXVsdCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRFcnJvci5oYW5kbGVEZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlQ2hpbGRDbGllbnRGb3JFbnRyeVBvaW50KGVudHJ5UG9pbnQ6IE1pY3JvT2JqZWN0KTogTWljcm9DbGllbnQge1xuICAgICAgICBpZiAoZW50cnlQb2ludC5fX21ldGEgJiYgZW50cnlQb2ludC5fX21ldGEucGVybWl0VG9rZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkQ2xpZW50OiBNaWNyb0NsaWVudCA9IE9iamVjdC5jcmVhdGUodGhpcywge1xuICAgICAgICAgICAgICAgIGVudHJ5UG9pbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYXV0aEhlYWRlcjoge1xuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwZXJtaXRUb2tlbjoge1xuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjaGlsZENsaWVudC5zZXRFbnRyeVBvaW50KGVudHJ5UG9pbnQpO1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkQ2xpZW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgc3VwcGxpZWQgdmFsdWUgY2FuXFwndCBiZSB1c2VkIHRvIGNvbnN0cnVjdCBhIGNoaWxkIE1pY3JvQ2xpZW50IGJlY2F1c2UgaXQgZG9lc25cXCd0IGNvbnRhaW4gbWV0YWRhdGEgd2l0aCBhIHBlcm1pdFRva2VuICcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldFVSTFJld3JpdGVyKHJld3JpdGVyOiAoc3RyaW5nKSA9PiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy51cmxSZXdyaXRlciA9IHJld3JpdGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdG9NaWNyb0Vycm9yKGh0dHBSZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpOiBNaWNyb0Vycm9yIHtcbiAgICAgICAgY29uc3QgcmVzID0gaHR0cFJlc3BvbnNlLmVycm9yO1xuICAgICAgICBpZiAocmVzICYmIHJlcy5fX21ldGEgJiYgcmVzLl9fbWV0YS5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IE1pY3JvRXJyb3IoKSwgcmVzLl9fbWV0YS5lcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgc3RhdGljQ29udGVudFJlZ0V4cCA9IG5ldyBSZWdFeHAoJ1thLXpBLVowLTldOi8vLiooOlswLTldKyk/KC8uKikqL3N0YXRpYygvLiooXFxcXD8uKik/KCMuKik/KT8nKTtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ3Vlc3NNaWNyb0NvbXBvbmVudEJhc2VVUkwoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgaHJlZiA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuXG4gICAgICAgIC8vIExhc3QgVVJMLVNlZ2VtZW50IGlzIHN0YXRpY1xuICAgICAgICBpZiAoTWljcm9DbGllbnQuc3RhdGljQ29udGVudFJlZ0V4cC50ZXN0KGhyZWYpKSB7XG4gICAgICAgICAgICByZXR1cm4gaHJlZi5yZXBsYWNlKG5ldyBSZWdFeHAoJy9zdGF0aWMvLionKSwgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cCgnLyMvLionKSwgJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbC5zdGFydHNXaXRoKCdmaWxlJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lICsgJzo4MDgwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ3Vlc3NNaWNyb0NvbXBvbmVudEF1dGhvcml6ZVVSTCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5ndWVzc01pY3JvQ29tcG9uZW50QmFzZVVSTCgpICsgJy9hdXRob3JpemUnO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pY3JvQ2xpZW50TG9hZEVycm9yIHtcbiAgICBwcml2YXRlIGhhbmRsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGRvUHJldmVudERlZmF1bHQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZXJyb3I6IGFueSwgcHJpdmF0ZSBkZWZhdWx0SGFuZGxlcjogKGVycjogYW55KSA9PiB2b2lkKSB7XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlRGVmYXVsdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdEhhbmRsZXIodGhpcy5lcnJvcik7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUVycm9yKGhhbmRsZXI6IChlcnJvcjogYW55KSA9PiB2b2lkKSB7XG4gICAgICAgIGhhbmRsZXIodGhpcy5lcnJvcik7XG4gICAgICAgIHRoaXMuaGFuZGxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGlzSGFuZGxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvdWxkUHJldmVudERlZmF1bHQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvUHJldmVudERlZmF1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHByZXZlbnREZWZhdWx0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRvUHJldmVudERlZmF1bHQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNEZWZhdWx0SGFuZGxlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEhhbmRsZXIgIT0gbnVsbDtcbiAgICB9XG59XG4iXX0=
494
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3Blcm1pdC9jbGllbnQtYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9taWNyb2NsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQXFCLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFhLGFBQWEsRUFBVyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRzlDLE1BQU0sT0FBTyxXQUFXOzs7O0lBY3BCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFSbEMsc0JBQWlCLEdBQStCLElBQUksYUFBYSxFQUFlLENBQUM7UUFJbEYsWUFBTyxHQUFHLElBQUksQ0FBQztRQUVmLDRCQUF1QixHQUFHLElBQUksQ0FBQztJQUl0QyxDQUFDOzs7OztJQUVNLDBCQUEwQixDQUFDLHVCQUFnQztRQUM5RCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7SUFDM0QsQ0FBQzs7Ozs7SUFFTSxZQUFZLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQzs7Ozs7SUFFTSxhQUFhLENBQUMsVUFBa0I7UUFDbkMsSUFBSSxD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QUNMLENBQUM7Ozs7O0lBRU0sV0FBVyxDQUFDLE9BQTZCO1FBQzVDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQzs7OztJQUVNLFNBQVM7UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQzs7OztJQUVNLG9CQUFvQjtRQUN2QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDOzs7O0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLENBQUM7Ozs7SUFFTSxpQkFBaUI7UUFDcEIsT0FBTyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQztJQUN2QyxDQUFDO0NBQ0o7Ozs7OztJQWxDRyx1Q0FBd0I7Ozs7O0lBQ3hCLGdEQUFpQzs7Ozs7SUFFckIscUNBQWtCOzs7OztJQUFFLDhDQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtNaWNyb09iamVjdH0gZnJvbSAnLi9taWNyb29iamVjdCc7XG5pbXBvcnQge09ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QsIHRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBmaW5hbGl6ZSwgbWFwLCB0YWtlLCBzaGFyZVJlcGxheX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtQYXJhbVV0aWxzfSBmcm9tICcuL3BhcmFtdXRpbHMnO1xuaW1wb3J0IHtNaWNyb0Vycm9yfSBmcm9tICcuL2Vycm9yL21pY3JvZXJyb3InO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWljcm9DbGllbnQge1xuXG4gICAgcHJpdmF0ZSBhdXRoSGVhZGVyOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBwZXJtaXRUb2tlbjogc3RyaW5nO1xuICAgIHByaXZhdGUgZW50cnlQb2ludDogTWljcm9PYmplY3Q7XG5cbiAgICBwcml2YXRlIGVudHJ5UG9pbnRTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PE1pY3JvT2JqZWN0PiA9IG5ldyBSZXBsYXlTdWJqZWN0PE1pY3JvT2JqZWN0PigpO1xuXG4gICAgcHJpdmF0ZSB1cmxSZXdyaXRlcjogKHN0cmluZykgPT4gc3RyaW5nO1xuICAgIHByaXZhdGUgZGVmYXVsdEVycm9ySGFuZGxlcjogKGh0dHBFcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsIG1pY3JvRXJyb3I6IE1pY3JvT2JqZWN0KSA9PiB2b2lkO1xuICAgIHB1YmxpYyB1c2VQb3N0ID0gdHJ1ZTtcblxuICAgIHB1YmxpYyBzZW5kQXNQZXJtaXRUb2tlbkhlYWRlciA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpIHtcblxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRTZW5kQXNQZXJtaXRUb2tlbkhlYWRlcihzZW5kQXNQZXJtaXRUb2tlbkhlYWRlcjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNlbmRBc1Blcm1pdFRva2VuSGVhZGVyID0gc2VuZEFzUGVybWl0VG9rZW5IZWFkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEF1dGhUb2tlbih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuYXV0aEhlYWRlciA9ICdCZWFyZXIgJyArIHRva2VuO1xuICAgICAgICB0aGlzLnBlcm1pdFRva2VuID0gdG9rZW47XG4gICAgfVxuXG4gICAgcHVibGljIHNldEF1dGhIZWFkZXIoYXV0aEhlYWRlcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuYXV0aEhlYWRlciA9IGF1dGhIZWFkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEVudHJ5UG9pbnQoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50cnlQb2ludDtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2FpdEZvckVudHJ5UG9pbnQoY2I/OiAoZW50cnlQb2ludDogYW55KSA9PiB2b2lkKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgaWYgKGNiICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuZW50cnlQb2ludFN1YmplY3Quc3Vic2NyaWJlKGNiKTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJ5UG9pbnRTdWJqZWN0LnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5QXV0aEFuZEVudHJ5cG9pbnRPZihvdGhlcjogTWljcm9DbGllbnQpIHtcbiAgICAgICAgdGhpcy5hdXRoSGVhZGVyID0gb3RoZXIuYXV0aEhlYWRlcjtcbiAgICAgICAgdGhpcy5wZXJtaXRUb2tlbiA9IG90aGVyLnBlcm1pdFRva2VuO1xuICAgICAgICB0aGlzLmVudHJ5UG9pbnQgPSBvdGhlci5lbnRyeVBvaW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRFbnRyeVBvaW50PFQgZXh0ZW5kcyBNaWNyb09iamVjdD4oZW50cnlQb2ludDogYW55KSB7XG4gICAgICAgIGlmIChlbnRyeVBvaW50ID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0aEhlYWRlciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmVudHJ5UG9pbnQgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5wZXJtaXRUb2tlbiA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVudHJ5UG9pbnQgPSBlbnRyeVBvaW50O1xuICAgICAgICAgICAgaWYgKHRoaXMuZW50cnlQb2ludC5fX21ldGEgJiYgdGhpcy5lbnRyeVBvaW50Ll9fbWV0YS5wZXJtaXRUb2tlbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0QXV0aFRva2VuKHRoaXMuZW50cnlQb2ludC5fX21ldGEucGVybWl0VG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignRXhwZWN0ZWQgdGhlIGVudHJ5UG9pbnQgdG8gY29udGFpbiBhIFwicGVybWl0VG9rZW5cIiB3aXRoaW4gdGhlIFwiX19tZXRhXCIgZmllbGQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZW50cnlQb2ludFN1YmplY3QubmV4dChlbnRyeVBvaW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXREZWZhdWx0RXJyb3JIYW5kbGVyKGhhbmRsZXI6IChodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLCBtaWNyb0Vycm9yOiBNaWNyb09iamVjdCkgPT4gdm9pZCkge1xuICAgICAgICB0aGlzLmRlZmF1bHRFcnJvckhhbmRsZXIgPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVFcnJvcihodHRwRXJyOiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0RXJyb3JIYW5kbGVyKSB7XG4gICAgICAgICAgICBjb25zdCBtaWNyb0Vycm9yID0gTWljcm9DbGllbnQudG9NaWNyb0Vycm9yKGh0dHBFcnIpO1xuICAgICAgICAgICAgaWYgKG1pY3JvRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaWNyb1Jlc3VsdE9iajogTWljcm9PYmplY3QgPSA8TWljcm9PYmplY3Q+TWljcm9PYmplY3QuZnJvbU9iamVjdChodHRwRXJyLmVycm9yLCB0aGlzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRFcnJvckhhbmRsZXIoaHR0cEVyciwgbWljcm9SZXN1bHRPYmopO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRFcnJvckhhbmRsZXIoaHR0cEVyciwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaWduaXRlPFQ+KFxuICAgICAgICB1cmw6IHN0cmluZyxcbiAgICAgICAgdXNlcm5hbWU6IFN0cmluZyA9IG51bGwsXG4gICAgICAgIHBhc3N3b3JkOiBTdHJpbmcgPSBudWxsLFxuICAgICAgICBoZWFkZXJzOiBvYmplY3QgPSB7fVxuICAgICk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICBpZiAodGhpcy51cmxSZXdyaXRlcikge1xuICAgICAgICAgICAgdXJsID0gdGhpcy51cmxSZXdyaXRlcih1cmwpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlcXVlc3RIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgICAgIGZvciAoY29uc3QgaGVhZGVyS2V5IGluIGhlYWRlcnMpIHtcbiAgICAgICAgICAgIGlmIChoZWFkZXJzLmhhc093blByb3BlcnR5KGhlYWRlcktleSkpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzLnNldChoZWFkZXJLZXksIGhlYWRlcnNbaGVhZGVyS2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXNlcm5hbWUgIT0gbnVsbCB8fCBwYXNzd29yZCAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsICdCYXNpYyAnICsgYnRvYSh1c2VybmFtZSArICc6JyArIHBhc3N3b3JkKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh1cmwsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHJlcXVlc3RIZWFkZXJzXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAodmFsID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeVBvaW50ID0gTWljcm9PYmplY3QuZnJvbU9iamVjdCh2YWwsIHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RW50cnlQb2ludChlbnRyeVBvaW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZW50cnlQb2ludCBhcyBUO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0aGlzLmNhdGNoQW5kSGFuZGxlRXJyb3IoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2FkPFQ+KFxuICAgICAgICB1cmw6IHN0cmluZyxcbiAgICAgICAgcGFyYW1zPzogb2JqZWN0LFxuICAgICAgICByZXF1ZXN0T3B0aW9ucz86IG9iamVjdFxuICAgICk6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICBsZXQgcmVxdWVzdEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICAgICAgaWYgKHRoaXMuYXV0aEhlYWRlcikge1xuICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmF1dGhIZWFkZXIpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zZW5kQXNQZXJtaXRUb2tlbkhlYWRlcikge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJzID0gcmVxdWVzdEhlYWRlcnMuc2V0KCdNaWNyb1Blcm1pdFRva2VuJywgdGhpcy5wZXJtaXRUb2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb1BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgaWYgKHBhcmFtcyAhPSBudWxsIHx8IHRoaXMudXNlUG9zdCkge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdQYXJhbXNTdHIgPSBQYXJhbVV0aWxzLmdldFBhcmFtKHVybCwgJ29QYXJhbXMnLCB0cnVlKTtcbiAgICAgICAgICAgIGxldCBleGlzdGluZ1BhcmFtcztcbiAgICAgICAgICAgIGlmIChleGlzdGluZ1BhcmFtc1N0cikge1xuICAgICAgICAgICAgICAgIGV4aXN0aW5nUGFyYW1zID0gSlNPTi5wYXJzZShleGlzdGluZ1BhcmFtc1N0cik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV4aXN0aW5nUGFyYW1zID0ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvUGFyYW1zID0gT2JqZWN0LmFzc2lnbihleGlzdGluZ1BhcmFtcywgcGFyYW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBvcHRpb25zID0gcmVxdWVzdE9wdGlvbnM7XG4gICAgICAgIGlmIChyZXF1ZXN0T3B0aW9ucyAhPSBudWxsIHx8IHRoaXMudXNlUG9zdCkge1xuICAgICAgICAgICAgY29uc3QgcHJldk9wdGlvbnNTdHIgPSBQYXJhbVV0aWxzLmdldFBhcmFtKHVybCwgJ29wdGlvbnMnLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChwcmV2T3B0aW9uc1N0cikge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBKU09OLnBhcnNlKHByZXZPcHRpb25zU3RyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbihvcHRpb25zLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IFBhcmFtVXRpbHMuZ2V0UGFyYW1zKHVybCk7XG5cbiAgICAgICAgbGV0IGh0dHBPYnMgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy51c2VQb3N0KSB7XG5cbiAgICAgICAgICAgIGxldCBiT1BhcmFtcztcbiAgICAgICAgICAgIGNvbnN0IGVuY0JPUGFyYW1zID0gcXVlcnlQYXJhbXNbJ2JPUGFyYW1zJ107XG4gICAgICAgICAgICBpZiAoZW5jQk9QYXJhbXMpIHtcbiAgICAgICAgICAgICAgICBiT1BhcmFtcyA9IEpTT04ucGFyc2UoUGFyYW1VdGlscy5iYXNlNjRVcmxEZWNvZGUoZW5jQk9QYXJhbXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiBxdWVyeVBhcmFtc1sncGFyYW1zJ10sXG4gICAgICAgICAgICAgICAgb1BhcmFtczogb1BhcmFtcyxcbiAgICAgICAgICAgICAgICBiUGFyYW1zOiBxdWVyeVBhcmFtc1snYlBhcmFtcyddLFxuICAgICAgICAgICAgICAgIGJPUGFyYW1zOiBiT1BhcmFtcyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zWydwYXJhbXMnXTtcbiAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1snb1BhcmFtcyddO1xuICAgICAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zWydiUGFyYW1zJ107XG4gICAgICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNbJ2JPUGFyYW1zJ107XG4gICAgICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNbJ29wdGlvbnMnXTtcblxuICAgICAgICAgICAgdXJsID0gUGFyYW1VdGlscy5zZXRQYXJhbXModXJsLCBxdWVyeVBhcmFtcyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnVybFJld3JpdGVyKSB7XG4gICAgICAgICAgICAgICAgdXJsID0gdGhpcy51cmxSZXdyaXRlcih1cmwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBodHRwT2JzID0gdGhpcy5odHRwQ2xpZW50LnBvc3QodXJsLCBib2R5LCB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczogcmVxdWVzdEhlYWRlcnNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG9QYXJhbXMpIHtcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc1snb1BhcmFtcyddID0gUGFyYW1VdGlscy5iYXNlNjRVcmxFbmNvZGUoSlNPTi5zdHJpbmdpZnkob1BhcmFtcykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zWydvcHRpb25zJ10gPSBQYXJhbVV0aWxzLmJhc2U2NFVybEVuY29kZShKU09OLnN0cmluZ2lmeShvcHRpb25zKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cmwgPSBQYXJhbVV0aWxzLnNldFBhcmFtcyh1cmwsIHF1ZXJ5UGFyYW1zKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudXJsUmV3cml0ZXIpIHtcbiAgICAgICAgICAgICAgICB1cmwgPSB0aGlzLnVybFJld3JpdGVyKHVybCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGh0dHBPYnMgPSB0aGlzLmh0dHBDbGllbnQuZ2V0KHVybCwge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlcXVlc3RIZWFkZXJzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGh0dHBPYnMgPSBodHRwT2JzLnBpcGUoXG4gICAgICAgICAgICBtYXAodmFsID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWljcm9PYmplY3QuZnJvbU9iamVjdCh2YWwsIHRoaXMpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0aGlzLmNhdGNoQW5kSGFuZGxlRXJyb3IoKVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBodHRwT2JzO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2F0Y2hBbmRIYW5kbGVFcnJvcjxUPigpOiAoKHNvdXJjZTogT2JzZXJ2YWJsZTxUPikgPT4gT2JzZXJ2YWJsZTxUPikge1xuICAgICAgICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxUPikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxvYWRFcnJvciA9IG5ldyBNaWNyb0NsaWVudExvYWRFcnJvcihlcnIsIChlcnJUb0hhbmRsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJUb0hhbmRsZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihsb2FkRXJyb3IpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2FkRXJyb3Iuc2hvdWxkUHJldmVudERlZmF1bHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkRXJyb3IuaGFuZGxlRGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUNoaWxkQ2xpZW50Rm9yRW50cnlQb2ludChlbnRyeVBvaW50OiBNaWNyb09iamVjdCk6IE1pY3JvQ2xpZW50IHtcbiAgICAgICAgaWYgKGVudHJ5UG9pbnQuX19tZXRhICYmIGVudHJ5UG9pbnQuX19tZXRhLnBlcm1pdFRva2VuKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZENsaWVudDogTWljcm9DbGllbnQgPSBPYmplY3QuY3JlYXRlKHRoaXMsIHtcbiAgICAgICAgICAgICAgICBlbnRyeVBvaW50OiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGF1dGhIZWFkZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcGVybWl0VG9rZW46IHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2hpbGRDbGllbnQuc2V0RW50cnlQb2ludChlbnRyeVBvaW50KTtcbiAgICAgICAgICAgIHJldHVybiBjaGlsZENsaWVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHN1cHBsaWVkIHZhbHVlIGNhblxcJ3QgYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBjaGlsZCBNaWNyb0NsaWVudCBiZWNhdXNlIGl0IGRvZXNuXFwndCBjb250YWluIG1ldGFkYXRhIHdpdGggYSBwZXJtaXRUb2tlbiAnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRVUkxSZXdyaXRlcihyZXdyaXRlcjogKHN0cmluZykgPT4gc3RyaW5nKSB7XG4gICAgICAgIHRoaXMudXJsUmV3cml0ZXIgPSByZXdyaXRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHRvTWljcm9FcnJvcihodHRwUmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKTogTWljcm9FcnJvciB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGh0dHBSZXNwb25zZS5lcnJvcjtcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuX19tZXRhICYmIHJlcy5fX21ldGEuZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBNaWNyb0Vycm9yKCksIHJlcy5fX21ldGEuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHN0YXRpY0NvbnRlbnRSZWdFeHAgPSBuZXcgUmVnRXhwKCdbYS16QS1aMC05XTovLy4qKDpbMC05XSspPygvLiopKi9zdGF0aWMoLy4qKFxcXFw/LiopPygjLiopPyk/Jyk7XG5cbiAgICBwdWJsaWMgc3RhdGljIGd1ZXNzTWljcm9Db21wb25lbnRCYXNlVVJMKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcblxuICAgICAgICAvLyBMYXN0IFVSTC1TZWdlbWVudCBpcyBzdGF0aWNcbiAgICAgICAgaWYgKE1pY3JvQ2xpZW50LnN0YXRpY0NvbnRlbnRSZWdFeHAudGVzdChocmVmKSkge1xuICAgICAgICAgICAgcmV0dXJuIGhyZWYucmVwbGFjZShuZXcgUmVnRXhwKCcvc3RhdGljLy4qJyksICcnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKG5ldyBSZWdFeHAoJy8jLy4qJyksICcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wuc3RhcnRzV2l0aCgnZmlsZScpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdodHRwOi8vbG9jYWxob3N0OjgwODAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSArICc6ODA4MCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGd1ZXNzTWljcm9Db21wb25lbnRBdXRob3JpemVVUkwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3Vlc3NNaWNyb0NvbXBvbmVudEJhc2VVUkwoKSArICcvYXV0aG9yaXplJztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNaWNyb0NsaWVudExvYWRFcnJvciB7XG4gICAgcHJpdmF0ZSBoYW5kbGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBkb1ByZXZlbnREZWZhdWx0ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVycm9yOiBhbnksIHByaXZhdGUgZGVmYXVsdEhhbmRsZXI6IChlcnI6IGFueSkgPT4gdm9pZCkge1xuXG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZURlZmF1bHQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRIYW5kbGVyKHRoaXMuZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVFcnJvcihoYW5kbGVyOiAoZXJyb3I6IGFueSkgPT4gdm9pZCkge1xuICAgICAgICBoYW5kbGVyKHRoaXMuZXJyb3IpO1xuICAgICAgICB0aGlzLmhhbmRsZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0hhbmRsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3VsZFByZXZlbnREZWZhdWx0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kb1ByZXZlbnREZWZhdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmV2ZW50RGVmYXVsdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kb1ByZXZlbnREZWZhdWx0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzRGVmYXVsdEhhbmRsZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRIYW5kbGVyICE9IG51bGw7XG4gICAgfVxufVxuIl19
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { LinkField } from './links/linkfield';
6
6
  import { CallableLink, LinkSerializer } from './links/callablelink';
7
+ import * as _ from 'lodash';
7
8
  // WARNING: interface has both a type and a value, skipping emit
8
9
  export class MicroObject {
9
10
  constructor() {
@@ -12,11 +13,11 @@ export class MicroObject {
12
13
  /**
13
14
  * @template T
14
15
  * @param {?} toCopy
15
- * @param {?} client
16
+ * @param {?=} client
16
17
  * @return {?}
17
18
  */
18
19
  static deepCopy(toCopy, client) {
19
- return (/** @type {?} */ (MicroObject.fromString(JSON.stringify(toCopy), client)));
20
+ return (/** @type {?} */ (_.cloneDeep(toCopy)));
20
21
  }
21
22
  /**
22
23
  * @template T
@@ -206,4 +207,4 @@ if (false) {
206
207
  /** @type {?} */
207
208
  MicroObjectMetadata.prototype.error;
208
209
  }
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9vYmplY3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9wZXJtaXQvY2xpZW50LWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvbWljcm9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDOztBQU9sRSxNQUFNLE9BQU8sV0FBVztJQUF4QjtRQUdJLFdBQU0sR0FBd0IsU0FBUyxDQUFDO0lBZ0Y1QyxDQUFDOzs7Ozs7O0lBOUVVLE1BQU0sQ0FBQyxRQUFRLENBQThCLE1BQVMsRUFBRSxNQUFtQjtRQUM5RSxPQUFPLG1CQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBQSxDQUFDO0lBQ3JFLENBQUM7Ozs7Ozs7O0lBRU0sTUFBTSxDQUFDLFVBQVUsQ0FBbUIsR0FBVyxFQUFFLE1BQW1CLEVBQUUsWUFBZSxJQUFJOztjQUN0RixHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7Ozs7Ozs7SUFFTSxNQUFNLENBQUMsVUFBVSxDQUFtQixHQUFRLEVBQUUsTUFBbUIsRUFBRSxZQUFlLElBQUk7UUFDekYsSUFBRyxHQUFHLEtBQUssSUFBSSxFQUFDO1lBQ1osT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTs7a0JBQ2QsTUFBTSxHQUFRLEdBQUc7WUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7O3NCQUM5QixJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7b0JBQzFCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxtQkFBRyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLEVBQUEsQ0FBQztpQkFDbEU7YUFDSjtZQUNELE9BQU8sTUFBTSxDQUFDO1NBQ2pCO2FBQU07WUFDSCxLQUFLLE1BQU0sS0FBSyxJQUFJLEdBQUcsRUFBRTtnQkFDckIsSUFBSSxLQUFLLEtBQUssV0FBVyxDQUFDLFFBQVEsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFOzswQkFDdkQsVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7b0JBQzdCLElBQUksVUFBVSxFQUFFO3dCQUNaLElBQUksVUFBVSxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFOzRCQUMzRCxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO3lCQUN0RTtxQkFDSjtpQkFDSjthQUNKOztrQkFFSyxHQUFHLEdBQUcsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUzs7a0JBQzNELFdBQVcsR0FBZ0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQztZQUd2RSxXQUFXLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRXRELE9BQU8sbUJBQUcsV0FBVyxFQUFBLENBQUM7U0FDekI7SUFFTCxDQUFDOzs7Ozs7O0lBRU8sTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQXdCLEVBQUUsTUFBbUI7O2NBQ3ZFLE9BQU8sR0FBd0IsV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtRQUNuRyxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUU7O2dCQUNiLFdBQVcsR0FBRyxNQUFNO1lBQ3hCLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtnQkFDckIsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksSUFBSSxFQUFFO29CQUNoQyxXQUFXLEdBQUcsTUFBTSxDQUFDLDhCQUE4QixDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUNwRTthQUNKO1lBRUQsV0FBVyxDQUFDLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztZQUVyRixXQUFXLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDM0UsV0FBVyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBRWpGO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0wsQ0FBQzs7Ozs7Ozs7SUFFTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBeUIsRUFBRSxXQUF3QixFQUFFLE1BQW1CO1FBQ3BHLElBQUksQ0FBQyxXQUFXOzs7OztRQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFOztrQkFDN0IsS0FBSyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7WUFDbkMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQztRQUN2RixDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7Ozs7O0lBRU8sTUFBTSxDQUFDLG1CQUFtQixDQUFDLElBQXlCLEVBQUUsV0FBd0IsRUFBRSxNQUFtQjtRQUN2RyxJQUFJLENBQUMsYUFBYTs7Ozs7UUFBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNyQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlELENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7QUFqRmEsb0JBQVEsR0FBRyxRQUFRLENBQUM7OztJQUFsQyxxQkFBa0M7O0lBRWxDLDZCQUF3Qzs7QUFrRjVDLE1BQU0sT0FBTyxtQkFBbUI7Ozs7OztJQVE1QixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQVcsRUFBRSxNQUFtQjs7Y0FDeEMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxtQkFBbUIsRUFBRSxFQUFFLEdBQUcsQ0FBQztRQUVqRSxJQUFJLFdBQVcsQ0FBQyxRQUFRLElBQUksSUFBSSxFQUFFO1lBQzlCLFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxTQUFTLENBQUMsbUJBQUssV0FBVyxDQUFDLFFBQVEsRUFBQSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3hFLFdBQVcsQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUM7U0FDN0Q7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDOzs7OztJQUVNLFVBQVUsQ0FBQyxHQUFXO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDOzs7OztJQUVNLE9BQU8sQ0FBQyxHQUFXO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDbkMsQ0FBQzs7Ozs7SUFFTSxXQUFXLENBQUMsRUFBNEM7UUFDM0QsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzNCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2pDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQzlCO1NBQ0o7SUFDTCxDQUFDOzs7OztJQUVNLGFBQWEsQ0FBQyxFQUE0QztRQUM3RCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDaEM7U0FDSjtJQUNMLENBQUM7Q0FHSjs7O0lBM0NHLG9DQUFXOztJQUNYLHNDQUFhOztJQUNiLDBDQUFvQjs7SUFDcEIsdUNBQXlCOztJQUN6QixvQ0FBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01pY3JvQ2xpZW50fSBmcm9tICcuL21pY3JvY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtMaW5rRmllbGR9IGZyb20gJy4vbGlua3MvbGlua2ZpZWxkJztcbmltcG9ydCB7Q2FsbGFibGVMaW5rLCBMaW5rU2VyaWFsaXplcn0gZnJvbSAnLi9saW5rcy9jYWxsYWJsZWxpbmsnO1xuaW1wb3J0IHtNaWNyb0Vycm9yfSBmcm9tICcuL2Vycm9yL21pY3JvZXJyb3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1pY3JvT2JqZWN0IHtcbiAgICBfX21ldGE6IE1pY3JvT2JqZWN0TWV0YWRhdGE7XG59XG5cbmV4cG9ydCBjbGFzcyBNaWNyb09iamVjdCBpbXBsZW1lbnRzIE1pY3JvT2JqZWN0IHtcbiAgICBwdWJsaWMgc3RhdGljIE1FVEFfS0VZID0gJ19fbWV0YSc7XG5cbiAgICBfX21ldGE6IE1pY3JvT2JqZWN0TWV0YWRhdGEgPSB1bmRlZmluZWQ7XG5cbiAgICBwdWJsaWMgc3RhdGljIGRlZXBDb3B5PFQgZXh0ZW5kcyBvYmplY3QgfCBvYmplY3RbXT4odG9Db3B5OiBULCBjbGllbnQ6IE1pY3JvQ2xpZW50KTogVCB7XG4gICAgICAgIHJldHVybiA8VD5NaWNyb09iamVjdC5mcm9tU3RyaW5nKEpTT04uc3RyaW5naWZ5KHRvQ29weSksIGNsaWVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tU3RyaW5nPFQgZXh0ZW5kcyBvYmplY3Q+KHN0cjogc3RyaW5nLCBjbGllbnQ6IE1pY3JvQ2xpZW50LCBwcm90b3R5cGU6IFQgPSBudWxsKTogVCB8IFRbXSB7XG4gICAgICAgIGNvbnN0IG9iaiA9IEpTT04ucGFyc2Uoc3RyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbU9iamVjdChvYmosIGNsaWVudCwgcHJvdG90eXBlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21PYmplY3Q8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBhbnksIGNsaWVudDogTWljcm9DbGllbnQsIHByb3RvdHlwZTogVCA9IG51bGwpOiBUIHwgVFtdIHtcbiAgICAgICAgaWYob2JqID09PSBudWxsKXtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICAgICAgY29uc3Qgb2JqQXJyOiBUW10gPSBvYmo7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9iakFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW0gPSBvYmpBcnJbaV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBlbGVtID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBvYmpBcnJbaV0gPSA8VD5NaWNyb09iamVjdC5mcm9tT2JqZWN0KGVsZW0sIGNsaWVudCwgcHJvdG90eXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb2JqQXJyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQgIT09IE1pY3JvT2JqZWN0Lk1FVEFfS0VZICYmIG9iai5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IG9ialtmaWVsZF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRWYWx1ZSBpbnN0YW5jZW9mIE9iamVjdCB8fCBBcnJheS5pc0FycmF5KGZpZWxkVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqW2ZpZWxkXSA9IE1pY3JvT2JqZWN0LmZyb21PYmplY3QoZmllbGRWYWx1ZSwgY2xpZW50LCBwcm90b3R5cGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzcmMgPSBwcm90b3R5cGUgPT0gbnVsbCA/IE1pY3JvT2JqZWN0LnByb3RvdHlwZSA6IHByb3RvdHlwZTtcbiAgICAgICAgICAgIGNvbnN0IG1pY3JvT2JqZWN0OiBNaWNyb09iamVjdCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShzcmMpLCBvYmopO1xuXG5cbiAgICAgICAgICAgIE1pY3JvT2JqZWN0LmF0dGFjaE1ldGFkYXRhT2JqZWN0KG1pY3JvT2JqZWN0LCBjbGllbnQpO1xuXG4gICAgICAgICAgICByZXR1cm4gPFQ+bWljcm9PYmplY3Q7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGF0dGFjaE1ldGFkYXRhT2JqZWN0KG1pY3JvT2JqZWN0OiBNaWNyb09iamVjdCwgY2xpZW50OiBNaWNyb0NsaWVudCkge1xuICAgICAgICBjb25zdCByYXdNZXRhOiBNaWNyb09iamVjdE1ldGFkYXRhID0gbWljcm9PYmplY3QgIT0gbnVsbCA/IG1pY3JvT2JqZWN0W01pY3JvT2JqZWN0Lk1FVEFfS0VZXSA6IG51bGw7XG4gICAgICAgIGlmIChyYXdNZXRhICE9IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBjbGllbnRUb1VzZSA9IGNsaWVudDtcbiAgICAgICAgICAgIGlmIChyYXdNZXRhLnBlcm1pdFRva2VuKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNsaWVudC5nZXRFbnRyeVBvaW50KCkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjbGllbnRUb1VzZSA9IGNsaWVudC5jcmVhdGVDaGlsZENsaWVudEZvckVudHJ5UG9pbnQobWljcm9PYmplY3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbWljcm9PYmplY3QuX19tZXRhID0gTWljcm9PYmplY3RNZXRhZGF0YS5mcm9tT2JqZWN0KG1pY3JvT2JqZWN0Ll9fbWV0YSwgY2xpZW50VG9Vc2UpO1xuXG4gICAgICAgICAgICBNaWNyb09iamVjdC5hdHRhY2hMaW5rRmllbGRzKG1pY3JvT2JqZWN0Ll9fbWV0YSwgbWljcm9PYmplY3QsIGNsaWVudFRvVXNlKTtcbiAgICAgICAgICAgIE1pY3JvT2JqZWN0LmF0dGFjaENhbGxhYmxlTGlua3MobWljcm9PYmplY3QuX19tZXRhLCBtaWNyb09iamVjdCwgY2xpZW50VG9Vc2UpO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGF0dGFjaExpbmtGaWVsZHMobWV0YTogTWljcm9PYmplY3RNZXRhZGF0YSwgbWljcm9PYmplY3Q6IE1pY3JvT2JqZWN0LCBjbGllbnQ6IE1pY3JvQ2xpZW50KSB7XG4gICAgICAgIG1ldGEuZm9yRWFjaExpbmsoKGxpbmtOYW1lLCBsaW5rVXJsKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG1pY3JvT2JqZWN0W2xpbmtOYW1lXTtcbiAgICAgICAgICAgIG1pY3JvT2JqZWN0W2xpbmtOYW1lXSA9IG5ldyBMaW5rRmllbGQobGlua1VybCwgY2xpZW50LCB2YWx1ZSwgdmFsdWUgIT09IHVuZGVmaW5lZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGF0dGFjaENhbGxhYmxlTGlua3MobWV0YTogTWljcm9PYmplY3RNZXRhZGF0YSwgbWljcm9PYmplY3Q6IE1pY3JvT2JqZWN0LCBjbGllbnQ6IE1pY3JvQ2xpZW50KSB7XG4gICAgICAgIG1ldGEuZm9yRWFjaEFjdGlvbigobGlua05hbWUsIGxpbmtVcmwpID0+IHtcbiAgICAgICAgICAgIG1pY3JvT2JqZWN0W2xpbmtOYW1lXSA9IG5ldyBDYWxsYWJsZUxpbmsobGlua1VybCwgY2xpZW50KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWljcm9PYmplY3RNZXRhZGF0YSB7XG4gICAgbGlua3M6IGFueTtcbiAgICBhY3Rpb25zOiBhbnk7XG4gICAgcGVybWl0VG9rZW46IHN0cmluZztcbiAgICBuZXh0UGFnZTogTGlua0ZpZWxkPGFueT47XG4gICAgZXJyb3I6IE1pY3JvRXJyb3I7XG5cblxuICAgIHN0YXRpYyBmcm9tT2JqZWN0KG9iajogb2JqZWN0LCBjbGllbnQ6IE1pY3JvQ2xpZW50KTogTWljcm9PYmplY3RNZXRhZGF0YSB7XG4gICAgICAgIGNvbnN0IG9iak1ldGFkYXRhID0gT2JqZWN0LmFzc2lnbihuZXcgTWljcm9PYmplY3RNZXRhZGF0YSgpLCBvYmopO1xuXG4gICAgICAgIGlmIChvYmpNZXRhZGF0YS5uZXh0UGFnZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBvYmpNZXRhZGF0YS5uZXh0UGFnZSA9IG5ldyBMaW5rRmllbGQoPGFueT5vYmpNZXRhZGF0YS5uZXh0UGFnZSwgY2xpZW50KTtcbiAgICAgICAgICAgIG9iak1ldGFkYXRhLm5leHRQYWdlLnNlcmlhbGl6ZVRvID0gTGlua1NlcmlhbGl6ZXIuQVNfTElOSztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYmpNZXRhZGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TGlua1VybChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpbmtzW2tleV07XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0xpbmsoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlua3Nba2V5XSAhPSBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb3JFYWNoTGluayhvcDogKGxpbmtOYW1lOiBzdHJpbmcsIGxpbms6IHN0cmluZykgPT4gdm9pZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgaW4gdGhpcy5saW5rcykge1xuICAgICAgICAgICAgaWYgKHRoaXMubGlua3MuaGFzT3duUHJvcGVydHkobGluaykpIHtcbiAgICAgICAgICAgICAgICBvcChsaW5rLCB0aGlzLmxpbmtzW2xpbmtdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBmb3JFYWNoQWN0aW9uKG9wOiAobGlua05hbWU6IHN0cmluZywgbGluazogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgICAgIGZvciAoY29uc3QgbGluayBpbiB0aGlzLmFjdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGlvbnMuaGFzT3duUHJvcGVydHkobGluaykpIHtcbiAgICAgICAgICAgICAgICBvcChsaW5rLCB0aGlzLmFjdGlvbnNbbGlua10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbiJdfQ==
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9vYmplY3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9wZXJtaXQvY2xpZW50LWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvbWljcm9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRWxFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDOztBQU01QixNQUFNLE9BQU8sV0FBVztJQUF4QjtRQUdJLFdBQU0sR0FBd0IsU0FBUyxDQUFDO0lBZ0Y1QyxDQUFDOzs7Ozs7O0lBOUVVLE1BQU0sQ0FBQyxRQUFRLENBQThCLE1BQVMsRUFBRSxNQUFvQjtRQUMvRSxPQUFPLG1CQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUEsQ0FBQztJQUNuQyxDQUFDOzs7Ozs7OztJQUVNLE1BQU0sQ0FBQyxVQUFVLENBQW1CLEdBQVcsRUFBRSxNQUFtQixFQUFFLFlBQWUsSUFBSTs7Y0FDdEYsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7Ozs7Ozs7O0lBRU0sTUFBTSxDQUFDLFVBQVUsQ0FBbUIsR0FBUSxFQUFFLE1BQW1CLEVBQUUsWUFBZSxJQUFJO1FBQ3pGLElBQUcsR0FBRyxLQUFLLElBQUksRUFBQztZQUNaLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7O2tCQUNkLE1BQU0sR0FBUSxHQUFHO1lBQ3ZCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFF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O2dCQUNqQyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUM5QjtTQUNKO0lBQ0wsQ0FBQzs7Ozs7SUFFTSxhQUFhLENBQUMsRUFBNEM7UUFDN0QsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzdCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ25DLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ2hDO1NBQ0o7SUFDTCxDQUFDO0NBR0o7OztJQTNDRyxvQ0FBVzs7SUFDWCxzQ0FBYTs7SUFDYiwwQ0FBb0I7O0lBQ3BCLHVDQUF5Qjs7SUFDekIsb0NBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNaWNyb0NsaWVudH0gZnJvbSAnLi9taWNyb2NsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7TGlua0ZpZWxkfSBmcm9tICcuL2xpbmtzL2xpbmtmaWVsZCc7XG5pbXBvcnQge0NhbGxhYmxlTGluaywgTGlua1NlcmlhbGl6ZXJ9IGZyb20gJy4vbGlua3MvY2FsbGFibGVsaW5rJztcbmltcG9ydCB7TWljcm9FcnJvcn0gZnJvbSAnLi9lcnJvci9taWNyb2Vycm9yJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGludGVyZmFjZSBNaWNyb09iamVjdCB7XG4gICAgX19tZXRhOiBNaWNyb09iamVjdE1ldGFkYXRhO1xufVxuXG5leHBvcnQgY2xhc3MgTWljcm9PYmplY3QgaW1wbGVtZW50cyBNaWNyb09iamVjdCB7XG4gICAgcHVibGljIHN0YXRpYyBNRVRBX0tFWSA9ICdfX21ldGEnO1xuXG4gICAgX19tZXRhOiBNaWNyb09iamVjdE1ldGFkYXRhID0gdW5kZWZpbmVkO1xuXG4gICAgcHVibGljIHN0YXRpYyBkZWVwQ29weTxUIGV4dGVuZHMgb2JqZWN0IHwgb2JqZWN0W10+KHRvQ29weTogVCwgY2xpZW50PzogTWljcm9DbGllbnQpOiBUIHtcbiAgICAgICAgcmV0dXJuIDxUPiBfLmNsb25lRGVlcCh0b0NvcHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbVN0cmluZzxUIGV4dGVuZHMgb2JqZWN0PihzdHI6IHN0cmluZywgY2xpZW50OiBNaWNyb0NsaWVudCwgcHJvdG90eXBlOiBUID0gbnVsbCk6IFQgfCBUW10ge1xuICAgICAgICBjb25zdCBvYmogPSBKU09OLnBhcnNlKHN0cik7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb21PYmplY3Qob2JqLCBjbGllbnQsIHByb3RvdHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tT2JqZWN0PFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogYW55LCBjbGllbnQ6IE1pY3JvQ2xpZW50LCBwcm90b3R5cGU6IFQgPSBudWxsKTogVCB8IFRbXSB7XG4gICAgICAgIGlmKG9iaiA9PT0gbnVsbCl7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgICAgIGNvbnN0IG9iakFycjogVFtdID0gb2JqO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmpBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtID0gb2JqQXJyW2ldO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZWxlbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqQXJyW2ldID0gPFQ+TWljcm9PYmplY3QuZnJvbU9iamVjdChlbGVtLCBjbGllbnQsIHByb3RvdHlwZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9iakFycjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGQgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkICE9PSBNaWNyb09iamVjdC5NRVRBX0tFWSAmJiBvYmouaGFzT3duUHJvcGVydHkoZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSBvYmpbZmllbGRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkVmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgfHwgQXJyYXkuaXNBcnJheShmaWVsZFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ialtmaWVsZF0gPSBNaWNyb09iamVjdC5mcm9tT2JqZWN0KGZpZWxkVmFsdWUsIGNsaWVudCwgcHJvdG90eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc3JjID0gcHJvdG90eXBlID09IG51bGwgPyBNaWNyb09iamVjdC5wcm90b3R5cGUgOiBwcm90b3R5cGU7XG4gICAgICAgICAgICBjb25zdCBtaWNyb09iamVjdDogTWljcm9PYmplY3QgPSBPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoc3JjKSwgb2JqKTtcblxuXG4gICAgICAgICAgICBNaWNyb09iamVjdC5hdHRhY2hNZXRhZGF0YU9iamVjdChtaWNyb09iamVjdCwgY2xpZW50KTtcblxuICAgICAgICAgICAgcmV0dXJuIDxUPm1pY3JvT2JqZWN0O1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhdHRhY2hNZXRhZGF0YU9iamVjdChtaWNyb09iamVjdDogTWljcm9PYmplY3QsIGNsaWVudDogTWljcm9DbGllbnQpIHtcbiAgICAgICAgY29uc3QgcmF3TWV0YTogTWljcm9PYmplY3RNZXRhZGF0YSA9IG1pY3JvT2JqZWN0ICE9IG51bGwgPyBtaWNyb09iamVjdFtNaWNyb09iamVjdC5NRVRBX0tFWV0gOiBudWxsO1xuICAgICAgICBpZiAocmF3TWV0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgY2xpZW50VG9Vc2UgPSBjbGllbnQ7XG4gICAgICAgICAgICBpZiAocmF3TWV0YS5wZXJtaXRUb2tlbikge1xuICAgICAgICAgICAgICAgIGlmIChjbGllbnQuZ2V0RW50cnlQb2ludCgpICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50VG9Vc2UgPSBjbGllbnQuY3JlYXRlQ2hpbGRDbGllbnRGb3JFbnRyeVBvaW50KG1pY3JvT2JqZWN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG1pY3JvT2JqZWN0Ll9fbWV0YSA9IE1pY3JvT2JqZWN0TWV0YWRhdGEuZnJvbU9iamVjdChtaWNyb09iamVjdC5fX21ldGEsIGNsaWVudFRvVXNlKTtcblxuICAgICAgICAgICAgTWljcm9PYmplY3QuYXR0YWNoTGlua0ZpZWxkcyhtaWNyb09iamVjdC5fX21ldGEsIG1pY3JvT2JqZWN0LCBjbGllbnRUb1VzZSk7XG4gICAgICAgICAgICBNaWNyb09iamVjdC5hdHRhY2hDYWxsYWJsZUxpbmtzKG1pY3JvT2JqZWN0Ll9fbWV0YSwgbWljcm9PYmplY3QsIGNsaWVudFRvVXNlKTtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhdHRhY2hMaW5rRmllbGRzKG1ldGE6IE1pY3JvT2JqZWN0TWV0YWRhdGEsIG1pY3JvT2JqZWN0OiBNaWNyb09iamVjdCwgY2xpZW50OiBNaWNyb0NsaWVudCkge1xuICAgICAgICBtZXRhLmZvckVhY2hMaW5rKChsaW5rTmFtZSwgbGlua1VybCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBtaWNyb09iamVjdFtsaW5rTmFtZV07XG4gICAgICAgICAgICBtaWNyb09iamVjdFtsaW5rTmFtZV0gPSBuZXcgTGlua0ZpZWxkKGxpbmtVcmwsIGNsaWVudCwgdmFsdWUsIHZhbHVlICE9PSB1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhdHRhY2hDYWxsYWJsZUxpbmtzKG1ldGE6IE1pY3JvT2JqZWN0TWV0YWRhdGEsIG1pY3JvT2JqZWN0OiBNaWNyb09iamVjdCwgY2xpZW50OiBNaWNyb0NsaWVudCkge1xuICAgICAgICBtZXRhLmZvckVhY2hBY3Rpb24oKGxpbmtOYW1lLCBsaW5rVXJsKSA9PiB7XG4gICAgICAgICAgICBtaWNyb09iamVjdFtsaW5rTmFtZV0gPSBuZXcgQ2FsbGFibGVMaW5rKGxpbmtVcmwsIGNsaWVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pY3JvT2JqZWN0TWV0YWRhdGEge1xuICAgIGxpbmtzOiBhbnk7XG4gICAgYWN0aW9uczogYW55O1xuICAgIHBlcm1pdFRva2VuOiBzdHJpbmc7XG4gICAgbmV4dFBhZ2U6IExpbmtGaWVsZDxhbnk+O1xuICAgIGVycm9yOiBNaWNyb0Vycm9yO1xuXG5cbiAgICBzdGF0aWMgZnJvbU9iamVjdChvYmo6IG9iamVjdCwgY2xpZW50OiBNaWNyb0NsaWVudCk6IE1pY3JvT2JqZWN0TWV0YWRhdGEge1xuICAgICAgICBjb25zdCBvYmpNZXRhZGF0YSA9IE9iamVjdC5hc3NpZ24obmV3IE1pY3JvT2JqZWN0TWV0YWRhdGEoKSwgb2JqKTtcblxuICAgICAgICBpZiAob2JqTWV0YWRhdGEubmV4dFBhZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgb2JqTWV0YWRhdGEubmV4dFBhZ2UgPSBuZXcgTGlua0ZpZWxkKDxhbnk+b2JqTWV0YWRhdGEubmV4dFBhZ2UsIGNsaWVudCk7XG4gICAgICAgICAgICBvYmpNZXRhZGF0YS5uZXh0UGFnZS5zZXJpYWxpemVUbyA9IExpbmtTZXJpYWxpemVyLkFTX0xJTks7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JqTWV0YWRhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIGdldExpbmtVcmwoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5saW5rc1trZXldO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNMaW5rKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpbmtzW2tleV0gIT0gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRWFjaExpbmsob3A6IChsaW5rTmFtZTogc3RyaW5nLCBsaW5rOiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBsaW5rIGluIHRoaXMubGlua3MpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxpbmtzLmhhc093blByb3BlcnR5KGxpbmspKSB7XG4gICAgICAgICAgICAgICAgb3AobGluaywgdGhpcy5saW5rc1tsaW5rXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRWFjaEFjdGlvbihvcDogKGxpbmtOYW1lOiBzdHJpbmcsIGxpbms6IHN0cmluZykgPT4gdm9pZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgaW4gdGhpcy5hY3Rpb25zKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hY3Rpb25zLmhhc093blByb3BlcnR5KGxpbmspKSB7XG4gICAgICAgICAgICAgICAgb3AobGluaywgdGhpcy5hY3Rpb25zW2xpbmtdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG59XG4iXX0=
@@ -50,4 +50,4 @@ if (false) {
50
50
  */
51
51
  LinkFieldPipe.prototype.asyncPipe;
52
52
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2ZpZWxkLnBpcGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9wZXJtaXQvY2xpZW50LWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvcGlwZXMvbGlua2ZpZWxkLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQWdCLElBQUksRUFBYSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFHMUMsTUFBTSxPQUFPLGFBQWE7Ozs7SUFJdEIsWUFBWSxpQkFBb0M7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Ozs7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDOzs7Ozs7SUFFRCxTQUFTLENBQTBDLFNBQXVCO1FBQ3RFLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsSUFBSSxTQUFTLFlBQVksU0FBUyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDdkQ7YUFBTTtZQUNILG9CQUFvQjtZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLGtGQUFrRixDQUFDLENBQUM7U0FDdkc7SUFDTCxDQUFDOzs7WUF2QkosSUFBSSxTQUFDLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFDOzs7O1lBSkUsaUJBQWlCOzs7Ozs7O0lBT3JELGtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlua0ZpZWxkfSBmcm9tICcuLi9saW5rcy9saW5rZmllbGQnO1xuaW1wb3J0IHtQaXBlVHJhbnNmb3JtLCBQaXBlLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWljcm9PYmplY3R9IGZyb20gJy4uL21pY3Jvb2JqZWN0JztcbmltcG9ydCB7QXN5bmNQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AUGlwZSh7bmFtZTogJ2xpbmtGaWVsZCcsIHB1cmU6IGZhbHNlfSlcbmV4cG9ydCBjbGFzcyBMaW5rRmllbGRQaXBlIGltcGxlbWVudHMgT25EZXN0cm95LCBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHByaXZhdGUgYXN5bmNQaXBlOiBBc3luY1BpcGU7XG5cbiAgICBjb25zdHJ1Y3RvcihjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy5hc3luY1BpcGUgPSBuZXcgQXN5bmNQaXBlKGNoYW5nZURldGVjdG9yUmVmKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hc3luY1BpcGUubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm08VCBleHRlbmRzIChNaWNyb09iamVjdCB8IE1pY3JvT2JqZWN0W10pPihsaW5rRmllbGQ6IExpbmtGaWVsZDxUPik6IGFueSB7XG4gICAgICAgIGlmIChsaW5rRmllbGQgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbmtGaWVsZCBpbnN0YW5jZW9mIExpbmtGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXN5bmNQaXBlLnRyYW5zZm9ybShsaW5rRmllbGQuZ2V0T2JzKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcmV0dXJuIGxpbmtGaWVsZDtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuXFwndCB1c2UgdGhlIGxpbmtGaWVsZCBwaXBlIHdpdGggYSB2YWx1ZSB3aGljaCBpc25cXCd0IGFuIGluc3RhbmNlIG9mIExpbmtGaWVsZCcpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2ZpZWxkLnBpcGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9wZXJtaXQvY2xpZW50LWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvcGlwZXMvbGlua2ZpZWxkLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQWdCLElBQUksRUFBYSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFHMUMsTUFBTSxPQUFPLGFBQWE7Ozs7SUFJdEIsWUFBWSxpQkFBb0M7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Ozs7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDOzs7Ozs7SUFFRCxTQUFTLENBQWdDLFNBQXVCO1FBQzVELElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsSUFBSSxTQUFTLFlBQVksU0FBUyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDdkQ7YUFBTTtZQUNILG9CQUFvQjtZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLGtGQUFrRixDQUFDLENBQUM7U0FDdkc7SUFDTCxDQUFDOzs7WUF2QkosSUFBSSxTQUFDLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFDOzs7O1lBSkUsaUJBQWlCOzs7Ozs7O0lBT3JELGtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlua0ZpZWxkfSBmcm9tICcuLi9saW5rcy9saW5rZmllbGQnO1xuaW1wb3J0IHtQaXBlVHJhbnNmb3JtLCBQaXBlLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWljcm9PYmplY3R9IGZyb20gJy4uL21pY3Jvb2JqZWN0JztcbmltcG9ydCB7QXN5bmNQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AUGlwZSh7bmFtZTogJ2xpbmtGaWVsZCcsIHB1cmU6IGZhbHNlfSlcbmV4cG9ydCBjbGFzcyBMaW5rRmllbGRQaXBlIGltcGxlbWVudHMgT25EZXN0cm95LCBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHByaXZhdGUgYXN5bmNQaXBlOiBBc3luY1BpcGU7XG5cbiAgICBjb25zdHJ1Y3RvcihjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy5hc3luY1BpcGUgPSBuZXcgQXN5bmNQaXBlKGNoYW5nZURldGVjdG9yUmVmKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hc3luY1BpcGUubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm08VCBleHRlbmRzIChvYmplY3QgfCBvYmplY3RbXSk+KGxpbmtGaWVsZDogTGlua0ZpZWxkPFQ+KTogYW55IHtcbiAgICAgICAgaWYgKGxpbmtGaWVsZCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGlua0ZpZWxkIGluc3RhbmNlb2YgTGlua0ZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hc3luY1BpcGUudHJhbnNmb3JtKGxpbmtGaWVsZC5nZXRPYnMoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyByZXR1cm4gbGlua0ZpZWxkO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5cXCd0IHVzZSB0aGUgbGlua0ZpZWxkIHBpcGUgd2l0aCBhIHZhbHVlIHdoaWNoIGlzblxcJ3QgYW4gaW5zdGFuY2Ugb2YgTGlua0ZpZWxkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
@@ -190,13 +190,8 @@ var MicroClient = /** @class */ (function () {
190
190
  function (val) {
191
191
  /** @type {?} */
192
192
  var entryPoint = MicroObject.fromObject(val, _this);
193
- if (entryPoint instanceof MicroObject) {
194
- _this.setEntryPoint(entryPoint);
195
- return (/** @type {?} */ (entryPoint));
196
- }
197
- else {
198
- throw Error('Expected the entryPoint to be a Object');
199
- }
193
+ _this.setEntryPoint(entryPoint);
194
+ return (/** @type {?} */ (entryPoint));
200
195
  })), this.catchAndHandleError());
201
196
  };
202
197
  /**
@@ -592,4 +587,4 @@ if (false) {
592
587
  */
593
588
  MicroClientLoadError.prototype.defaultHandler;
594
589
  }
595
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3Blcm1pdC9jbGllbnQtYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9taWNyb2NsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQXFCLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFhLGFBQWEsRUFBVyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRTlDO0lBZUkscUJBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFSbEMsc0JBQWlCLEdBQStCLElBQUksYUFBYSxFQUFlLENBQUM7UUFJbEYsWUFBTyxHQUFHLElBQUksQ0FBQztRQUVmLDRCQUF1QixHQUFHLElBQUksQ0FBQztJQUl0QyxDQUFDOzs7OztJQUVNLGdEQUEwQjs7OztJQUFqQyxVQUFrQyx1QkFBZ0M7UUFDOUQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLHVCQUF1QixDQUFDO0lBQzNELENBQUM7Ozs7O0lBRU0sa0NBQVk7Ozs7SUFBbkIsVUFBb0IsS0FBYTtRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQzs7Ozs7SUFFTSxtQ0FBYTs7OztJQUFwQixVQUFxQixVQUFr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O0FBNlI5QztJQUlJLDhCQUFvQixLQUFVLEVBQVUsY0FBa0M7UUFBdEQsVUFBSyxHQUFMLEtBQUssQ0FBSztRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFvQjtRQUhsRSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztJQUlqQyxDQUFDOzs7O0lBRU0sNENBQWE7OztJQUFwQjtRQUNJLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztTQUN2QjtJQUNMLENBQUM7Ozs7O0lBRU0sMENBQVc7Ozs7SUFBbEIsVUFBbUIsT0FBNkI7UUFDNUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDOzs7O0lBRU0sd0NBQVM7OztJQUFoQjtRQUNJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDOzs7O0lBRU0sbURBQW9COzs7SUFBM0I7UUFDSSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDOzs7O0lBRU0sNkNBQWM7OztJQUFyQjtRQUNJLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDakMsQ0FBQzs7OztJQUVNLGdEQUFpQjs7O0lBQXhCO1FBQ0ksT0FBTyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBQ0wsMkJBQUM7QUFBRCxDQUFDLEFBbkNELElBbUNDOzs7Ozs7O0lBbENHLHVDQUF3Qjs7Ozs7SUFDeEIsZ0RBQWlDOzs7OztJQUVyQixxQ0FBa0I7Ozs7O0lBQUUsOENBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge01pY3JvT2JqZWN0fSBmcm9tICcuL21pY3Jvb2JqZWN0JztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIGZpbmFsaXplLCBtYXAsIHRha2UsIHNoYXJlUmVwbGF5fSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1BhcmFtVXRpbHN9IGZyb20gJy4vcGFyYW11dGlscyc7XG5pbXBvcnQge01pY3JvRXJyb3J9IGZyb20gJy4vZXJyb3IvbWljcm9lcnJvcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNaWNyb0NsaWVudCB7XG5cbiAgICBwcml2YXRlIGF1dGhIZWFkZXI6IHN0cmluZztcbiAgICBwcml2YXRlIHBlcm1pdFRva2VuOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBlbnRyeVBvaW50OiBNaWNyb09iamVjdDtcblxuICAgIHByaXZhdGUgZW50cnlQb2ludFN1YmplY3Q6IFJlcGxheVN1YmplY3Q8TWljcm9PYmplY3Q+ID0gbmV3IFJlcGxheVN1YmplY3Q8TWljcm9PYmplY3Q+KCk7XG5cbiAgICBwcml2YXRlIHVybFJld3JpdGVyOiAoc3RyaW5nKSA9PiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkZWZhdWx0RXJyb3JIYW5kbGVyOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSwgbWljcm9FcnJvcjogTWljcm9PYmplY3QpID0+IHZvaWQ7XG4gICAgcHVibGljIHVzZVBvc3QgPSB0cnVlO1xuXG4gICAgcHVibGljIHNlbmRBc1Blcm1pdFRva2VuSGVhZGVyID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCkge1xuXG4gICAgfVxuXG4gICAgcHVibGljIHNldFNlbmRBc1Blcm1pdFRva2VuSGVhZGVyKHNlbmRBc1Blcm1pdFRva2VuSGVhZGVyOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2VuZEFzUGVybWl0VG9rZW5IZWFkZXIgPSBzZW5kQXNQZXJtaXRUb2tlbkhlYWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QXV0aFRva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5hdXRoSGVhZGVyID0gJ0JlYXJlciAnICsgdG9rZW47XG4gICAgICAgIHRoaXMucGVybWl0VG9rZW4gPSB0b2tlbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QXV0aEhlYWRlcihhdXRoSGVhZGVyOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5hdXRoSGVhZGVyID0gYXV0aEhlYWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW50cnlQb2ludCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnRyeVBvaW50O1xuICAgIH1cblxuICAgIHB1YmxpYyB3YWl0Rm9yRW50cnlQb2ludChjYj86IChlbnRyeVBvaW50OiBhbnkpID0+IHZvaWQpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBpZiAoY2IgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5lbnRyeVBvaW50U3ViamVjdC5zdWJzY3JpYmUoY2IpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZW50cnlQb2ludFN1YmplY3QudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHlBdXRoQW5kRW50cnlwb2ludE9mKG90aGVyOiBNaWNyb0NsaWVudCkge1xuICAgICAgICB0aGlzLmF1dGhIZWFkZXIgPSBvdGhlci5hdXRoSGVhZGVyO1xuICAgICAgICB0aGlzLnBlcm1pdFRva2VuID0gb3RoZXIucGVybWl0VG9rZW47XG4gICAgICAgIHRoaXMuZW50cnlQb2ludCA9IG90aGVyLmVudHJ5UG9pbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEVudHJ5UG9pbnQ8VCBleHRlbmRzIE1pY3JvT2JqZWN0PihlbnRyeVBvaW50OiBhbnkpIHtcbiAgICAgICAgaWYgKGVudHJ5UG9pbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5hdXRoSGVhZGVyID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZW50cnlQb2ludCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnBlcm1pdFRva2VuID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW50cnlQb2ludCA9IGVudHJ5UG9pbnQ7XG4gICAgICAgICAgICBpZiAodGhpcy5lbnRyeVBvaW50Ll9fbWV0YSAmJiB0aGlzLmVudHJ5UG9pbnQuX19tZXRhLnBlcm1pdFRva2VuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBdXRoVG9rZW4odGhpcy5lbnRyeVBvaW50Ll9fbWV0YS5wZXJtaXRUb2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdFeHBlY3RlZCB0aGUgZW50cnlQb2ludCB0byBjb250YWluIGEgXCJwZXJtaXRUb2tlblwiIHdpdGhpbiB0aGUgXCJfX21ldGFcIiBmaWVsZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5lbnRyeVBvaW50U3ViamVjdC5uZXh0KGVudHJ5UG9pbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldERlZmF1bHRFcnJvckhhbmRsZXIoaGFuZGxlcjogKGh0dHBFcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsIG1pY3JvRXJyb3I6IE1pY3JvT2JqZWN0KSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEVycm9ySGFuZGxlciA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUVycm9yKGh0dHBFcnI6IEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRFcnJvckhhbmRsZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pY3JvRXJyb3IgPSBNaWNyb0NsaWVudC50b01pY3JvRXJyb3IoaHR0cEVycik7XG4gICAgICAgICAgICBpZiAobWljcm9FcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pY3JvUmVzdWx0T2JqOiBNaWNyb09iamVjdCA9IDxNaWNyb09iamVjdD5NaWNyb09iamVjdC5mcm9tT2JqZWN0KGh0dHBFcnIuZXJyb3IsIHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEVycm9ySGFuZGxlcihodHRwRXJyLCBtaWNyb1Jlc3VsdE9iaik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEVycm9ySGFuZGxlcihodHRwRXJyLCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpZ25pdGU8VCBleHRlbmRzIChNaWNyb09iamVjdCB8IE1pY3JvT2JqZWN0W10pPihcbiAgICAgICAgdXJsOiBzdHJpbmcsXG4gICAgICAgIHVzZXJuYW1lOiBTdHJpbmcgPSBudWxsLFxuICAgICAgICBwYXNzd29yZDogU3RyaW5nID0gbnVsbCxcbiAgICAgICAgaGVhZGVyczogb2JqZWN0ID0ge31cbiAgICApOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgaWYgKHRoaXMudXJsUmV3cml0ZXIpIHtcbiAgICAgICAgICAgIHVybCA9IHRoaXMudXJsUmV3cml0ZXIodXJsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXF1ZXN0SGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgICAgICBmb3IgKGNvbnN0IGhlYWRlcktleSBpbiBoZWFkZXJzKSB7XG4gICAgICAgICAgICBpZiAoaGVhZGVycy5oYXNPd25Qcm9wZXJ0eShoZWFkZXJLZXkpKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5zZXQoaGVhZGVyS2V5LCBoZWFkZXJzW2hlYWRlcktleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHVzZXJuYW1lICE9IG51bGwgfHwgcGFzc3dvcmQgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmFzaWMgJyArIGJ0b2EodXNlcm5hbWUgKyAnOicgKyBwYXNzd29yZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodXJsLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVyc1xuICAgICAgICB9KS5waXBlKFxuICAgICAgICAgICAgbWFwKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cnlQb2ludCA9IE1pY3JvT2JqZWN0LmZyb21PYmplY3QodmFsLCB0aGlzKTtcbiAgICAgICAgICAgICAgICBpZiAoZW50cnlQb2ludCBpbnN0YW5jZW9mIE1pY3JvT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RW50cnlQb2ludChlbnRyeVBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5UG9pbnQgYXMgVDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignRXhwZWN0ZWQgdGhlIGVudHJ5UG9pbnQgdG8gYmUgYSBPYmplY3QnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRoaXMuY2F0Y2hBbmRIYW5kbGVFcnJvcigpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvYWQ8VD4oXG4gICAgICAgIHVybDogc3RyaW5nLFxuICAgICAgICBwYXJhbXM/OiBvYmplY3QsXG4gICAgICAgIHJlcXVlc3RPcHRpb25zPzogb2JqZWN0XG4gICAgKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIGxldCByZXF1ZXN0SGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgICAgICBpZiAodGhpcy5hdXRoSGVhZGVyKSB7XG4gICAgICAgICAgICByZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsIHRoaXMuYXV0aEhlYWRlcik7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbmRBc1Blcm1pdFRva2VuSGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5zZXQoJ01pY3JvUGVybWl0VG9rZW4nLCB0aGlzLnBlcm1pdFRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBvUGFyYW1zID0gcGFyYW1zO1xuICAgICAgICBpZiAocGFyYW1zICE9IG51bGwgfHwgdGhpcy51c2VQb3N0KSB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ1BhcmFtc1N0ciA9IFBhcmFtVXRpbHMuZ2V0UGFyYW0odXJsLCAnb1BhcmFtcycsIHRydWUpO1xuICAgICAgICAgICAgbGV0IGV4aXN0aW5nUGFyYW1zO1xuICAgICAgICAgICAgaWYgKGV4aXN0aW5nUGFyYW1zU3RyKSB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdQYXJhbXMgPSBKU09OLnBhcnNlKGV4aXN0aW5nUGFyYW1zU3RyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdQYXJhbXMgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9QYXJhbXMgPSBPYmplY3QuYXNzaWduKGV4aXN0aW5nUGFyYW1zLCBwYXJhbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG9wdGlvbnMgPSByZXF1ZXN0T3B0aW9ucztcbiAgICAgICAgaWYgKHJlcXVlc3RPcHRpb25zICE9IG51bGwgfHwgdGhpcy51c2VQb3N0KSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2T3B0aW9uc1N0ciA9IFBhcmFtVXRpbHMuZ2V0UGFyYW0odXJsLCAnb3B0aW9ucycsIHRydWUpO1xuICAgICAgICAgICAgaWYgKHByZXZPcHRpb25zU3RyKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IEpTT04ucGFyc2UocHJldk9wdGlvbnNTdHIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHJlcXVlc3RPcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gUGFyYW1VdGlscy5nZXRQYXJhbXModXJsKTtcblxuICAgICAgICBsZXQgaHR0cE9icyA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLnVzZVBvc3QpIHtcblxuICAgICAgICAgICAgbGV0IGJPUGFyYW1zO1xuICAgICAgICAgICAgY29uc3QgZW5jQk9QYXJhbXMgPSBxdWVyeVBhcmFtc1snYk9QYXJhbXMnXTtcbiAgICAgICAgICAgIGlmIChlbmNCT1BhcmFtcykge1xuICAgICAgICAgICAgICAgIGJPUGFyYW1zID0gSlNPTi5wYXJzZShQYXJhbVV0aWxzLmJhc2U2NFVybERlY29kZShlbmNCT1BhcmFtcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYm9keSA9IHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHF1ZXJ5UGFyYW1zWydwYXJhbXMnXSxcbiAgICAgICAgICAgICAgICBvUGFyYW1zOiBvUGFyYW1zLFxuICAgICAgICAgICAgICAgIGJQYXJhbXM6IHF1ZXJ5UGFyYW1zWydiUGFyYW1zJ10sXG4gICAgICAgICAgICAgICAgYk9QYXJhbXM6IGJPUGFyYW1zLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNbJ3BhcmFtcyddO1xuICAgICAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zWydvUGFyYW1zJ107XG4gICAgICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNbJ2JQYXJhbXMnXTtcbiAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1snYk9QYXJhbXMnXTtcbiAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1snb3B0aW9ucyddO1xuXG4gICAgICAgICAgICB1cmwgPSBQYXJhbVV0aWxzLnNldFBhcmFtcyh1cmwsIHF1ZXJ5UGFyYW1zKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudXJsUmV3cml0ZXIpIHtcbiAgICAgICAgICAgICAgICB1cmwgPSB0aGlzLnVybFJld3JpdGVyKHVybCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGh0dHBPYnMgPSB0aGlzLmh0dHBDbGllbnQucG9zdCh1cmwsIGJvZHksIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVyc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAob1BhcmFtcykge1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zWydvUGFyYW1zJ10gPSBQYXJhbVV0aWxzLmJhc2U2NFVybEVuY29kZShKU09OLnN0cmluZ2lmeShvUGFyYW1zKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNbJ29wdGlvbnMnXSA9IFBhcmFtVXRpbHMuYmFzZTY0VXJsRW5jb2RlKEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVybCA9IFBhcmFtVXRpbHMuc2V0UGFyYW1zKHVybCwgcXVlcnlQYXJhbXMpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy51cmxSZXdyaXRlcikge1xuICAgICAgICAgICAgICAgIHVybCA9IHRoaXMudXJsUmV3cml0ZXIodXJsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaHR0cE9icyA9IHRoaXMuaHR0cENsaWVudC5nZXQodXJsLCB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczogcmVxdWVzdEhlYWRlcnNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaHR0cE9icyA9IGh0dHBPYnMucGlwZShcbiAgICAgICAgICAgIG1hcCh2YWwgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBNaWNyb09iamVjdC5mcm9tT2JqZWN0KHZhbCwgdGhpcyk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRoaXMuY2F0Y2hBbmRIYW5kbGVFcnJvcigpXG4gICAgICAgIClcbiAgICAgICAgO1xuXG4gICAgICAgIHJldHVybiBodHRwT2JzO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2F0Y2hBbmRIYW5kbGVFcnJvcjxUPigpOiAoKHNvdXJjZTogT2JzZXJ2YWJsZTxUPikgPT4gT2JzZXJ2YWJsZTxUPikge1xuICAgICAgICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxUPikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxvYWRFcnJvciA9IG5ldyBNaWNyb0NsaWVudExvYWRFcnJvcihlcnIsIChlcnJUb0hhbmRsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJUb0hhbmRsZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihsb2FkRXJyb3IpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2FkRXJyb3Iuc2hvdWxkUHJldmVudERlZmF1bHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkRXJyb3IuaGFuZGxlRGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUNoaWxkQ2xpZW50Rm9yRW50cnlQb2ludChlbnRyeVBvaW50OiBNaWNyb09iamVjdCk6IE1pY3JvQ2xpZW50IHtcbiAgICAgICAgaWYgKGVudHJ5UG9pbnQuX19tZXRhICYmIGVudHJ5UG9pbnQuX19tZXRhLnBlcm1pdFRva2VuKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZENsaWVudDogTWljcm9DbGllbnQgPSBPYmplY3QuY3JlYXRlKHRoaXMsIHtcbiAgICAgICAgICAgICAgICBlbnRyeVBvaW50OiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGF1dGhIZWFkZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcGVybWl0VG9rZW46IHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2hpbGRDbGllbnQuc2V0RW50cnlQb2ludChlbnRyeVBvaW50KTtcbiAgICAgICAgICAgIHJldHVybiBjaGlsZENsaWVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHN1cHBsaWVkIHZhbHVlIGNhblxcJ3QgYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBjaGlsZCBNaWNyb0NsaWVudCBiZWNhdXNlIGl0IGRvZXNuXFwndCBjb250YWluIG1ldGFkYXRhIHdpdGggYSBwZXJtaXRUb2tlbiAnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRVUkxSZXdyaXRlcihyZXdyaXRlcjogKHN0cmluZykgPT4gc3RyaW5nKSB7XG4gICAgICAgIHRoaXMudXJsUmV3cml0ZXIgPSByZXdyaXRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHRvTWljcm9FcnJvcihodHRwUmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKTogTWljcm9FcnJvciB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGh0dHBSZXNwb25zZS5lcnJvcjtcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuX19tZXRhICYmIHJlcy5fX21ldGEuZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBNaWNyb0Vycm9yKCksIHJlcy5fX21ldGEuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHN0YXRpY0NvbnRlbnRSZWdFeHAgPSBuZXcgUmVnRXhwKCdbYS16QS1aMC05XTovLy4qKDpbMC05XSspPygvLiopKi9zdGF0aWMoLy4qKFxcXFw/LiopPygjLiopPyk/Jyk7XG5cbiAgICBwdWJsaWMgc3RhdGljIGd1ZXNzTWljcm9Db21wb25lbnRCYXNlVVJMKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcblxuICAgICAgICAvLyBMYXN0IFVSTC1TZWdlbWVudCBpcyBzdGF0aWNcbiAgICAgICAgaWYgKE1pY3JvQ2xpZW50LnN0YXRpY0NvbnRlbnRSZWdFeHAudGVzdChocmVmKSkge1xuICAgICAgICAgICAgcmV0dXJuIGhyZWYucmVwbGFjZShuZXcgUmVnRXhwKCcvc3RhdGljLy4qJyksICcnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKG5ldyBSZWdFeHAoJy8jLy4qJyksICcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wuc3RhcnRzV2l0aCgnZmlsZScpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdodHRwOi8vbG9jYWxob3N0OjgwODAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSArICc6ODA4MCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGd1ZXNzTWljcm9Db21wb25lbnRBdXRob3JpemVVUkwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3Vlc3NNaWNyb0NvbXBvbmVudEJhc2VVUkwoKSArICcvYXV0aG9yaXplJztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNaWNyb0NsaWVudExvYWRFcnJvciB7XG4gICAgcHJpdmF0ZSBoYW5kbGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBkb1ByZXZlbnREZWZhdWx0ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVycm9yOiBhbnksIHByaXZhdGUgZGVmYXVsdEhhbmRsZXI6IChlcnI6IGFueSkgPT4gdm9pZCkge1xuXG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZURlZmF1bHQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRIYW5kbGVyKHRoaXMuZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVFcnJvcihoYW5kbGVyOiAoZXJyb3I6IGFueSkgPT4gdm9pZCkge1xuICAgICAgICBoYW5kbGVyKHRoaXMuZXJyb3IpO1xuICAgICAgICB0aGlzLmhhbmRsZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0hhbmRsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3VsZFByZXZlbnREZWZhdWx0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kb1ByZXZlbnREZWZhdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmV2ZW50RGVmYXVsdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kb1ByZXZlbnREZWZhdWx0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzRGVmYXVsdEhhbmRsZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRIYW5kbGVyICE9IG51bGw7XG4gICAgfVxufVxuIl19
590
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3Blcm1pdC9jbGllbnQtYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9taWNyb2NsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQXFCLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFhLGFBQWEsRUFBVyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRTlDO0lBZUkscUJBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFSbEMsc0JBQWlCLEdBQStCLElBQUksYUFBYSxFQUFlLENBQUM7UUFJbEYsWUFBTyxHQUFHLElBQUksQ0FBQztRQUVmLDRCQUF1QixHQUFHLElBQUksQ0FBQztJQUl0QyxDQUFDOzs7OztJQUVNLGdEQUEwQjs7OztJQUFqQyxVQUFrQyx1QkFBZ0M7UUFDOUQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLHVCQUF1QixDQUFDO0lBQzNELENBQUM7Ozs7O0lBRU0sa0NBQVk7Ozs7SUFBbkIsVUFBb0IsS0FBYTtRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQzs7Ozs7SUFFTSxtQ0FBYTs7OztJQUFwQixVQUFxQixVQUFr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O1FBSGxFLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO0lBSWpDLENBQUM7Ozs7SUFFTSw0Q0FBYTs7O0lBQXBCO1FBQ0ksSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQzs7Ozs7SUFFTSwwQ0FBVzs7OztJQUFsQixVQUFtQixPQUE2QjtRQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7Ozs7SUFFTSx3Q0FBUzs7O0lBQWhCO1FBQ0ksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7Ozs7SUFFTSxtREFBb0I7OztJQUEzQjtRQUNJLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pDLENBQUM7Ozs7SUFFTSw2Q0FBYzs7O0lBQXJCO1FBQ0ksSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUNqQyxDQUFDOzs7O0lBRU0sZ0RBQWlCOzs7SUFBeEI7UUFDSSxPQUFPLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFDTCwyQkFBQztBQUFELENBQUMsQUFuQ0QsSUFtQ0M7Ozs7Ozs7SUFsQ0csdUNBQXdCOzs7OztJQUN4QixnREFBaUM7Ozs7O0lBRXJCLHFDQUFrQjs7Ozs7SUFBRSw4Q0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7TWljcm9PYmplY3R9IGZyb20gJy4vbWljcm9vYmplY3QnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZmluYWxpemUsIG1hcCwgdGFrZSwgc2hhcmVSZXBsYXl9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7UGFyYW1VdGlsc30gZnJvbSAnLi9wYXJhbXV0aWxzJztcbmltcG9ydCB7TWljcm9FcnJvcn0gZnJvbSAnLi9lcnJvci9taWNyb2Vycm9yJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1pY3JvQ2xpZW50IHtcblxuICAgIHByaXZhdGUgYXV0aEhlYWRlcjogc3RyaW5nO1xuICAgIHByaXZhdGUgcGVybWl0VG9rZW46IHN0cmluZztcbiAgICBwcml2YXRlIGVudHJ5UG9pbnQ6IE1pY3JvT2JqZWN0O1xuXG4gICAgcHJpdmF0ZSBlbnRyeVBvaW50U3ViamVjdDogUmVwbGF5U3ViamVjdDxNaWNyb09iamVjdD4gPSBuZXcgUmVwbGF5U3ViamVjdDxNaWNyb09iamVjdD4oKTtcblxuICAgIHByaXZhdGUgdXJsUmV3cml0ZXI6IChzdHJpbmcpID0+IHN0cmluZztcbiAgICBwcml2YXRlIGRlZmF1bHRFcnJvckhhbmRsZXI6IChodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLCBtaWNyb0Vycm9yOiBNaWNyb09iamVjdCkgPT4gdm9pZDtcbiAgICBwdWJsaWMgdXNlUG9zdCA9IHRydWU7XG5cbiAgICBwdWJsaWMgc2VuZEFzUGVybWl0VG9rZW5IZWFkZXIgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0U2VuZEFzUGVybWl0VG9rZW5IZWFkZXIoc2VuZEFzUGVybWl0VG9rZW5IZWFkZXI6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZW5kQXNQZXJtaXRUb2tlbkhlYWRlciA9IHNlbmRBc1Blcm1pdFRva2VuSGVhZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBdXRoVG9rZW4odG9rZW46IHN0cmluZykge1xuICAgICAgICB0aGlzLmF1dGhIZWFkZXIgPSAnQmVhcmVyICcgKyB0b2tlbjtcbiAgICAgICAgdGhpcy5wZXJtaXRUb2tlbiA9IHRva2VuO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBdXRoSGVhZGVyKGF1dGhIZWFkZXI6IHN0cmluZykge1xuICAgICAgICB0aGlzLmF1dGhIZWFkZXIgPSBhdXRoSGVhZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFbnRyeVBvaW50KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJ5UG9pbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIHdhaXRGb3JFbnRyeVBvaW50KGNiPzogKGVudHJ5UG9pbnQ6IGFueSkgPT4gdm9pZCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGlmIChjYiAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmVudHJ5UG9pbnRTdWJqZWN0LnN1YnNjcmliZShjYik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lbnRyeVBvaW50U3ViamVjdC50b1Byb21pc2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weUF1dGhBbmRFbnRyeXBvaW50T2Yob3RoZXI6IE1pY3JvQ2xpZW50KSB7XG4gICAgICAgIHRoaXMuYXV0aEhlYWRlciA9IG90aGVyLmF1dGhIZWFkZXI7XG4gICAgICAgIHRoaXMucGVybWl0VG9rZW4gPSBvdGhlci5wZXJtaXRUb2tlbjtcbiAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gb3RoZXIuZW50cnlQb2ludDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RW50cnlQb2ludDxUIGV4dGVuZHMgTWljcm9PYmplY3Q+KGVudHJ5UG9pbnQ6IGFueSkge1xuICAgICAgICBpZiAoZW50cnlQb2ludCA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmF1dGhIZWFkZXIgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMucGVybWl0VG9rZW4gPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gZW50cnlQb2ludDtcbiAgICAgICAgICAgIGlmICh0aGlzLmVudHJ5UG9pbnQuX19tZXRhICYmIHRoaXMuZW50cnlQb2ludC5fX21ldGEucGVybWl0VG9rZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEF1dGhUb2tlbih0aGlzLmVudHJ5UG9pbnQuX19tZXRhLnBlcm1pdFRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGVkIHRoZSBlbnRyeVBvaW50IHRvIGNvbnRhaW4gYSBcInBlcm1pdFRva2VuXCIgd2l0aGluIHRoZSBcIl9fbWV0YVwiIGZpZWxkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVudHJ5UG9pbnRTdWJqZWN0Lm5leHQoZW50cnlQb2ludCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGVmYXVsdEVycm9ySGFuZGxlcihoYW5kbGVyOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSwgbWljcm9FcnJvcjogTWljcm9PYmplY3QpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0RXJyb3JIYW5kbGVyID0gaGFuZGxlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlRXJyb3IoaHR0cEVycjogSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEVycm9ySGFuZGxlcikge1xuICAgICAgICAgICAgY29uc3QgbWljcm9FcnJvciA9IE1pY3JvQ2xpZW50LnRvTWljcm9FcnJvcihodHRwRXJyKTtcbiAgICAgICAgICAgIGlmIChtaWNyb0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWljcm9SZXN1bHRPYmo6IE1pY3JvT2JqZWN0ID0gPE1pY3JvT2JqZWN0Pk1pY3JvT2JqZWN0LmZyb21PYmplY3QoaHR0cEVyci5lcnJvciwgdGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0RXJyb3JIYW5kbGVyKGh0dHBFcnIsIG1pY3JvUmVzdWx0T2JqKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0RXJyb3JIYW5kbGVyKGh0dHBFcnIsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlnbml0ZTxUPihcbiAgICAgICAgdXJsOiBzdHJpbmcsXG4gICAgICAgIHVzZXJuYW1lOiBTdHJpbmcgPSBudWxsLFxuICAgICAgICBwYXNzd29yZDogU3RyaW5nID0gbnVsbCxcbiAgICAgICAgaGVhZGVyczogb2JqZWN0ID0ge31cbiAgICApOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgaWYgKHRoaXMudXJsUmV3cml0ZXIpIHtcbiAgICAgICAgICAgIHVybCA9IHRoaXMudXJsUmV3cml0ZXIodXJsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXF1ZXN0SGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgICAgICBmb3IgKGNvbnN0IGhlYWRlcktleSBpbiBoZWFkZXJzKSB7XG4gICAgICAgICAgICBpZiAoaGVhZGVycy5oYXNPd25Qcm9wZXJ0eShoZWFkZXJLZXkpKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5zZXQoaGVhZGVyS2V5LCBoZWFkZXJzW2hlYWRlcktleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHVzZXJuYW1lICE9IG51bGwgfHwgcGFzc3dvcmQgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0SGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmFzaWMgJyArIGJ0b2EodXNlcm5hbWUgKyAnOicgKyBwYXNzd29yZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodXJsLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVyc1xuICAgICAgICB9KS5waXBlKFxuICAgICAgICAgICAgbWFwKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cnlQb2ludCA9IE1pY3JvT2JqZWN0LmZyb21PYmplY3QodmFsLCB0aGlzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEVudHJ5UG9pbnQoZW50cnlQb2ludCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5UG9pbnQgYXMgVDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5jYXRjaEFuZEhhbmRsZUVycm9yKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZDxUPihcbiAgICAgICAgdXJsOiBzdHJpbmcsXG4gICAgICAgIHBhcmFtcz86IG9iamVjdCxcbiAgICAgICAgcmVxdWVzdE9wdGlvbnM/OiBvYmplY3RcbiAgICApOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgbGV0IHJlcXVlc3RIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgICAgIGlmICh0aGlzLmF1dGhIZWFkZXIpIHtcbiAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJzID0gcmVxdWVzdEhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgdGhpcy5hdXRoSGVhZGVyKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc2VuZEFzUGVybWl0VG9rZW5IZWFkZXIpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzLnNldCgnTWljcm9QZXJtaXRUb2tlbicsIHRoaXMucGVybWl0VG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG9QYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIGlmIChwYXJhbXMgIT0gbnVsbCB8fCB0aGlzLnVzZVBvc3QpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nUGFyYW1zU3RyID0gUGFyYW1VdGlscy5nZXRQYXJhbSh1cmwsICdvUGFyYW1zJywgdHJ1ZSk7XG4gICAgICAgICAgICBsZXQgZXhpc3RpbmdQYXJhbXM7XG4gICAgICAgICAgICBpZiAoZXhpc3RpbmdQYXJhbXNTdHIpIHtcbiAgICAgICAgICAgICAgICBleGlzdGluZ1BhcmFtcyA9IEpTT04ucGFyc2UoZXhpc3RpbmdQYXJhbXNTdHIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBleGlzdGluZ1BhcmFtcyA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb1BhcmFtcyA9IE9iamVjdC5hc3NpZ24oZXhpc3RpbmdQYXJhbXMsIHBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb3B0aW9ucyA9IHJlcXVlc3RPcHRpb25zO1xuICAgICAgICBpZiAocmVxdWVzdE9wdGlvbnMgIT0gbnVsbCB8fCB0aGlzLnVzZVBvc3QpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZPcHRpb25zU3RyID0gUGFyYW1VdGlscy5nZXRQYXJhbSh1cmwsICdvcHRpb25zJywgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAocHJldk9wdGlvbnNTdHIpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zID0gSlNPTi5wYXJzZShwcmV2T3B0aW9uc1N0cik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucywgcmVxdWVzdE9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBQYXJhbVV0aWxzLmdldFBhcmFtcyh1cmwpO1xuXG4gICAgICAgIGxldCBodHRwT2JzID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMudXNlUG9zdCkge1xuXG4gICAgICAgICAgICBsZXQgYk9QYXJhbXM7XG4gICAgICAgICAgICBjb25zdCBlbmNCT1BhcmFtcyA9IHF1ZXJ5UGFyYW1zWydiT1BhcmFtcyddO1xuICAgICAgICAgICAgaWYgKGVuY0JPUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgYk9QYXJhbXMgPSBKU09OLnBhcnNlKFBhcmFtVXRpbHMuYmFzZTY0VXJsRGVjb2RlKGVuY0JPUGFyYW1zKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBib2R5ID0ge1xuICAgICAgICAgICAgICAgIHBhcmFtczogcXVlcnlQYXJhbXNbJ3BhcmFtcyddLFxuICAgICAgICAgICAgICAgIG9QYXJhbXM6IG9QYXJhbXMsXG4gICAgICAgICAgICAgICAgYlBhcmFtczogcXVlcnlQYXJhbXNbJ2JQYXJhbXMnXSxcbiAgICAgICAgICAgICAgICBiT1BhcmFtczogYk9QYXJhbXMsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1sncGFyYW1zJ107XG4gICAgICAgICAgICBkZWxldGUgcXVlcnlQYXJhbXNbJ29QYXJhbXMnXTtcbiAgICAgICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1snYlBhcmFtcyddO1xuICAgICAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zWydiT1BhcmFtcyddO1xuICAgICAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zWydvcHRpb25zJ107XG5cbiAgICAgICAgICAgIHVybCA9IFBhcmFtVXRpbHMuc2V0UGFyYW1zKHVybCwgcXVlcnlQYXJhbXMpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy51cmxSZXdyaXRlcikge1xuICAgICAgICAgICAgICAgIHVybCA9IHRoaXMudXJsUmV3cml0ZXIodXJsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaHR0cE9icyA9IHRoaXMuaHR0cENsaWVudC5wb3N0KHVybCwgYm9keSwge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlcXVlc3RIZWFkZXJzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNbJ29QYXJhbXMnXSA9IFBhcmFtVXRpbHMuYmFzZTY0VXJsRW5jb2RlKEpTT04uc3RyaW5naWZ5KG9QYXJhbXMpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc1snb3B0aW9ucyddID0gUGFyYW1VdGlscy5iYXNlNjRVcmxFbmNvZGUoSlNPTi5zdHJpbmdpZnkob3B0aW9ucykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdXJsID0gUGFyYW1VdGlscy5zZXRQYXJhbXModXJsLCBxdWVyeVBhcmFtcyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnVybFJld3JpdGVyKSB7XG4gICAgICAgICAgICAgICAgdXJsID0gdGhpcy51cmxSZXdyaXRlcih1cmwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBodHRwT2JzID0gdGhpcy5odHRwQ2xpZW50LmdldCh1cmwsIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVyc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBodHRwT2JzID0gaHR0cE9icy5waXBlKFxuICAgICAgICAgICAgbWFwKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1pY3JvT2JqZWN0LmZyb21PYmplY3QodmFsLCB0aGlzKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5jYXRjaEFuZEhhbmRsZUVycm9yKClcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gaHR0cE9icztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhdGNoQW5kSGFuZGxlRXJyb3I8VD4oKTogKChzb3VyY2U6IE9ic2VydmFibGU8VD4pID0+IE9ic2VydmFibGU8VD4pIHtcbiAgICAgICAgcmV0dXJuIChzb3VyY2U6IE9ic2VydmFibGU8VD4pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2UucGlwZShcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBsb2FkRXJyb3IgPSBuZXcgTWljcm9DbGllbnRMb2FkRXJyb3IoZXJyLCAoZXJyVG9IYW5kbGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyVG9IYW5kbGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IobG9hZEVycm9yKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9hZEVycm9yLnNob3VsZFByZXZlbnREZWZhdWx0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZEVycm9yLmhhbmRsZURlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVDaGlsZENsaWVudEZvckVudHJ5UG9pbnQoZW50cnlQb2ludDogTWljcm9PYmplY3QpOiBNaWNyb0NsaWVudCB7XG4gICAgICAgIGlmIChlbnRyeVBvaW50Ll9fbWV0YSAmJiBlbnRyeVBvaW50Ll9fbWV0YS5wZXJtaXRUb2tlbikge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRDbGllbnQ6IE1pY3JvQ2xpZW50ID0gT2JqZWN0LmNyZWF0ZSh0aGlzLCB7XG4gICAgICAgICAgICAgICAgZW50cnlQb2ludDoge1xuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhdXRoSGVhZGVyOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBlcm1pdFRva2VuOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNoaWxkQ2xpZW50LnNldEVudHJ5UG9pbnQoZW50cnlQb2ludCk7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGRDbGllbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBzdXBwbGllZCB2YWx1ZSBjYW5cXCd0IGJlIHVzZWQgdG8gY29uc3RydWN0IGEgY2hpbGQgTWljcm9DbGllbnQgYmVjYXVzZSBpdCBkb2VzblxcJ3QgY29udGFpbiBtZXRhZGF0YSB3aXRoIGEgcGVybWl0VG9rZW4gJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0VVJMUmV3cml0ZXIocmV3cml0ZXI6IChzdHJpbmcpID0+IHN0cmluZykge1xuICAgICAgICB0aGlzLnVybFJld3JpdGVyID0gcmV3cml0ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB0b01pY3JvRXJyb3IoaHR0cFJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSk6IE1pY3JvRXJyb3Ige1xuICAgICAgICBjb25zdCByZXMgPSBodHRwUmVzcG9uc2UuZXJyb3I7XG4gICAgICAgIGlmIChyZXMgJiYgcmVzLl9fbWV0YSAmJiByZXMuX19tZXRhLmVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgTWljcm9FcnJvcigpLCByZXMuX19tZXRhLmVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBzdGF0aWNDb250ZW50UmVnRXhwID0gbmV3IFJlZ0V4cCgnW2EtekEtWjAtOV06Ly8uKig6WzAtOV0rKT8oLy4qKSovc3RhdGljKC8uKihcXFxcPy4qKT8oIy4qKT8pPycpO1xuXG4gICAgcHVibGljIHN0YXRpYyBndWVzc01pY3JvQ29tcG9uZW50QmFzZVVSTCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG5cbiAgICAgICAgLy8gTGFzdCBVUkwtU2VnZW1lbnQgaXMgc3RhdGljXG4gICAgICAgIGlmIChNaWNyb0NsaWVudC5zdGF0aWNDb250ZW50UmVnRXhwLnRlc3QoaHJlZikpIHtcbiAgICAgICAgICAgIHJldHVybiBocmVmLnJlcGxhY2UobmV3IFJlZ0V4cCgnL3N0YXRpYy8uKicpLCAnJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZShuZXcgUmVnRXhwKCcvIy8uKicpLCAnJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sLnN0YXJ0c1dpdGgoJ2ZpbGUnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDovL2xvY2FsaG9zdDo4MDgwJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUgKyAnOjgwODAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBndWVzc01pY3JvQ29tcG9uZW50QXV0aG9yaXplVVJMKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmd1ZXNzTWljcm9Db21wb25lbnRCYXNlVVJMKCkgKyAnL2F1dGhvcml6ZSc7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWljcm9DbGllbnRMb2FkRXJyb3Ige1xuICAgIHByaXZhdGUgaGFuZGxlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgZG9QcmV2ZW50RGVmYXVsdCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlcnJvcjogYW55LCBwcml2YXRlIGRlZmF1bHRIYW5kbGVyOiAoZXJyOiBhbnkpID0+IHZvaWQpIHtcblxuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVEZWZhdWx0KCkge1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0SGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5kZWZhdWx0SGFuZGxlcih0aGlzLmVycm9yKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlRXJyb3IoaGFuZGxlcjogKGVycm9yOiBhbnkpID0+IHZvaWQpIHtcbiAgICAgICAgaGFuZGxlcih0aGlzLmVycm9yKTtcbiAgICAgICAgdGhpcy5oYW5kbGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNIYW5kbGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG91bGRQcmV2ZW50RGVmYXVsdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9QcmV2ZW50RGVmYXVsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJldmVudERlZmF1bHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZG9QcmV2ZW50RGVmYXVsdCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0RlZmF1bHRIYW5kbGVyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0SGFuZGxlciAhPSBudWxsO1xuICAgIH1cbn1cbiJdfQ==
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { LinkField } from './links/linkfield';
6
6
  import { CallableLink, LinkSerializer } from './links/callablelink';
7
+ import * as _ from 'lodash';
7
8
  // WARNING: interface has both a type and a value, skipping emit
8
9
  var MicroObject = /** @class */ (function () {
9
10
  function MicroObject() {
@@ -12,17 +13,17 @@ var MicroObject = /** @class */ (function () {
12
13
  /**
13
14
  * @template T
14
15
  * @param {?} toCopy
15
- * @param {?} client
16
+ * @param {?=} client
16
17
  * @return {?}
17
18
  */
18
19
  MicroObject.deepCopy = /**
19
20
  * @template T
20
21
  * @param {?} toCopy
21
- * @param {?} client
22
+ * @param {?=} client
22
23
  * @return {?}
23
24
  */
24
25
  function (toCopy, client) {
25
- return (/** @type {?} */ (MicroObject.fromString(JSON.stringify(toCopy), client)));
26
+ return (/** @type {?} */ (_.cloneDeep(toCopy)));
26
27
  };
27
28
  /**
28
29
  * @template T
@@ -275,4 +276,4 @@ if (false) {
275
276
  /** @type {?} */
276
277
  MicroObjectMetadata.prototype.error;
277
278
  }
278
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9vYmplY3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9wZXJtaXQvY2xpZW50LWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvbWljcm9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDOztBQU9sRTtJQUFBO1FBR0ksV0FBTSxHQUF3QixTQUFTLENBQUM7SUFnRjVDLENBQUM7Ozs7Ozs7SUE5RWlCLG9CQUFROzs7Ozs7SUFBdEIsVUFBb0QsTUFBUyxFQUFFLE1BQW1CO1FBQzlFLE9BQU8sbUJBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFBLENBQUM7SUFDckUsQ0FBQzs7Ozs7Ozs7SUFFYSxzQkFBVTs7Ozs7OztJQUF4QixVQUEyQyxHQUFXLEVBQUUsTUFBbUIsRUFBRSxTQUFtQjtRQUFuQiwwQkFBQSxFQUFBLGdCQUFtQjs7WUFDdEYsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7Ozs7Ozs7O0lBRWEsc0JBQVU7Ozs7Ozs7SUFBeEIsVUFBMkMsR0FBUSxFQUFFLE1BQW1CLEVBQUUsU0FBbUI7UUFBbkIsMEJBQUEsRUFBQSxnQkFBbUI7UUFDekYsSUFBRyxHQUFHLEtBQUssSUFBSSxFQUFDO1lBQ1osT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTs7Z0JBQ2QsTUFBTSxHQUFRLEdBQUc7WUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVB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SyxJQUFNLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzNCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2pDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQzlCO1NBQ0o7SUFDTCxDQUFDOzs7OztJQUVNLDJDQUFhOzs7O0lBQXBCLFVBQXFCLEVBQTRDO1FBQzdELEtBQUssSUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUM3QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNuQyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUNoQztTQUNKO0lBQ0wsQ0FBQztJQUdMLDBCQUFDO0FBQUQsQ0FBQyxBQTVDRCxJQTRDQzs7OztJQTNDRyxvQ0FBVzs7SUFDWCxzQ0FBYTs7SUFDYiwwQ0FBb0I7O0lBQ3BCLHVDQUF5Qjs7SUFDekIsb0NBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNaWNyb0NsaWVudH0gZnJvbSAnLi9taWNyb2NsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7TGlua0ZpZWxkfSBmcm9tICcuL2xpbmtzL2xpbmtmaWVsZCc7XG5pbXBvcnQge0NhbGxhYmxlTGluaywgTGlua1NlcmlhbGl6ZXJ9IGZyb20gJy4vbGlua3MvY2FsbGFibGVsaW5rJztcbmltcG9ydCB7TWljcm9FcnJvcn0gZnJvbSAnLi9lcnJvci9taWNyb2Vycm9yJztcblxuZXhwb3J0IGludGVyZmFjZSBNaWNyb09iamVjdCB7XG4gICAgX19tZXRhOiBNaWNyb09iamVjdE1ldGFkYXRhO1xufVxuXG5leHBvcnQgY2xhc3MgTWljcm9PYmplY3QgaW1wbGVtZW50cyBNaWNyb09iamVjdCB7XG4gICAgcHVibGljIHN0YXRpYyBNRVRBX0tFWSA9ICdfX21ldGEnO1xuXG4gICAgX19tZXRhOiBNaWNyb09iamVjdE1ldGFkYXRhID0gdW5kZWZpbmVkO1xuXG4gICAgcHVibGljIHN0YXRpYyBkZWVwQ29weTxUIGV4dGVuZHMgb2JqZWN0IHwgb2JqZWN0W10+KHRvQ29weTogVCwgY2xpZW50OiBNaWNyb0NsaWVudCk6IFQge1xuICAgICAgICByZXR1cm4gPFQ+TWljcm9PYmplY3QuZnJvbVN0cmluZyhKU09OLnN0cmluZ2lmeSh0b0NvcHkpLCBjbGllbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbVN0cmluZzxUIGV4dGVuZHMgb2JqZWN0PihzdHI6IHN0cmluZywgY2xpZW50OiBNaWNyb0NsaWVudCwgcHJvdG90eXBlOiBUID0gbnVsbCk6IFQgfCBUW10ge1xuICAgICAgICBjb25zdCBvYmogPSBKU09OLnBhcnNlKHN0cik7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb21PYmplY3Qob2JqLCBjbGllbnQsIHByb3RvdHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tT2JqZWN0PFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogYW55LCBjbGllbnQ6IE1pY3JvQ2xpZW50LCBwcm90b3R5cGU6IFQgPSBudWxsKTogVCB8IFRbXSB7XG4gICAgICAgIGlmKG9iaiA9PT0gbnVsbCl7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgICAgIGNvbnN0IG9iakFycjogVFtdID0gb2JqO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmpBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtID0gb2JqQXJyW2ldO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZWxlbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqQXJyW2ldID0gPFQ+TWljcm9PYmplY3QuZnJvbU9iamVjdChlbGVtLCBjbGllbnQsIHByb3RvdHlwZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9iakFycjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGQgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkICE9PSBNaWNyb09iamVjdC5NRVRBX0tFWSAmJiBvYmouaGFzT3duUHJvcGVydHkoZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSBvYmpbZmllbGRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkVmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgfHwgQXJyYXkuaXNBcnJheShmaWVsZFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ialtmaWVsZF0gPSBNaWNyb09iamVjdC5mcm9tT2JqZWN0KGZpZWxkVmFsdWUsIGNsaWVudCwgcHJvdG90eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc3JjID0gcHJvdG90eXBlID09IG51bGwgPyBNaWNyb09iamVjdC5wcm90b3R5cGUgOiBwcm90b3R5cGU7XG4gICAgICAgICAgICBjb25zdCBtaWNyb09iamVjdDogTWljcm9PYmplY3QgPSBPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoc3JjKSwgb2JqKTtcblxuXG4gICAgICAgICAgICBNaWNyb09iamVjdC5hdHRhY2hNZXRhZGF0YU9iamVjdChtaWNyb09iamVjdCwgY2xpZW50KTtcblxuICAgICAgICAgICAgcmV0dXJuIDxUPm1pY3JvT2JqZWN0O1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhdHRhY2hNZXRhZGF0YU9iamVjdChtaWNyb09iamVjdDogTWljcm9PYmplY3QsIGNsaWVudDogTWljcm9DbGllbnQpIHtcbiAgICAgICAgY29uc3QgcmF3TWV0YTogTWljcm9PYmplY3RNZXRhZGF0YSA9IG1pY3JvT2JqZWN0ICE9IG51bGwgPyBtaWNyb09iamVjdFtNaWNyb09iamVjdC5NRVRBX0tFWV0gOiBudWxsO1xuICAgICAgICBpZiAocmF3TWV0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgY2xpZW50VG9Vc2UgPSBjbGllbnQ7XG4gICAgICAgICAgICBpZiAocmF3TWV0YS5wZXJtaXRUb2tlbikge1xuICAgICAgICAgICAgICAgIGlmIChjbGllbnQuZ2V0RW50cnlQb2ludCgpICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50VG9Vc2UgPSBjbGllbnQuY3JlYXRlQ2hpbGRDbGllbnRGb3JFbnRyeVBvaW50KG1pY3JvT2JqZWN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG1pY3JvT2JqZWN0Ll9fbWV0YSA9IE1pY3JvT2JqZWN0TWV0YWRhdGEuZnJvbU9iamVjdChtaWNyb09iamVjdC5fX21ldGEsIGNsaWVudFRvVXNlKTtcblxuICAgICAgICAgICAgTWljcm9PYmplY3QuYXR0YWNoTGlua0ZpZWxkcyhtaWNyb09iamVjdC5fX21ldGEsIG1pY3JvT2JqZWN0LCBjbGllbnRUb1VzZSk7XG4gICAgICAgICAgICBNaWNyb09iamVjdC5hdHRhY2hDYWxsYWJsZUxpbmtzKG1pY3JvT2JqZWN0Ll9fbWV0YSwgbWljcm9PYmplY3QsIGNsaWVudFRvVXNlKTtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhdHRhY2hMaW5rRmllbGRzKG1ldGE6IE1pY3JvT2JqZWN0TWV0YWRhdGEsIG1pY3JvT2JqZWN0OiBNaWNyb09iamVjdCwgY2xpZW50OiBNaWNyb0NsaWVudCkge1xuICAgICAgICBtZXRhLmZvckVhY2hMaW5rKChsaW5rTmFtZSwgbGlua1VybCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBtaWNyb09iamVjdFtsaW5rTmFtZV07XG4gICAgICAgICAgICBtaWNyb09iamVjdFtsaW5rTmFtZV0gPSBuZXcgTGlua0ZpZWxkKGxpbmtVcmwsIGNsaWVudCwgdmFsdWUsIHZhbHVlICE9PSB1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhdHRhY2hDYWxsYWJsZUxpbmtzKG1ldGE6IE1pY3JvT2JqZWN0TWV0YWRhdGEsIG1pY3JvT2JqZWN0OiBNaWNyb09iamVjdCwgY2xpZW50OiBNaWNyb0NsaWVudCkge1xuICAgICAgICBtZXRhLmZvckVhY2hBY3Rpb24oKGxpbmtOYW1lLCBsaW5rVXJsKSA9PiB7XG4gICAgICAgICAgICBtaWNyb09iamVjdFtsaW5rTmFtZV0gPSBuZXcgQ2FsbGFibGVMaW5rKGxpbmtVcmwsIGNsaWVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pY3JvT2JqZWN0TWV0YWRhdGEge1xuICAgIGxpbmtzOiBhbnk7XG4gICAgYWN0aW9uczogYW55O1xuICAgIHBlcm1pdFRva2VuOiBzdHJpbmc7XG4gICAgbmV4dFBhZ2U6IExpbmtGaWVsZDxhbnk+O1xuICAgIGVycm9yOiBNaWNyb0Vycm9yO1xuXG5cbiAgICBzdGF0aWMgZnJvbU9iamVjdChvYmo6IG9iamVjdCwgY2xpZW50OiBNaWNyb0NsaWVudCk6IE1pY3JvT2JqZWN0TWV0YWRhdGEge1xuICAgICAgICBjb25zdCBvYmpNZXRhZGF0YSA9IE9iamVjdC5hc3NpZ24obmV3IE1pY3JvT2JqZWN0TWV0YWRhdGEoKSwgb2JqKTtcblxuICAgICAgICBpZiAob2JqTWV0YWRhdGEubmV4dFBhZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgb2JqTWV0YWRhdGEubmV4dFBhZ2UgPSBuZXcgTGlua0ZpZWxkKDxhbnk+b2JqTWV0YWRhdGEubmV4dFBhZ2UsIGNsaWVudCk7XG4gICAgICAgICAgICBvYmpNZXRhZGF0YS5uZXh0UGFnZS5zZXJpYWxpemVUbyA9IExpbmtTZXJpYWxpemVyLkFTX0xJTks7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JqTWV0YWRhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIGdldExpbmtVcmwoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5saW5rc1trZXldO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNMaW5rKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpbmtzW2tleV0gIT0gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRWFjaExpbmsob3A6IChsaW5rTmFtZTogc3RyaW5nLCBsaW5rOiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBsaW5rIGluIHRoaXMubGlua3MpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxpbmtzLmhhc093blByb3BlcnR5KGxpbmspKSB7XG4gICAgICAgICAgICAgICAgb3AobGluaywgdGhpcy5saW5rc1tsaW5rXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRWFjaEFjdGlvbihvcDogKGxpbmtOYW1lOiBzdHJpbmcsIGxpbms6IHN0cmluZykgPT4gdm9pZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgaW4gdGhpcy5hY3Rpb25zKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hY3Rpb25zLmhhc093blByb3BlcnR5KGxpbmspKSB7XG4gICAgICAgICAgICAgICAgb3AobGluaywgdGhpcy5hY3Rpb25zW2xpbmtdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG59XG4iXX0=
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9vYmplY3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9wZXJtaXQvY2xpZW50LWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvbWljcm9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRWxFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDOztBQU01QjtJQUFBO1FBR0ksV0FBTSxHQUF3QixTQUFTLENBQUM7SUFnRjVDLENBQUM7Ozs7Ozs7SUE5RWlCLG9CQUFROzs7Ozs7SUFBdEIsVUFBb0QsTUFBUyxFQUFFLE1BQW9CO1FBQy9FLE9BQU8sbUJBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBQSxDQUFDO0lBQ25DLENBQUM7Ozs7Ozs7O0lBRWEsc0JBQVU7Ozs7Ozs7SUFBeEIsVUFBMkMsR0FBVyxFQUFFLE1BQW1CLEVBQUUsU0FBbUI7UUFBbkIsMEJBQUEsRUFBQSxnQkFBbUI7O1lBQ3RGLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNuRCxDQUFDOzs7Ozs7OztJQUVhLHNCQUFVOzs7Ozs7O0lBQXhCLFVBQTJDLEdBQVEsRUFBRSxNQUFtQixFQUFFLFNBQW1CO1FBQW5CLDBCQUFBLEVBQUEsZ0JBQW1CO1FBQ3pGLElBQUcsR0FBRyxLQUFLLElBQUksRUFBQztZQUNaLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7O2dCQUNkLE1BQU0sR0FBUSxHQUFHO1lBQ3ZCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxF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QUssSUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUMzQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNqQyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUM5QjtTQUNKO0lBQ0wsQ0FBQzs7Ozs7SUFFTSwyQ0FBYTs7OztJQUFwQixVQUFxQixFQUE0QztRQUM3RCxLQUFLLElBQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDaEM7U0FDSjtJQUNMLENBQUM7SUFHTCwwQkFBQztBQUFELENBQUMsQUE1Q0QsSUE0Q0M7Ozs7SUEzQ0csb0NBQVc7O0lBQ1gsc0NBQWE7O0lBQ2IsMENBQW9COztJQUNwQix1Q0FBeUI7O0lBQ3pCLG9DQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWljcm9DbGllbnR9IGZyb20gJy4vbWljcm9jbGllbnQuc2VydmljZSc7XG5pbXBvcnQge0xpbmtGaWVsZH0gZnJvbSAnLi9saW5rcy9saW5rZmllbGQnO1xuaW1wb3J0IHtDYWxsYWJsZUxpbmssIExpbmtTZXJpYWxpemVyfSBmcm9tICcuL2xpbmtzL2NhbGxhYmxlbGluayc7XG5pbXBvcnQge01pY3JvRXJyb3J9IGZyb20gJy4vZXJyb3IvbWljcm9lcnJvcic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWljcm9PYmplY3Qge1xuICAgIF9fbWV0YTogTWljcm9PYmplY3RNZXRhZGF0YTtcbn1cblxuZXhwb3J0IGNsYXNzIE1pY3JvT2JqZWN0IGltcGxlbWVudHMgTWljcm9PYmplY3Qge1xuICAgIHB1YmxpYyBzdGF0aWMgTUVUQV9LRVkgPSAnX19tZXRhJztcblxuICAgIF9fbWV0YTogTWljcm9PYmplY3RNZXRhZGF0YSA9IHVuZGVmaW5lZDtcblxuICAgIHB1YmxpYyBzdGF0aWMgZGVlcENvcHk8VCBleHRlbmRzIG9iamVjdCB8IG9iamVjdFtdPih0b0NvcHk6IFQsIGNsaWVudD86IE1pY3JvQ2xpZW50KTogVCB7XG4gICAgICAgIHJldHVybiA8VD4gXy5jbG9uZURlZXAodG9Db3B5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmc8VCBleHRlbmRzIG9iamVjdD4oc3RyOiBzdHJpbmcsIGNsaWVudDogTWljcm9DbGllbnQsIHByb3RvdHlwZTogVCA9IG51bGwpOiBUIHwgVFtdIHtcbiAgICAgICAgY29uc3Qgb2JqID0gSlNPTi5wYXJzZShzdHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tT2JqZWN0KG9iaiwgY2xpZW50LCBwcm90b3R5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbU9iamVjdDxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IGFueSwgY2xpZW50OiBNaWNyb0NsaWVudCwgcHJvdG90eXBlOiBUID0gbnVsbCk6IFQgfCBUW10ge1xuICAgICAgICBpZihvYmogPT09IG51bGwpe1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgICAgICBjb25zdCBvYmpBcnI6IFRbXSA9IG9iajtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqQXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbSA9IG9iakFycltpXTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGVsZW0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iakFycltpXSA9IDxUPk1pY3JvT2JqZWN0LmZyb21PYmplY3QoZWxlbSwgY2xpZW50LCBwcm90b3R5cGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvYmpBcnI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZCAhPT0gTWljcm9PYmplY3QuTUVUQV9LRVkgJiYgb2JqLmhhc093blByb3BlcnR5KGZpZWxkKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gb2JqW2ZpZWxkXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZFZhbHVlIGluc3RhbmNlb2YgT2JqZWN0IHx8IEFycmF5LmlzQXJyYXkoZmllbGRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpbZmllbGRdID0gTWljcm9PYmplY3QuZnJvbU9iamVjdChmaWVsZFZhbHVlLCBjbGllbnQsIHByb3RvdHlwZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNyYyA9IHByb3RvdHlwZSA9PSBudWxsID8gTWljcm9PYmplY3QucHJvdG90eXBlIDogcHJvdG90eXBlO1xuICAgICAgICAgICAgY29uc3QgbWljcm9PYmplY3Q6IE1pY3JvT2JqZWN0ID0gT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHNyYyksIG9iaik7XG5cblxuICAgICAgICAgICAgTWljcm9PYmplY3QuYXR0YWNoTWV0YWRhdGFPYmplY3QobWljcm9PYmplY3QsIGNsaWVudCk7XG5cbiAgICAgICAgICAgIHJldHVybiA8VD5taWNyb09iamVjdDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXR0YWNoTWV0YWRhdGFPYmplY3QobWljcm9PYmplY3Q6IE1pY3JvT2JqZWN0LCBjbGllbnQ6IE1pY3JvQ2xpZW50KSB7XG4gICAgICAgIGNvbnN0IHJhd01ldGE6IE1pY3JvT2JqZWN0TWV0YWRhdGEgPSBtaWNyb09iamVjdCAhPSBudWxsID8gbWljcm9PYmplY3RbTWljcm9PYmplY3QuTUVUQV9LRVldIDogbnVsbDtcbiAgICAgICAgaWYgKHJhd01ldGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IGNsaWVudFRvVXNlID0gY2xpZW50O1xuICAgICAgICAgICAgaWYgKHJhd01ldGEucGVybWl0VG9rZW4pIHtcbiAgICAgICAgICAgICAgICBpZiAoY2xpZW50LmdldEVudHJ5UG9pbnQoKSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWVudFRvVXNlID0gY2xpZW50LmNyZWF0ZUNoaWxkQ2xpZW50Rm9yRW50cnlQb2ludChtaWNyb09iamVjdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtaWNyb09iamVjdC5fX21ldGEgPSBNaWNyb09iamVjdE1ldGFkYXRhLmZyb21PYmplY3QobWljcm9PYmplY3QuX19tZXRhLCBjbGllbnRUb1VzZSk7XG5cbiAgICAgICAgICAgIE1pY3JvT2JqZWN0LmF0dGFjaExpbmtGaWVsZHMobWljcm9PYmplY3QuX19tZXRhLCBtaWNyb09iamVjdCwgY2xpZW50VG9Vc2UpO1xuICAgICAgICAgICAgTWljcm9PYmplY3QuYXR0YWNoQ2FsbGFibGVMaW5rcyhtaWNyb09iamVjdC5fX21ldGEsIG1pY3JvT2JqZWN0LCBjbGllbnRUb1VzZSk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXR0YWNoTGlua0ZpZWxkcyhtZXRhOiBNaWNyb09iamVjdE1ldGFkYXRhLCBtaWNyb09iamVjdDogTWljcm9PYmplY3QsIGNsaWVudDogTWljcm9DbGllbnQpIHtcbiAgICAgICAgbWV0YS5mb3JFYWNoTGluaygobGlua05hbWUsIGxpbmtVcmwpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbWljcm9PYmplY3RbbGlua05hbWVdO1xuICAgICAgICAgICAgbWljcm9PYmplY3RbbGlua05hbWVdID0gbmV3IExpbmtGaWVsZChsaW5rVXJsLCBjbGllbnQsIHZhbHVlLCB2YWx1ZSAhPT0gdW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXR0YWNoQ2FsbGFibGVMaW5rcyhtZXRhOiBNaWNyb09iamVjdE1ldGFkYXRhLCBtaWNyb09iamVjdDogTWljcm9PYmplY3QsIGNsaWVudDogTWljcm9DbGllbnQpIHtcbiAgICAgICAgbWV0YS5mb3JFYWNoQWN0aW9uKChsaW5rTmFtZSwgbGlua1VybCkgPT4ge1xuICAgICAgICAgICAgbWljcm9PYmplY3RbbGlua05hbWVdID0gbmV3IENhbGxhYmxlTGluayhsaW5rVXJsLCBjbGllbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNaWNyb09iamVjdE1ldGFkYXRhIHtcbiAgICBsaW5rczogYW55O1xuICAgIGFjdGlvbnM6IGFueTtcbiAgICBwZXJtaXRUb2tlbjogc3RyaW5nO1xuICAgIG5leHRQYWdlOiBMaW5rRmllbGQ8YW55PjtcbiAgICBlcnJvcjogTWljcm9FcnJvcjtcblxuXG4gICAgc3RhdGljIGZyb21PYmplY3Qob2JqOiBvYmplY3QsIGNsaWVudDogTWljcm9DbGllbnQpOiBNaWNyb09iamVjdE1ldGFkYXRhIHtcbiAgICAgICAgY29uc3Qgb2JqTWV0YWRhdGEgPSBPYmplY3QuYXNzaWduKG5ldyBNaWNyb09iamVjdE1ldGFkYXRhKCksIG9iaik7XG5cbiAgICAgICAgaWYgKG9iak1ldGFkYXRhLm5leHRQYWdlICE9IG51bGwpIHtcbiAgICAgICAgICAgIG9iak1ldGFkYXRhLm5leHRQYWdlID0gbmV3IExpbmtGaWVsZCg8YW55Pm9iak1ldGFkYXRhLm5leHRQYWdlLCBjbGllbnQpO1xuICAgICAgICAgICAgb2JqTWV0YWRhdGEubmV4dFBhZ2Uuc2VyaWFsaXplVG8gPSBMaW5rU2VyaWFsaXplci5BU19MSU5LO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9iak1ldGFkYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRMaW5rVXJsKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlua3Nba2V5XTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzTGluayhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5saW5rc1trZXldICE9IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGZvckVhY2hMaW5rKG9wOiAobGlua05hbWU6IHN0cmluZywgbGluazogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgICAgIGZvciAoY29uc3QgbGluayBpbiB0aGlzLmxpbmtzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5saW5rcy5oYXNPd25Qcm9wZXJ0eShsaW5rKSkge1xuICAgICAgICAgICAgICAgIG9wKGxpbmssIHRoaXMubGlua3NbbGlua10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGZvckVhY2hBY3Rpb24ob3A6IChsaW5rTmFtZTogc3RyaW5nLCBsaW5rOiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBsaW5rIGluIHRoaXMuYWN0aW9ucykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aW9ucy5oYXNPd25Qcm9wZXJ0eShsaW5rKSkge1xuICAgICAgICAgICAgICAgIG9wKGxpbmssIHRoaXMuYWN0aW9uc1tsaW5rXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuIl19
@@ -57,4 +57,4 @@ if (false) {
57
57
  */
58
58
  LinkFieldPipe.prototype.asyncPipe;
59
59
  }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2ZpZWxkLnBpcGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9wZXJtaXQvY2xpZW50LWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvcGlwZXMvbGlua2ZpZWxkLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQWdCLElBQUksRUFBYSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFMUM7SUFLSSx1QkFBWSxpQkFBb0M7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Ozs7SUFFRCxtQ0FBVzs7O0lBQVg7UUFDSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7Ozs7OztJQUVELGlDQUFTOzs7OztJQUFULFVBQW1ELFNBQXVCO1FBQ3RFLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsSUFBSSxTQUFTLFlBQVksU0FBUyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDdkQ7YUFBTTtZQUNILG9CQUFvQjtZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLGtGQUFrRixDQUFDLENBQUM7U0FDdkc7SUFDTCxDQUFDOztnQkF2QkosSUFBSSxTQUFDLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFDOzs7O2dCQUpFLGlCQUFpQjs7SUE2QnpELG9CQUFDO0NBQUEsQUF6QkQsSUF5QkM7U0F4QlksYUFBYTs7Ozs7O0lBRXRCLGtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlua0ZpZWxkfSBmcm9tICcuLi9saW5rcy9saW5rZmllbGQnO1xuaW1wb3J0IHtQaXBlVHJhbnNmb3JtLCBQaXBlLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWljcm9PYmplY3R9IGZyb20gJy4uL21pY3Jvb2JqZWN0JztcbmltcG9ydCB7QXN5bmNQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AUGlwZSh7bmFtZTogJ2xpbmtGaWVsZCcsIHB1cmU6IGZhbHNlfSlcbmV4cG9ydCBjbGFzcyBMaW5rRmllbGRQaXBlIGltcGxlbWVudHMgT25EZXN0cm95LCBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHByaXZhdGUgYXN5bmNQaXBlOiBBc3luY1BpcGU7XG5cbiAgICBjb25zdHJ1Y3RvcihjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy5hc3luY1BpcGUgPSBuZXcgQXN5bmNQaXBlKGNoYW5nZURldGVjdG9yUmVmKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hc3luY1BpcGUubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm08VCBleHRlbmRzIChNaWNyb09iamVjdCB8IE1pY3JvT2JqZWN0W10pPihsaW5rRmllbGQ6IExpbmtGaWVsZDxUPik6IGFueSB7XG4gICAgICAgIGlmIChsaW5rRmllbGQgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbmtGaWVsZCBpbnN0YW5jZW9mIExpbmtGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXN5bmNQaXBlLnRyYW5zZm9ybShsaW5rRmllbGQuZ2V0T2JzKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcmV0dXJuIGxpbmtGaWVsZDtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuXFwndCB1c2UgdGhlIGxpbmtGaWVsZCBwaXBlIHdpdGggYSB2YWx1ZSB3aGljaCBpc25cXCd0IGFuIGluc3RhbmNlIG9mIExpbmtGaWVsZCcpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2ZpZWxkLnBpcGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9wZXJtaXQvY2xpZW50LWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvcGlwZXMvbGlua2ZpZWxkLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQWdCLElBQUksRUFBYSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFMUM7SUFLSSx1QkFBWSxpQkFBb0M7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Ozs7SUFFRCxtQ0FBVzs7O0lBQVg7UUFDSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7Ozs7OztJQUVELGlDQUFTOzs7OztJQUFULFVBQXlDLFNBQXVCO1FBQzVELElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsSUFBSSxTQUFTLFlBQVksU0FBUyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDdkQ7YUFBTTtZQUNILG9CQUFvQjtZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLGtGQUFrRixDQUFDLENBQUM7U0FDdkc7SUFDTCxDQUFDOztnQkF2QkosSUFBSSxTQUFDLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFDOzs7O2dCQUpFLGlCQUFpQjs7SUE2QnpELG9CQUFDO0NBQUEsQUF6QkQsSUF5QkM7U0F4QlksYUFBYTs7Ozs7O0lBRXRCLGtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlua0ZpZWxkfSBmcm9tICcuLi9saW5rcy9saW5rZmllbGQnO1xuaW1wb3J0IHtQaXBlVHJhbnNmb3JtLCBQaXBlLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWljcm9PYmplY3R9IGZyb20gJy4uL21pY3Jvb2JqZWN0JztcbmltcG9ydCB7QXN5bmNQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AUGlwZSh7bmFtZTogJ2xpbmtGaWVsZCcsIHB1cmU6IGZhbHNlfSlcbmV4cG9ydCBjbGFzcyBMaW5rRmllbGRQaXBlIGltcGxlbWVudHMgT25EZXN0cm95LCBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHByaXZhdGUgYXN5bmNQaXBlOiBBc3luY1BpcGU7XG5cbiAgICBjb25zdHJ1Y3RvcihjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy5hc3luY1BpcGUgPSBuZXcgQXN5bmNQaXBlKGNoYW5nZURldGVjdG9yUmVmKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hc3luY1BpcGUubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm08VCBleHRlbmRzIChvYmplY3QgfCBvYmplY3RbXSk+KGxpbmtGaWVsZDogTGlua0ZpZWxkPFQ+KTogYW55IHtcbiAgICAgICAgaWYgKGxpbmtGaWVsZCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGlua0ZpZWxkIGluc3RhbmNlb2YgTGlua0ZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hc3luY1BpcGUudHJhbnNmb3JtKGxpbmtGaWVsZC5nZXRPYnMoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyByZXR1cm4gbGlua0ZpZWxkO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5cXCd0IHVzZSB0aGUgbGlua0ZpZWxkIHBpcGUgd2l0aCBhIHZhbHVlIHdoaWNoIGlzblxcJ3QgYW4gaW5zdGFuY2Ugb2YgTGlua0ZpZWxkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
@@ -2,6 +2,7 @@ import { Injectable, Component, Pipe, ChangeDetectorRef, Input, Directive, ViewC
2
2
  import { HttpHeaders, HttpClient, HttpClientModule } from '@angular/common/http';
3
3
  import { ReplaySubject, defer, throwError, timer, of } from 'rxjs';
4
4
  import { take, map, catchError, finalize, switchMap, delay } from 'rxjs/operators';
5
+ import { cloneDeep } from 'lodash';
5
6
  import { AsyncPipe } from '@angular/common';
6
7
  import { FormGroup, NG_ASYNC_VALIDATORS } from '@angular/forms';
7
8
 
@@ -721,11 +722,11 @@ class MicroObject {
721
722
  /**
722
723
  * @template T
723
724
  * @param {?} toCopy
724
- * @param {?} client
725
+ * @param {?=} client
725
726
  * @return {?}
726
727
  */
727
728
  static deepCopy(toCopy, client) {
728
- return (/** @type {?} */ (MicroObject.fromString(JSON.stringify(toCopy), client)));
729
+ return (/** @type {?} */ (cloneDeep(toCopy)));
729
730
  }
730
731
  /**
731
732
  * @template T
@@ -1083,13 +1084,8 @@ class MicroClient {
1083
1084
  val => {
1084
1085
  /** @type {?} */
1085
1086
  const entryPoint = MicroObject.fromObject(val, this);
1086
- if (entryPoint instanceof MicroObject) {
1087
- this.setEntryPoint(entryPoint);
1088
- return (/** @type {?} */ (entryPoint));
1089
- }
1090
- else {
1091
- throw Error('Expected the entryPoint to be a Object');
1092
- }
1087
+ this.setEntryPoint(entryPoint);
1088
+ return (/** @type {?} */ (entryPoint));
1093
1089
  })), this.catchAndHandleError());
1094
1090
  }
1095
1091
  /**