@sumaris-net/ngx-components 0.27.8 → 0.27.9

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,7 +222,6 @@ export class SharedFormGroupValidators {
222
222
  const endField = group.get(endDateField);
223
223
  const endDate = fromDateISOString(endField.value);
224
224
  if (isNotNil(startDate) && isNotNil(endDate) && Math.abs(startDate.diff(endDate, durationUnit)) > maxDuration) {
225
- console.log('TODO error !');
226
225
  // Update end field
227
226
  endField.markAsTouched({ onlySelf: true });
228
227
  endField.markAsPending();
@@ -407,4 +406,4 @@ export class SharedFormArrayValidators {
407
406
  };
408
407
  }
409
408
  }
410
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3ZhbGlkYXRvci92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQW9FLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkgsT0FBTyxLQUFLLGNBQWMsTUFBTSxRQUFRLENBQUM7QUFFekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRCxPQUFPLEVBQTBCLFlBQVksRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU3QyxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUM7QUFFOUIsV0FBVztBQUNYLE1BQU0sT0FBTyxnQkFBZ0I7SUF1QjNCLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBb0I7UUFDbkMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUM1QixNQUFNLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDaEcsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUU7WUFDbkQsT0FBTyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQztTQUMxQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FB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QyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNqRixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCAqIGFzIG1vbWVudEltcG9ydGVkIGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBNb21lbnQsIHVuaXRPZlRpbWUgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgREFURV9JU09fUEFUVEVSTiwgUFVCS0VZX1JFR0VYUCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjaGFuZ2VDYXNlVG9VbmRlcnNjb3JlLCBpc0VtcHR5QXJyYXksIGlzTmlsT3JCbGFuaywgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuaywgaXNOb3ROaWxPck5hTiwgdG9Cb29sZWFuIH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7IGZyb21EYXRlSVNPU3RyaW5nIH0gZnJvbSAnLi4vZGF0ZXMnO1xuXG5jb25zdCBtb21lbnQgPSBtb21lbnRJbXBvcnRlZDtcblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBTaGFyZWRWYWxpZGF0b3JzIHtcblxuICBzdGF0aWMgcmVhZG9ubHkgSTE4Tl9FUlJPUl9LRVlTID0ge1xuICAgIHJlcXVpcmVkOiAnRVJST1IuRklFTERfUkVRVUlSRUQnLFxuICAgIG1pbjogJ0VSUk9SLkZJRUxEX01JTicsXG4gICAgbWF4OiAnRVJST1IuRklFTERfTUFYJyxcbiAgICBtaW5sZW5ndGg6J0VSUk9SLkZJRUxEX01JTl9MRU5HVEgnLFxuICAgIG1heGxlbmd0aDonRVJST1IuRklFTERfTUFYX0xFTkdUSCcsXG4gICAgcHVia2V5OiAnRVJST1IuRklFTERfTk9UX1ZBTElEX1BVQktFWScsXG4gICAgdmFsaWREYXRlOiAnRVJST1IuRklFTERfTk9UX1ZBTElEX0RBVEUnLFxuICAgIGRhdGVJc0FmdGVyOiAnRVJST1IuRklFTERfTk9UX1ZBTElEX0RBVEVfQUZURVInLFxuICAgIGRhdGVSYW5nZTogJ0VSUk9SLkZJRUxEX05PVF9WQUxJRF9EQVRFX1JBTkdFJyxcbiAgICBkYXRlTWluRHVyYXRpb246ICdFUlJPUi5GSUVMRF9OT1RfVkFMSURfREFURV9NSU5fRFVSQVRJT04nLFxuICAgIGRhdGVNYXhEdXJhdGlvbjogJ0VSUk9SLkZJRUxEX05PVF9WQUxJRF9EQVRFX01BWF9EVVJBVElPTicsXG4gICAgbWF4RGVjaW1hbHM6ICdFUlJPUi5GSUVMRF9NQVhJTVVNX0RFQ0lNQUxTJyxcbiAgICBpbnRlZ2VyOiAnRVJST1IuRklFTERfTk9UX1ZBTElEX0lOVEVHRVInLFxuICAgIGVtYWlsOiAnRVJST1IuRklFTERfTk9UX1ZBTElEX0VNQUlMJyxcbiAgICBsYXRpdHVkZTogJ0VSUk9SLkZJRUxEX05PVF9WQUxJRF9MQVRJVFVERScsXG4gICAgbG9uZ2l0dWRlOiAnRVJST1IuRklFTERfTk9UX1ZBTElEX0xPTkdJVFVERScsXG4gICAgcGF0dGVybjogJ0VSUk9SLkZJRUxEX05PVF9WQUxJRF9QQVRURVJOJyxcbiAgICB1bmlxdWU6ICdFUlJPUi5GSUVMRF9OT1RfVU5JUVVFJ1xuICB9XG5cbiAgc3RhdGljIHZhbGlkRGF0ZShjb250cm9sOiBGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgY29uc3QgZGF0ZSA9ICF2YWx1ZSB8fCBtb21lbnQuaXNNb21lbnQodmFsdWUpID8gdmFsdWUgOiBtb21lbnQoY29udHJvbC52YWx1ZSwgREFURV9JU09fUEFUVEVSTik7XG4gICAgaWYgKGRhdGUgJiYgKCFkYXRlLmlzVmFsaWQoKSB8fCBkYXRlLnllYXIoKSA8IDE5NzApKSB7XG4gICAgICByZXR1cm4ge3ZhbGlkRGF0ZTogdHJ1ZX07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIGxhdGl0dWRlKGNvbnRyb2w6IEZvcm1Db250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcbiAgICBpZiAoaXNOb3ROaWwodmFsdWUpICYmICh2YWx1ZSA8IC05MCB8fCB2YWx1ZSA+IDkwKSkge1xuICAgICAgcmV0dXJuIHtsYXRpdHVkZTogdHJ1ZX07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIGxvbmdpdHVkZShjb250cm9sOiBGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKGlzTm90TmlsKHZhbHVlKSAmJiAodmFsdWUgPCAtMTgwIHx8IHZhbHVlID4gMTgwKSkge1xuICAgICAgcmV0dXJuIHtsb25naXR1ZGU6IHRydWV9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBvYmplY3QoY29udHJvbDogRm9ybUNvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4ge29iamVjdDogdHJ1ZX07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIGVudGl0eShjb250cm9sOiBGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKHZhbHVlICYmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IHZhbHVlLmlkID09PSB1bmRlZmluZWQgfHwgdmFsdWUuaWQgPT09IG51bGwpKSB7XG4gICAgICByZXR1cm4ge2VudGl0eTogdHJ1ZX07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIGVtcHR5KGNvbnRyb2w6IEZvcm1Db250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmIChpc05vdE5pbE9yQmxhbmsoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7ZW1wdHk6IHRydWV9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBwdWJrZXkoY29udHJvbDogRm9ybUNvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGlmICh2YWx1ZSAmJiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCAhUFVCS0VZX1JFR0VYUC50ZXN0KHZhbHVlKSkpIHtcbiAgICAgIHJldHVybiB7cHVia2V5OiB0cnVlfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzdGF0aWMgaW50ZWdlcihjb250cm9sOiBGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAoaXNOaWxPckJsYW5rKGNvbnRyb2wudmFsdWUpKVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZUZsb2F0KGNvbnRyb2wudmFsdWUpO1xuICAgIGlmIChpc05hTih2YWx1ZSkgfHwgKHZhbHVlIHwgMCkgIT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4ge2ludGVnZXI6IHRydWV9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBkb3VibGUob3B0cz86IHsgbWF4RGVjaW1hbHM/OiBudW1iZXIgfSk6IFZhbGlkYXRvckZuIHtcbiAgICBsZXQgcmVnZXhwU3RyO1xuICAgIGlmIChvcHRzICYmIGlzTm90TmlsKG9wdHMubWF4RGVjaW1hbHMpKSB7XG4gICAgICBpZiAob3B0cy5tYXhEZWNpbWFscyA8IDApIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBtYXhEZWNpbWFscyB2YWx1ZTogJHtvcHRzLm1heERlY2ltYWxzfWApO1xuICAgICAgcmVnZXhwU3RyID0gb3B0cy5tYXhEZWNpbWFscyA+IDEgPyBgXlstXT9bMC05XSsoWy4sXVswLTldezEsJHtvcHRzLm1heERlY2ltYWxzfX0pPyRgIDogJ15bLV0/WzAtOV0rKFsuLF1bMC05XSk/JCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2V4cFN0ciA9ICdeWy1dP1swLTldKyhbLixdWzAtOV0qKT8kJztcbiAgICB9XG5cbiAgICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKHJlZ2V4cFN0cik7XG4gICAgcmV0dXJuIChjb250cm9sOiBGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgICBpZiAoTnVtYmVyLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiV0FSTjogR2V0dGluZyBhIE5hTiB2YWx1ZSAhXCIpO1xuICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoaXNOb3ROaWwodmFsdWUpICYmIHZhbHVlICE9PSAnJyAmJiAhcmVnZXhwLnRlc3QodmFsdWUgYXMgc3RyaW5nKSkge1xuICAgICAgICByZXR1cm4ge21heERlY2ltYWxzOiB0cnVlfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZGF0ZUlzQWZ0ZXIocHJldmlvdXNWYWx1ZTogTW9tZW50LCBlcnJvclBhcmFtOiBzdHJpbmcsIGdyYW51bGFyaXR5PzogdW5pdE9mVGltZS5TdGFydE9mKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBmcm9tRGF0ZUlTT1N0cmluZyhjb250cm9sLnZhbHVlKTtcbiAgICAgIGlmIChpc05vdE5pbCh2YWx1ZSkgJiYgaXNOb3ROaWwocHJldmlvdXNWYWx1ZSkgJiYgdmFsdWUuaXNTYW1lT3JCZWZvcmUocHJldmlvdXNWYWx1ZSwgZ3JhbnVsYXJpdHkpKSB7XG4gICAgICAgIC8vIFJldHVybiB0aGUgZXJyb3JcbiAgICAgICAgcmV0dXJuIHtkYXRlSXNBZnRlcjoge21pbkRhdGU6IGVycm9yUGFyYW19fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZGF0ZVJhbmdlRW5kKHN0YXJ0RGF0ZUZpZWxkTmFtZTogc3RyaW5nLCBtc2c/OiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgY29uc3QgZXJyb3JDb2RlID0gbXNnID8gJ21zZyc6ICdkYXRlUmFuZ2UnO1xuICAgIGNvbnN0IGVycm9yID0gbXNnID8ge21zZ30gOiB7ZGF0ZVJhbmdlOiB0cnVlfTtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0Q29udHJvbCA9IGNvbnRyb2wucGFyZW50Py5nZXQoc3RhcnREYXRlRmllbGROYW1lKTtcbiAgICAgIGlmICghc3RhcnRDb250cm9sKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgQ2Fubm90IGZpbmQgYnJvdGhlciBjb250cm9sICcke3N0YXJ0RGF0ZUZpZWxkTmFtZX0nIGluIHRoZSBwYXJlbnQgZm9ybWApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IGZyb21EYXRlSVNPU3RyaW5nKHN0YXJ0Q29udHJvbC52YWx1ZSk7XG4gICAgICBjb25zdCBlbmREYXRlID0gZnJvbURhdGVJU09TdHJpbmcoY29udHJvbC52YWx1ZSk7XG4gICAgICAvLyBFcnJvciBpZiB2YWx1ZSA8PSBiZWZvcmVEYXRlXG4gICAgICBpZiAoaXNOb3ROaWwoZW5kRGF0ZSkgJiYgaXNOb3ROaWwoc3RhcnREYXRlKSAmJiBlbmREYXRlLmlzU2FtZU9yQmVmb3JlKHN0YXJ0RGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgfVxuICAgICAgLy8gT0s6IGNsZWFyIGV4aXN0aW5nIGVycm9yc1xuICAgICAgU2hhcmVkVmFsaWRhdG9ycy5jbGVhckVycm9yKGNvbnRyb2wsIGVycm9yQ29kZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGRhdGVSYW5nZVN0YXJ0KGVuZERhdGVGaWVsZE5hbWU6IHN0cmluZywgbXNnPzogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIGNvbnN0IGVycm9yQ29kZSA9IG1zZyA/ICdtc2cnOiAnZGF0ZVJhbmdlJztcbiAgICBjb25zdCBlcnJvciA9IG1zZyA/IHttc2d9IDoge2RhdGVSYW5nZTogdHJ1ZX07XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCBlbmREYXRlQ29udHJvbCA9IGNvbnRyb2wucGFyZW50Py5nZXQoZW5kRGF0ZUZpZWxkTmFtZSk7XG4gICAgICBpZiAoIWVuZERhdGVDb250cm9sKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgQ2Fubm90IGZpbmQgY29udHJvbCAnJHtlbmREYXRlRmllbGROYW1lfScgaW4gdGhlIHBhcmVudCBmb3JtYCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QgZW5kRGF0ZSA9IGZyb21EYXRlSVNPU3RyaW5nKGVuZERhdGVDb250cm9sLnZhbHVlKTtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IGZyb21EYXRlSVNPU3RyaW5nKGNvbnRyb2wudmFsdWUpO1xuICAgICAgLy8gRXJyb3IgaWYgdmFsdWUgPD0gYmVmb3JlRGF0ZVxuICAgICAgaWYgKGlzTm90TmlsKHN0YXJ0RGF0ZSkgJiYgaXNOb3ROaWwoZW5kRGF0ZSkgJiYgc3RhcnREYXRlLmlzU2FtZU9yQWZ0ZXIoZW5kRGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgfVxuICAgICAgLy8gT0s6IGNsZWFyIGV4aXN0aW5nIGVycm9yc1xuICAgICAgU2hhcmVkVmFsaWRhdG9ycy5jbGVhckVycm9yKGNvbnRyb2wsIGVycm9yQ29kZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGNvcHlQYXJlbnRFcnJvcnMoZXJyb3JOYW1lcz86IHN0cmluZ1tdKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgLy8gU2tpcCBpZiBjb250cm9sIGFscmVhZHkgaGFzIHNvbWUgZXJyb3JzXG4gICAgICBpZiAoY29udHJvbC5lcnJvcnMpIHJldHVybiBudWxsO1xuXG4gICAgICBjb25zdCBlcnJvcnMgPSBjb250cm9sLnBhcmVudCAmJiBjb250cm9sLnBhcmVudC5lcnJvcnM7XG5cbiAgICAgIC8vIE5vIGVycm9ycywgb3IgY29weSBhbGwgZXJyb3JzXG4gICAgICBpZiAoIWVycm9ycyB8fCBpc0VtcHR5QXJyYXkoZXJyb3JOYW1lcykpIHJldHVybiBlcnJvcnM7XG5cbiAgICAgIC8vIENvcHkgb25seSBleHBlY3RlZCBlcnJvcnNcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhlcnJvcnMpLnJlZHVjZSgocmVzLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKGVycm9yTmFtZXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgIHJlc1trZXldID0gZXJyb3JzW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0sIHt9KTtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGNsZWFyRXJyb3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBlcnJvckNvZGU6IHN0cmluZykge1xuICAgIGlmIChjb250cm9sLmhhc0Vycm9yKGVycm9yQ29kZSkpIHtcbiAgICAgIGNvbnN0IGVycm9ycyA9IGNvbnRyb2wuZXJyb3JzO1xuICAgICAgaWYgKGVycm9ycyAmJiBlcnJvcnNbZXJyb3JDb2RlXSkge1xuICAgICAgICAvLyBPbmx5IG9uZSBlcnJvcjogcmVzZXQgZXJyb3JzXG4gICAgICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlcnJvcnMpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE90aGVyIGVycm9ycyBleGlzdHM6IGp1c3QgcmVtb3ZlIHRoaXMgZXJyb3JcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIGVycm9yc1tlcnJvckNvZGVdO1xuICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKGVycm9ycyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG59XG5cbi8vIEBkeW5hbWljXG5leHBvcnQgY2xhc3MgU2hhcmVkRm9ybUdyb3VwVmFsaWRhdG9ycyB7XG5cbiAgc3RhdGljIGRhdGVSYW5nZShzdGFydERhdGVGaWVsZDogc3RyaW5nLCBlbmREYXRlRmllbGQ6IHN0cmluZywgbXNnPzogc3RyaW5nICk6IFZhbGlkYXRvckZuIHtcbiAgICBjb25zdCBlcnJvckNvZGUgPSBpc05vdE5pbE9yQmxhbmsobXNnKSA/ICdtc2cnIDogJ2RhdGVSYW5nZSc7XG4gICAgY29uc3QgcmFuZ2VFcnJvciA9IG1zZyA/IHttc2d9IDoge2RhdGVSYW5nZTogdHJ1ZX07XG4gICAgcmV0dXJuIChncm91cDogRm9ybUdyb3VwKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3Qgc3RhcnREYXRlID0gZnJvbURhdGVJU09TdHJpbmcoZ3JvdXAuZ2V0KHN0YXJ0RGF0ZUZpZWxkKS52YWx1ZSk7XG4gICAgICBjb25zdCBlbmRGaWVsZCA9IGdyb3VwLmdldChlbmREYXRlRmllbGQpO1xuICAgICAgY29uc3QgZW5kRGF0ZSA9IGZyb21EYXRlSVNPU3RyaW5nKGVuZEZpZWxkLnZhbHVlKTtcbiAgICAgIGlmIChpc05vdE5pbChzdGFydERhdGUpICYmIGlzTm90TmlsKGVuZERhdGUpICYmIHN0YXJ0RGF0ZS5pc0FmdGVyKGVuZERhdGUpKSB7XG4gICAgICAgIC8vIFVwZGF0ZSBlbmQgZmllbGRcbiAgICAgICAgZW5kRmllbGQubWFya0FzUGVuZGluZygpO1xuICAgICAgICBlbmRGaWVsZC5zZXRFcnJvcnMoe1xuICAgICAgICAgIC4uLmVuZEZpZWxkLmVycm9ycyxcbiAgICAgICAgICAuLi5yYW5nZUVycm9yXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBSZXR1cm4gdGhlIGVycm9yIChzaG91bGQgYmUgYXBwbHkgdG8gdGhlIHBhcmVudCBmb3JtKVxuICAgICAgICByZXR1cm4gcmFuZ2VFcnJvcjtcbiAgICAgIH1cbiAgICAgIC8vIE9LOiByZW1vdmUgdGhlIGV4aXN0aW5nIG9uIHRoZSBlbmQgZmllbGRcbiAgICAgIFNoYXJlZFZhbGlkYXRvcnMuY2xlYXJFcnJvcihlbmRGaWVsZCwgZXJyb3JDb2RlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZGF0ZU1heER1cmF0aW9uKHN0YXJ0RGF0ZUZpZWxkOiBzdHJpbmcsIGVuZERhdGVGaWVsZDogc3RyaW5nLCBtYXhEdXJhdGlvbjogbnVtYmVyLCBkdXJhdGlvblVuaXQ/OiBtb21lbnQudW5pdE9mVGltZS5EaWZmKTogVmFsaWRhdG9yRm4ge1xuICAgIGNvbnN0IG1heER1cmF0aW9uRXJyb3IgPSB7ZGF0ZU1heER1cmF0aW9uOiB0cnVlfTtcbiAgICByZXR1cm4gKGdyb3VwOiBGb3JtR3JvdXApOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCBzdGFydERhdGUgPSBmcm9tRGF0ZUlTT1N0cmluZyhncm91cC5nZXQoc3RhcnREYXRlRmllbGQpLnZhbHVlKTtcbiAgICAgIGNvbnN0IGVuZEZpZWxkID0gZ3JvdXAuZ2V0KGVuZERhdGVGaWVsZCk7XG4gICAgICBjb25zdCBlbmREYXRlID0gZnJvbURhdGVJU09TdHJpbmcoZW5kRmllbGQudmFsdWUpO1xuICAgICAgaWYgKGlzTm90TmlsKHN0YXJ0RGF0ZSkgJiYgaXNOb3ROaWwoZW5kRGF0ZSkgJiYgTWF0aC5hYnMoc3RhcnREYXRlLmRpZmYoZW5kRGF0ZSwgZHVyYXRpb25Vbml0KSkgPiBtYXhEdXJhdGlvbikge1xuICAgICAgICBjb25zb2xlLmxvZygnVE9ETyBlcnJvciAhJyk7XG4gICAgICAgIC8vIFVwZGF0ZSBlbmQgZmllbGRcbiAgICAgICAgZW5kRmllbGQubWFya0FzVG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcbiAgICAgICAgZW5kRmllbGQubWFya0FzUGVuZGluZygpO1xuICAgICAgICBlbmRGaWVsZC5zZXRFcnJvcnMoe1xuICAgICAgICAgIC4uLmVuZEZpZWxkLmVycm9ycyxcbiAgICAgICAgICAuLi5tYXhEdXJhdGlvbkVycm9yXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBSZXR1cm4gdGhlIGVycm9yIChzaG91bGQgYmUgYXBwbHkgdG8gdGhlIHBhcmVudCBmb3JtKVxuICAgICAgICByZXR1cm4gbWF4RHVyYXRpb25FcnJvcjtcbiAgICAgIH1cbiAgICAgIC8vIE9LOiByZW1vdmUgdGhlIGV4aXN0aW5nIG9uIHRoZSBlbmQgZmllbGRcbiAgICAgIFNoYXJlZFZhbGlkYXRvcnMuY2xlYXJFcnJvcihlbmRGaWVsZCwgJ2RhdGVNYXhEdXJhdGlvbicpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBkYXRlTWluRHVyYXRpb24oc3RhcnREYXRlRmllbGQ6IHN0cmluZywgZW5kRGF0ZUZpZWxkOiBzdHJpbmcsIG1pbkR1cmF0aW9uOiBudW1iZXIsIGR1cmF0aW9uVW5pdD86IG1vbWVudC51bml0T2ZUaW1lLkRpZmYpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChncm91cDogRm9ybUdyb3VwKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgZW5kRmllbGQgPSBncm91cC5nZXQoZW5kRGF0ZUZpZWxkKTtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IGZyb21EYXRlSVNPU3RyaW5nKGdyb3VwLmdldChzdGFydERhdGVGaWVsZCkudmFsdWUpO1xuICAgICAgY29uc3QgZW5kRGF0ZSA9IGZyb21EYXRlSVNPU3RyaW5nKGVuZEZpZWxkLnZhbHVlKTtcbiAgICAgIGlmIChpc05vdE5pbChzdGFydERhdGUpICYmIGlzTm90TmlsKGVuZERhdGUpICYmIE1hdGguYWJzKHN0YXJ0RGF0ZS5kaWZmKGVuZERhdGUsIGR1cmF0aW9uVW5pdCkpIDwgbWluRHVyYXRpb24pIHtcbiAgICAgICAgLy8gVXBkYXRlIGVuZCBmaWVsZFxuICAgICAgICBjb25zdCBlbmRGaWVsZEVycm9yczogVmFsaWRhdGlvbkVycm9ycyA9IGVuZEZpZWxkLmVycm9ycyB8fCB7fTtcbiAgICAgICAgZW5kRmllbGRFcnJvcnNbJ2RhdGVNaW5EdXJhdGlvbiddID0gdHJ1ZTtcbiAgICAgICAgZW5kRmllbGQuc2V0RXJyb3JzKGVuZEZpZWxkRXJyb3JzKTtcbiAgICAgICAgZW5kRmllbGQubWFya0FzVG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcbiAgICAgICAgLy8gUmV0dXJuIHRoZSBlcnJvciAoc2hvdWxkIGJlIGFwcGx5IHRvIHRoZSBwYXJlbnQgZm9ybSlcbiAgICAgICAgcmV0dXJuIHtkYXRlTWluRHVyYXRpb246IHRydWV9O1xuICAgICAgfVxuICAgICAgLy8gT0s6IHJlbW92ZSB0aGUgZXhpc3Rpbmcgb24gdGhlIGVuZCBmaWVsZFxuICAgICAgZWxzZSB7XG4gICAgICAgIFNoYXJlZFZhbGlkYXRvcnMuY2xlYXJFcnJvcihlbmRGaWVsZCwgJ2RhdGVNaW5EdXJhdGlvbicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyByZXF1aXJlZElmKGZpZWxkTmFtZTogc3RyaW5nLCBhbm90aGVyRmllbGRUb0NoZWNrOiBzdHJpbmcgfCBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChncm91cDogRm9ybUdyb3VwKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IGdyb3VwLmdldChmaWVsZE5hbWUpO1xuICAgICAgY29uc3QgYW5vdGhlckNvbnRyb2wgPSAoYW5vdGhlckZpZWxkVG9DaGVjayBpbnN0YW5jZW9mIEFic3RyYWN0Q29udHJvbCkgPyBhbm90aGVyRmllbGRUb0NoZWNrIDogZ3JvdXAuZ2V0KGFub3RoZXJGaWVsZFRvQ2hlY2spO1xuICAgICAgaWYgKCFhbm90aGVyQ29udHJvbCkgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBmaWVsZCB0byBjaGVjayEnKTtcbiAgICAgIGlmIChpc05pbE9yQmxhbmsoY29udHJvbC52YWx1ZSkgJiYgaXNOb3ROaWxPckJsYW5rKGFub3RoZXJDb250cm9sLnZhbHVlKSkge1xuICAgICAgICBjb25zdCBlcnJvciA9IHtyZXF1aXJlZDogdHJ1ZX07XG4gICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKGVycm9yKTtcbiAgICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICB9XG4gICAgICBTaGFyZWRWYWxpZGF0b3JzLmNsZWFyRXJyb3IoY29udHJvbCwgJ3JlcXVpcmVkJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIHJlcXVpcmVkSWZUcnVlKGZpZWxkTmFtZTogc3RyaW5nLCBhbm90aGVyRmllbGRUb0NoZWNrOiBzdHJpbmcgfCBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChncm91cDogRm9ybUdyb3VwKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IGdyb3VwLmdldChmaWVsZE5hbWUpO1xuICAgICAgY29uc3QgYW5vdGhlckNvbnRyb2wgPSAoYW5vdGhlckZpZWxkVG9DaGVjayBpbnN0YW5jZW9mIEFic3RyYWN0Q29udHJvbCkgPyBhbm90aGVyRmllbGRUb0NoZWNrIDogZ3JvdXAuZ2V0KGFub3RoZXJGaWVsZFRvQ2hlY2spO1xuICAgICAgaWYgKCFhbm90aGVyQ29udHJvbCkgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBmaWVsZCB0byBjaGVjayEnKTtcbiAgICAgIGlmIChpc05pbE9yQmxhbmsoY29udHJvbC52YWx1ZSkgJiYgdG9Cb29sZWFuKGFub3RoZXJDb250cm9sLnZhbHVlLCBmYWxzZSkpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSB7cmVxdWlyZWQ6IHRydWV9O1xuICAgICAgICBjb250cm9sLnNldEVycm9ycyhlcnJvcik7XG4gICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgfVxuICAgICAgU2hhcmVkVmFsaWRhdG9ycy5jbGVhckVycm9yKGNvbnRyb2wsICdyZXF1aXJlZCcpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyByZXF1aXJlZElmRW1wdHkoZmllbGROYW1lOiBzdHJpbmcsIGFub3RoZXJGaWVsZFRvQ2hlY2s6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGdyb3VwOiBGb3JtR3JvdXApOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gZ3JvdXAuZ2V0KGZpZWxkTmFtZSk7XG4gICAgICBpZiAoaXNOaWxPckJsYW5rKGNvbnRyb2wudmFsdWUpICYmIGlzTmlsT3JCbGFuayhncm91cC5nZXQoYW5vdGhlckZpZWxkVG9DaGVjaykudmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0ge3JlcXVpcmVkOiB0cnVlfTtcbiAgICAgICAgY29udHJvbC5zZXRFcnJvcnMoZXJyb3IpO1xuICAgICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiB0cnVlfSk7XG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgIH1cbiAgICAgIFNoYXJlZFZhbGlkYXRvcnMuY2xlYXJFcnJvcihjb250cm9sLCAncmVxdWlyZWQnKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgcHJvcGFnYXRlSWZEaXJ0eShmaWVsZE5hbWU6IHN0cmluZywgZmllbGROYW1lVG9Qcm9wYWdhdGU6IHN0cmluZywgdmFsdWVUb1Byb3BhZ2F0ZTogYW55KTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoZ3JvdXA6IEZvcm1Hcm91cCk6IG51bGwgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IGdyb3VwLmdldChmaWVsZE5hbWUpO1xuICAgICAgY29uc3QgY29udHJvbFRvUHJvcGFnYXRlID0gZ3JvdXAuZ2V0KGZpZWxkTmFtZVRvUHJvcGFnYXRlKTtcbiAgICAgIGlmIChjb250cm9sLmRpcnR5ICYmIGNvbnRyb2xUb1Byb3BhZ2F0ZS52YWx1ZSAhPT0gdmFsdWVUb1Byb3BhZ2F0ZSkge1xuICAgICAgICBjb250cm9sVG9Qcm9wYWdhdGUuc2V0VmFsdWUodmFsdWVUb1Byb3BhZ2F0ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNhbWUgYXMgY29tcG9zZSwgYnV0IGtlZXAgb25seSB0aGUgZmlyc3QgZXJyb3JzIChpbnN0ZWFkIG9mIHRoZSB1bmlvbilcbiAgICogQHBhcmFtIHZhbGlkYXRvcnNcbiAgICovXG4gIGZpcnN0KHZhbGlkYXRvcnM6IChWYWxpZGF0b3JGbiB8IG51bGwgfCB1bmRlZmluZWQpW10pOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIChjb250cm9sKSA9PiB2YWxpZGF0b3JzXG4gICAgICAuZmlsdGVyKGlzTm90TmlsKVxuICAgICAgLm1hcCh2YWxpZGF0b3IgPT4gdmFsaWRhdG9yKGNvbnRyb2wpKVxuICAgICAgLmZpbmQoaXNOb3ROaWwpIHx8IG51bGw7XG4gIH1cbn1cblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBTaGFyZWRGb3JtQXJyYXlWYWxpZGF0b3JzIHtcblxuICAvKipcbiAgICogVmFsaWRhdGUgdW5pcXVlbmVzcyBvZiBhbiBlbnRpdHkgaW4gYSBGb3JtQXJyYXlcbiAgICpcbiAgICogQHBhcmFtIGNvbnRyb2xOYW1lIHRoZSBuYW1lIG9mIHRoZSBjb250cm9sIGluIEZvcm1BcnJheVxuICAgKi9cbiAgc3RhdGljIHVuaXF1ZUVudGl0eShjb250cm9sTmFtZTogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoYXJyYXk6IEZvcm1BcnJheSk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGNvbnN0IGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSA9IFtdO1xuICAgICAgaWYgKGFycmF5Lmxlbmd0aCkge1xuICAgICAgICAvLyBnYXRoZXIgY29udHJvbHMgaW4gYXJyYXkgd2l0aCB2YWxpZCBlbnRpdHlcbiAgICAgICAgZm9yIChjb25zdCBjb250cm9sIG9mIGFycmF5LmNvbnRyb2xzKSB7XG4gICAgICAgICAgY29uc3QgZnJvbUdyb3VwID0gY29udHJvbCBhcyBGb3JtR3JvdXA7XG4gICAgICAgICAgaWYgKGZyb21Hcm91cC5jb250cm9sc1tjb250cm9sTmFtZV0pIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZnJvbUdyb3VwLmNvbnRyb2xzW2NvbnRyb2xOYW1lXS52YWx1ZTtcbiAgICAgICAgICAgIGlmICghIXZhbHVlICYmICEhdmFsdWUuaWQpXG4gICAgICAgICAgICAgIGNvbnRyb2xzLnB1c2goZnJvbUdyb3VwLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGdldCBvY2N1cnJlbmNlcyBvZiBlbnRpdHkgYnkgaWRcbiAgICAgICAgY29uc3Qgb2NjdXJyZW5jZXMgPSBjb250cm9scy5yZWR1Y2UoKGFjYywgY29udHJvbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gY29udHJvbC52YWx1ZS5pZDtcbiAgICAgICAgICBhY2NbaWRdID8gYWNjW2lkXSsrIDogYWNjW2lkXSA9IDE7XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30pO1xuICAgICAgICAvLyBnZXQgY29udHJvbHMgd2l0aCB2YWx1ZSBvY2N1cnJlbmNlcyA+IDFcbiAgICAgICAgY29uc3QgZXJyb3IgPSB7dW5pcXVlRW50aXR5OiB0cnVlfTtcbiAgICAgICAgbGV0IHJldHVybkVycm9yID0gZmFsc2U7XG4gICAgICAgIGNvbnRyb2xzLmZpbHRlcihjb250cm9sID0+IG9jY3VycmVuY2VzW2NvbnRyb2wudmFsdWUuaWRdID4gMSlcbiAgICAgICAgICAuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgICAgICAgIGxldCBlcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgPSBjb250cm9sLmVycm9ycyB8fCB7fTtcbiAgICAgICAgICAgIGVycm9ycyA9IHsuLi5lcnJvcnMsIC4uLmVycm9yfTtcbiAgICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiB0cnVlfSk7XG4gICAgICAgICAgICByZXR1cm5FcnJvciA9IHRydWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIGlmIChyZXR1cm5FcnJvcilcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICB9XG4gICAgICBjb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4gU2hhcmVkVmFsaWRhdG9ycy5jbGVhckVycm9yKGNvbnRyb2wsICd1bmlxdWVFbnRpdHknKSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIHJlcXVpcmVkQXJyYXlNaW5MZW5ndGgobWluTGVuZ3RoPzogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICAgIG1pbkxlbmd0aCA9IG1pbkxlbmd0aCB8fCAxO1xuICAgIHJldHVybiAoYXJyYXk6IEZvcm1BcnJheSk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGlmICghYXJyYXkgfHwgYXJyYXkubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7cmVxdWlyZWQ6IHRydWV9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgc3VtIG9mIGNvbnRyb2wgdmFsdWVzIGluIGFuIEZvcm1BcnJheSBub3Qgb3ZlcmZsb3cgdGhlIG1heCB2YWx1ZVxuICAgKlxuICAgKiBAcGFyYW0gY29udHJvbE5hbWUgdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2wgaW4gRm9ybUFycmF5XG4gICAqIEBwYXJhbSBtYXggdGhlIG1heGltdW0gdmFsdWVcbiAgICovXG4gIHN0YXRpYyB2YWxpZFN1bU1heFZhbHVlKGNvbnRyb2xOYW1lOiBzdHJpbmcsIG1heDogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoYXJyYXk6IEZvcm1BcnJheSk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGNvbnN0IGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSA9IFtdO1xuICAgICAgaWYgKGFycmF5Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgYXJyYXkuY29udHJvbHMpIHtcbiAgICAgICAgICBjb25zdCBmcm9tR3JvdXAgPSBjb250cm9sIGFzIEZvcm1Hcm91cDtcbiAgICAgICAgICBpZiAoZnJvbUdyb3VwLmNvbnRyb2xzW2NvbnRyb2xOYW1lXSAmJiBpc05vdE5pbE9yTmFOKGZyb21Hcm91cC5jb250cm9sc1tjb250cm9sTmFtZV0udmFsdWUpKSB7XG4gICAgICAgICAgICBjb250cm9scy5wdXNoKGZyb21Hcm91cC5jb250cm9sc1tjb250cm9sTmFtZV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY29udHJvbHMucmVkdWNlKChzdW0sIGNvbnRyb2wpID0+IHN1bSArIGNvbnRyb2wudmFsdWUsIDApID4gbWF4KSB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSB7c3VtTWF4VmFsdWU6IHRydWV9O1xuICAgICAgICAgIGNvbnRyb2xzLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICAgICAgICBsZXQgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID0gY29udHJvbC5lcnJvcnMgfHwge307XG4gICAgICAgICAgICBlcnJvcnMgPSB7Li4uZXJyb3JzLCAuLi5lcnJvcn07XG4gICAgICAgICAgICBjb250cm9sLnNldEVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IFNoYXJlZFZhbGlkYXRvcnMuY2xlYXJFcnJvcihjb250cm9sLCAnc3VtTWF4VmFsdWUnKSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbn1cbiJdfQ==
409
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3ZhbGlkYXRvci92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQW9FLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkgsT0FBTyxLQUFLLGNBQWMsTUFBTSxRQUFRLENBQUM7QUFFekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRCxPQUFPLEVBQTBCLFlBQVksRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU3QyxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUM7QUFFOUIsV0FBVztBQUNYLE1BQU0sT0FBTyxnQkFBZ0I7SUF1QjNCLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBb0I7UUFDbkMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUM1QixNQUFNLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDaEcsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUU7WUFDbkQsT0FBTyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQztTQUMxQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FB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LElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCAqIGFzIG1vbWVudEltcG9ydGVkIGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBNb21lbnQsIHVuaXRPZlRpbWUgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgREFURV9JU09fUEFUVEVSTiwgUFVCS0VZX1JFR0VYUCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjaGFuZ2VDYXNlVG9VbmRlcnNjb3JlLCBpc0VtcHR5QXJyYXksIGlzTmlsT3JCbGFuaywgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuaywgaXNOb3ROaWxPck5hTiwgdG9Cb29sZWFuIH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7IGZyb21EYXRlSVNPU3RyaW5nIH0gZnJvbSAnLi4vZGF0ZXMnO1xuXG5jb25zdCBtb21lbnQgPSBtb21lbnRJbXBvcnRlZDtcblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBTaGFyZWRWYWxpZGF0b3JzIHtcblxuICBzdGF0aWMgcmVhZG9ubHkgSTE4Tl9FUlJPUl9LRVlTID0ge1xuICAgIHJlcXVpcmVkOiAnRVJST1IuRklFTERfUkVRVUlSRUQnLFxuICAgIG1pbjogJ0VSUk9SLkZJRUxEX01JTicsXG4gICAgbWF4OiAnRVJST1IuRklFTERfTUFYJyxcbiAgICBtaW5sZW5ndGg6J0VSUk9SLkZJRUxEX01JTl9MRU5HVEgnLFxuICAgIG1heGxlbmd0aDonRVJST1IuRklFTERfTUFYX0xFTkdUSCcsXG4gICAgcHVia2V5OiAnRVJST1IuRklFTERfTk9UX1ZBTElEX1BVQktFWScsXG4gICAgdmFsaWREYXRlOiAnRVJST1IuRklFTERfTk9UX1ZBTElEX0RBVEUnLFxuICAgIGRhdGVJc0FmdGVyOiAnRVJST1IuRklFTERfTk9UX1ZBTElEX0RBVEVfQUZURVInLFxuICAgIGRhdGVSYW5nZTogJ0VSUk9SLkZJRUxEX05PVF9WQUxJRF9EQVRFX1JBTkdFJyxcbiAgICBkYXRlTWluRHVyYXRpb246ICdFUlJPUi5GSUVMRF9OT1RfVkFMSURfREFURV9NSU5fRFVSQVRJT04nLFxuICAgIGRhdGVNYXhEdXJhdGlvbjogJ0VSUk9SLkZJRUxEX05PVF9WQUxJRF9EQVRFX01BWF9EVVJBVElPTicsXG4gICAgbWF4RGVjaW1hbHM6ICdFUlJPUi5GSUVMRF9NQVhJTVVNX0RFQ0lNQUxTJyxcbiAgICBpbnRlZ2VyOiAnRVJST1IuRklFTERfTk9UX1ZBTElEX0lOVEVHRVInLFxuICAgIGVtYWlsOiAnRVJST1IuRklFTERfTk9UX1ZBTElEX0VNQUlMJyxcbiAgICBsYXRpdHVkZTogJ0VSUk9SLkZJRUxEX05PVF9WQUxJRF9MQVRJVFVERScsXG4gICAgbG9uZ2l0dWRlOiAnRVJST1IuRklFTERfTk9UX1ZBTElEX0xPTkdJVFVERScsXG4gICAgcGF0dGVybjogJ0VSUk9SLkZJRUxEX05PVF9WQUxJRF9QQVRURVJOJyxcbiAgICB1bmlxdWU6ICdFUlJPUi5GSUVMRF9OT1RfVU5JUVVFJ1xuICB9XG5cbiAgc3RhdGljIHZhbGlkRGF0ZShjb250cm9sOiBGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgY29uc3QgZGF0ZSA9ICF2YWx1ZSB8fCBtb21lbnQuaXNNb21lbnQodmFsdWUpID8gdmFsdWUgOiBtb21lbnQoY29udHJvbC52YWx1ZSwgREFURV9JU09fUEFUVEVSTik7XG4gICAgaWYgKGRhdGUgJiYgKCFkYXRlLmlzVmFsaWQoKSB8fCBkYXRlLnllYXIoKSA8IDE5NzApKSB7XG4gICAgICByZXR1cm4ge3ZhbGlkRGF0ZTogdHJ1ZX07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIGxhdGl0dWRlKGNvbnRyb2w6IEZvcm1Db250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcbiAgICBpZiAoaXNOb3ROaWwodmFsdWUpICYmICh2YWx1ZSA8IC05MCB8fCB2YWx1ZSA+IDkwKSkge1xuICAgICAgcmV0dXJuIHtsYXRpdHVkZTogdHJ1ZX07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIGxvbmdpdHVkZShjb250cm9sOiBGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKGlzTm90TmlsKHZhbHVlKSAmJiAodmFsdWUgPCAtMTgwIHx8IHZhbHVlID4gMTgwKSkge1xuICAgICAgcmV0dXJuIHtsb25naXR1ZGU6IHRydWV9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBvYmplY3QoY29udHJvbDogRm9ybUNvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4ge29iamVjdDogdHJ1ZX07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIGVudGl0eShjb250cm9sOiBGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKHZhbHVlICYmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IHZhbHVlLmlkID09PSB1bmRlZmluZWQgfHwgdmFsdWUuaWQgPT09IG51bGwpKSB7XG4gICAgICByZXR1cm4ge2VudGl0eTogdHJ1ZX07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIGVtcHR5KGNvbnRyb2w6IEZvcm1Db250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmIChpc05vdE5pbE9yQmxhbmsoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7ZW1wdHk6IHRydWV9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBwdWJrZXkoY29udHJvbDogRm9ybUNvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGlmICh2YWx1ZSAmJiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCAhUFVCS0VZX1JFR0VYUC50ZXN0KHZhbHVlKSkpIHtcbiAgICAgIHJldHVybiB7cHVia2V5OiB0cnVlfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzdGF0aWMgaW50ZWdlcihjb250cm9sOiBGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAoaXNOaWxPckJsYW5rKGNvbnRyb2wudmFsdWUpKVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZUZsb2F0KGNvbnRyb2wudmFsdWUpO1xuICAgIGlmIChpc05hTih2YWx1ZSkgfHwgKHZhbHVlIHwgMCkgIT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4ge2ludGVnZXI6IHRydWV9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBkb3VibGUob3B0cz86IHsgbWF4RGVjaW1hbHM/OiBudW1iZXIgfSk6IFZhbGlkYXRvckZuIHtcbiAgICBsZXQgcmVnZXhwU3RyO1xuICAgIGlmIChvcHRzICYmIGlzTm90TmlsKG9wdHMubWF4RGVjaW1hbHMpKSB7XG4gICAgICBpZiAob3B0cy5tYXhEZWNpbWFscyA8IDApIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBtYXhEZWNpbWFscyB2YWx1ZTogJHtvcHRzLm1heERlY2ltYWxzfWApO1xuICAgICAgcmVnZXhwU3RyID0gb3B0cy5tYXhEZWNpbWFscyA+IDEgPyBgXlstXT9bMC05XSsoWy4sXVswLTldezEsJHtvcHRzLm1heERlY2ltYWxzfX0pPyRgIDogJ15bLV0/WzAtOV0rKFsuLF1bMC05XSk/JCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2V4cFN0ciA9ICdeWy1dP1swLTldKyhbLixdWzAtOV0qKT8kJztcbiAgICB9XG5cbiAgICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKHJlZ2V4cFN0cik7XG4gICAgcmV0dXJuIChjb250cm9sOiBGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgICBpZiAoTnVtYmVyLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiV0FSTjogR2V0dGluZyBhIE5hTiB2YWx1ZSAhXCIpO1xuICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoaXNOb3ROaWwodmFsdWUpICYmIHZhbHVlICE9PSAnJyAmJiAhcmVnZXhwLnRlc3QodmFsdWUgYXMgc3RyaW5nKSkge1xuICAgICAgICByZXR1cm4ge21heERlY2ltYWxzOiB0cnVlfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZGF0ZUlzQWZ0ZXIocHJldmlvdXNWYWx1ZTogTW9tZW50LCBlcnJvclBhcmFtOiBzdHJpbmcsIGdyYW51bGFyaXR5PzogdW5pdE9mVGltZS5TdGFydE9mKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBmcm9tRGF0ZUlTT1N0cmluZyhjb250cm9sLnZhbHVlKTtcbiAgICAgIGlmIChpc05vdE5pbCh2YWx1ZSkgJiYgaXNOb3ROaWwocHJldmlvdXNWYWx1ZSkgJiYgdmFsdWUuaXNTYW1lT3JCZWZvcmUocHJldmlvdXNWYWx1ZSwgZ3JhbnVsYXJpdHkpKSB7XG4gICAgICAgIC8vIFJldHVybiB0aGUgZXJyb3JcbiAgICAgICAgcmV0dXJuIHtkYXRlSXNBZnRlcjoge21pbkRhdGU6IGVycm9yUGFyYW19fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZGF0ZVJhbmdlRW5kKHN0YXJ0RGF0ZUZpZWxkTmFtZTogc3RyaW5nLCBtc2c/OiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgY29uc3QgZXJyb3JDb2RlID0gbXNnID8gJ21zZyc6ICdkYXRlUmFuZ2UnO1xuICAgIGNvbnN0IGVycm9yID0gbXNnID8ge21zZ30gOiB7ZGF0ZVJhbmdlOiB0cnVlfTtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0Q29udHJvbCA9IGNvbnRyb2wucGFyZW50Py5nZXQoc3RhcnREYXRlRmllbGROYW1lKTtcbiAgICAgIGlmICghc3RhcnRDb250cm9sKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgQ2Fubm90IGZpbmQgYnJvdGhlciBjb250cm9sICcke3N0YXJ0RGF0ZUZpZWxkTmFtZX0nIGluIHRoZSBwYXJlbnQgZm9ybWApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IGZyb21EYXRlSVNPU3RyaW5nKHN0YXJ0Q29udHJvbC52YWx1ZSk7XG4gICAgICBjb25zdCBlbmREYXRlID0gZnJvbURhdGVJU09TdHJpbmcoY29udHJvbC52YWx1ZSk7XG4gICAgICAvLyBFcnJvciBpZiB2YWx1ZSA8PSBiZWZvcmVEYXRlXG4gICAgICBpZiAoaXNOb3ROaWwoZW5kRGF0ZSkgJiYgaXNOb3ROaWwoc3RhcnREYXRlKSAmJiBlbmREYXRlLmlzU2FtZU9yQmVmb3JlKHN0YXJ0RGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgfVxuICAgICAgLy8gT0s6IGNsZWFyIGV4aXN0aW5nIGVycm9yc1xuICAgICAgU2hhcmVkVmFsaWRhdG9ycy5jbGVhckVycm9yKGNvbnRyb2wsIGVycm9yQ29kZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGRhdGVSYW5nZVN0YXJ0KGVuZERhdGVGaWVsZE5hbWU6IHN0cmluZywgbXNnPzogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIGNvbnN0IGVycm9yQ29kZSA9IG1zZyA/ICdtc2cnOiAnZGF0ZVJhbmdlJztcbiAgICBjb25zdCBlcnJvciA9IG1zZyA/IHttc2d9IDoge2RhdGVSYW5nZTogdHJ1ZX07XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCBlbmREYXRlQ29udHJvbCA9IGNvbnRyb2wucGFyZW50Py5nZXQoZW5kRGF0ZUZpZWxkTmFtZSk7XG4gICAgICBpZiAoIWVuZERhdGVDb250cm9sKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgQ2Fubm90IGZpbmQgY29udHJvbCAnJHtlbmREYXRlRmllbGROYW1lfScgaW4gdGhlIHBhcmVudCBmb3JtYCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QgZW5kRGF0ZSA9IGZyb21EYXRlSVNPU3RyaW5nKGVuZERhdGVDb250cm9sLnZhbHVlKTtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IGZyb21EYXRlSVNPU3RyaW5nKGNvbnRyb2wudmFsdWUpO1xuICAgICAgLy8gRXJyb3IgaWYgdmFsdWUgPD0gYmVmb3JlRGF0ZVxuICAgICAgaWYgKGlzTm90TmlsKHN0YXJ0RGF0ZSkgJiYgaXNOb3ROaWwoZW5kRGF0ZSkgJiYgc3RhcnREYXRlLmlzU2FtZU9yQWZ0ZXIoZW5kRGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgfVxuICAgICAgLy8gT0s6IGNsZWFyIGV4aXN0aW5nIGVycm9yc1xuICAgICAgU2hhcmVkVmFsaWRhdG9ycy5jbGVhckVycm9yKGNvbnRyb2wsIGVycm9yQ29kZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGNvcHlQYXJlbnRFcnJvcnMoZXJyb3JOYW1lcz86IHN0cmluZ1tdKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgLy8gU2tpcCBpZiBjb250cm9sIGFscmVhZHkgaGFzIHNvbWUgZXJyb3JzXG4gICAgICBpZiAoY29udHJvbC5lcnJvcnMpIHJldHVybiBudWxsO1xuXG4gICAgICBjb25zdCBlcnJvcnMgPSBjb250cm9sLnBhcmVudCAmJiBjb250cm9sLnBhcmVudC5lcnJvcnM7XG5cbiAgICAgIC8vIE5vIGVycm9ycywgb3IgY29weSBhbGwgZXJyb3JzXG4gICAgICBpZiAoIWVycm9ycyB8fCBpc0VtcHR5QXJyYXkoZXJyb3JOYW1lcykpIHJldHVybiBlcnJvcnM7XG5cbiAgICAgIC8vIENvcHkgb25seSBleHBlY3RlZCBlcnJvcnNcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhlcnJvcnMpLnJlZHVjZSgocmVzLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKGVycm9yTmFtZXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgIHJlc1trZXldID0gZXJyb3JzW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0sIHt9KTtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGNsZWFyRXJyb3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBlcnJvckNvZGU6IHN0cmluZykge1xuICAgIGlmIChjb250cm9sLmhhc0Vycm9yKGVycm9yQ29kZSkpIHtcbiAgICAgIGNvbnN0IGVycm9ycyA9IGNvbnRyb2wuZXJyb3JzO1xuICAgICAgaWYgKGVycm9ycyAmJiBlcnJvcnNbZXJyb3JDb2RlXSkge1xuICAgICAgICAvLyBPbmx5IG9uZSBlcnJvcjogcmVzZXQgZXJyb3JzXG4gICAgICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlcnJvcnMpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE90aGVyIGVycm9ycyBleGlzdHM6IGp1c3QgcmVtb3ZlIHRoaXMgZXJyb3JcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIGVycm9yc1tlcnJvckNvZGVdO1xuICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKGVycm9ycyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG59XG5cbi8vIEBkeW5hbWljXG5leHBvcnQgY2xhc3MgU2hhcmVkRm9ybUdyb3VwVmFsaWRhdG9ycyB7XG5cbiAgc3RhdGljIGRhdGVSYW5nZShzdGFydERhdGVGaWVsZDogc3RyaW5nLCBlbmREYXRlRmllbGQ6IHN0cmluZywgbXNnPzogc3RyaW5nICk6IFZhbGlkYXRvckZuIHtcbiAgICBjb25zdCBlcnJvckNvZGUgPSBpc05vdE5pbE9yQmxhbmsobXNnKSA/ICdtc2cnIDogJ2RhdGVSYW5nZSc7XG4gICAgY29uc3QgcmFuZ2VFcnJvciA9IG1zZyA/IHttc2d9IDoge2RhdGVSYW5nZTogdHJ1ZX07XG4gICAgcmV0dXJuIChncm91cDogRm9ybUdyb3VwKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3Qgc3RhcnREYXRlID0gZnJvbURhdGVJU09TdHJpbmcoZ3JvdXAuZ2V0KHN0YXJ0RGF0ZUZpZWxkKS52YWx1ZSk7XG4gICAgICBjb25zdCBlbmRGaWVsZCA9IGdyb3VwLmdldChlbmREYXRlRmllbGQpO1xuICAgICAgY29uc3QgZW5kRGF0ZSA9IGZyb21EYXRlSVNPU3RyaW5nKGVuZEZpZWxkLnZhbHVlKTtcbiAgICAgIGlmIChpc05vdE5pbChzdGFydERhdGUpICYmIGlzTm90TmlsKGVuZERhdGUpICYmIHN0YXJ0RGF0ZS5pc0FmdGVyKGVuZERhdGUpKSB7XG4gICAgICAgIC8vIFVwZGF0ZSBlbmQgZmllbGRcbiAgICAgICAgZW5kRmllbGQubWFya0FzUGVuZGluZygpO1xuICAgICAgICBlbmRGaWVsZC5zZXRFcnJvcnMoe1xuICAgICAgICAgIC4uLmVuZEZpZWxkLmVycm9ycyxcbiAgICAgICAgICAuLi5yYW5nZUVycm9yXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBSZXR1cm4gdGhlIGVycm9yIChzaG91bGQgYmUgYXBwbHkgdG8gdGhlIHBhcmVudCBmb3JtKVxuICAgICAgICByZXR1cm4gcmFuZ2VFcnJvcjtcbiAgICAgIH1cbiAgICAgIC8vIE9LOiByZW1vdmUgdGhlIGV4aXN0aW5nIG9uIHRoZSBlbmQgZmllbGRcbiAgICAgIFNoYXJlZFZhbGlkYXRvcnMuY2xlYXJFcnJvcihlbmRGaWVsZCwgZXJyb3JDb2RlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZGF0ZU1heER1cmF0aW9uKHN0YXJ0RGF0ZUZpZWxkOiBzdHJpbmcsIGVuZERhdGVGaWVsZDogc3RyaW5nLCBtYXhEdXJhdGlvbjogbnVtYmVyLCBkdXJhdGlvblVuaXQ/OiBtb21lbnQudW5pdE9mVGltZS5EaWZmKTogVmFsaWRhdG9yRm4ge1xuICAgIGNvbnN0IG1heER1cmF0aW9uRXJyb3IgPSB7ZGF0ZU1heER1cmF0aW9uOiB0cnVlfTtcbiAgICByZXR1cm4gKGdyb3VwOiBGb3JtR3JvdXApOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCBzdGFydERhdGUgPSBmcm9tRGF0ZUlTT1N0cmluZyhncm91cC5nZXQoc3RhcnREYXRlRmllbGQpLnZhbHVlKTtcbiAgICAgIGNvbnN0IGVuZEZpZWxkID0gZ3JvdXAuZ2V0KGVuZERhdGVGaWVsZCk7XG4gICAgICBjb25zdCBlbmREYXRlID0gZnJvbURhdGVJU09TdHJpbmcoZW5kRmllbGQudmFsdWUpO1xuICAgICAgaWYgKGlzTm90TmlsKHN0YXJ0RGF0ZSkgJiYgaXNOb3ROaWwoZW5kRGF0ZSkgJiYgTWF0aC5hYnMoc3RhcnREYXRlLmRpZmYoZW5kRGF0ZSwgZHVyYXRpb25Vbml0KSkgPiBtYXhEdXJhdGlvbikge1xuICAgICAgICAvLyBVcGRhdGUgZW5kIGZpZWxkXG4gICAgICAgIGVuZEZpZWxkLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiB0cnVlfSk7XG4gICAgICAgIGVuZEZpZWxkLm1hcmtBc1BlbmRpbmcoKTtcbiAgICAgICAgZW5kRmllbGQuc2V0RXJyb3JzKHtcbiAgICAgICAgICAuLi5lbmRGaWVsZC5lcnJvcnMsXG4gICAgICAgICAgLi4ubWF4RHVyYXRpb25FcnJvclxuICAgICAgICB9KTtcbiAgICAgICAgLy8gUmV0dXJuIHRoZSBlcnJvciAoc2hvdWxkIGJlIGFwcGx5IHRvIHRoZSBwYXJlbnQgZm9ybSlcbiAgICAgICAgcmV0dXJuIG1heER1cmF0aW9uRXJyb3I7XG4gICAgICB9XG4gICAgICAvLyBPSzogcmVtb3ZlIHRoZSBleGlzdGluZyBvbiB0aGUgZW5kIGZpZWxkXG4gICAgICBTaGFyZWRWYWxpZGF0b3JzLmNsZWFyRXJyb3IoZW5kRmllbGQsICdkYXRlTWF4RHVyYXRpb24nKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZGF0ZU1pbkR1cmF0aW9uKHN0YXJ0RGF0ZUZpZWxkOiBzdHJpbmcsIGVuZERhdGVGaWVsZDogc3RyaW5nLCBtaW5EdXJhdGlvbjogbnVtYmVyLCBkdXJhdGlvblVuaXQ/OiBtb21lbnQudW5pdE9mVGltZS5EaWZmKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoZ3JvdXA6IEZvcm1Hcm91cCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGNvbnN0IGVuZEZpZWxkID0gZ3JvdXAuZ2V0KGVuZERhdGVGaWVsZCk7XG4gICAgICBjb25zdCBzdGFydERhdGUgPSBmcm9tRGF0ZUlTT1N0cmluZyhncm91cC5nZXQoc3RhcnREYXRlRmllbGQpLnZhbHVlKTtcbiAgICAgIGNvbnN0IGVuZERhdGUgPSBmcm9tRGF0ZUlTT1N0cmluZyhlbmRGaWVsZC52YWx1ZSk7XG4gICAgICBpZiAoaXNOb3ROaWwoc3RhcnREYXRlKSAmJiBpc05vdE5pbChlbmREYXRlKSAmJiBNYXRoLmFicyhzdGFydERhdGUuZGlmZihlbmREYXRlLCBkdXJhdGlvblVuaXQpKSA8IG1pbkR1cmF0aW9uKSB7XG4gICAgICAgIC8vIFVwZGF0ZSBlbmQgZmllbGRcbiAgICAgICAgY29uc3QgZW5kRmllbGRFcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgPSBlbmRGaWVsZC5lcnJvcnMgfHwge307XG4gICAgICAgIGVuZEZpZWxkRXJyb3JzWydkYXRlTWluRHVyYXRpb24nXSA9IHRydWU7XG4gICAgICAgIGVuZEZpZWxkLnNldEVycm9ycyhlbmRGaWVsZEVycm9ycyk7XG4gICAgICAgIGVuZEZpZWxkLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiB0cnVlfSk7XG4gICAgICAgIC8vIFJldHVybiB0aGUgZXJyb3IgKHNob3VsZCBiZSBhcHBseSB0byB0aGUgcGFyZW50IGZvcm0pXG4gICAgICAgIHJldHVybiB7ZGF0ZU1pbkR1cmF0aW9uOiB0cnVlfTtcbiAgICAgIH1cbiAgICAgIC8vIE9LOiByZW1vdmUgdGhlIGV4aXN0aW5nIG9uIHRoZSBlbmQgZmllbGRcbiAgICAgIGVsc2Uge1xuICAgICAgICBTaGFyZWRWYWxpZGF0b3JzLmNsZWFyRXJyb3IoZW5kRmllbGQsICdkYXRlTWluRHVyYXRpb24nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgcmVxdWlyZWRJZihmaWVsZE5hbWU6IHN0cmluZywgYW5vdGhlckZpZWxkVG9DaGVjazogc3RyaW5nIHwgQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoZ3JvdXA6IEZvcm1Hcm91cCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBncm91cC5nZXQoZmllbGROYW1lKTtcbiAgICAgIGNvbnN0IGFub3RoZXJDb250cm9sID0gKGFub3RoZXJGaWVsZFRvQ2hlY2sgaW5zdGFuY2VvZiBBYnN0cmFjdENvbnRyb2wpID8gYW5vdGhlckZpZWxkVG9DaGVjayA6IGdyb3VwLmdldChhbm90aGVyRmllbGRUb0NoZWNrKTtcbiAgICAgIGlmICghYW5vdGhlckNvbnRyb2wpIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgZmllbGQgdG8gY2hlY2shJyk7XG4gICAgICBpZiAoaXNOaWxPckJsYW5rKGNvbnRyb2wudmFsdWUpICYmIGlzTm90TmlsT3JCbGFuayhhbm90aGVyQ29udHJvbC52YWx1ZSkpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSB7cmVxdWlyZWQ6IHRydWV9O1xuICAgICAgICBjb250cm9sLnNldEVycm9ycyhlcnJvcik7XG4gICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgfVxuICAgICAgU2hhcmVkVmFsaWRhdG9ycy5jbGVhckVycm9yKGNvbnRyb2wsICdyZXF1aXJlZCcpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyByZXF1aXJlZElmVHJ1ZShmaWVsZE5hbWU6IHN0cmluZywgYW5vdGhlckZpZWxkVG9DaGVjazogc3RyaW5nIHwgQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoZ3JvdXA6IEZvcm1Hcm91cCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBncm91cC5nZXQoZmllbGROYW1lKTtcbiAgICAgIGNvbnN0IGFub3RoZXJDb250cm9sID0gKGFub3RoZXJGaWVsZFRvQ2hlY2sgaW5zdGFuY2VvZiBBYnN0cmFjdENvbnRyb2wpID8gYW5vdGhlckZpZWxkVG9DaGVjayA6IGdyb3VwLmdldChhbm90aGVyRmllbGRUb0NoZWNrKTtcbiAgICAgIGlmICghYW5vdGhlckNvbnRyb2wpIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgZmllbGQgdG8gY2hlY2shJyk7XG4gICAgICBpZiAoaXNOaWxPckJsYW5rKGNvbnRyb2wudmFsdWUpICYmIHRvQm9vbGVhbihhbm90aGVyQ29udHJvbC52YWx1ZSwgZmFsc2UpKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0ge3JlcXVpcmVkOiB0cnVlfTtcbiAgICAgICAgY29udHJvbC5zZXRFcnJvcnMoZXJyb3IpO1xuICAgICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiB0cnVlfSk7XG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgIH1cbiAgICAgIFNoYXJlZFZhbGlkYXRvcnMuY2xlYXJFcnJvcihjb250cm9sLCAncmVxdWlyZWQnKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgcmVxdWlyZWRJZkVtcHR5KGZpZWxkTmFtZTogc3RyaW5nLCBhbm90aGVyRmllbGRUb0NoZWNrOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChncm91cDogRm9ybUdyb3VwKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IGdyb3VwLmdldChmaWVsZE5hbWUpO1xuICAgICAgaWYgKGlzTmlsT3JCbGFuayhjb250cm9sLnZhbHVlKSAmJiBpc05pbE9yQmxhbmsoZ3JvdXAuZ2V0KGFub3RoZXJGaWVsZFRvQ2hlY2spLnZhbHVlKSkge1xuICAgICAgICBjb25zdCBlcnJvciA9IHtyZXF1aXJlZDogdHJ1ZX07XG4gICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKGVycm9yKTtcbiAgICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICB9XG4gICAgICBTaGFyZWRWYWxpZGF0b3JzLmNsZWFyRXJyb3IoY29udHJvbCwgJ3JlcXVpcmVkJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIHByb3BhZ2F0ZUlmRGlydHkoZmllbGROYW1lOiBzdHJpbmcsIGZpZWxkTmFtZVRvUHJvcGFnYXRlOiBzdHJpbmcsIHZhbHVlVG9Qcm9wYWdhdGU6IGFueSk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGdyb3VwOiBGb3JtR3JvdXApOiBudWxsID0+IHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBncm91cC5nZXQoZmllbGROYW1lKTtcbiAgICAgIGNvbnN0IGNvbnRyb2xUb1Byb3BhZ2F0ZSA9IGdyb3VwLmdldChmaWVsZE5hbWVUb1Byb3BhZ2F0ZSk7XG4gICAgICBpZiAoY29udHJvbC5kaXJ0eSAmJiBjb250cm9sVG9Qcm9wYWdhdGUudmFsdWUgIT09IHZhbHVlVG9Qcm9wYWdhdGUpIHtcbiAgICAgICAgY29udHJvbFRvUHJvcGFnYXRlLnNldFZhbHVlKHZhbHVlVG9Qcm9wYWdhdGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYW1lIGFzIGNvbXBvc2UsIGJ1dCBrZWVwIG9ubHkgdGhlIGZpcnN0IGVycm9ycyAoaW5zdGVhZCBvZiB0aGUgdW5pb24pXG4gICAqIEBwYXJhbSB2YWxpZGF0b3JzXG4gICAqL1xuICBmaXJzdCh2YWxpZGF0b3JzOiAoVmFsaWRhdG9yRm4gfCBudWxsIHwgdW5kZWZpbmVkKVtdKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiAoY29udHJvbCkgPT4gdmFsaWRhdG9yc1xuICAgICAgLmZpbHRlcihpc05vdE5pbClcbiAgICAgIC5tYXAodmFsaWRhdG9yID0+IHZhbGlkYXRvcihjb250cm9sKSlcbiAgICAgIC5maW5kKGlzTm90TmlsKSB8fCBudWxsO1xuICB9XG59XG5cbi8vIEBkeW5hbWljXG5leHBvcnQgY2xhc3MgU2hhcmVkRm9ybUFycmF5VmFsaWRhdG9ycyB7XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHVuaXF1ZW5lc3Mgb2YgYW4gZW50aXR5IGluIGEgRm9ybUFycmF5XG4gICAqXG4gICAqIEBwYXJhbSBjb250cm9sTmFtZSB0aGUgbmFtZSBvZiB0aGUgY29udHJvbCBpbiBGb3JtQXJyYXlcbiAgICovXG4gIHN0YXRpYyB1bmlxdWVFbnRpdHkoY29udHJvbE5hbWU6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGFycmF5OiBGb3JtQXJyYXkpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCBjb250cm9sczogQWJzdHJhY3RDb250cm9sW10gPSBbXTtcbiAgICAgIGlmIChhcnJheS5sZW5ndGgpIHtcbiAgICAgICAgLy8gZ2F0aGVyIGNvbnRyb2xzIGluIGFycmF5IHdpdGggdmFsaWQgZW50aXR5XG4gICAgICAgIGZvciAoY29uc3QgY29udHJvbCBvZiBhcnJheS5jb250cm9scykge1xuICAgICAgICAgIGNvbnN0IGZyb21Hcm91cCA9IGNvbnRyb2wgYXMgRm9ybUdyb3VwO1xuICAgICAgICAgIGlmIChmcm9tR3JvdXAuY29udHJvbHNbY29udHJvbE5hbWVdKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZyb21Hcm91cC5jb250cm9sc1tjb250cm9sTmFtZV0udmFsdWU7XG4gICAgICAgICAgICBpZiAoISF2YWx1ZSAmJiAhIXZhbHVlLmlkKVxuICAgICAgICAgICAgICBjb250cm9scy5wdXNoKGZyb21Hcm91cC5jb250cm9sc1tjb250cm9sTmFtZV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBnZXQgb2NjdXJyZW5jZXMgb2YgZW50aXR5IGJ5IGlkXG4gICAgICAgIGNvbnN0IG9jY3VycmVuY2VzID0gY29udHJvbHMucmVkdWNlKChhY2MsIGNvbnRyb2wpID0+IHtcbiAgICAgICAgICBjb25zdCBpZCA9IGNvbnRyb2wudmFsdWUuaWQ7XG4gICAgICAgICAgYWNjW2lkXSA/IGFjY1tpZF0rKyA6IGFjY1tpZF0gPSAxO1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KTtcbiAgICAgICAgLy8gZ2V0IGNvbnRyb2xzIHdpdGggdmFsdWUgb2NjdXJyZW5jZXMgPiAxXG4gICAgICAgIGNvbnN0IGVycm9yID0ge3VuaXF1ZUVudGl0eTogdHJ1ZX07XG4gICAgICAgIGxldCByZXR1cm5FcnJvciA9IGZhbHNlO1xuICAgICAgICBjb250cm9scy5maWx0ZXIoY29udHJvbCA9PiBvY2N1cnJlbmNlc1tjb250cm9sLnZhbHVlLmlkXSA+IDEpXG4gICAgICAgICAgLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICAgICAgICBsZXQgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID0gY29udHJvbC5lcnJvcnMgfHwge307XG4gICAgICAgICAgICBlcnJvcnMgPSB7Li4uZXJyb3JzLCAuLi5lcnJvcn07XG4gICAgICAgICAgICBjb250cm9sLnNldEVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xuICAgICAgICAgICAgcmV0dXJuRXJyb3IgPSB0cnVlO1xuICAgICAgICAgIH0pO1xuICAgICAgICBpZiAocmV0dXJuRXJyb3IpXG4gICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgfVxuICAgICAgY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IFNoYXJlZFZhbGlkYXRvcnMuY2xlYXJFcnJvcihjb250cm9sLCAndW5pcXVlRW50aXR5JykpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyByZXF1aXJlZEFycmF5TWluTGVuZ3RoKG1pbkxlbmd0aD86IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgICBtaW5MZW5ndGggPSBtaW5MZW5ndGggfHwgMTtcbiAgICByZXR1cm4gKGFycmF5OiBGb3JtQXJyYXkpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBpZiAoIWFycmF5IHx8IGFycmF5Lmxlbmd0aCA8IG1pbkxlbmd0aCkge1xuICAgICAgICByZXR1cm4ge3JlcXVpcmVkOiB0cnVlfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIHN1bSBvZiBjb250cm9sIHZhbHVlcyBpbiBhbiBGb3JtQXJyYXkgbm90IG92ZXJmbG93IHRoZSBtYXggdmFsdWVcbiAgICpcbiAgICogQHBhcmFtIGNvbnRyb2xOYW1lIHRoZSBuYW1lIG9mIHRoZSBjb250cm9sIGluIEZvcm1BcnJheVxuICAgKiBAcGFyYW0gbWF4IHRoZSBtYXhpbXVtIHZhbHVlXG4gICAqL1xuICBzdGF0aWMgdmFsaWRTdW1NYXhWYWx1ZShjb250cm9sTmFtZTogc3RyaW5nLCBtYXg6IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGFycmF5OiBGb3JtQXJyYXkpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCBjb250cm9sczogQWJzdHJhY3RDb250cm9sW10gPSBbXTtcbiAgICAgIGlmIChhcnJheS5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCBjb250cm9sIG9mIGFycmF5LmNvbnRyb2xzKSB7XG4gICAgICAgICAgY29uc3QgZnJvbUdyb3VwID0gY29udHJvbCBhcyBGb3JtR3JvdXA7XG4gICAgICAgICAgaWYgKGZyb21Hcm91cC5jb250cm9sc1tjb250cm9sTmFtZV0gJiYgaXNOb3ROaWxPck5hTihmcm9tR3JvdXAuY29udHJvbHNbY29udHJvbE5hbWVdLnZhbHVlKSkge1xuICAgICAgICAgICAgY29udHJvbHMucHVzaChmcm9tR3JvdXAuY29udHJvbHNbY29udHJvbE5hbWVdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRyb2xzLnJlZHVjZSgoc3VtLCBjb250cm9sKSA9PiBzdW0gKyBjb250cm9sLnZhbHVlLCAwKSA+IG1heCkge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0ge3N1bU1heFZhbHVlOiB0cnVlfTtcbiAgICAgICAgICBjb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgICAgICAgbGV0IGVycm9yczogVmFsaWRhdGlvbkVycm9ycyA9IGNvbnRyb2wuZXJyb3JzIHx8IHt9O1xuICAgICAgICAgICAgZXJyb3JzID0gey4uLmVycm9ycywgLi4uZXJyb3J9O1xuICAgICAgICAgICAgY29udHJvbC5zZXRFcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnRyb2xzLmZvckVhY2goY29udHJvbCA9PiBTaGFyZWRWYWxpZGF0b3JzLmNsZWFyRXJyb3IoY29udHJvbCwgJ3N1bU1heFZhbHVlJykpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG59XG4iXX0=
@@ -2708,7 +2708,6 @@ class SharedFormGroupValidators {
2708
2708
  const endField = group.get(endDateField);
2709
2709
  const endDate = fromDateISOString(endField.value);
2710
2710
  if (isNotNil(startDate) && isNotNil(endDate) && Math.abs(startDate.diff(endDate, durationUnit)) > maxDuration) {
2711
- console.log('TODO error !');
2712
2711
  // Update end field
2713
2712
  endField.markAsTouched({ onlySelf: true });
2714
2713
  endField.markAsPending();
@@ -16577,6 +16576,7 @@ class AppForm {
16577
16576
  this.onSubmit = new EventEmitter();
16578
16577
  if (form)
16579
16578
  this.setForm(form);
16579
+ this.translate = injector.get(TranslateService);
16580
16580
  this.settings = injector.get(LocalSettingsService);
16581
16581
  this.errorTranslator = injector.get(FormErrorTranslator);
16582
16582
  this.autocompleteHelper = new MatAutocompleteConfigHolder(this.settings && {
@@ -16773,7 +16773,9 @@ class AppForm {
16773
16773
  this.markForCheck();
16774
16774
  }
16775
16775
  translateControlPath(path) {
16776
- return this.getFieldName(path);
16776
+ var _a;
16777
+ const i18nFieldName = this.getI18nFieldName(path);
16778
+ return ((_a = this.translate) === null || _a === void 0 ? void 0 : _a.instant(i18nFieldName)) || i18nFieldName;
16777
16779
  }
16778
16780
  /* -- protected methods -- */
16779
16781
  getFormError(form, opts) {
@@ -16781,7 +16783,7 @@ class AppForm {
16781
16783
  return undefined;
16782
16784
  return this.errorTranslator.translateErrors(this.form, Object.assign({ controlPathTranslator: this }, opts));
16783
16785
  }
16784
- getFieldName(path) {
16786
+ getI18nFieldName(path) {
16785
16787
  return (this.i18nFieldPrefix || '') + changeCaseToUnderscore(path).toUpperCase();
16786
16788
  }
16787
16789
  registerSubscription(sub) {
@@ -16791,7 +16793,7 @@ class AppForm {
16791
16793
  return this.autocompleteHelper.add(fieldName, opts);
16792
16794
  }
16793
16795
  markForCheck() {
16794
- // Should be override by subclasses
16796
+ // Should be overwritten by subclasses
16795
16797
  console.warn('markForCheck() has been called, but is not overwritten by component ' + this.constructor.name);
16796
16798
  }
16797
16799
  }
@@ -22864,27 +22866,27 @@ class AppEntityEditor extends AppTabEditor {
22864
22866
  }
22865
22867
  onBeforeEntityLoad() {
22866
22868
  return __awaiter(this, void 0, void 0, function* () {
22867
- // can be overwrite by subclasses
22869
+ // can be overwritten by subclasses
22868
22870
  });
22869
22871
  }
22870
22872
  onNewEntity(data, options) {
22871
22873
  return __awaiter(this, void 0, void 0, function* () {
22872
- // can be overwrite by subclasses
22874
+ // can be overwritten by subclasses
22873
22875
  });
22874
22876
  }
22875
22877
  onEntityLoaded(data, options) {
22876
22878
  return __awaiter(this, void 0, void 0, function* () {
22877
- // can be overwrite by subclasses
22879
+ // can be overwritten by subclasses
22878
22880
  });
22879
22881
  }
22880
22882
  onEntitySaved(data) {
22881
22883
  return __awaiter(this, void 0, void 0, function* () {
22882
- // can be overwrite by subclasses
22884
+ // can be overwritten by subclasses
22883
22885
  });
22884
22886
  }
22885
22887
  onEntityDeleted(data) {
22886
22888
  return __awaiter(this, void 0, void 0, function* () {
22887
- // can be overwrite by subclasses
22889
+ // can be overwritten by subclasses
22888
22890
  });
22889
22891
  }
22890
22892
  computeUsageMode(data) {