@esfaenza/extensions 14.2.0 → 14.3.0

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.
@@ -222,9 +222,9 @@ export class UtilityService {
222
222
  return destination;
223
223
  }
224
224
  }
225
- UtilityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UtilityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
226
- UtilityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UtilityService });
227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UtilityService, decorators: [{
225
+ UtilityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UtilityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
226
+ UtilityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UtilityService });
227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UtilityService, decorators: [{
228
228
  type: Injectable
229
229
  }] });
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy51dGlsaXRpZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLnV0aWxpdGllcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLFVBQVU7QUFDVixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRTlDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGNBQWM7SUFFdkI7O09BRUc7SUFDSSxrQkFBa0I7UUFDckIsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBSSxTQUFTO2dCQUN4QyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQzdCLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLGVBQWUsRUFBRyxVQUFVO2dCQUN2RCxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7U0FFL0M7YUFBTSxJQUFVLFFBQVMsQ0FBQyxTQUFTLEVBQUcsTUFBTTtZQUNuQyxRQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxlQUFlLENBQUksVUFBZSxFQUFFLGlCQUF5QixFQUFFLGFBQXFCO1FBQ3ZGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hDLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLGFB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QUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQzNDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25EO2FBQU0sSUFBSSxNQUFNLElBQUksT0FBTyxNQUFNLENBQUMsY0FBYyxLQUFLLFVBQVUsRUFBRTtZQUM5RCxLQUFLLElBQUksR0FBRyxJQUFJLE1BQU0sRUFBRTtnQkFDcEIsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztvQkFDMUIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDdEQ7U0FDSjtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7OzRHQTdPUSxjQUFjO2dIQUFkLGNBQWM7NEZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBUeXBlQ29kZSB9IGZyb20gJy4uL21vZGVscy9UeXBlQ29kZSc7XHJcblxyXG4vKipcclxuICogU2VydmljZSBjaGUgZm9ybmlzY2UgbWV0b2RpIGRpIHB1YmJsaWNhIHV0aWxpdMOgXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBVdGlsaXR5U2VydmljZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXNlbGV6aW9uYSBpbCB0ZXN0byBldmVudHVhbG1lbnRlIHNlbGV6aW9uYXRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjbGVhclRleHRTZWxlY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcclxuICAgICAgICAgICAgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5lbXB0eSkgICAvLyBDaHJvbWVcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5lbXB0eSgpO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKSAgLy8gRmlyZWZveFxyXG4gICAgICAgICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpO1xyXG5cclxuICAgICAgICB9IGVsc2UgaWYgKCg8YW55PmRvY3VtZW50KS5zZWxlY3Rpb24pICAvLyBJRT9cclxuICAgICAgICAgICAgKDxhbnk+ZG9jdW1lbnQpLnNlbGVjdGlvbi5lbXB0eSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGFydGVuZG8gZGEgdW5hIGxpc3RhLCBkYXRvIGlsIG5vbWUgZGVsbGEgcHJvcHJpZXTDoCBjaGlhdmUgZSBpbCB2YWxvcmUgZGVsbGEgY2hpYXZlIHNlbGV6aW9uYXRhLCBcclxuICAgICAqIHRyb3ZhIGUgcmVzdGl0dWlzY2UgbCdvZ2dldHRvIGRlc2lkZXJhdG9cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtUW119IHNvdXJjZUxpc3QgTGlzdGEgZGkgb2dnZXR0aSBkZW50cm8gY3VpIGNlcmNhcmVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VJdGVtSWRGaWVsZCBOb21lIGRlbGxhIHByb3ByaWV0w6AgY2hlIHJhcHByZXNlbnRhIGxhIGNoaWF2ZSBkaSB1biBvZ2dldHRvIGRpIHRpcG8gVFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdGVkVmFsdWUgVmFsb3JlIGRpIGNoaWF2ZSBzZWxlemlvbmF0b1xyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7VH0gT2dnZXR0byBsYSBjdWkgcHJvcHJpZXTDoCAqKnNvdXJjZUl0ZW1JZEZpZWxkKiogYXNzdW1lIGlsIHZhbG9yZSAqKnNlbGVjdGVkVmFsdWUqKlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0U2VsZWN0ZWRJdGVtPFQ+KHNvdXJjZUxpc3Q6IFRbXSwgc291cmNlSXRlbUlkRmllbGQ6IHN0cmluZywgc2VsZWN0ZWRWYWx1ZTogc3RyaW5nKTogVCB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2VMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBpdGVtID0gc291cmNlTGlzdFtpXTtcclxuICAgICAgICAgICAgaWYgKGl0ZW1bc291cmNlSXRlbUlkRmllbGRdID09IHNlbGVjdGVkVmFsdWUpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFZmZldHR1YSBpbCByZXNldCBkaSB1biBGb3JtIGRpIEFuZ3VsYXJcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtOZ0Zvcm19IGZvcm0gRm9ybSBkYSByZXNldHRhcmVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBleGNlcHRpb24xIENhbXBvIGRhIG5vbiByZXNldHRhcmVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBleGNlcHRpb24yIENhbXBvIGRhIG5vbiByZXNldHRhcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsZWFuRm9ybShmb3JtOiBOZ0Zvcm0sIGV4Y2VwdGlvbjE6IHN0cmluZyA9IG51bGwsIGV4Y2VwdGlvbjI6IHN0cmluZyA9IG51bGwpIHtcclxuICAgICAgICBmb3IgKGxldCBuYW1lIGluIGZvcm0uY29udHJvbHMpIHtcclxuICAgICAgICAgICAgaWYgKG5hbWUgJiYgbmFtZSAhPSBleGNlcHRpb24xICYmIG5hbWUgIT0gZXhjZXB0aW9uMSArIFwiX2ludGVybmFsXCIgJiYgbmFtZSAhPSBleGNlcHRpb24yICYmIG5hbWUgIT0gZXhjZXB0aW9uMiArIFwiX2ludGVybmFsXCIpIHtcclxuICAgICAgICAgICAgICAgIGZvcm0uY29udHJvbHNbbmFtZV0ucmVzZXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGZvcm0uY29udHJvbHNbbmFtZV0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICAgICAgICAgIGZvcm0uY29udHJvbHNbbmFtZV0ubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vUmVpbXBvc3RvIGlsIHN1Ym1pdHRlZFxyXG4gICAgICAgIChmb3JtIGFzIHsgc3VibWl0dGVkOiBib29sZWFuIH0pLnN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGNoZSBwZXJtZXR0ZSBkaSBzY2FyaWNhcmUgdW4gZmlsZSBkYXRvIHVuIFVSTCAoR2VuZXJhdG8gZGEgdW5hIGNoaWFtYXRhIGFkICoqd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwqKilcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHVybCBPYmplY3RVUkwgY2hlIHJhcHByZXNlbnRhIGlsIGZpbGUgZGEgc2NhcmljYXJlXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZW5hbWUgTm9tZSBkZWwgZmlsZSBzdWdnZXJpdG8gaW4gZmFzZSBkaSBzYWx2YXRhZ2dpb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmlsZURvd25sb2FkKHVybDogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgICAgIGEuY2xhc3NOYW1lID0gXCJ0YS1kaXNwbGF5LW5vbmVcIjtcclxuICAgICAgICBhLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgICAgIGEuY2xpY2soKTtcclxuICAgICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgcGVyIGxhIGZvcm1hdHRhemlvbmUgZGkgdW4gbnVtZXJvIGRpIG1pbGxpc2Vjb25kaSBpbiB1bmEgc3RyaW5nYSBwacO5IGNvbXByZW5zaWJpbGUgcGVyIHVuIHVtYW5vXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkdXJhdGlvbiBUZW1wbyBlc3ByZXNzbyBpbiBtaWxsaXNlY29uZGlcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gRHVyYXRhIGZvcm1hdHRhdGFcclxuICAgICAqL1xyXG4gICAgcHVibGljIG1zVG9UaW1lKGR1cmF0aW9uOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghZHVyYXRpb24pXHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG5cclxuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gcGFyc2VJbnQoKChkdXJhdGlvbiAlIDEwMDApIC8gMTAwKS50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgc2Vjb25kcyA9IHBhcnNlSW50KCgoZHVyYXRpb24gLyAxMDAwKSAlIDYwKS50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgbWludXRlcyA9IHBhcnNlSW50KCgoZHVyYXRpb24gLyAoMTAwMCAqIDYwKSkgJSA2MCkudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgIGhvdXJzID0gcGFyc2VJbnQoKChkdXJhdGlvbiAvICgxMDAwICogNjAgKiA2MCkpICUgMjQpLnRvU3RyaW5nKCkpO1xyXG5cclxuICAgICAgICB2YXIgc3RfaG91cnMgPSAoaG91cnMgPCAxMCkgPyBcIjBcIiArIGhvdXJzIDogaG91cnM7XHJcbiAgICAgICAgdmFyIHN0X21pbnV0ZXMgPSAobWludXRlcyA8IDEwKSA/IFwiMFwiICsgbWludXRlcyA6IG1pbnV0ZXM7XHJcbiAgICAgICAgdmFyIHN0X3NlY29uZHMgPSAoc2Vjb25kcyA8IDEwKSA/IFwiMFwiICsgc2Vjb25kcyA6IHNlY29uZHM7XHJcblxyXG4gICAgICAgIHJldHVybiBzdF9ob3VycyArIFwiOlwiICsgc3RfbWludXRlcyArIFwiOlwiICsgc3Rfc2Vjb25kcyArIFwiLlwiICsgbWlsbGlzZWNvbmRzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGNoZSBwZXJtZXR0ZSBkaSBzY2FyaWNhcmUgdW4gZmlsZSBpbiBCYXNlNjRcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NERhdGEgQmFzZTY0IGNoZSByYXBwcmVzZW50YSBpbCBmaWxlIGRhIHNjYXJpY2FyZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVuYW1lIE5vbWUgZGVsIGZpbGUgc3VnZ2VyaXRvIGluIGZhc2UgZGkgc2FsdmF0YWdnaW9cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNhdmVGaWxlKGJhc2U2NERhdGE6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIHZhciBzYW1wbGVBcnIgPSB0aGlzLmJhc2U2NFRvQXJyYXlCdWZmZXIoYmFzZTY0RGF0YSk7XHJcbiAgICAgICAgdGhpcy5zYXZlQnl0ZUFycmF5KHNhbXBsZUFyciwgZmlsZW5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJhc2Zvcm1hIHVuIEJhc2U2NCBpbiB1biBBcnJheUJ1ZmZlclxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0RGF0YSBCYXNlNjQgZGEgdHJhc2Zvcm1hcmVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge1VpbnQ4QXJyYXl9IEFycmF5IFVURjhcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBiYXNlNjRUb0FycmF5QnVmZmVyKGJhc2U2NERhdGE6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xyXG4gICAgICAgIHZhciBiaW5hcnlTdHJpbmcgPSB3aW5kb3cuYXRvYihiYXNlNjREYXRhKTtcclxuICAgICAgICB2YXIgYmluYXJ5TGVuID0gYmluYXJ5U3RyaW5nLmxlbmd0aDtcclxuICAgICAgICB2YXIgYnl0ZXMgPSBuZXcgVWludDhBcnJheShiaW5hcnlMZW4pO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmluYXJ5TGVuOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIGFzY2lpID0gYmluYXJ5U3RyaW5nLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgICAgIGJ5dGVzW2ldID0gYXNjaWk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBieXRlcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBjaGUgcGVybWV0dGUgZGkgc2NhcmljYXJlIHVuIGZpbGUgZGF0byB1biBhcnJheSBkaSBCeXRlICgqKlVpbnQ4QXJyYXkqKilcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtVaW50OEFycmF5fSBieXRlIFJhcHByZXNlbnRhemlvbmUgZGVsIGZpbGUgZGEgc2NhcmljYXJlXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZW5hbWUgTm9tZSBkZWwgZmlsZSBzdWdnZXJpdG8gaW4gZmFzZSBkaSBzYWx2YXRhZ2dpb1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNhdmVCeXRlQXJyYXkoYnl0ZTogVWludDhBcnJheSwgZmlsZW5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW2J5dGVdKTtcclxuICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAgICAgdmFyIGZpbGVOYW1lID0gZmlsZW5hbWU7XHJcbiAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgICAgIGxpbmsuY2xpY2soKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFV0aWxpdHkgcGVyIGxvIHN3YXAgZGkgZHVlIGVsZW1lbnRpIGRpIHVuIGFycmF5XHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55W119IGFycmF5IEFycmF5IGRpIGN1aSBpbnZlcnRpcmUgZHVlIGVsZW1lbnRpXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geCBJbmRpY2UgZGVsIHByaW1vIGVsZW1lbnRvXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSBJbmRpY2UgZGVsIHNlY29uZG8gZWxlbWVudG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN3YXAoYXJyYXk6IGFueVtdLCB4OiBudW1iZXIsIHk6IG51bWJlcikge1xyXG4gICAgICAgIHZhciBiID0gYXJyYXlbeF07XHJcbiAgICAgICAgYXJyYXlbeF0gPSBhcnJheVt5XTtcclxuICAgICAgICBhcnJheVt5XSA9IGI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgZGkgdHJhc2NvZGlmaWNhIGRhIHRpcG8gYyMgYSB0aXBvIFR5cGVzY3JpcHRcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtUeXBlQ29kZX0gdHlwZSBUaXBvIGRhIHRyYXNjb2RpZmljYXJlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtcImJvb2xlYW5cIiB8IFwibnVtYmVyXCIgfCBcInN0cmluZ1wiIHwgXCJkYXRlXCJ9IFRpcG8gVHlwZXNjcmlwdCBjb3JyaXNwb25kZW50ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0SnNUeXBlRnJvbVR5cGVDb2RlKHR5cGU6IFR5cGVDb2RlKTogXCJib29sZWFuXCIgfCBcIm51bWJlclwiIHwgXCJzdHJpbmdcIiB8IFwiZGF0ZVwiICB7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgVHlwZUNvZGUuQm9vbGVhbjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcImJvb2xlYW5cIjtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgVHlwZUNvZGUuRGVjaW1hbDpcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5Eb3VibGU6XHJcbiAgICAgICAgICAgIGNhc2UgVHlwZUNvZGUuU2luZ2xlOlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLkludDE2OlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLkludDMyOlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLkludDY0OlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLkJ5dGU6XHJcbiAgICAgICAgICAgIGNhc2UgVHlwZUNvZGUuU0J5dGU6XHJcbiAgICAgICAgICAgIGNhc2UgVHlwZUNvZGUuVUludDE2OlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLlVJbnQzMjpcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5VSW50NjQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJudW1iZXJcIjtcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5DaGFyOlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLlN0cmluZzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcInN0cmluZ1wiO1xyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLkRhdGVUaW1lOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiZGF0ZVwiO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJVbnJlY29nbml6ZWQgaW5wdXQgdHlwZS4gVHlwZWNvZGU6XCIgKyB0eXBlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBcInN0cmluZ1wiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVmZmV0dHVhIGxhIGNsb25hemlvbmUgcHJvZm9uZGEgZGkgdW4gb2dnZXR0byBpbiBtYW5pZXJhIG1vbHRvIHBpw7kgcGVyZm9ybWFudGUgY2hlIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoKSkuXHJcbiAgICAgKiBcclxuICAgICAqIFVzYXJlIHNvbG8gcGVyIG9nZ2V0dGkgcHVyaSBlIHF1YW50b21lbm8gc2VtcGxpY2kgcGVyIGV2aXRhcmUgY29tcGxpY2F6aW9uaSBkZXJpdmFudGkgZGFsbGUgc2VtcGxpZmljYXppb25pIGNoZSBxdWVzdG8gbWV0b2RvIGFzc3VtZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gc291cmNlIE9nZ2V0dG8gZGEgY2xvbmFyZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJuIHthbnl9IENsb25lIGRlbGwnb2dnZXR0byBwYXNzYXRvIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGVlcENsb25lKHNvdXJjZTogYW55KTogYW55IHtcclxuXHJcbiAgICAgICAgLy8gVmFsb3JpIHNlbXBsaWNpXHJcbiAgICAgICAgaWYgKHNvdXJjZSA9PSBudWxsIHx8IHR5cGVvZiBzb3VyY2UgIT09ICdvYmplY3QnKVxyXG4gICAgICAgICAgICByZXR1cm4gc291cmNlO1xyXG5cclxuICAgICAgICAvLyBQc2V1ZG8gU3RydWN0XHJcbiAgICAgICAgc3dpdGNoICh0b1N0cmluZy5jYWxsKHNvdXJjZSkpIHtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ1tvYmplY3QgQm9vbGVhbl0nOlxyXG4gICAgICAgICAgICBjYXNlICdbb2JqZWN0IE51bWJlcl0nOlxyXG4gICAgICAgICAgICBjYXNlICdbb2JqZWN0IFN0cmluZ10nOlxyXG4gICAgICAgICAgICBjYXNlICdbb2JqZWN0IERhdGVdJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgc291cmNlLmNvbnN0cnVjdG9yKHNvdXJjZS52YWx1ZU9mKCkpO1xyXG4gICAgICAgICAgICBkZWZhdWx0OiBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIE9nZ2V0dGkgQ29tcGxlc3NpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVjdXJzaXZlU3RlcChzb3VyY2UsIEFycmF5LmlzQXJyYXkoc291cmNlKSB8fCBzb3VyY2UgaW5zdGFuY2VvZiBBcnJheSA/IFtdIDogT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc291cmNlKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICogU3RlcCByaWNvcnNpdm8gcGVyIGxhIGNsb25hdHVyYSBkZWdsaSBvZ2dldHRpLiBWZWRlcmUgKipkZWVwQ2xvbmUqKlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlY3Vyc2l2ZVN0ZXAoc291cmNlOiBhbnksIGRlc3RpbmF0aW9uOiBhbnkpIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpIHx8IHNvdXJjZSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHNvdXJjZS5sZW5ndGg7IGkgPCBpaTsgaSsrKVxyXG4gICAgICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaCh0aGlzLmRlZXBDbG9uZShzb3VyY2VbaV0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZSAmJiB0eXBlb2Ygc291cmNlLmhhc093blByb3BlcnR5ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBzb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuaGFzT3duUHJvcGVydHkoa2V5KSlcclxuICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbltrZXldID0gdGhpcy5kZWVwQ2xvbmUoc291cmNlW2tleV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZGVzdGluYXRpb247XHJcbiAgICB9XHJcbn0iXX0=
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy51dGlsaXRpZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLnV0aWxpdGllcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLFVBQVU7QUFDVixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRTlDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGNBQWM7SUFFdkI7O09BRUc7SUFDSSxrQkFBa0I7UUFDckIsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBSSxTQUFTO2dCQUN4QyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQzdCLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLGVBQWUsRUFBRyxVQUFVO2dCQUN2RCxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7U0FFL0M7YUFBTSxJQUFVLFFBQVMsQ0FBQyxTQUFTLEVBQUcsTUFBTTtZQUNuQyxRQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxlQUFlLENBQUksVUFBZSxFQUFFLGlCQUF5QixFQUFFLGFBQXFCO1FBQ3ZGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hDLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLGFB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QUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQzNDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25EO2FBQU0sSUFBSSxNQUFNLElBQUksT0FBTyxNQUFNLENBQUMsY0FBYyxLQUFLLFVBQVUsRUFBRTtZQUM5RCxLQUFLLElBQUksR0FBRyxJQUFJLE1BQU0sRUFBRTtnQkFDcEIsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztvQkFDMUIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDdEQ7U0FDSjtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7OzJHQTdPUSxjQUFjOytHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBUeXBlQ29kZSB9IGZyb20gJy4uL21vZGVscy9UeXBlQ29kZSc7XHJcblxyXG4vKipcclxuICogU2VydmljZSBjaGUgZm9ybmlzY2UgbWV0b2RpIGRpIHB1YmJsaWNhIHV0aWxpdMOgXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBVdGlsaXR5U2VydmljZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXNlbGV6aW9uYSBpbCB0ZXN0byBldmVudHVhbG1lbnRlIHNlbGV6aW9uYXRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjbGVhclRleHRTZWxlY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcclxuICAgICAgICAgICAgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5lbXB0eSkgICAvLyBDaHJvbWVcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5lbXB0eSgpO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKSAgLy8gRmlyZWZveFxyXG4gICAgICAgICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpO1xyXG5cclxuICAgICAgICB9IGVsc2UgaWYgKCg8YW55PmRvY3VtZW50KS5zZWxlY3Rpb24pICAvLyBJRT9cclxuICAgICAgICAgICAgKDxhbnk+ZG9jdW1lbnQpLnNlbGVjdGlvbi5lbXB0eSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGFydGVuZG8gZGEgdW5hIGxpc3RhLCBkYXRvIGlsIG5vbWUgZGVsbGEgcHJvcHJpZXTDoCBjaGlhdmUgZSBpbCB2YWxvcmUgZGVsbGEgY2hpYXZlIHNlbGV6aW9uYXRhLCBcclxuICAgICAqIHRyb3ZhIGUgcmVzdGl0dWlzY2UgbCdvZ2dldHRvIGRlc2lkZXJhdG9cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtUW119IHNvdXJjZUxpc3QgTGlzdGEgZGkgb2dnZXR0aSBkZW50cm8gY3VpIGNlcmNhcmVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VJdGVtSWRGaWVsZCBOb21lIGRlbGxhIHByb3ByaWV0w6AgY2hlIHJhcHByZXNlbnRhIGxhIGNoaWF2ZSBkaSB1biBvZ2dldHRvIGRpIHRpcG8gVFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdGVkVmFsdWUgVmFsb3JlIGRpIGNoaWF2ZSBzZWxlemlvbmF0b1xyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7VH0gT2dnZXR0byBsYSBjdWkgcHJvcHJpZXTDoCAqKnNvdXJjZUl0ZW1JZEZpZWxkKiogYXNzdW1lIGlsIHZhbG9yZSAqKnNlbGVjdGVkVmFsdWUqKlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0U2VsZWN0ZWRJdGVtPFQ+KHNvdXJjZUxpc3Q6IFRbXSwgc291cmNlSXRlbUlkRmllbGQ6IHN0cmluZywgc2VsZWN0ZWRWYWx1ZTogc3RyaW5nKTogVCB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2VMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBpdGVtID0gc291cmNlTGlzdFtpXTtcclxuICAgICAgICAgICAgaWYgKGl0ZW1bc291cmNlSXRlbUlkRmllbGRdID09IHNlbGVjdGVkVmFsdWUpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFZmZldHR1YSBpbCByZXNldCBkaSB1biBGb3JtIGRpIEFuZ3VsYXJcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtOZ0Zvcm19IGZvcm0gRm9ybSBkYSByZXNldHRhcmVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBleGNlcHRpb24xIENhbXBvIGRhIG5vbiByZXNldHRhcmVcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBleGNlcHRpb24yIENhbXBvIGRhIG5vbiByZXNldHRhcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsZWFuRm9ybShmb3JtOiBOZ0Zvcm0sIGV4Y2VwdGlvbjE6IHN0cmluZyA9IG51bGwsIGV4Y2VwdGlvbjI6IHN0cmluZyA9IG51bGwpIHtcclxuICAgICAgICBmb3IgKGxldCBuYW1lIGluIGZvcm0uY29udHJvbHMpIHtcclxuICAgICAgICAgICAgaWYgKG5hbWUgJiYgbmFtZSAhPSBleGNlcHRpb24xICYmIG5hbWUgIT0gZXhjZXB0aW9uMSArIFwiX2ludGVybmFsXCIgJiYgbmFtZSAhPSBleGNlcHRpb24yICYmIG5hbWUgIT0gZXhjZXB0aW9uMiArIFwiX2ludGVybmFsXCIpIHtcclxuICAgICAgICAgICAgICAgIGZvcm0uY29udHJvbHNbbmFtZV0ucmVzZXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGZvcm0uY29udHJvbHNbbmFtZV0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICAgICAgICAgIGZvcm0uY29udHJvbHNbbmFtZV0ubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vUmVpbXBvc3RvIGlsIHN1Ym1pdHRlZFxyXG4gICAgICAgIChmb3JtIGFzIHsgc3VibWl0dGVkOiBib29sZWFuIH0pLnN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGNoZSBwZXJtZXR0ZSBkaSBzY2FyaWNhcmUgdW4gZmlsZSBkYXRvIHVuIFVSTCAoR2VuZXJhdG8gZGEgdW5hIGNoaWFtYXRhIGFkICoqd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwqKilcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHVybCBPYmplY3RVUkwgY2hlIHJhcHByZXNlbnRhIGlsIGZpbGUgZGEgc2NhcmljYXJlXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZW5hbWUgTm9tZSBkZWwgZmlsZSBzdWdnZXJpdG8gaW4gZmFzZSBkaSBzYWx2YXRhZ2dpb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmlsZURvd25sb2FkKHVybDogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgICAgIGEuY2xhc3NOYW1lID0gXCJ0YS1kaXNwbGF5LW5vbmVcIjtcclxuICAgICAgICBhLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgICAgIGEuY2xpY2soKTtcclxuICAgICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgcGVyIGxhIGZvcm1hdHRhemlvbmUgZGkgdW4gbnVtZXJvIGRpIG1pbGxpc2Vjb25kaSBpbiB1bmEgc3RyaW5nYSBwacO5IGNvbXByZW5zaWJpbGUgcGVyIHVuIHVtYW5vXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkdXJhdGlvbiBUZW1wbyBlc3ByZXNzbyBpbiBtaWxsaXNlY29uZGlcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gRHVyYXRhIGZvcm1hdHRhdGFcclxuICAgICAqL1xyXG4gICAgcHVibGljIG1zVG9UaW1lKGR1cmF0aW9uOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghZHVyYXRpb24pXHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG5cclxuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gcGFyc2VJbnQoKChkdXJhdGlvbiAlIDEwMDApIC8gMTAwKS50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgc2Vjb25kcyA9IHBhcnNlSW50KCgoZHVyYXRpb24gLyAxMDAwKSAlIDYwKS50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgbWludXRlcyA9IHBhcnNlSW50KCgoZHVyYXRpb24gLyAoMTAwMCAqIDYwKSkgJSA2MCkudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgIGhvdXJzID0gcGFyc2VJbnQoKChkdXJhdGlvbiAvICgxMDAwICogNjAgKiA2MCkpICUgMjQpLnRvU3RyaW5nKCkpO1xyXG5cclxuICAgICAgICB2YXIgc3RfaG91cnMgPSAoaG91cnMgPCAxMCkgPyBcIjBcIiArIGhvdXJzIDogaG91cnM7XHJcbiAgICAgICAgdmFyIHN0X21pbnV0ZXMgPSAobWludXRlcyA8IDEwKSA/IFwiMFwiICsgbWludXRlcyA6IG1pbnV0ZXM7XHJcbiAgICAgICAgdmFyIHN0X3NlY29uZHMgPSAoc2Vjb25kcyA8IDEwKSA/IFwiMFwiICsgc2Vjb25kcyA6IHNlY29uZHM7XHJcblxyXG4gICAgICAgIHJldHVybiBzdF9ob3VycyArIFwiOlwiICsgc3RfbWludXRlcyArIFwiOlwiICsgc3Rfc2Vjb25kcyArIFwiLlwiICsgbWlsbGlzZWNvbmRzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGNoZSBwZXJtZXR0ZSBkaSBzY2FyaWNhcmUgdW4gZmlsZSBpbiBCYXNlNjRcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NERhdGEgQmFzZTY0IGNoZSByYXBwcmVzZW50YSBpbCBmaWxlIGRhIHNjYXJpY2FyZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVuYW1lIE5vbWUgZGVsIGZpbGUgc3VnZ2VyaXRvIGluIGZhc2UgZGkgc2FsdmF0YWdnaW9cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNhdmVGaWxlKGJhc2U2NERhdGE6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIHZhciBzYW1wbGVBcnIgPSB0aGlzLmJhc2U2NFRvQXJyYXlCdWZmZXIoYmFzZTY0RGF0YSk7XHJcbiAgICAgICAgdGhpcy5zYXZlQnl0ZUFycmF5KHNhbXBsZUFyciwgZmlsZW5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJhc2Zvcm1hIHVuIEJhc2U2NCBpbiB1biBBcnJheUJ1ZmZlclxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0RGF0YSBCYXNlNjQgZGEgdHJhc2Zvcm1hcmVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge1VpbnQ4QXJyYXl9IEFycmF5IFVURjhcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBiYXNlNjRUb0FycmF5QnVmZmVyKGJhc2U2NERhdGE6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xyXG4gICAgICAgIHZhciBiaW5hcnlTdHJpbmcgPSB3aW5kb3cuYXRvYihiYXNlNjREYXRhKTtcclxuICAgICAgICB2YXIgYmluYXJ5TGVuID0gYmluYXJ5U3RyaW5nLmxlbmd0aDtcclxuICAgICAgICB2YXIgYnl0ZXMgPSBuZXcgVWludDhBcnJheShiaW5hcnlMZW4pO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmluYXJ5TGVuOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIGFzY2lpID0gYmluYXJ5U3RyaW5nLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgICAgIGJ5dGVzW2ldID0gYXNjaWk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBieXRlcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBjaGUgcGVybWV0dGUgZGkgc2NhcmljYXJlIHVuIGZpbGUgZGF0byB1biBhcnJheSBkaSBCeXRlICgqKlVpbnQ4QXJyYXkqKilcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtVaW50OEFycmF5fSBieXRlIFJhcHByZXNlbnRhemlvbmUgZGVsIGZpbGUgZGEgc2NhcmljYXJlXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZW5hbWUgTm9tZSBkZWwgZmlsZSBzdWdnZXJpdG8gaW4gZmFzZSBkaSBzYWx2YXRhZ2dpb1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNhdmVCeXRlQXJyYXkoYnl0ZTogVWludDhBcnJheSwgZmlsZW5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoW2J5dGVdKTtcclxuICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICAgICAgbGluay5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAgICAgdmFyIGZpbGVOYW1lID0gZmlsZW5hbWU7XHJcbiAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgICAgIGxpbmsuY2xpY2soKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFV0aWxpdHkgcGVyIGxvIHN3YXAgZGkgZHVlIGVsZW1lbnRpIGRpIHVuIGFycmF5XHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55W119IGFycmF5IEFycmF5IGRpIGN1aSBpbnZlcnRpcmUgZHVlIGVsZW1lbnRpXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geCBJbmRpY2UgZGVsIHByaW1vIGVsZW1lbnRvXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSBJbmRpY2UgZGVsIHNlY29uZG8gZWxlbWVudG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN3YXAoYXJyYXk6IGFueVtdLCB4OiBudW1iZXIsIHk6IG51bWJlcikge1xyXG4gICAgICAgIHZhciBiID0gYXJyYXlbeF07XHJcbiAgICAgICAgYXJyYXlbeF0gPSBhcnJheVt5XTtcclxuICAgICAgICBhcnJheVt5XSA9IGI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgZGkgdHJhc2NvZGlmaWNhIGRhIHRpcG8gYyMgYSB0aXBvIFR5cGVzY3JpcHRcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtUeXBlQ29kZX0gdHlwZSBUaXBvIGRhIHRyYXNjb2RpZmljYXJlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtcImJvb2xlYW5cIiB8IFwibnVtYmVyXCIgfCBcInN0cmluZ1wiIHwgXCJkYXRlXCJ9IFRpcG8gVHlwZXNjcmlwdCBjb3JyaXNwb25kZW50ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0SnNUeXBlRnJvbVR5cGVDb2RlKHR5cGU6IFR5cGVDb2RlKTogXCJib29sZWFuXCIgfCBcIm51bWJlclwiIHwgXCJzdHJpbmdcIiB8IFwiZGF0ZVwiICB7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgVHlwZUNvZGUuQm9vbGVhbjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcImJvb2xlYW5cIjtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgVHlwZUNvZGUuRGVjaW1hbDpcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5Eb3VibGU6XHJcbiAgICAgICAgICAgIGNhc2UgVHlwZUNvZGUuU2luZ2xlOlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLkludDE2OlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLkludDMyOlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLkludDY0OlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLkJ5dGU6XHJcbiAgICAgICAgICAgIGNhc2UgVHlwZUNvZGUuU0J5dGU6XHJcbiAgICAgICAgICAgIGNhc2UgVHlwZUNvZGUuVUludDE2OlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLlVJbnQzMjpcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5VSW50NjQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJudW1iZXJcIjtcclxuICAgICAgICAgICAgY2FzZSBUeXBlQ29kZS5DaGFyOlxyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLlN0cmluZzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcInN0cmluZ1wiO1xyXG4gICAgICAgICAgICBjYXNlIFR5cGVDb2RlLkRhdGVUaW1lOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiZGF0ZVwiO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJVbnJlY29nbml6ZWQgaW5wdXQgdHlwZS4gVHlwZWNvZGU6XCIgKyB0eXBlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBcInN0cmluZ1wiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVmZmV0dHVhIGxhIGNsb25hemlvbmUgcHJvZm9uZGEgZGkgdW4gb2dnZXR0byBpbiBtYW5pZXJhIG1vbHRvIHBpw7kgcGVyZm9ybWFudGUgY2hlIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoKSkuXHJcbiAgICAgKiBcclxuICAgICAqIFVzYXJlIHNvbG8gcGVyIG9nZ2V0dGkgcHVyaSBlIHF1YW50b21lbm8gc2VtcGxpY2kgcGVyIGV2aXRhcmUgY29tcGxpY2F6aW9uaSBkZXJpdmFudGkgZGFsbGUgc2VtcGxpZmljYXppb25pIGNoZSBxdWVzdG8gbWV0b2RvIGFzc3VtZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gc291cmNlIE9nZ2V0dG8gZGEgY2xvbmFyZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJuIHthbnl9IENsb25lIGRlbGwnb2dnZXR0byBwYXNzYXRvIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGVlcENsb25lKHNvdXJjZTogYW55KTogYW55IHtcclxuXHJcbiAgICAgICAgLy8gVmFsb3JpIHNlbXBsaWNpXHJcbiAgICAgICAgaWYgKHNvdXJjZSA9PSBudWxsIHx8IHR5cGVvZiBzb3VyY2UgIT09ICdvYmplY3QnKVxyXG4gICAgICAgICAgICByZXR1cm4gc291cmNlO1xyXG5cclxuICAgICAgICAvLyBQc2V1ZG8gU3RydWN0XHJcbiAgICAgICAgc3dpdGNoICh0b1N0cmluZy5jYWxsKHNvdXJjZSkpIHtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ1tvYmplY3QgQm9vbGVhbl0nOlxyXG4gICAgICAgICAgICBjYXNlICdbb2JqZWN0IE51bWJlcl0nOlxyXG4gICAgICAgICAgICBjYXNlICdbb2JqZWN0IFN0cmluZ10nOlxyXG4gICAgICAgICAgICBjYXNlICdbb2JqZWN0IERhdGVdJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgc291cmNlLmNvbnN0cnVjdG9yKHNvdXJjZS52YWx1ZU9mKCkpO1xyXG4gICAgICAgICAgICBkZWZhdWx0OiBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIE9nZ2V0dGkgQ29tcGxlc3NpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVjdXJzaXZlU3RlcChzb3VyY2UsIEFycmF5LmlzQXJyYXkoc291cmNlKSB8fCBzb3VyY2UgaW5zdGFuY2VvZiBBcnJheSA/IFtdIDogT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc291cmNlKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICogU3RlcCByaWNvcnNpdm8gcGVyIGxhIGNsb25hdHVyYSBkZWdsaSBvZ2dldHRpLiBWZWRlcmUgKipkZWVwQ2xvbmUqKlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlY3Vyc2l2ZVN0ZXAoc291cmNlOiBhbnksIGRlc3RpbmF0aW9uOiBhbnkpIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpIHx8IHNvdXJjZSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHNvdXJjZS5sZW5ndGg7IGkgPCBpaTsgaSsrKVxyXG4gICAgICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaCh0aGlzLmRlZXBDbG9uZShzb3VyY2VbaV0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZSAmJiB0eXBlb2Ygc291cmNlLmhhc093blByb3BlcnR5ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBzb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuaGFzT3duUHJvcGVydHkoa2V5KSlcclxuICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbltrZXldID0gdGhpcy5kZWVwQ2xvbmUoc291cmNlW2tleV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZGVzdGluYXRpb247XHJcbiAgICB9XHJcbn0iXX0=