@datagrok-libraries/utils 4.6.13 → 4.7.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.
package/src/to-console.js CHANGED
@@ -16,4 +16,4 @@ export function errorToConsole(err) {
16
16
  export function rectToConsole(rect) {
17
17
  return `(x=${rect.x}, y=${rect.y}, w=${rect.width}, h=${rect.height})`;
18
18
  }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tY29uc29sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRvLWNvbnNvbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxVQUFVLGNBQWMsQ0FBQyxHQUFROztJQUNyQyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLFlBQVksTUFBTSxFQUFFLENBQUM7UUFDckQsT0FBTyxHQUFhLENBQUM7SUFDdkIsQ0FBQztTQUFNLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxRQUFRLElBQUksR0FBRyxZQUFZLE1BQU0sQ0FBQyxJQUFJLGdCQUFnQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3hGLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztTQUFNLElBQUksR0FBRyxZQUFZLEtBQUssRUFBRSxDQUFDO1FBQ2hDLE9BQU8sTUFBQyxHQUFhLENBQUMsS0FBSyxtQ0FBSyxHQUFhLENBQUMsT0FBTyxDQUFDO0lBQ3hELENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDeEIsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLElBQWE7SUFDekMsT0FBTyxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQztBQUN6RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcblxuXG5leHBvcnQgZnVuY3Rpb24gZXJyb3JUb0NvbnNvbGUoZXJyOiBhbnkpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGVyciA9PT0gJ3N0cmluZycgfHwgZXJyIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgcmV0dXJuIGVyciBhcyBzdHJpbmc7XG4gIH0gZWxzZSBpZiAoKHR5cGVvZiBlcnIgPT0gJ29iamVjdCcgfHwgZXJyIGluc3RhbmNlb2YgT2JqZWN0KSAmJiAnJHRocm93bkpzRXJyb3InIGluIGVycikge1xuICAgIHJldHVybiBlcnJvclRvQ29uc29sZShlcnJbJyR0aHJvd25Kc0Vycm9yJ10pO1xuICB9IGVsc2UgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgcmV0dXJuIChlcnIgYXMgRXJyb3IpLnN0YWNrID8/IChlcnIgYXMgRXJyb3IpLm1lc3NhZ2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGVyci50b1N0cmluZygpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWN0VG9Db25zb2xlKHJlY3Q6IERHLlJlY3QpOiBzdHJpbmcge1xuICByZXR1cm4gYCh4PSR7cmVjdC54fSwgeT0ke3JlY3QueX0sIHc9JHtyZWN0LndpZHRofSwgaD0ke3JlY3QuaGVpZ2h0fSlgO1xufVxuIl19
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tY29uc29sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRvLWNvbnNvbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxVQUFVLGNBQWMsQ0FBQyxHQUFROztJQUNyQyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLFlBQVksTUFBTSxFQUFFO1FBQ3BELE9BQU8sR0FBYSxDQUFDO0tBQ3RCO1NBQU0sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFFBQVEsSUFBSSxHQUFHLFlBQVksTUFBTSxDQUFDLElBQUksZ0JBQWdCLElBQUksR0FBRyxFQUFFO1FBQ3ZGLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7S0FDOUM7U0FBTSxJQUFJLEdBQUcsWUFBWSxLQUFLLEVBQUU7UUFDL0IsT0FBTyxNQUFDLEdBQWEsQ0FBQyxLQUFLLG1DQUFLLEdBQWEsQ0FBQyxPQUFPLENBQUM7S0FDdkQ7U0FBTTtRQUNMLE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBQ3ZCO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBYTtJQUN6QyxPQUFPLE1BQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDO0FBQ3pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBlcnJvclRvQ29uc29sZShlcnI6IGFueSk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgZXJyID09PSAnc3RyaW5nJyB8fCBlcnIgaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICByZXR1cm4gZXJyIGFzIHN0cmluZztcbiAgfSBlbHNlIGlmICgodHlwZW9mIGVyciA9PSAnb2JqZWN0JyB8fCBlcnIgaW5zdGFuY2VvZiBPYmplY3QpICYmICckdGhyb3duSnNFcnJvcicgaW4gZXJyKSB7XG4gICAgcmV0dXJuIGVycm9yVG9Db25zb2xlKGVyclsnJHRocm93bkpzRXJyb3InXSk7XG4gIH0gZWxzZSBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICByZXR1cm4gKGVyciBhcyBFcnJvcikuc3RhY2sgPz8gKGVyciBhcyBFcnJvcikubWVzc2FnZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZXJyLnRvU3RyaW5nKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlY3RUb0NvbnNvbGUocmVjdDogREcuUmVjdCk6IHN0cmluZyB7XG4gIHJldHVybiBgKHg9JHtyZWN0Lnh9LCB5PSR7cmVjdC55fSwgdz0ke3JlY3Qud2lkdGh9LCBoPSR7cmVjdC5oZWlnaHR9KWA7XG59XG4iXX0=
package/src/transform.js CHANGED
@@ -73,4 +73,4 @@ export class Viewport {
73
73
  }
74
74
  }
75
75
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHdEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBUzFCLDRCQUE0QjtBQUM1QixNQUFNLGdCQUFnQjtJQUNwQixhQUFhLENBQUMsTUFBYyxFQUFFLE1BQWMsRUFBRSxHQUFXLEVBQUUsR0FBVyxFQUFFLE9BQWlCO1FBQ3ZGLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDekQsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBRSxHQUFXLEVBQUUsR0FBVyxFQUFFLE9BQWlCO1FBQ3RGLE9BQU8sT0FBTyxDQUFDLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFHRCx5QkFBeUI7QUFDekIsTUFBTSxhQUFhO0lBQ2pCLGFBQWEsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsT0FBaUI7UUFDdkYsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMs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QU0sQ0FBQyxLQUFLLEVBQ3RFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWE7UUFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQ3RFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxRQUFRLENBQUMsTUFBYztRQUNyQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFDdkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxRQUFRLENBQUMsTUFBYztRQUNyQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDdkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFlLElBQWMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUcsT0FBTyxDQUFDLE1BQWdCLElBQWMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFOUcsa0JBQWtCLENBQUMsQ0FBMkIsRUFBRSxLQUEwQixFQUFFLEtBQTBCO1FBQ3BHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUNyRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUNELElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUNyRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekQsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5cblxuY29uc3QgbWluTG9nRmxvYXQgPSAxZS0zMDtcblxuLyoqIFJlcHJlc2VudHMgMUQgdHJhbnNmb3JtYXRpb24gYmV0d2VlbiBzY3JlZW4gYW5kIHdvcmxkIGNvb3JkaW5hdGVzICovXG5pbnRlcmZhY2UgSVRyYW5zZm9ybSB7XG4gIHNjcmVlblRvV29ybGQoc2NyZWVuOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIGludmVyc2U/OiBib29sZWFuKTogbnVtYmVyO1xuICB3b3JsZFRvU2NyZWVuKHdvcmxkOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIGludmVyc2U/OiBib29sZWFuKTogbnVtYmVyO1xufVxuXG5cbi8qKiBMaW5lYXIgdHJhbnNmb3JtYXRpb24gKi9cbmNsYXNzIF9MaW5lYXJUcmFuc2Zvcm0gaW1wbGVtZW50cyBJVHJhbnNmb3JtIHtcbiAgc2NyZWVuVG9Xb3JsZChzY3JlZW46IG51bWJlciwgbGVuZ3RoOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgaW52ZXJzZT86IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIGNvbnN0IGQgPSBpbnZlcnNlID8gMSAtIHNjcmVlbiAvIGxlbmd0aDogc2NyZWVuIC8gbGVuZ3RoO1xuICAgIHJldHVybiBtaW4gKyBkICogKG1heCAtIG1pbik7XG4gIH1cblxuICB3b3JsZFRvU2NyZWVuKHdvcmxkOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIGludmVyc2U/OiBib29sZWFuKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW52ZXJzZSA/XG4gICAgICAoKDEgLSAoKHdvcmxkIC0gbWluKSkgLyAobWF4IC0gbWluKSkgKiBsZW5ndGgpIDpcbiAgICAgICgod29ybGQgLSBtaW4pIC8gKG1heCAtIG1pbikgKiBsZW5ndGgpO1xuICB9XG59XG5cblxuLyoqIExvZyB0cmFuc2Zvcm1hdGlvbiAqL1xuY2xhc3MgX0xvZ1RyYW5zZm9ybSBpbXBsZW1lbnRzIElUcmFuc2Zvcm0ge1xuICBzY3JlZW5Ub1dvcmxkKHNjcmVlbjogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBpbnZlcnNlPzogYm9vbGVhbik6IG51bWJlciB7XG4gICAgbWluID0gKG1pbiA8IG1pbkxvZ0Zsb2F0ID8gbWluTG9nRmxvYXQgOiBtaW4pO1xuXG4gICAgY29uc3QgbWF4TG9nID0gTWF0aC5sb2cobWF4KTtcbiAgICBjb25zdCBtaW5Mb2cgPSBNYXRoLmxvZyhtaW4pO1xuICAgIHJldHVybiBNYXRoLmV4cChtaW5Mb2cgKyAobWF4TG9nIC0gbWluTG9nKSAqIChpbnZlcnNlID8gbGVuZ3RoIC0gc2NyZWVuIDogc2NyZWVuKSAvIGxlbmd0aCk7XG4gIH1cblxuICB3b3JsZFRvU2NyZWVuKHdvcmxkOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIGludmVyc2U/OiBib29sZWFuKTogbnVtYmVyIHtcbiAgICBpZiAod29ybGQgPD0gMCkgcmV0dXJuIE5hTjtcblxuICAgIC8vZWxpbWluYXRlcyBwcm9ibGVtcyB3aXRoIHJvdW5kaW5nXG4gICAgaWYgKE1hdGguYWJzKHdvcmxkIC0gbWluKSA8IG1pbkxvZ0Zsb2F0KSByZXR1cm4gaW52ZXJzZSA/IGxlbmd0aCA6IDAuMDtcbiAgICBpZiAoTWF0aC5hYnMod29ybGQgLSBtYXgpIDwgbWluTG9nRmxvYXQpIHJldHVybiBpbnZlcnNlID8gMC4wIDogbGVuZ3RoO1xuXG4gICAgbWluID0gKG1pbiA8IG1pbkxvZ0Zsb2F0ID8gbWluTG9nRmxvYXQgOiBtaW4pO1xuICAgIHdvcmxkID0gKHdvcmxkIDwgbWluTG9nRmxvYXQgPyBtaW5Mb2dGbG9hdCA6IHdvcmxkKTtcblxuICAgIGNvbnN0IHJlcyA9IChsZW5ndGggKiBNYXRoLmxvZyh3b3JsZCAvIG1pbikgLyBNYXRoLmxvZyhtYXggLyBtaW4pKTtcbiAgICByZXR1cm4gaW52ZXJzZSA/IGxlbmd0aCAtIHJlcyA6IHJlcztcbiAgfVxufVxuXG5jb25zdCBsaW5lYXJUcmFuc2Zvcm0gPSBuZXcgX0xpbmVhclRyYW5zZm9ybSgpO1xuY29uc3QgbG9nVHJhbnNmb3JtID0gbmV3IF9Mb2dUcmFuc2Zvcm0oKTtcblxuXG4vKiogUHJvdmlkZXMgY29udmVuaWVudCBtZXRob2RzIGZvciBtYXBwaW5nIGJldHdlZW4gc2NyZWVuIGFuZCB3b3JsZCBjb29yZGluYXRlcyAqL1xuZXhwb3J0IGNsYXNzIFZpZXdwb3J0IHtcbiAgd29ybGQ6IERHLlJlY3Q7XG4gIHNjcmVlbjogREcuUmVjdDtcbiAgbG9nWDogYm9vbGVhbiA9IGZhbHNlO1xuICBsb2dZOiBib29sZWFuID0gZmFsc2U7XG4gIGludmVyc2VYOiBib29sZWFuID0gZmFsc2U7XG4gIGludmVyc2VZOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZ2V0IHh0KCk6IElUcmFuc2Zvcm0geyByZXR1cm4gdGhpcy5sb2dYID8gbG9nVHJhbnNmb3JtIDogbGluZWFyVHJhbnNmb3JtOyB9XG4gIGdldCB5dCgpOiBJVHJhbnNmb3JtIHsgcmV0dXJuIHRoaXMubG9nWSA/IGxvZ1RyYW5zZm9ybSA6IGxpbmVhclRyYW5zZm9ybTsgfVxuXG4gIGNvbnN0cnVjdG9yKHdvcmxkOiBERy5SZWN0LCBzY3JlZW46IERHLlJlY3QsIGxvZ1ggPSBmYWxzZSwgbG9nWSA9IGZhbHNlKSB7XG4gICAgdGhpcy53b3JsZCA9IHdvcmxkO1xuICAgIHRoaXMuc2NyZWVuID0gc2NyZWVuO1xuICAgIHRoaXMubG9nWCA9IGxvZ1g7XG4gICAgdGhpcy5sb2dZID0gbG9nWTtcbiAgfVxuXG4gIHhUb1NjcmVlbih3b3JsZDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zY3JlZW4ubGVmdCArIHRoaXMueHQud29ybGRUb1NjcmVlbih3b3JsZCwgdGhpcy5zY3JlZW4ud2lkdGgsXG4gICAgICB0aGlzLndvcmxkLm1pblgsIHRoaXMud29ybGQubWF4WCwgdGhpcy5pbnZlcnNlWCk7XG4gIH1cblxuICB5VG9TY3JlZW4od29ybGQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2NyZWVuLnRvcCArIHRoaXMueXQud29ybGRUb1NjcmVlbih3b3JsZCwgdGhpcy5zY3JlZW4uaGVpZ2h0LFxuICAgICAgdGhpcy53b3JsZC5taW5ZLCB0aGlzLndvcmxkLm1heFksICF0aGlzLmludmVyc2VZKTtcbiAgfVxuXG4gIHhUb1dvcmxkKHNjcmVlbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy54dC5zY3JlZW5Ub1dvcmxkKHNjcmVlbiAtIHRoaXMuc2NyZWVuLmxlZnQsIHRoaXMuc2NyZWVuLndpZHRoLFxuICAgICAgdGhpcy53b3JsZC5taW5YLCB0aGlzLndvcmxkLm1heFgsIHRoaXMuaW52ZXJzZVgpO1xuICB9XG5cbiAgeVRvV29ybGQoc2NyZWVuOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnl0LnNjcmVlblRvV29ybGQoc2NyZWVuIC0gdGhpcy5zY3JlZW4udG9wLCB0aGlzLnNjcmVlbi5oZWlnaHQsXG4gICAgICB0aGlzLndvcmxkLm1pblksIHRoaXMud29ybGQubWF4WSwgIXRoaXMuaW52ZXJzZVkpO1xuICB9XG5cbiAgdG9TY3JlZW4od29ybGQ6IERHLlBvaW50KTogREcuUG9pbnQgeyByZXR1cm4gbmV3IERHLlBvaW50KHRoaXMueFRvU2NyZWVuKHdvcmxkLngpLCB0aGlzLnlUb1NjcmVlbih3b3JsZC55KSk7IH1cbiAgdG9Xb3JsZChzY3JlZW46IERHLlBvaW50KTogREcuUG9pbnQgeyByZXR1cm4gbmV3IERHLlBvaW50KHRoaXMueFRvV29ybGQoc2NyZWVuLngpLCB0aGlzLnlUb1dvcmxkKHNjcmVlbi55KSk7IH1cblxuICBkcmF3Q29vcmRpbmF0ZUdyaWQoZzogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCB4QXhpczogREcuUmVjdCB8IHVuZGVmaW5lZCwgeUF4aXM6IERHLlJlY3QgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAoeEF4aXMpIHtcbiAgICAgIERHLlBhaW50LmhvcnpBeGlzKGcsIHRoaXMud29ybGQubWluWCwgdGhpcy53b3JsZC5tYXhYLCB4QXhpcy54LCB4QXhpcy55LFxuICAgICAgICB4QXhpcy53aWR0aCwgeEF4aXMuaGVpZ2h0LCB0aGlzLmxvZ1gsIHRoaXMuaW52ZXJzZVgpO1xuICAgIH1cbiAgICBpZiAoeUF4aXMpIHtcbiAgICAgIERHLlBhaW50LnZlcnRBeGlzKGcsIHRoaXMud29ybGQubWluWSwgdGhpcy53b3JsZC5tYXhZLCB5QXhpcy54LCB5QXhpcy55LFxuICAgICAgICB5QXhpcy53aWR0aCwgeUF4aXMuaGVpZ2h0LCB0aGlzLmxvZ1ksIHRoaXMuaW52ZXJzZVkpO1xuICAgIH1cbiAgfVxufVxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHdEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBUzFCLDRCQUE0QjtBQUM1QixNQUFNLGdCQUFnQjtJQUNwQixhQUFhLENBQUMsTUFBYyxFQUFFLE1BQWMsRUFBRSxHQUFXLEVBQUUsR0FBVyxFQUFFLE9BQWlCO1FBQ3ZGLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDekQsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBRSxHQUFXLEVBQUUsR0FBVyxFQUFFLE9BQWlCO1FBQ3RGLE9BQU8sT0FBTyxDQUFDLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFHRCx5QkFBeUI7QUFDekIsTUFBTSxhQUFhO0lBQ2pCLGFBQWEsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsT0FBaUI7UUFDdkYsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMs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QU0sQ0FBQyxLQUFLLEVBQ3RFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWE7UUFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQ3RFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxRQUFRLENBQUMsTUFBYztRQUNyQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFDdkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxRQUFRLENBQUMsTUFBYztRQUNyQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDdkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFlLElBQWMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUcsT0FBTyxDQUFDLE1BQWdCLElBQWMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFOUcsa0JBQWtCLENBQUMsQ0FBMkIsRUFBRSxLQUEwQixFQUFFLEtBQTBCO1FBQ3BHLElBQUksS0FBSyxFQUFFO1lBQ1QsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsSUFBSSxLQUFLLEVBQUU7WUFDVCxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUNyRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG5cbmNvbnN0IG1pbkxvZ0Zsb2F0ID0gMWUtMzA7XG5cbi8qKiBSZXByZXNlbnRzIDFEIHRyYW5zZm9ybWF0aW9uIGJldHdlZW4gc2NyZWVuIGFuZCB3b3JsZCBjb29yZGluYXRlcyAqL1xuaW50ZXJmYWNlIElUcmFuc2Zvcm0ge1xuICBzY3JlZW5Ub1dvcmxkKHNjcmVlbjogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBpbnZlcnNlPzogYm9vbGVhbik6IG51bWJlcjtcbiAgd29ybGRUb1NjcmVlbih3b3JsZDogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBpbnZlcnNlPzogYm9vbGVhbik6IG51bWJlcjtcbn1cblxuXG4vKiogTGluZWFyIHRyYW5zZm9ybWF0aW9uICovXG5jbGFzcyBfTGluZWFyVHJhbnNmb3JtIGltcGxlbWVudHMgSVRyYW5zZm9ybSB7XG4gIHNjcmVlblRvV29ybGQoc2NyZWVuOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIGludmVyc2U/OiBib29sZWFuKTogbnVtYmVyIHtcbiAgICBjb25zdCBkID0gaW52ZXJzZSA/IDEgLSBzY3JlZW4gLyBsZW5ndGg6IHNjcmVlbiAvIGxlbmd0aDtcbiAgICByZXR1cm4gbWluICsgZCAqIChtYXggLSBtaW4pO1xuICB9XG5cbiAgd29ybGRUb1NjcmVlbih3b3JsZDogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBpbnZlcnNlPzogYm9vbGVhbik6IG51bWJlciB7XG4gICAgcmV0dXJuIGludmVyc2UgP1xuICAgICAgKCgxIC0gKCh3b3JsZCAtIG1pbikpIC8gKG1heCAtIG1pbikpICogbGVuZ3RoKSA6XG4gICAgICAoKHdvcmxkIC0gbWluKSAvIChtYXggLSBtaW4pICogbGVuZ3RoKTtcbiAgfVxufVxuXG5cbi8qKiBMb2cgdHJhbnNmb3JtYXRpb24gKi9cbmNsYXNzIF9Mb2dUcmFuc2Zvcm0gaW1wbGVtZW50cyBJVHJhbnNmb3JtIHtcbiAgc2NyZWVuVG9Xb3JsZChzY3JlZW46IG51bWJlciwgbGVuZ3RoOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgaW52ZXJzZT86IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIG1pbiA9IChtaW4gPCBtaW5Mb2dGbG9hdCA/IG1pbkxvZ0Zsb2F0IDogbWluKTtcblxuICAgIGNvbnN0IG1heExvZyA9IE1hdGgubG9nKG1heCk7XG4gICAgY29uc3QgbWluTG9nID0gTWF0aC5sb2cobWluKTtcbiAgICByZXR1cm4gTWF0aC5leHAobWluTG9nICsgKG1heExvZyAtIG1pbkxvZykgKiAoaW52ZXJzZSA/IGxlbmd0aCAtIHNjcmVlbiA6IHNjcmVlbikgLyBsZW5ndGgpO1xuICB9XG5cbiAgd29ybGRUb1NjcmVlbih3b3JsZDogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBpbnZlcnNlPzogYm9vbGVhbik6IG51bWJlciB7XG4gICAgaWYgKHdvcmxkIDw9IDApIHJldHVybiBOYU47XG5cbiAgICAvL2VsaW1pbmF0ZXMgcHJvYmxlbXMgd2l0aCByb3VuZGluZ1xuICAgIGlmIChNYXRoLmFicyh3b3JsZCAtIG1pbikgPCBtaW5Mb2dGbG9hdCkgcmV0dXJuIGludmVyc2UgPyBsZW5ndGggOiAwLjA7XG4gICAgaWYgKE1hdGguYWJzKHdvcmxkIC0gbWF4KSA8IG1pbkxvZ0Zsb2F0KSByZXR1cm4gaW52ZXJzZSA/IDAuMCA6IGxlbmd0aDtcblxuICAgIG1pbiA9IChtaW4gPCBtaW5Mb2dGbG9hdCA/IG1pbkxvZ0Zsb2F0IDogbWluKTtcbiAgICB3b3JsZCA9ICh3b3JsZCA8IG1pbkxvZ0Zsb2F0ID8gbWluTG9nRmxvYXQgOiB3b3JsZCk7XG5cbiAgICBjb25zdCByZXMgPSAobGVuZ3RoICogTWF0aC5sb2cod29ybGQgLyBtaW4pIC8gTWF0aC5sb2cobWF4IC8gbWluKSk7XG4gICAgcmV0dXJuIGludmVyc2UgPyBsZW5ndGggLSByZXMgOiByZXM7XG4gIH1cbn1cblxuY29uc3QgbGluZWFyVHJhbnNmb3JtID0gbmV3IF9MaW5lYXJUcmFuc2Zvcm0oKTtcbmNvbnN0IGxvZ1RyYW5zZm9ybSA9IG5ldyBfTG9nVHJhbnNmb3JtKCk7XG5cblxuLyoqIFByb3ZpZGVzIGNvbnZlbmllbnQgbWV0aG9kcyBmb3IgbWFwcGluZyBiZXR3ZWVuIHNjcmVlbiBhbmQgd29ybGQgY29vcmRpbmF0ZXMgKi9cbmV4cG9ydCBjbGFzcyBWaWV3cG9ydCB7XG4gIHdvcmxkOiBERy5SZWN0O1xuICBzY3JlZW46IERHLlJlY3Q7XG4gIGxvZ1g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbG9nWTogYm9vbGVhbiA9IGZhbHNlO1xuICBpbnZlcnNlWDogYm9vbGVhbiA9IGZhbHNlO1xuICBpbnZlcnNlWTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGdldCB4dCgpOiBJVHJhbnNmb3JtIHsgcmV0dXJuIHRoaXMubG9nWCA/IGxvZ1RyYW5zZm9ybSA6IGxpbmVhclRyYW5zZm9ybTsgfVxuICBnZXQgeXQoKTogSVRyYW5zZm9ybSB7IHJldHVybiB0aGlzLmxvZ1kgPyBsb2dUcmFuc2Zvcm0gOiBsaW5lYXJUcmFuc2Zvcm07IH1cblxuICBjb25zdHJ1Y3Rvcih3b3JsZDogREcuUmVjdCwgc2NyZWVuOiBERy5SZWN0LCBsb2dYID0gZmFsc2UsIGxvZ1kgPSBmYWxzZSkge1xuICAgIHRoaXMud29ybGQgPSB3b3JsZDtcbiAgICB0aGlzLnNjcmVlbiA9IHNjcmVlbjtcbiAgICB0aGlzLmxvZ1ggPSBsb2dYO1xuICAgIHRoaXMubG9nWSA9IGxvZ1k7XG4gIH1cblxuICB4VG9TY3JlZW4od29ybGQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2NyZWVuLmxlZnQgKyB0aGlzLnh0LndvcmxkVG9TY3JlZW4od29ybGQsIHRoaXMuc2NyZWVuLndpZHRoLFxuICAgICAgdGhpcy53b3JsZC5taW5YLCB0aGlzLndvcmxkLm1heFgsIHRoaXMuaW52ZXJzZVgpO1xuICB9XG5cbiAgeVRvU2NyZWVuKHdvcmxkOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNjcmVlbi50b3AgKyB0aGlzLnl0LndvcmxkVG9TY3JlZW4od29ybGQsIHRoaXMuc2NyZWVuLmhlaWdodCxcbiAgICAgIHRoaXMud29ybGQubWluWSwgdGhpcy53b3JsZC5tYXhZLCAhdGhpcy5pbnZlcnNlWSk7XG4gIH1cblxuICB4VG9Xb3JsZChzY3JlZW46IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMueHQuc2NyZWVuVG9Xb3JsZChzY3JlZW4gLSB0aGlzLnNjcmVlbi5sZWZ0LCB0aGlzLnNjcmVlbi53aWR0aCxcbiAgICAgIHRoaXMud29ybGQubWluWCwgdGhpcy53b3JsZC5tYXhYLCB0aGlzLmludmVyc2VYKTtcbiAgfVxuXG4gIHlUb1dvcmxkKHNjcmVlbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy55dC5zY3JlZW5Ub1dvcmxkKHNjcmVlbiAtIHRoaXMuc2NyZWVuLnRvcCwgdGhpcy5zY3JlZW4uaGVpZ2h0LFxuICAgICAgdGhpcy53b3JsZC5taW5ZLCB0aGlzLndvcmxkLm1heFksICF0aGlzLmludmVyc2VZKTtcbiAgfVxuXG4gIHRvU2NyZWVuKHdvcmxkOiBERy5Qb2ludCk6IERHLlBvaW50IHsgcmV0dXJuIG5ldyBERy5Qb2ludCh0aGlzLnhUb1NjcmVlbih3b3JsZC54KSwgdGhpcy55VG9TY3JlZW4od29ybGQueSkpOyB9XG4gIHRvV29ybGQoc2NyZWVuOiBERy5Qb2ludCk6IERHLlBvaW50IHsgcmV0dXJuIG5ldyBERy5Qb2ludCh0aGlzLnhUb1dvcmxkKHNjcmVlbi54KSwgdGhpcy55VG9Xb3JsZChzY3JlZW4ueSkpOyB9XG5cbiAgZHJhd0Nvb3JkaW5hdGVHcmlkKGc6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgeEF4aXM6IERHLlJlY3QgfCB1bmRlZmluZWQsIHlBeGlzOiBERy5SZWN0IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgaWYgKHhBeGlzKSB7XG4gICAgICBERy5QYWludC5ob3J6QXhpcyhnLCB0aGlzLndvcmxkLm1pblgsIHRoaXMud29ybGQubWF4WCwgeEF4aXMueCwgeEF4aXMueSxcbiAgICAgICAgeEF4aXMud2lkdGgsIHhBeGlzLmhlaWdodCwgdGhpcy5sb2dYLCB0aGlzLmludmVyc2VYKTtcbiAgICB9XG4gICAgaWYgKHlBeGlzKSB7XG4gICAgICBERy5QYWludC52ZXJ0QXhpcyhnLCB0aGlzLndvcmxkLm1pblksIHRoaXMud29ybGQubWF4WSwgeUF4aXMueCwgeUF4aXMueSxcbiAgICAgICAgeUF4aXMud2lkdGgsIHlBeGlzLmhlaWdodCwgdGhpcy5sb2dZLCB0aGlzLmludmVyc2VZKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
package/src/u2.d.ts CHANGED
@@ -14,6 +14,7 @@ export declare namespace u2 {
14
14
  appTitle?: string;
15
15
  appSubTitle?: string;
16
16
  bottomLine?: boolean;
17
+ iconSize?: number;
17
18
  }
18
19
  function appHeader(header: IAppInfo): HTMLElement;
19
20
  namespace tools {
package/src/u2.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"u2.d.ts","sourceRoot":"","sources":["u2.ts"],"names":[],"mappings":"AAGA,OAAO,UAAU,CAAC;AAGlB,yBAAiB,EAAE,CAAC;IAElB,MAAM;IACN,UAAiB,MAAM,CAAC;QAEtB,kCAAkC;QAClC,SAAgB,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,WAAW,CAE9C;QAED,oCAAoC;QACpC,SAAgB,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,WAAW,CAE9C;KAEF;IAED,UAAiB,QAAQ;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB;IAED,SAAgB,SAAS,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,CAwBvD;IAGD,UAAiB,KAAK,CAAC;QAErB;0CACkC;QAClC,SAAsB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,0BAW1E;KACF;CACF"}
1
+ {"version":3,"file":"u2.d.ts","sourceRoot":"","sources":["u2.ts"],"names":[],"mappings":"AAGA,OAAO,UAAU,CAAC;AAGlB,yBAAiB,EAAE,CAAC;IAElB,MAAM;IACN,UAAiB,MAAM,CAAC;QAEtB,kCAAkC;QAClC,SAAgB,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,WAAW,CAE9C;QAED,oCAAoC;QACpC,SAAgB,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,WAAW,CAE9C;KAEF;IAED,UAAiB,QAAQ;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAED,SAAgB,SAAS,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,CA4BvD;IAGD,UAAiB,KAAK,CAAC;QAErB;0CACkC;QAClC,SAAsB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,0BAW1E;KACF;CACF"}
package/src/u2.js CHANGED
@@ -30,6 +30,10 @@ export var u2;
30
30
  function appHeader(header) {
31
31
  const icon = ui.iconImage('', header.iconPath);
32
32
  $(icon).addClass('ui-app-header-icon').css('margin-right', '20px');
33
+ if (header.iconSize) {
34
+ icon.style.width = `${header.iconSize}px`;
35
+ icon.style.height = `${header.iconSize}px`;
36
+ }
33
37
  const appHeaderDiv = panels.horz([]);
34
38
  if (header.appTitle) {
35
39
  appHeaderDiv.classList.add('u2-app-header-with-name');
@@ -73,4 +77,4 @@ export var u2;
73
77
  tools.runAsync = runAsync;
74
78
  })(tools = u2.tools || (u2.tools = {}));
75
79
  })(u2 || (u2 = {}));
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidTIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxJQUFJLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxDQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3pCLE9BQU8sVUFBVSxDQUFDO0FBR2xCLE1BQU0sS0FBVyxFQUFFLENBc0VsQjtBQXRFRCxXQUFpQixFQUFFO0lBRWpCLE1BQU07SUFDTixJQUFpQixNQUFNLENBWXRCO0lBWkQsV0FBaUIsTUFBTTtRQUVyQixrQ0FBa0M7UUFDbEMsU0FBZ0IsSUFBSSxDQUFDLEtBQVk7WUFDL0IsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFGZSxXQUFJLE9BRW5CLENBQUE7UUFFRCxvQ0FBb0M7UUFDcEMsU0FBZ0IsSUFBSSxDQUFDLEtBQVk7WUFDL0IsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFGZSxXQUFJLE9BRW5CLENBQUE7SUFFSCxDQUFDLEVBWmdCLE1BQU0sR0FBTixTQUFNLEtBQU4sU0FBTSxRQVl0QjtJQVdELFNBQWdCLFNBQVMsQ0FBQyxNQUFnQjtRQUN4QyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQixZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsNEJBQTRCLENBQUMsQ0FBQyxFQUFFLHVDQUF1QyxDQUFDLENBQUM7WUFDOUgsSUFBSSxNQUFNLENBQUMsV0FBVztnQkFDcEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2pELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDOztZQUVDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztZQUM5QixFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFDL0IsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsRUFBQyxLQUFLLEVBQUUsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQ2xILENBQUMsQ0FBQztRQUNILFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDdkQsWUFBWSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxJQUFJLE1BQU0sQ0FBQyxVQUFVO1lBQ25CLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDMUQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQXhCZSxZQUFTLFlBd0J4QixDQUFBO0lBR0QsSUFBaUIsS0FBSyxDQWdCckI7SUFoQkQsV0FBaUIsS0FBSztRQUVwQjswQ0FDa0M7UUFDbEMsU0FBc0IsUUFBUSxDQUFJLElBQWlCLEVBQUUsSUFBc0I7O2dCQUN6RSxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLENBQUM7b0JBQ0gsT0FBTyxNQUFNLElBQUksRUFBRSxDQUFDO2dCQUN0QixDQUFDO2dCQUNELE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBVyxDQUFDLENBQUM7Z0JBQzlCLENBQUM7d0JBQ08sQ0FBQztvQkFDUCxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNyQyxDQUFDO1lBQ0gsQ0FBQztTQUFBO1FBWHFCLGNBQVEsV0FXN0IsQ0FBQTtJQUNILENBQUMsRUFoQmdCLEtBQUssR0FBTCxRQUFLLEtBQUwsUUFBSyxRQWdCckI7QUFDSCxDQUFDLEVBdEVnQixFQUFFLEtBQUYsRUFBRSxRQXNFbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgJCBmcm9tICdjYXNoLWRvbSc7XG5pbXBvcnQgJy4vdTIuY3NzJztcblxuXG5leHBvcnQgbmFtZXNwYWNlIHUyIHtcblxuICAvKiogKi9cbiAgZXhwb3J0IG5hbWVzcGFjZSBwYW5lbHMge1xuXG4gICAgLyoqIFZlcnRpY2FsbHkgcG9zaXRpb25lZCBpdGVtcyAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiB2ZXJ0KGl0ZW1zOiBhbnlbXSk6IEhUTUxFbGVtZW50IHtcbiAgICAgIHJldHVybiB1aS5kaXZWKGl0ZW1zLm1hcCgoaXRlbSkgPT4gdWkucmVuZGVyKGl0ZW0pKSwgeyBjbGFzc2VzOiAndTItcGFuZWwnfSk7XG4gICAgfVxuXG4gICAgLyoqIEhvcml6b250YWxseSBwb3NpdGlvbmVkIGl0ZW1zICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGhvcnooaXRlbXM6IGFueVtdKTogSFRNTEVsZW1lbnQge1xuICAgICAgcmV0dXJuIHVpLmRpdkgoaXRlbXMubWFwKChpdGVtKSA9PiB1aS5yZW5kZXIoaXRlbSkpLCB7IGNsYXNzZXM6ICd1Mi1wYW5lbCd9KTtcbiAgICB9XG5cbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSUFwcEluZm8ge1xuICAgIGljb25QYXRoOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICBsZWFybk1vcmVVcmw/OiBzdHJpbmc7XG4gICAgYXBwVGl0bGU/OiBzdHJpbmc7XG4gICAgYXBwU3ViVGl0bGU/OiBzdHJpbmc7XG4gICAgYm90dG9tTGluZT86IGJvb2xlYW47IFxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGFwcEhlYWRlcihoZWFkZXI6IElBcHBJbmZvKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGljb24gPSB1aS5pY29uSW1hZ2UoJycsIGhlYWRlci5pY29uUGF0aCk7XG4gICAgJChpY29uKS5hZGRDbGFzcygndWktYXBwLWhlYWRlci1pY29uJykuY3NzKCdtYXJnaW4tcmlnaHQnLCAnMjBweCcpO1xuICAgIGNvbnN0IGFwcEhlYWRlckRpdiA9IHBhbmVscy5ob3J6KFtdKTtcbiAgICBpZiAoaGVhZGVyLmFwcFRpdGxlKSB7XG4gICAgICBhcHBIZWFkZXJEaXYuY2xhc3NMaXN0LmFkZCgndTItYXBwLWhlYWRlci13aXRoLW5hbWUnKTtcbiAgICAgIGNvbnN0IG5hbWVEaXYgPSB1aS5kaXZWKFt1aS5kaXZUZXh0KGhlYWRlci5hcHBUaXRsZSwgJ3UyLWFwcC1oZWFkZXItYXBwLW5hbWUtZGl2JyldLCAndTItYXBwLWhlYWRlci1hcHAtbmFtZS1hbmQtc2xvZ2FuLWRpdicpO1xuICAgICAgaWYgKGhlYWRlci5hcHBTdWJUaXRsZSlcbiAgICAgICAgbmFtZURpdi5hcHBlbmQodWkuZGl2VGV4dChoZWFkZXIuYXBwU3ViVGl0bGUpKTtcbiAgICAgIGNvbnN0IGljb25EaXYgPSB1aS5kaXYoaWNvbik7XG4gICAgICBhcHBIZWFkZXJEaXYuYXBwZW5kKHVpLmRpdkgoW2ljb25EaXYsIG5hbWVEaXZdKSk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgIGFwcEhlYWRlckRpdi5hcHBlbmQoaWNvbik7XG5cbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHBhbmVscy52ZXJ0KFtcbiAgICAgIHVpLm1hcmtkb3duKGhlYWRlci5kZXNjcmlwdGlvbiksXG4gICAgICBoZWFkZXIubGVhcm5Nb3JlVXJsID8gdWkubGluaygnTGVhcm4gbW9yZScsIGhlYWRlci5sZWFybk1vcmVVcmwsIHVuZGVmaW5lZCwge3N0eWxlOiB7bWFyZ2luTGVmdDogJzE1cHgnfX0pIDogbnVsbFxuICAgIF0pO1xuICAgIGRlc2NyaXB0aW9uLmNsYXNzTGlzdC5hZGQoJ3UyLWFwcC1oZWFkZXItZGVzY3JpcHRpb24nKTtcbiAgICBhcHBIZWFkZXJEaXYuYXBwZW5kKGRlc2NyaXB0aW9uKTtcbiAgICBpZiAoaGVhZGVyLmJvdHRvbUxpbmUpXG4gICAgICBhcHBIZWFkZXJEaXYuY2xhc3NMaXN0LmFkZCgndTItYXBwLWhlYWRlci1ib3R0b20tbGluZScpO1xuICAgIHJldHVybiBhcHBIZWFkZXJEaXY7XG4gIH1cblxuXG4gIGV4cG9ydCBuYW1lc3BhY2UgdG9vbHMge1xuXG4gICAgLyoqIEV4ZWN1dGVzIHtAbGluayBmdW5jfSB3aGlsZSBzaG93aW5nIHRoZSBcInJ1bm5pbmdcIiBpbmRpY2F0b3Igb24ge0BsaW5rIHJvb3R9LlxuICAgICAqIEhhbmRsZXMgYW5kIGxvZ3MgZXhjZXB0aW9ucy4gKi9cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQXN5bmM8VD4ocm9vdDogSFRNTEVsZW1lbnQsIGZ1bmM6ICgpID0+IFByb21pc2U8VD4pIHtcbiAgICAgIHVpLnNldFVwZGF0ZUluZGljYXRvcihyb290LCB0cnVlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBmdW5jKCk7XG4gICAgICB9XG4gICAgICBjYXRjaCAoZSkge1xuICAgICAgICBncm9rLmxvZy5lcnJvcihlIGFzIHN0cmluZyk7XG4gICAgICB9XG4gICAgICBmaW5hbGx5IHtcbiAgICAgICAgdWkuc2V0VXBkYXRlSW5kaWNhdG9yKHJvb3QsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iXX0=
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidTIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxJQUFJLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxDQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3pCLE9BQU8sVUFBVSxDQUFDO0FBR2xCLE1BQU0sS0FBVyxFQUFFLENBMkVsQjtBQTNFRCxXQUFpQixFQUFFO0lBRWpCLE1BQU07SUFDTixJQUFpQixNQUFNLENBWXRCO0lBWkQsV0FBaUIsTUFBTTtRQUVyQixrQ0FBa0M7UUFDbEMsU0FBZ0IsSUFBSSxDQUFDLEtBQVk7WUFDL0IsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFGZSxXQUFJLE9BRW5CLENBQUE7UUFFRCxvQ0FBb0M7UUFDcEMsU0FBZ0IsSUFBSSxDQUFDLEtBQVk7WUFDL0IsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFGZSxXQUFJLE9BRW5CLENBQUE7SUFFSCxDQUFDLEVBWmdCLE1BQU0sR0FBTixTQUFNLEtBQU4sU0FBTSxRQVl0QjtJQVlELFNBQWdCLFNBQVMsQ0FBQyxNQUFnQjtRQUN4QyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkUsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDO1lBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDO1NBQzVDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDbkIsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUN0RCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLDRCQUE0QixDQUFDLENBQUMsRUFBRSx1Q0FBdUMsQ0FBQyxDQUFDO1lBQzlILElBQUksTUFBTSxDQUFDLFdBQVc7Z0JBQ3BCLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNqRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEQ7O1lBRUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQzlCLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUMvQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxFQUFDLEtBQUssRUFBRSxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDbEgsQ0FBQyxDQUFDO1FBQ0gsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUN2RCxZQUFZLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLElBQUksTUFBTSxDQUFDLFVBQVU7WUFDbkIsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUMxRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBNUJlLFlBQVMsWUE0QnhCLENBQUE7SUFHRCxJQUFpQixLQUFLLENBZ0JyQjtJQWhCRCxXQUFpQixLQUFLO1FBRXBCOzBDQUNrQztRQUNsQyxTQUFzQixRQUFRLENBQUksSUFBaUIsRUFBRSxJQUFzQjs7Z0JBQ3pFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2xDLElBQUk7b0JBQ0YsT0FBTyxNQUFNLElBQUksRUFBRSxDQUFDO2lCQUNyQjtnQkFDRCxPQUFPLENBQUMsRUFBRTtvQkFDUixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFXLENBQUMsQ0FBQztpQkFDN0I7d0JBQ087b0JBQ04sRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDcEM7WUFDSCxDQUFDO1NBQUE7UUFYcUIsY0FBUSxXQVc3QixDQUFBO0lBQ0gsQ0FBQyxFQWhCZ0IsS0FBSyxHQUFMLFFBQUssS0FBTCxRQUFLLFFBZ0JyQjtBQUNILENBQUMsRUEzRWdCLEVBQUUsS0FBRixFQUFFLFFBMkVsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAkIGZyb20gJ2Nhc2gtZG9tJztcbmltcG9ydCAnLi91Mi5jc3MnO1xuXG5cbmV4cG9ydCBuYW1lc3BhY2UgdTIge1xuXG4gIC8qKiAqL1xuICBleHBvcnQgbmFtZXNwYWNlIHBhbmVscyB7XG5cbiAgICAvKiogVmVydGljYWxseSBwb3NpdGlvbmVkIGl0ZW1zICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHZlcnQoaXRlbXM6IGFueVtdKTogSFRNTEVsZW1lbnQge1xuICAgICAgcmV0dXJuIHVpLmRpdlYoaXRlbXMubWFwKChpdGVtKSA9PiB1aS5yZW5kZXIoaXRlbSkpLCB7IGNsYXNzZXM6ICd1Mi1wYW5lbCd9KTtcbiAgICB9XG5cbiAgICAvKiogSG9yaXpvbnRhbGx5IHBvc2l0aW9uZWQgaXRlbXMgKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaG9yeihpdGVtczogYW55W10pOiBIVE1MRWxlbWVudCB7XG4gICAgICByZXR1cm4gdWkuZGl2SChpdGVtcy5tYXAoKGl0ZW0pID0+IHVpLnJlbmRlcihpdGVtKSksIHsgY2xhc3NlczogJ3UyLXBhbmVsJ30pO1xuICAgIH1cblxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBJQXBwSW5mbyB7XG4gICAgaWNvblBhdGg6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGxlYXJuTW9yZVVybD86IHN0cmluZztcbiAgICBhcHBUaXRsZT86IHN0cmluZztcbiAgICBhcHBTdWJUaXRsZT86IHN0cmluZztcbiAgICBib3R0b21MaW5lPzogYm9vbGVhbjtcbiAgICBpY29uU2l6ZT86IG51bWJlcjtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBhcHBIZWFkZXIoaGVhZGVyOiBJQXBwSW5mbyk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBpY29uID0gdWkuaWNvbkltYWdlKCcnLCBoZWFkZXIuaWNvblBhdGgpO1xuICAgICQoaWNvbikuYWRkQ2xhc3MoJ3VpLWFwcC1oZWFkZXItaWNvbicpLmNzcygnbWFyZ2luLXJpZ2h0JywgJzIwcHgnKTtcbiAgICBpZiAoaGVhZGVyLmljb25TaXplKSB7XG4gICAgICBpY29uLnN0eWxlLndpZHRoID0gYCR7aGVhZGVyLmljb25TaXplfXB4YDtcbiAgICAgIGljb24uc3R5bGUuaGVpZ2h0ID0gYCR7aGVhZGVyLmljb25TaXplfXB4YDtcbiAgICB9XG4gICAgY29uc3QgYXBwSGVhZGVyRGl2ID0gcGFuZWxzLmhvcnooW10pO1xuICAgIGlmIChoZWFkZXIuYXBwVGl0bGUpIHtcbiAgICAgIGFwcEhlYWRlckRpdi5jbGFzc0xpc3QuYWRkKCd1Mi1hcHAtaGVhZGVyLXdpdGgtbmFtZScpO1xuICAgICAgY29uc3QgbmFtZURpdiA9IHVpLmRpdlYoW3VpLmRpdlRleHQoaGVhZGVyLmFwcFRpdGxlLCAndTItYXBwLWhlYWRlci1hcHAtbmFtZS1kaXYnKV0sICd1Mi1hcHAtaGVhZGVyLWFwcC1uYW1lLWFuZC1zbG9nYW4tZGl2Jyk7XG4gICAgICBpZiAoaGVhZGVyLmFwcFN1YlRpdGxlKVxuICAgICAgICBuYW1lRGl2LmFwcGVuZCh1aS5kaXZUZXh0KGhlYWRlci5hcHBTdWJUaXRsZSkpO1xuICAgICAgY29uc3QgaWNvbkRpdiA9IHVpLmRpdihpY29uKTtcbiAgICAgIGFwcEhlYWRlckRpdi5hcHBlbmQodWkuZGl2SChbaWNvbkRpdiwgbmFtZURpdl0pKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgYXBwSGVhZGVyRGl2LmFwcGVuZChpY29uKTtcblxuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gcGFuZWxzLnZlcnQoW1xuICAgICAgdWkubWFya2Rvd24oaGVhZGVyLmRlc2NyaXB0aW9uKSxcbiAgICAgIGhlYWRlci5sZWFybk1vcmVVcmwgPyB1aS5saW5rKCdMZWFybiBtb3JlJywgaGVhZGVyLmxlYXJuTW9yZVVybCwgdW5kZWZpbmVkLCB7c3R5bGU6IHttYXJnaW5MZWZ0OiAnMTVweCd9fSkgOiBudWxsXG4gICAgXSk7XG4gICAgZGVzY3JpcHRpb24uY2xhc3NMaXN0LmFkZCgndTItYXBwLWhlYWRlci1kZXNjcmlwdGlvbicpO1xuICAgIGFwcEhlYWRlckRpdi5hcHBlbmQoZGVzY3JpcHRpb24pO1xuICAgIGlmIChoZWFkZXIuYm90dG9tTGluZSlcbiAgICAgIGFwcEhlYWRlckRpdi5jbGFzc0xpc3QuYWRkKCd1Mi1hcHAtaGVhZGVyLWJvdHRvbS1saW5lJyk7XG4gICAgcmV0dXJuIGFwcEhlYWRlckRpdjtcbiAgfVxuXG5cbiAgZXhwb3J0IG5hbWVzcGFjZSB0b29scyB7XG5cbiAgICAvKiogRXhlY3V0ZXMge0BsaW5rIGZ1bmN9IHdoaWxlIHNob3dpbmcgdGhlIFwicnVubmluZ1wiIGluZGljYXRvciBvbiB7QGxpbmsgcm9vdH0uXG4gICAgICogSGFuZGxlcyBhbmQgbG9ncyBleGNlcHRpb25zLiAqL1xuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5Bc3luYzxUPihyb290OiBIVE1MRWxlbWVudCwgZnVuYzogKCkgPT4gUHJvbWlzZTxUPikge1xuICAgICAgdWkuc2V0VXBkYXRlSW5kaWNhdG9yKHJvb3QsIHRydWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGZ1bmMoKTtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGdyb2subG9nLmVycm9yKGUgYXMgc3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIGZpbmFsbHkge1xuICAgICAgICB1aS5zZXRVcGRhdGVJbmRpY2F0b3Iocm9vdCwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSJdfQ==
@@ -265,4 +265,4 @@ export function setDifference(a, b) {
265
265
  const bSet = new Set(b);
266
266
  return Array.from(new Set(a.filter((x) => !bSet.has(x))).values());
267
267
  }
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjdG9yLW9wZXJhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2ZWN0b3Itb3BlcmF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVMsTUFBTSxFQUF1QyxNQUFNLHFCQUFxQixDQUFDO0FBQ3pGLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRWhEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLFlBQXFCLEtBQUssRUFBRSxVQUFrQixrQkFBa0I7SUFDckYsSUFBSSxDQUFDLFNBQVM7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsVUFBa0IsRUFBRSxVQUFrQixFQUFFLE9BQWUsQ0FBQztJQUN0RixPQUFPLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pGLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUFjO0lBQzVDLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDdkMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEYsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLGFBQXFCLENBQUM7SUFDcEUsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUV4QixNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsOEJBQThCLENBQUMsQ0FBQztJQUUzRCxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVqQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDL0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXRDLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxRQUFRLENBQUMsQ0FBUztJQUN6QixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFFZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDL0IsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVoQixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsWUFBWSxDQUFDLENBQVM7SUFDN0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN4QixNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVqQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDL0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFekIsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxDQUFTO0lBQ3BDLElBQUksTUFBTSxHQUFXLENBQUMsQ0FBQztJQUN2QixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7UUFDdkMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsRUFBVSxFQUFFLEVBQVU7SUFDckQsSUFBSSxFQUFFLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxNQUFNO1FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUNsRSxJQUFJLElBQUksR0FBVyxDQUFDLENBQUM7SUFDckIsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO1FBQ3hDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFVBQWtCLEVBQUUsVUFBa0IsRUFBRSxRQUFnQixFQUFFO0lBQ3pGLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFdkQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3BDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLDBCQUEwQixDQUFDLENBQVMsRUFBRSxDQUFTO0lBQzdELElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNmLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFFckIsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU07UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBRWxFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxTQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFJLENBQUMsQ0FBQSxDQUFDO0lBRS9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxJQUFhLEVBQUUsUUFBd0I7SUFDeEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUMzQixNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVsRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDaEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxNQUFNLENBQUMsR0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFGLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsNEJBQTRCLENBQUMsSUFBYSxFQUFFLFFBQXdCO0lBQ2xGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDM0IsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEQsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUMzQixJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLEdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxHQUFHLEdBQUc7Z0JBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsR0FBRyxHQUFHO2dCQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDaEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxrRkFBa0Y7QUFDbEYsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUFhLEVBQUUsR0FBVyxFQUFFLFlBQVksR0FBRyxLQUFLO0lBQ3ZFLE1BQU0sTUFBTSxHQUFHLEdBQUcsR0FBRyxLQUFLLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDN0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7SUFFeEIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFDLE1BQWEsRUFBRSxPQUFPLEdBQUcsS0FBSztJQUNwRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBUSxFQUFFLENBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBUSxFQUFFLENBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkcsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFNLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtJQUNsRSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CO0lBQ3ZELE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBVSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUUsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBYyxFQUFFLENBQVMsRUFBRSxJQUF3QztJQUNsRyxTQUFTLEtBQUssQ0FBQyxNQUFnQyxFQUFFLE9BQThCO1FBQzdFLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFFdEIsS0FBSyxNQUFNLE9BQU8sSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUM3QixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEMsSUFBSSxVQUFVLElBQUksSUFBSSxJQUFJLGNBQWMsR0FBRyxVQUFVLEVBQUUsQ0FBQztnQkFDdEQsUUFBUSxHQUFHLE9BQU8sQ0FBQztnQkFDbkIsVUFBVSxHQUFHLGNBQWMsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTdCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDckIsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FDZixVQUFVLENBQUMsTUFBTSxFQUE4QixFQUMvQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBUyxHQUFHLEVBQUUsS0FBSztZQUN4RCxPQUFPLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsSUFBWTtJQUNwQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3hCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNaLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztJQUVyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDN0IsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLFlBQVksSUFBSSxTQUFBLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBSSxDQUFDLENBQUEsQ0FBQztJQUMvQixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUN2QixNQUFNLGFBQWEsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxHQUFHLFNBQUEsSUFBSSxFQUFJLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFdEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQztJQUU3QyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsQ0FBUSxFQUFFLENBQVE7SUFDOUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNYXRyaXgsIFZlY3RvciwgQ29vcmRpbmF0ZXMsIFZlY3RvcnMsIERpc3RhbmNlTWV0cmljfSBmcm9tICcuL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7cmFuZG9tRmxvYXQsIHJhbmRvbUludH0gZnJvbSAnLi9yYW5kb20nO1xuXG4vKipcbiAqIEFzc2VydHMgYSBjb25kaXRpb24gYnkgdGhyb3dpbmcgYW4gRXJyb3IuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtib29sZWFufSBbY29uZGl0aW9uPWZhbHNlXSBDb25kaXRpb24gdG8gYXNzZXJ0LlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlPSdBc3NlcnRpb24gZXJyb3IuJ10gTWVzc2FnZSB0byBvdXRwdXQuXG4gKiBAdGhyb3dzIHtFcnJvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydChjb25kaXRpb246IGJvb2xlYW4gPSBmYWxzZSwgbWVzc2FnZTogc3RyaW5nID0gJ0Fzc2VydGlvbiBlcnJvci4nKSB7XG4gIGlmICghY29uZGl0aW9uKVxuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIG5ldyB0d28tZGltZW5zaW9uYWwgYXJyYXkgYW5kIGZpbGxzIGl0IHdpdGggdGhlIHZhbHVlIGdpdmVuLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIGNvb3JkaW5hdGVzIChudW1iZXIgb2Ygcm93cykuXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMiBUaGUgc2Vjb25kIGRpbWVuc2lvbiBvZiB0aGUgY29vcmRpbmF0ZXMgKG51bWJlciBvZiBjb2x1bW5zKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZmlsbD0wXSBBIHZhbHVlIHRvIGZpbGwgdGhlIGNvb3JkaW5hdGVzIHdpdGguXG4gKiBAcmV0dXJuIHtDb29yZGluYXRlc30gQSB0d28tZGltZW5zaW9uYWwgZmlsbGVkIHdpdGggdGhlIHZhbHVlIGdpdmVuLlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0Q29vcmRpbmF0ZXMoZGltZW5zaW9uMTogbnVtYmVyLCBkaW1lbnNpb24yOiBudW1iZXIsIGZpbGw6IG51bWJlciA9IDApOiBDb29yZGluYXRlcyB7XG4gIHJldHVybiBuZXcgQXJyYXkoZGltZW5zaW9uMSkuZmlsbChmaWxsKS5tYXAoKCkgPT4gKG5ldyBWZWN0b3IoZGltZW5zaW9uMikuZmlsbChmaWxsKSkpO1xufVxuXG4vKipcbiAqIFRyYW5zcG9zZSBtYXRyaXguXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeCBUaGUgbWF0cml4IHRvIGJlIHRyYW5zcG9zZWQuXG4gKiBAcmV0dXJuIHtNYXRyaXh9IFRyYW5zcG9zZWQgbWF0cml4LlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2VNYXRyaXgobWF0cml4OiBNYXRyaXgpOiBNYXRyaXgge1xuICByZXR1cm4gbmV3IEFycmF5KG1hdHJpeFswXS5sZW5ndGgpLmZpbGwoMClcbiAgICAubWFwKChfLCBpKSA9PiAobmV3IFZlY3RvcihtYXRyaXgubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaikgPT4gKG1hdHJpeFtqXVtpXSkpKSk7XG59XG5cbi8qKlxuICogQWRkcyB0d28gdmVjdG9ycyB3aXRoIHRoZSBzZWNvbmQgb25lIHRvIGJlIG11bHRpcGxpZWQgYnkgdGhlIGdpdmVuIHJhdGlvLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtWZWN0b3J9IHEgVGhlIHNlY29uZCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtudW1iZXJ9IFttdWx0aXBsaWVyPTFdIEEgbXVsdGlwbGllciB0byBiZSB1c2VkIGJlZm9yZSB0aGUgc2Vjb25kIHZlY3RvciBpcyBhZGRlZC5cbiAqIEByZXR1cm4ge1ZlY3Rvcn0gTmV3IHZlY3RvciBjb250YWluZWQgdGhlIHJlc3VsdCBvZiBvcGVyYXRpb24gcCttdWx0aXBsaWVyKnEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JBZGQocDogVmVjdG9yLCBxOiBWZWN0b3IsIG11bHRpcGxpZXI6IG51bWJlciA9IDEpOiBWZWN0b3Ige1xuICBjb25zdCBuSXRlbXMgPSBwLmxlbmd0aDtcblxuICBhc3NlcnQobkl0ZW1zID09IHEubGVuZ3RoLCAnVmVjdG9yIGxlbmd0aHMgZG8gbm90IG1hdGNoLicpO1xuXG4gIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcC5sZW5ndGg7ICsraSlcbiAgICB0b3RhbFtpXSA9IHBbaV0gKyBtdWx0aXBsaWVyICogcVtpXTtcblxuICByZXR1cm4gdG90YWw7XG59XG5cbi8qKlxuICogU3VtcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBiZSBzdW1tZWQuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSB2ZWN0b3IncyBpdGVtcyBzdW0uXG4gKi9cbmZ1bmN0aW9uIGl0ZW1zU3VtKHY6IFZlY3Rvcik6IG51bWJlciB7XG4gIGxldCB0b3RhbCA9IDA7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgIHRvdGFsICs9IHZbaV07XG5cbiAgcmV0dXJuIHRvdGFsO1xufVxuXG4vKipcbiAqIFN1cWFyZXMgdGhlIHZlY3RvcidzIGl0ZW1zLlxuICpcbiAqIEBwYXJhbSB7VmVjdG9yfSB2IFRoZSB2ZWN0b3IgdG8gc3F1YXJlLlxuICogQHJldHVybiB7VmVjdG9yfSBBIG5ldyB2ZWN0b3IgY29udGFpbmluZyB0aGUgb3JpZ2luYWwncyBpdGVtcyBzcXVhcmVkLlxuICovXG5mdW5jdGlvbiB2ZWN0b3JTcXVhcmUodjogVmVjdG9yKTogVmVjdG9yIHtcbiAgY29uc3Qgbkl0ZW1zID0gdi5sZW5ndGg7XG4gIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcbiAgICB0b3RhbFtpXSA9IHZbaV0gKiB2W2ldO1xuXG4gIHJldHVybiB0b3RhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlY3Rvckxlbmd0aCh2OiBWZWN0b3IpOiBudW1iZXIge1xuICBsZXQgc3FyU3VtOiBudW1iZXIgPSAwO1xuICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKylcbiAgICBzcXJTdW0gKz0gdltpXSAqIHZbaV07XG4gIHJldHVybiBNYXRoLnNxcnQoc3FyU3VtKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlY3RvckRvdFByb2R1Y3QodjE6IFZlY3RvciwgdjI6IFZlY3Rvcik6IG51bWJlciB7XG4gIGlmICh2MS5sZW5ndGggIT0gdjIubGVuZ3RoKVxuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRpbWVuc2lvbmFsaXR5IG9mIHRoZSB2ZWN0b3JzIG11c3QgbWF0Y2gnKTtcbiAgbGV0IHByb2Q6IG51bWJlciA9IDA7XG4gIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB2MS5sZW5ndGg7IGkrKylcbiAgICBwcm9kICs9IHYxW2ldICogdjJbaV07XG4gIHJldHVybiBwcm9kO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXRyaXggZmlsbGVkIHdpdGggcmFuZG9tIGZsb2F0aW5nIHBvaW50IHZhbHVlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMSBUaGUgZmlyc3QgZGltZW5zaW9uIG9mIHRoZSBtYXRyaXguXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMiBUaGUgc2Vjb25kIGRpbWVuc2lvbiBvZiB0aGUgbWF0cml4LlxuICogQHBhcmFtIHtudW1iZXJ9IFtzY2FsZT0xLl0gTWF4IHZhbHVlIGdpdmVuIGJ5IHJhbmRvbSBnZW5lcmF0b3IuXG4gKiBAcmV0dXJuIHtNYXRyaXh9IEEgbmV3IG1hdHJpeCBmaWxsZWQgd2l0aCByYW5kb20gZmxvYXRpbmcgcG9pbnQgIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGxSYW5kb21NYXRyaXgoZGltZW5zaW9uMTogbnVtYmVyLCBkaW1lbnNpb24yOiBudW1iZXIsIHNjYWxlOiBudW1iZXIgPSAxLik6IE1hdHJpeCB7XG4gIGNvbnN0IG1hdHJpeCA9IGluaXRDb29yZGluYXRlcyhkaW1lbnNpb24xLCBkaW1lbnNpb24yKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbWVuc2lvbjE7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGltZW5zaW9uMjsgKytqKVxuICAgICAgbWF0cml4W2ldW2pdID0gcmFuZG9tRmxvYXQoc2NhbGUpO1xuICB9XG4gIHJldHVybiBtYXRyaXg7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjdG9ycy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcCBUaGUgZmlyc3QgdmVjdG9yLlxuICogQHBhcmFtIHtWZWN0b3J9IHEgVGhlIHNlY29uZCB2ZWN0b3IuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBnaXZlbiB2ZWN0b3JzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UocDogVmVjdG9yLCBxOiBWZWN0b3IpOiBudW1iZXIge1xuICBsZXQgcmVzdWx0ID0gMDtcbiAgY29uc3QgbGVuID0gcC5sZW5ndGg7XG5cbiAgaWYgKGxlbiAhPT0gcS5sZW5ndGgpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZGltZW5zaW9uYWxpdHkgb2YgdGhlIHZlY3RvcnMgbXVzdCBtYXRjaCcpO1xuICBcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47ICsraSlcbiAgICByZXN1bHQgKz0gKHBbaV0gLSBxW2ldKSAqKiAyO1xuICBcbiAgcmV0dXJuIE1hdGguc3FydChyZXN1bHQpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY0Rpc3RhbmNlTWF0cml4KGRhdGE6IFZlY3RvcnMsIGRpc3RhbmNlOiBEaXN0YW5jZU1ldHJpYyk6IE1hdHJpeCB7XG4gIGNvbnN0IG5JdGVtcyA9IGRhdGEubGVuZ3RoO1xuICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMobkl0ZW1zLCBuSXRlbXMsIDApO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBuSXRlbXM7ICsraikge1xuICAgICAgY29uc3QgZDogbnVtYmVyID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCkgPyAwIDogZGlzdGFuY2UoZGF0YVtpXSwgZGF0YVtqXSk7XG4gICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSBkO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWF0cml4O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY05vcm1hbGl6ZWREaXN0YW5jZU1hdHJpeChkYXRhOiBWZWN0b3JzLCBkaXN0YW5jZTogRGlzdGFuY2VNZXRyaWMpOiBNYXRyaXgge1xuICBjb25zdCBuSXRlbXMgPSBkYXRhLmxlbmd0aDtcbiAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKG5JdGVtcywgbkl0ZW1zLCAwKTtcbiAgbGV0IG1heCA9IE51bWJlci5NSU5fVkFMVUU7XG4gIGxldCBtaW4gPSBOdW1iZXIuTUFYX1ZBTFVFO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgZm9yIChsZXQgaiA9IGk7IGogPCBuSXRlbXM7ICsraikge1xuICAgICAgY29uc3QgZDogbnVtYmVyID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCB8fCBpID09PSBqKSA/IDAgOiBkaXN0YW5jZShkYXRhW2ldLCBkYXRhW2pdKTtcbiAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeFtqXVtpXSA9IGQ7XG4gICAgICBpZiAoZCA+IG1heCkgbWF4ID0gZDtcbiAgICAgIGlmIChkIDwgbWluKSBtaW4gPSBkO1xuICAgIH1cbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgbkl0ZW1zOyArK2opXG4gICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSAobWF0cml4W2ldW2pdIC0gbWluKSAvIChtYXggLSBtaW4pO1xuICB9XG4gIHJldHVybiBtYXRyaXg7XG59XG5cbi8qKiBHZW5lcmF0ZXMgYXJyYXkgZnJvbSBhIHJhbmdlIFtiZWdpbjsgZW5kXSBvciBbYmVnaW47IGVuZCkgaWYgZW5kRXhjbHVzaXZlLiAqKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5SYW5nZShiZWdpbjogbnVtYmVyLCBlbmQ6IG51bWJlciwgZW5kRXhjbHVzaXZlID0gZmFsc2UpOiBJbnQzMkFycmF5IHtcbiAgY29uc3Qgbkl0ZW1zID0gZW5kIC0gYmVnaW4gKyAoZW5kRXhjbHVzaXZlID8gMCA6IDEpO1xuICBjb25zdCBzZXJpZXMgPSBuZXcgSW50MzJBcnJheShuSXRlbXMpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpXG4gICAgc2VyaWVzW2ldID0gYmVnaW4gKyBpO1xuXG4gIHJldHVybiBzZXJpZXM7XG59XG5cbi8qKlxuICogUmV0dXJucyBvcmRlciBvZiB2YWx1ZXMgYXMgaWYgdGhleSBhcmUgc29ydGVkLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7YW55W119IHZhbHVlcyBJbnB1dCBhcnJheS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldmVyc2U9ZmFsc2VdIFdoZXRoZXIgdG8gcmV0dXJuIHJldmVyc2VkIG9yZGVyLlxuICogQHJldHVybiB7bnVtYmVyW119IFRoZSBvcmRlciBjb21wdXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFyZ1NvcnQodmFsdWVzOiBhbnlbXSwgcmV2ZXJzZSA9IGZhbHNlKTogbnVtYmVyW10ge1xuICBjb25zdCBzb3J0Zm4gPSByZXZlcnNlID8gKGE6IGFueVtdLCBiOiBhbnlbXSkgPT4gKGJbMF0gLSBhWzBdKSA6IChhOiBhbnlbXSwgYjogYW55W10pID0+IChhWzBdIC0gYlswXSk7XG4gIGNvbnN0IGRlY29yID0gKHY6IGFueSwgaTogbnVtYmVyKSA9PiBbdiwgaV07IC8vIHNldCBpbmRleCB0byB2YWx1ZVxuICBjb25zdCB1bmRlY29yID0gKGE6IGFueVtdKSA9PiBhWzFdOyAvLyBsZWF2ZSBvbmx5IGluZGV4XG4gIGNvbnN0IF9hcmdzb3J0ID0gKGFycjogYW55W10pID0+IGFyci5tYXAoZGVjb3IpLnNvcnQoc29ydGZuKS5tYXAodW5kZWNvcik7XG4gIHJldHVybiBfYXJnc29ydCh2YWx1ZXMpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzIGFjY29yZGluZyB0byB0aGUgZGlzdCBmdW5jdGlvblxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCB0b3RhbCBudW1iZXIgb2Ygb2JqZWN0c1xuICogQHBhcmFtIHtudW1iZXJ9IG4gbnVtYmVyIG9mIGRpdmVyc2UgZWxlbWVudHMgdG8gZmluZFxuICogQHBhcmFtIHsoaTE6IG51bWJlciwgaTI6IG51bWJlcikgPT4gbnVtYmVyfSBkaXN0IGEgZnVuY3Rpb24gd2hpY2ggY2FsY3VsYXRlcyBkaXN0YW5jZSBiZXR3ZWVuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHdvIG9iamVjdHMgdXNpbmcgdGhlaXIgaW5kZXhlc1xuICogQHJldHVybnMge251bWJlcltdfSBUaGUgaW5kZXhlcyBvZiB0aGUgbW9zdCBkaXZlcnNlIG9iamVjdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpdmVyc2VTdWJzZXQobGVuZ3RoOiBudW1iZXIsIG46IG51bWJlciwgZGlzdDogKGkxOiBudW1iZXIsIGkyOiBudW1iZXIpID0+IG51bWJlcik6IG51bWJlcltdIHtcbiAgZnVuY3Rpb24gbWF4QnkodmFsdWVzOiBJdGVyYWJsZUl0ZXJhdG9yPG51bWJlcj4sIG9yZGVyQnk6IChpOiBudW1iZXIpID0+IG51bWJlcikge1xuICAgIGxldCBtYXhWYWx1ZSA9IG51bGw7XG4gICAgbGV0IG1heE9yZGVyQnkgPSBudWxsO1xuXG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHZhbHVlcykge1xuICAgICAgY29uc3QgZWxlbWVudE9yZGVyQnkgPSBvcmRlckJ5KGVsZW1lbnQpO1xuICAgICAgaWYgKG1heE9yZGVyQnkgPT0gbnVsbCB8fCBlbGVtZW50T3JkZXJCeSA+IG1heE9yZGVyQnkpIHtcbiAgICAgICAgbWF4VmFsdWUgPSBlbGVtZW50O1xuICAgICAgICBtYXhPcmRlckJ5ID0gZWxlbWVudE9yZGVyQnk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXhWYWx1ZTtcbiAgfVxuXG4gIGNvbnN0IHN1YnNldCA9IFtyYW5kb21JbnQobGVuZ3RoIC0gMSldO1xuICBjb25zdCBjb21wbGVtZW50ID0gbmV3IFNldCgpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoIXN1YnNldC5pbmNsdWRlcyhpKSlcbiAgICAgIGNvbXBsZW1lbnQuYWRkKGkpO1xuICB9XG5cbiAgd2hpbGUgKHN1YnNldC5sZW5ndGggPCBuKSB7XG4gICAgY29uc3QgaWR4ID0gbWF4QnkoXG4gICAgICBjb21wbGVtZW50LnZhbHVlcygpIGFzIEl0ZXJhYmxlSXRlcmF0b3I8bnVtYmVyPixcbiAgICAgIChpKSA9PiBNYXRoLm1pbi5hcHBseShNYXRoLCBzdWJzZXQubWFwKGZ1bmN0aW9uKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGRpc3QoaSwgdmFsKTtcbiAgICAgIH0pKSk7XG4gICAgaWYgKGlkeCkge1xuICAgICAgc3Vic2V0LnB1c2goaWR4KTtcbiAgICAgIGNvbXBsZW1lbnQuZGVsZXRlKGlkeCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdWJzZXQ7XG59XG5cbi8qKlxuICogUmV0dXJucyBub3JtYWxpemVkIHZlY3Rvci5cbiAqIFxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3J9IGRhdGEgbnVtZXJpY2FsIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUoZGF0YTogVmVjdG9yKTogVmVjdG9yIHtcbiAgY29uc3QgbGVuID0gZGF0YS5sZW5ndGg7XG4gIGxldCBzdW0gPSAwO1xuICBsZXQgc3VtT2ZTcXVhcmVzID0gMDtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgc3VtICs9IGRhdGFbaV07XG4gICAgc3VtT2ZTcXVhcmVzICs9IGRhdGFbaV0gKiogMjtcbiAgfVxuXG4gIGNvbnN0IG1lYW4gPSBzdW0gLyBsZW47XG4gIGNvbnN0IHN0ZERldkludmVyc2UgPSAxLjAgLyBNYXRoLnNxcnQoc3VtT2ZTcXVhcmVzIC8gbGVuIC0gbWVhbiAqKiAyKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgKytpKVxuICAgIGRhdGFbaV0gPSAoZGF0YVtpXSAtIG1lYW4pICogc3RkRGV2SW52ZXJzZTtcblxuICByZXR1cm4gZGF0YTtcbn1cblxuLyoqXG4gKiBGaW5kcyBzZXQgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBsaXN0cy5cbiAqIEBwYXJhbSB7YW55W119IGEgVGhlIGZpcnN0IGxpc3QuXG4gKiBAcGFyYW0ge2FueVtdfSBiIFRoZSBzZWNvbmQgbGlzdC5cbiAqIEByZXR1cm4ge2FueVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RGlmZmVyZW5jZShhOiBhbnlbXSwgYjogYW55W10pOiBhbnlbXSB7XG4gIGNvbnN0IGJTZXQgPSBuZXcgU2V0KGIpO1xuICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGEuZmlsdGVyKCh4KSA9PiAhYlNldC5oYXMoeCkpKS52YWx1ZXMoKSk7XG59XG4iXX0=
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjdG9yLW9wZXJhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2ZWN0b3Itb3BlcmF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVMsTUFBTSxFQUF1QyxNQUFNLHFCQUFxQixDQUFDO0FBQ3pGLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRWhEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLFlBQXFCLEtBQUssRUFBRSxVQUFrQixrQkFBa0I7SUFDckYsSUFBSSxDQUFDLFNBQVM7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsVUFBa0IsRUFBRSxVQUFrQixFQUFFLE9BQWUsQ0FBQztJQUN0RixPQUFPLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pGLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUFjO0lBQzVDLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDdkMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENB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QUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNYXRyaXgsIFZlY3RvciwgQ29vcmRpbmF0ZXMsIFZlY3RvcnMsIERpc3RhbmNlTWV0cmljfSBmcm9tICcuL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7cmFuZG9tRmxvYXQsIHJhbmRvbUludH0gZnJvbSAnLi9yYW5kb20nO1xuXG4vKipcbiAqIEFzc2VydHMgYSBjb25kaXRpb24gYnkgdGhyb3dpbmcgYW4gRXJyb3IuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtib29sZWFufSBbY29uZGl0aW9uPWZhbHNlXSBDb25kaXRpb24gdG8gYXNzZXJ0LlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlPSdBc3NlcnRpb24gZXJyb3IuJ10gTWVzc2FnZSB0byBvdXRwdXQuXG4gKiBAdGhyb3dzIHtFcnJvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydChjb25kaXRpb246IGJvb2xlYW4gPSBmYWxzZSwgbWVzc2FnZTogc3RyaW5nID0gJ0Fzc2VydGlvbiBlcnJvci4nKSB7XG4gIGlmICghY29uZGl0aW9uKVxuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIG5ldyB0d28tZGltZW5zaW9uYWwgYXJyYXkgYW5kIGZpbGxzIGl0IHdpdGggdGhlIHZhbHVlIGdpdmVuLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIGNvb3JkaW5hdGVzIChudW1iZXIgb2Ygcm93cykuXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMiBUaGUgc2Vjb25kIGRpbWVuc2lvbiBvZiB0aGUgY29vcmRpbmF0ZXMgKG51bWJlciBvZiBjb2x1bW5zKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZmlsbD0wXSBBIHZhbHVlIHRvIGZpbGwgdGhlIGNvb3JkaW5hdGVzIHdpdGguXG4gKiBAcmV0dXJuIHtDb29yZGluYXRlc30gQSB0d28tZGltZW5zaW9uYWwgZmlsbGVkIHdpdGggdGhlIHZhbHVlIGdpdmVuLlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0Q29vcmRpbmF0ZXMoZGltZW5zaW9uMTogbnVtYmVyLCBkaW1lbnNpb24yOiBudW1iZXIsIGZpbGw6IG51bWJlciA9IDApOiBDb29yZGluYXRlcyB7XG4gIHJldHVybiBuZXcgQXJyYXkoZGltZW5zaW9uMSkuZmlsbChmaWxsKS5tYXAoKCkgPT4gKG5ldyBWZWN0b3IoZGltZW5zaW9uMikuZmlsbChmaWxsKSkpO1xufVxuXG4vKipcbiAqIFRyYW5zcG9zZSBtYXRyaXguXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeCBUaGUgbWF0cml4IHRvIGJlIHRyYW5zcG9zZWQuXG4gKiBAcmV0dXJuIHtNYXRyaXh9IFRyYW5zcG9zZWQgbWF0cml4LlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2VNYXRyaXgobWF0cml4OiBNYXRyaXgpOiBNYXRyaXgge1xuICByZXR1cm4gbmV3IEFycmF5KG1hdHJpeFswXS5sZW5ndGgpLmZpbGwoMClcbiAgICAubWFwKChfLCBpKSA9PiAobmV3IFZlY3RvcihtYXRyaXgubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaikgPT4gKG1hdHJpeFtqXVtpXSkpKSk7XG59XG5cbi8qKlxuICogQWRkcyB0d28gdmVjdG9ycyB3aXRoIHRoZSBzZWNvbmQgb25lIHRvIGJlIG11bHRpcGxpZWQgYnkgdGhlIGdpdmVuIHJhdGlvLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtWZWN0b3J9IHEgVGhlIHNlY29uZCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtudW1iZXJ9IFttdWx0aXBsaWVyPTFdIEEgbXVsdGlwbGllciB0byBiZSB1c2VkIGJlZm9yZSB0aGUgc2Vjb25kIHZlY3RvciBpcyBhZGRlZC5cbiAqIEByZXR1cm4ge1ZlY3Rvcn0gTmV3IHZlY3RvciBjb250YWluZWQgdGhlIHJlc3VsdCBvZiBvcGVyYXRpb24gcCttdWx0aXBsaWVyKnEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JBZGQocDogVmVjdG9yLCBxOiBWZWN0b3IsIG11bHRpcGxpZXI6IG51bWJlciA9IDEpOiBWZWN0b3Ige1xuICBjb25zdCBuSXRlbXMgPSBwLmxlbmd0aDtcblxuICBhc3NlcnQobkl0ZW1zID09IHEubGVuZ3RoLCAnVmVjdG9yIGxlbmd0aHMgZG8gbm90IG1hdGNoLicpO1xuXG4gIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcC5sZW5ndGg7ICsraSlcbiAgICB0b3RhbFtpXSA9IHBbaV0gKyBtdWx0aXBsaWVyICogcVtpXTtcblxuICByZXR1cm4gdG90YWw7XG59XG5cbi8qKlxuICogU3VtcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBiZSBzdW1tZWQuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSB2ZWN0b3IncyBpdGVtcyBzdW0uXG4gKi9cbmZ1bmN0aW9uIGl0ZW1zU3VtKHY6IFZlY3Rvcik6IG51bWJlciB7XG4gIGxldCB0b3RhbCA9IDA7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgIHRvdGFsICs9IHZbaV07XG5cbiAgcmV0dXJuIHRvdGFsO1xufVxuXG4vKipcbiAqIFN1cWFyZXMgdGhlIHZlY3RvcidzIGl0ZW1zLlxuICpcbiAqIEBwYXJhbSB7VmVjdG9yfSB2IFRoZSB2ZWN0b3IgdG8gc3F1YXJlLlxuICogQHJldHVybiB7VmVjdG9yfSBBIG5ldyB2ZWN0b3IgY29udGFpbmluZyB0aGUgb3JpZ2luYWwncyBpdGVtcyBzcXVhcmVkLlxuICovXG5mdW5jdGlvbiB2ZWN0b3JTcXVhcmUodjogVmVjdG9yKTogVmVjdG9yIHtcbiAgY29uc3Qgbkl0ZW1zID0gdi5sZW5ndGg7XG4gIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcbiAgICB0b3RhbFtpXSA9IHZbaV0gKiB2W2ldO1xuXG4gIHJldHVybiB0b3RhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlY3Rvckxlbmd0aCh2OiBWZWN0b3IpOiBudW1iZXIge1xuICBsZXQgc3FyU3VtOiBudW1iZXIgPSAwO1xuICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKylcbiAgICBzcXJTdW0gKz0gdltpXSAqIHZbaV07XG4gIHJldHVybiBNYXRoLnNxcnQoc3FyU3VtKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlY3RvckRvdFByb2R1Y3QodjE6IFZlY3RvciwgdjI6IFZlY3Rvcik6IG51bWJlciB7XG4gIGlmICh2MS5sZW5ndGggIT0gdjIubGVuZ3RoKVxuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRpbWVuc2lvbmFsaXR5IG9mIHRoZSB2ZWN0b3JzIG11c3QgbWF0Y2gnKTtcbiAgbGV0IHByb2Q6IG51bWJlciA9IDA7XG4gIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB2MS5sZW5ndGg7IGkrKylcbiAgICBwcm9kICs9IHYxW2ldICogdjJbaV07XG4gIHJldHVybiBwcm9kO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXRyaXggZmlsbGVkIHdpdGggcmFuZG9tIGZsb2F0aW5nIHBvaW50IHZhbHVlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMSBUaGUgZmlyc3QgZGltZW5zaW9uIG9mIHRoZSBtYXRyaXguXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMiBUaGUgc2Vjb25kIGRpbWVuc2lvbiBvZiB0aGUgbWF0cml4LlxuICogQHBhcmFtIHtudW1iZXJ9IFtzY2FsZT0xLl0gTWF4IHZhbHVlIGdpdmVuIGJ5IHJhbmRvbSBnZW5lcmF0b3IuXG4gKiBAcmV0dXJuIHtNYXRyaXh9IEEgbmV3IG1hdHJpeCBmaWxsZWQgd2l0aCByYW5kb20gZmxvYXRpbmcgcG9pbnQgIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGxSYW5kb21NYXRyaXgoZGltZW5zaW9uMTogbnVtYmVyLCBkaW1lbnNpb24yOiBudW1iZXIsIHNjYWxlOiBudW1iZXIgPSAxLik6IE1hdHJpeCB7XG4gIGNvbnN0IG1hdHJpeCA9IGluaXRDb29yZGluYXRlcyhkaW1lbnNpb24xLCBkaW1lbnNpb24yKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbWVuc2lvbjE7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGltZW5zaW9uMjsgKytqKVxuICAgICAgbWF0cml4W2ldW2pdID0gcmFuZG9tRmxvYXQoc2NhbGUpO1xuICB9XG4gIHJldHVybiBtYXRyaXg7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjdG9ycy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcCBUaGUgZmlyc3QgdmVjdG9yLlxuICogQHBhcmFtIHtWZWN0b3J9IHEgVGhlIHNlY29uZCB2ZWN0b3IuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBnaXZlbiB2ZWN0b3JzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UocDogVmVjdG9yLCBxOiBWZWN0b3IpOiBudW1iZXIge1xuICBsZXQgcmVzdWx0ID0gMDtcbiAgY29uc3QgbGVuID0gcC5sZW5ndGg7XG5cbiAgaWYgKGxlbiAhPT0gcS5sZW5ndGgpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZGltZW5zaW9uYWxpdHkgb2YgdGhlIHZlY3RvcnMgbXVzdCBtYXRjaCcpO1xuICBcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47ICsraSlcbiAgICByZXN1bHQgKz0gKHBbaV0gLSBxW2ldKSAqKiAyO1xuICBcbiAgcmV0dXJuIE1hdGguc3FydChyZXN1bHQpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY0Rpc3RhbmNlTWF0cml4KGRhdGE6IFZlY3RvcnMsIGRpc3RhbmNlOiBEaXN0YW5jZU1ldHJpYyk6IE1hdHJpeCB7XG4gIGNvbnN0IG5JdGVtcyA9IGRhdGEubGVuZ3RoO1xuICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMobkl0ZW1zLCBuSXRlbXMsIDApO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBuSXRlbXM7ICsraikge1xuICAgICAgY29uc3QgZDogbnVtYmVyID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCkgPyAwIDogZGlzdGFuY2UoZGF0YVtpXSwgZGF0YVtqXSk7XG4gICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSBkO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWF0cml4O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY05vcm1hbGl6ZWREaXN0YW5jZU1hdHJpeChkYXRhOiBWZWN0b3JzLCBkaXN0YW5jZTogRGlzdGFuY2VNZXRyaWMpOiBNYXRyaXgge1xuICBjb25zdCBuSXRlbXMgPSBkYXRhLmxlbmd0aDtcbiAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKG5JdGVtcywgbkl0ZW1zLCAwKTtcbiAgbGV0IG1heCA9IE51bWJlci5NSU5fVkFMVUU7XG4gIGxldCBtaW4gPSBOdW1iZXIuTUFYX1ZBTFVFO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgZm9yIChsZXQgaiA9IGk7IGogPCBuSXRlbXM7ICsraikge1xuICAgICAgY29uc3QgZDogbnVtYmVyID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCB8fCBpID09PSBqKSA/IDAgOiBkaXN0YW5jZShkYXRhW2ldLCBkYXRhW2pdKTtcbiAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeFtqXVtpXSA9IGQ7XG4gICAgICBpZiAoZCA+IG1heCkgbWF4ID0gZDtcbiAgICAgIGlmIChkIDwgbWluKSBtaW4gPSBkO1xuICAgIH1cbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgbkl0ZW1zOyArK2opXG4gICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSAobWF0cml4W2ldW2pdIC0gbWluKSAvIChtYXggLSBtaW4pO1xuICB9XG4gIHJldHVybiBtYXRyaXg7XG59XG5cbi8qKiBHZW5lcmF0ZXMgYXJyYXkgZnJvbSBhIHJhbmdlIFtiZWdpbjsgZW5kXSBvciBbYmVnaW47IGVuZCkgaWYgZW5kRXhjbHVzaXZlLiAqKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5SYW5nZShiZWdpbjogbnVtYmVyLCBlbmQ6IG51bWJlciwgZW5kRXhjbHVzaXZlID0gZmFsc2UpOiBJbnQzMkFycmF5IHtcbiAgY29uc3Qgbkl0ZW1zID0gZW5kIC0gYmVnaW4gKyAoZW5kRXhjbHVzaXZlID8gMCA6IDEpO1xuICBjb25zdCBzZXJpZXMgPSBuZXcgSW50MzJBcnJheShuSXRlbXMpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpXG4gICAgc2VyaWVzW2ldID0gYmVnaW4gKyBpO1xuXG4gIHJldHVybiBzZXJpZXM7XG59XG5cbi8qKlxuICogUmV0dXJucyBvcmRlciBvZiB2YWx1ZXMgYXMgaWYgdGhleSBhcmUgc29ydGVkLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7YW55W119IHZhbHVlcyBJbnB1dCBhcnJheS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldmVyc2U9ZmFsc2VdIFdoZXRoZXIgdG8gcmV0dXJuIHJldmVyc2VkIG9yZGVyLlxuICogQHJldHVybiB7bnVtYmVyW119IFRoZSBvcmRlciBjb21wdXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFyZ1NvcnQodmFsdWVzOiBhbnlbXSwgcmV2ZXJzZSA9IGZhbHNlKTogbnVtYmVyW10ge1xuICBjb25zdCBzb3J0Zm4gPSByZXZlcnNlID8gKGE6IGFueVtdLCBiOiBhbnlbXSkgPT4gKGJbMF0gLSBhWzBdKSA6IChhOiBhbnlbXSwgYjogYW55W10pID0+IChhWzBdIC0gYlswXSk7XG4gIGNvbnN0IGRlY29yID0gKHY6IGFueSwgaTogbnVtYmVyKSA9PiBbdiwgaV07IC8vIHNldCBpbmRleCB0byB2YWx1ZVxuICBjb25zdCB1bmRlY29yID0gKGE6IGFueVtdKSA9PiBhWzFdOyAvLyBsZWF2ZSBvbmx5IGluZGV4XG4gIGNvbnN0IF9hcmdzb3J0ID0gKGFycjogYW55W10pID0+IGFyci5tYXAoZGVjb3IpLnNvcnQoc29ydGZuKS5tYXAodW5kZWNvcik7XG4gIHJldHVybiBfYXJnc29ydCh2YWx1ZXMpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzIGFjY29yZGluZyB0byB0aGUgZGlzdCBmdW5jdGlvblxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCB0b3RhbCBudW1iZXIgb2Ygb2JqZWN0c1xuICogQHBhcmFtIHtudW1iZXJ9IG4gbnVtYmVyIG9mIGRpdmVyc2UgZWxlbWVudHMgdG8gZmluZFxuICogQHBhcmFtIHsoaTE6IG51bWJlciwgaTI6IG51bWJlcikgPT4gbnVtYmVyfSBkaXN0IGEgZnVuY3Rpb24gd2hpY2ggY2FsY3VsYXRlcyBkaXN0YW5jZSBiZXR3ZWVuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHdvIG9iamVjdHMgdXNpbmcgdGhlaXIgaW5kZXhlc1xuICogQHJldHVybnMge251bWJlcltdfSBUaGUgaW5kZXhlcyBvZiB0aGUgbW9zdCBkaXZlcnNlIG9iamVjdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpdmVyc2VTdWJzZXQobGVuZ3RoOiBudW1iZXIsIG46IG51bWJlciwgZGlzdDogKGkxOiBudW1iZXIsIGkyOiBudW1iZXIpID0+IG51bWJlcik6IG51bWJlcltdIHtcbiAgZnVuY3Rpb24gbWF4QnkodmFsdWVzOiBJdGVyYWJsZUl0ZXJhdG9yPG51bWJlcj4sIG9yZGVyQnk6IChpOiBudW1iZXIpID0+IG51bWJlcikge1xuICAgIGxldCBtYXhWYWx1ZSA9IG51bGw7XG4gICAgbGV0IG1heE9yZGVyQnkgPSBudWxsO1xuXG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHZhbHVlcykge1xuICAgICAgY29uc3QgZWxlbWVudE9yZGVyQnkgPSBvcmRlckJ5KGVsZW1lbnQpO1xuICAgICAgaWYgKG1heE9yZGVyQnkgPT0gbnVsbCB8fCBlbGVtZW50T3JkZXJCeSA+IG1heE9yZGVyQnkpIHtcbiAgICAgICAgbWF4VmFsdWUgPSBlbGVtZW50O1xuICAgICAgICBtYXhPcmRlckJ5ID0gZWxlbWVudE9yZGVyQnk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXhWYWx1ZTtcbiAgfVxuXG4gIGNvbnN0IHN1YnNldCA9IFtyYW5kb21JbnQobGVuZ3RoIC0gMSldO1xuICBjb25zdCBjb21wbGVtZW50ID0gbmV3IFNldCgpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoIXN1YnNldC5pbmNsdWRlcyhpKSlcbiAgICAgIGNvbXBsZW1lbnQuYWRkKGkpO1xuICB9XG5cbiAgd2hpbGUgKHN1YnNldC5sZW5ndGggPCBuKSB7XG4gICAgY29uc3QgaWR4ID0gbWF4QnkoXG4gICAgICBjb21wbGVtZW50LnZhbHVlcygpIGFzIEl0ZXJhYmxlSXRlcmF0b3I8bnVtYmVyPixcbiAgICAgIChpKSA9PiBNYXRoLm1pbi5hcHBseShNYXRoLCBzdWJzZXQubWFwKGZ1bmN0aW9uKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGRpc3QoaSwgdmFsKTtcbiAgICAgIH0pKSk7XG4gICAgaWYgKGlkeCkge1xuICAgICAgc3Vic2V0LnB1c2goaWR4KTtcbiAgICAgIGNvbXBsZW1lbnQuZGVsZXRlKGlkeCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdWJzZXQ7XG59XG5cbi8qKlxuICogUmV0dXJucyBub3JtYWxpemVkIHZlY3Rvci5cbiAqIFxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3J9IGRhdGEgbnVtZXJpY2FsIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUoZGF0YTogVmVjdG9yKTogVmVjdG9yIHtcbiAgY29uc3QgbGVuID0gZGF0YS5sZW5ndGg7XG4gIGxldCBzdW0gPSAwO1xuICBsZXQgc3VtT2ZTcXVhcmVzID0gMDtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgc3VtICs9IGRhdGFbaV07XG4gICAgc3VtT2ZTcXVhcmVzICs9IGRhdGFbaV0gKiogMjtcbiAgfVxuXG4gIGNvbnN0IG1lYW4gPSBzdW0gLyBsZW47XG4gIGNvbnN0IHN0ZERldkludmVyc2UgPSAxLjAgLyBNYXRoLnNxcnQoc3VtT2ZTcXVhcmVzIC8gbGVuIC0gbWVhbiAqKiAyKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgKytpKVxuICAgIGRhdGFbaV0gPSAoZGF0YVtpXSAtIG1lYW4pICogc3RkRGV2SW52ZXJzZTtcblxuICByZXR1cm4gZGF0YTtcbn1cblxuLyoqXG4gKiBGaW5kcyBzZXQgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBsaXN0cy5cbiAqIEBwYXJhbSB7YW55W119IGEgVGhlIGZpcnN0IGxpc3QuXG4gKiBAcGFyYW0ge2FueVtdfSBiIFRoZSBzZWNvbmQgbGlzdC5cbiAqIEByZXR1cm4ge2FueVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RGlmZmVyZW5jZShhOiBhbnlbXSwgYjogYW55W10pOiBhbnlbXSB7XG4gIGNvbnN0IGJTZXQgPSBuZXcgU2V0KGIpO1xuICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGEuZmlsdGVyKCh4KSA9PiAhYlNldC5oYXMoeCkpKS52YWx1ZXMoKSk7XG59XG4iXX0=
@@ -3,7 +3,7 @@ import { Subject } from 'rxjs';
3
3
  import '../../css/forms.css';
4
4
  export declare class FormsViewer extends DG.JsViewer {
5
5
  get type(): string;
6
- moleculeSize: 'small' | 'normal' | 'large';
6
+ rendererSize: 'small' | 'normal' | 'large';
7
7
  fieldsColumnNames: string[];
8
8
  colorCode: boolean;
9
9
  showCurrentRow: boolean;
@@ -13,7 +13,7 @@ export declare class FormsViewer extends DG.JsViewer {
13
13
  useGridSort: boolean;
14
14
  sortByColumnName?: string;
15
15
  sortAscending: boolean;
16
- indexes: number[] | Int32Array<any>;
16
+ indexes: number[] | Int32Array;
17
17
  columnHeadersDiv: HTMLDivElement;
18
18
  virtualView: DG.VirtualView;
19
19
  columnLabelWidth: number;
@@ -26,7 +26,7 @@ export declare class FormsViewer extends DG.JsViewer {
26
26
  set fixedRowNumbers(idxs: number[]);
27
27
  set columns(colNames: string[]);
28
28
  protected getRendererSize(renderer: DG.GridCellRenderer): DG.Point;
29
- protected getMoleculeSize(): DG.Point;
29
+ protected getSize(): DG.Point;
30
30
  constructor();
31
31
  fitHeaderToLabelWidth(width?: number): void;
32
32
  getColumnWidth(el: HTMLElement): number;
@@ -1 +1 @@
1
- {"version":3,"file":"forms-viewer.d.ts","sourceRoot":"","sources":["forms-viewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGtC,OAAO,EAAa,OAAO,EAAC,MAAM,MAAM,CAAC;AAGzC,OAAO,qBAAqB,CAAC;AAK7B,qBAAa,WAAY,SAAQ,EAAE,CAAC,QAAQ;IAC1C,IAAI,IAAI,IAAI,MAAM,CAA0B;IAE5C,YAAY,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC3C,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,UAAS;IACtB,WAAW,UAAQ;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IAEvB,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IACpC,gBAAgB,EAAE,cAAc,CAAC;IACjC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,mBAAmB,iBAAuF;IAC1G,qBAAqB,iBAA0F;IAC/G,YAAY,EAAE,WAAW,CAAC;IAC1B,aAAa,EAAE,WAAW,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAiB;IAE9C,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,EAG7B;IAED,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAOjC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,EAG7B;IAED,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,gBAAgB,GAAG,EAAE,CAAC,KAAK;IAclE,SAAS,CAAC,eAAe,IAAI,EAAE,CAAC,KAAK;;IAyErC,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM;IAOpC,cAAc,CAAC,EAAE,EAAC,WAAW;IAI7B,eAAe;IAkCf,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE;IAIxC,uBAAuB;IAavB,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,IAAI;IAO9C,YAAY;IAkDZ,IAAI,aAAa,aAA6C;IAC9D,IAAI,YAAY,iBAA2E;IAE3F,OAAO;IAWP,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IAmIxC,gBAAgB,IAAI,MAAM,EAAE;IAU5B,cAAc,IAAI,OAAO,EAAE;IAU3B,MAAM;CAwBP"}
1
+ {"version":3,"file":"forms-viewer.d.ts","sourceRoot":"","sources":["forms-viewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGtC,OAAO,EAAa,OAAO,EAAC,MAAM,MAAM,CAAC;AAGzC,OAAO,qBAAqB,CAAC;AAK7B,qBAAa,WAAY,SAAQ,EAAE,CAAC,QAAQ;IAC1C,IAAI,IAAI,IAAI,MAAM,CAA0B;IAE5C,YAAY,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC3C,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,UAAS;IACtB,WAAW,UAAQ;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IAEvB,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAC/B,gBAAgB,EAAE,cAAc,CAAC;IACjC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,mBAAmB,iBAAuF;IAC1G,qBAAqB,iBAA0F;IAC/G,YAAY,EAAE,WAAW,CAAC;IAC1B,aAAa,EAAE,WAAW,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAiB;IAE9C,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,EAG7B;IAED,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAOjC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,EAG7B;IAED,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,gBAAgB,GAAG,EAAE,CAAC,KAAK;IAelE,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,KAAK;;IAyE7B,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM;IAOpC,cAAc,CAAC,EAAE,EAAC,WAAW;IAI7B,eAAe;IAoCf,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE;IAIxC,uBAAuB;IAavB,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,IAAI;IAO9C,YAAY;IAkDZ,IAAI,aAAa,aAA6C;IAC9D,IAAI,YAAY,iBAA2E;IAE3F,OAAO;IAWP,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IAmIxC,gBAAgB,IAAI,MAAM,EAAE;IAU5B,cAAc,IAAI,OAAO,EAAE;IAU3B,MAAM;CAwBP"}
@@ -29,16 +29,16 @@ export class FormsViewer extends DG.JsViewer {
29
29
  let width = renderer.defaultWidth;
30
30
  let height = renderer.defaultHeight;
31
31
  if (!width || !height)
32
- return this.getMoleculeSize();
33
- switch (this.moleculeSize) {
32
+ return this.getSize();
33
+ switch (this.rendererSize) {
34
34
  case 'normal': return new DG.Point(width, height);
35
35
  case 'large': return new DG.Point(Math.floor(width * 1.5), Math.floor(height * 1.5));
36
36
  case 'small':
37
37
  default: return new DG.Point(Math.floor(width * 0.66), Math.floor(height * 0.66));
38
38
  }
39
39
  }
40
- getMoleculeSize() {
41
- switch (this.moleculeSize) {
40
+ getSize() {
41
+ switch (this.rendererSize) {
42
42
  case 'normal': return new DG.Point(200, 100);
43
43
  case 'large': return new DG.Point(300, 150);
44
44
  case 'small':
@@ -63,7 +63,7 @@ export class FormsViewer extends DG.JsViewer {
63
63
  this.useGridSort = this.bool('useGridSort', true, { description: 'Sort values the same way as in the spreadsheet' });
64
64
  this.sortByColumnName = this.column('sortBy');
65
65
  this.sortAscending = false;
66
- this.moleculeSize = this.string('moleculeSize', 'small', { choices: ['small', 'normal', 'large'] });
66
+ this.rendererSize = this.string('rendererSize', 'small', { choices: ['small', 'normal', 'large'], description: 'Sets the display size of rendered content' });
67
67
  //fields
68
68
  this.indexes = [];
69
69
  // init
@@ -116,6 +116,8 @@ export class FormsViewer extends DG.JsViewer {
116
116
  onTableAttached() {
117
117
  if (this.fieldsColumnNames === null)
118
118
  this.setFieldsColumnNames(this.dataFrame.columns.names());
119
+ if (this.dataFrame.columns.bySemType('fit') != null && this.rendererSize === 'small')
120
+ this.rendererSize = 'normal';
119
121
  const sub = (stream, action) => {
120
122
  this.subs.push(DG.debounce(stream, 50).subscribe((_) => action()));
121
123
  };
@@ -234,7 +236,7 @@ export class FormsViewer extends DG.JsViewer {
234
236
  try {
235
237
  // for molecules, use the gridCol renderer instead of inputBase
236
238
  const col = this.dataFrame.col(name);
237
- if (col.semType && ((_a = grid === null || grid === void 0 ? void 0 : grid.col(name)) === null || _a === void 0 ? void 0 : _a.renderer)) {
239
+ if (col.semType && col.meta.cellRenderer && ((_a = grid === null || grid === void 0 ? void 0 : grid.col(name)) === null || _a === void 0 ? void 0 : _a.renderer)) {
238
240
  const renderer = grid.col(name).renderer;
239
241
  const rendererSize = this.getRendererSize(renderer);
240
242
  const gridCell = DG.GridCell.fromColumnRow(grid, name, grid.tableRowToGrid(row));
@@ -258,7 +260,7 @@ export class FormsViewer extends DG.JsViewer {
258
260
  const input = DG.InputBase.forColumn(col);
259
261
  if (input) {
260
262
  if (this.dataFrame.col(name).semType === DG.SEMTYPE.MOLECULE)
261
- input.input.classList.add(`d4-multi-form-molecule-input-${this.moleculeSize}`);
263
+ input.input.classList.add(`d4-multi-form-molecule-input-${this.rendererSize}`);
262
264
  input.input.setAttribute('column', name);
263
265
  input.value = ((_b = this.dataFrame.col(name)) === null || _b === void 0 ? void 0 : _b.isNone(row)) ? null : this.dataFrame.get(name, row);
264
266
  input.readOnly = true;
@@ -370,4 +372,4 @@ export class FormsViewer extends DG.JsViewer {
370
372
  this.virtualView.setData(this.indexes.length + (this.showCurrentRow ? 1 : 0) + (this.showMouseOverRow ? 1 : 0), (i) => this.renderForm(i));
371
373
  }
372
374
  }
373
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtdmlld2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybXMtdmlld2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBYSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLGFBQWE7QUFDYixPQUFPLHFCQUFxQixDQUFDO0FBRTdCLE1BQU0sMkJBQTJCLEdBQUcsK0RBQStELENBQUM7QUFDcEcsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUM7QUFFcEMsTUFBTSxPQUFPLFdBQVksU0FBUSxFQUFFLENBQUMsUUFBUTtJQUMxQyxJQUFJLElBQUksS0FBYSxPQUFPLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUF1QjVDLElBQUksU0FBUyxDQUFDLEVBQWdCO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxlQUFlLENBQUMsSUFBYztRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFrQjtRQUM1QixJQUFJLENBQUMsaUJBQWlCLEdB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QU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUM7cUJBQzdHLElBQUksSUFBSSxJQUFJLENBQUEsTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsYUFBYSwwQ0FBRSxNQUFNLElBQUcsQ0FBQztvQkFDOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsQ0FBQzs7b0JBRXJHLElBQUksQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMzRCxDQUFDO1FBQ0gsQ0FBQztRQUVELEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFaEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3JGLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0ICcuLi8uLi9jc3MvZm9ybXMuY3NzJztcblxuY29uc3QgQ09MU19MSU1JVF9FWENFRURFRF9XQVJOSU5HID0gYE51bWJlciBvZiBjb2x1bW5zIGlzIG1vcmUgdGhhbiAyMC4gRmlyc3QgMjAgY29sdW1ucyBhcmUgc2hvd25gO1xuY29uc3QgQk9PTEVBTl9JTlBVVF9UT1BfTUFSR0lOID0gMTU7XG5cbmV4cG9ydCBjbGFzcyBGb3Jtc1ZpZXdlciBleHRlbmRzIERHLkpzVmlld2VyIHtcbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHsgcmV0dXJuICdGb3Jtc1ZpZXdlcic7IH1cblxuICBtb2xlY3VsZVNpemU6ICdzbWFsbCcgfCAnbm9ybWFsJyB8ICdsYXJnZSc7XG4gIGZpZWxkc0NvbHVtbk5hbWVzOiBzdHJpbmdbXTtcbiAgY29sb3JDb2RlOiBib29sZWFuO1xuICBzaG93Q3VycmVudFJvdzogYm9vbGVhbjtcbiAgc2hvd01vdXNlT3ZlclJvdzogYm9vbGVhbjtcbiAgc2hvd1NlbGVjdGVkUm93czogYm9vbGVhbjtcbiAgc2hvd0ZpeGVkUm93cyA9IGZhbHNlO1xuICB1c2VHcmlkU29ydCA9IHRydWU7XG4gIHNvcnRCeUNvbHVtbk5hbWU/OiBzdHJpbmc7XG4gIHNvcnRBc2NlbmRpbmc6IGJvb2xlYW47XG5cbiAgaW5kZXhlczogbnVtYmVyW10gfCBJbnQzMkFycmF5PGFueT47XG4gIGNvbHVtbkhlYWRlcnNEaXY6IEhUTUxEaXZFbGVtZW50O1xuICB2aXJ0dWFsVmlldzogREcuVmlydHVhbFZpZXc7XG4gIGNvbHVtbkxhYmVsV2lkdGg6IG51bWJlciA9IDA7XG4gIGN1cnJlbnRSb3dJbmRpY2F0b3IgPSB1aS5kaXYoJycsICdkNC1tdWx0aS1mb3JtLWZvcm0taW5kaWNhdG9yIGQ0LW11bHRpLWZvcm0tZm9ybS1pbmRpY2F0b3ItY3VycmVudC1yb3cnKTtcbiAgbW91c2VPdmVyUm93SW5kaWNhdG9yID0gdWkuZGl2KCcnLCAnZDQtbXVsdGktZm9ybS1mb3JtLWluZGljYXRvciBkNC1tdWx0aS1mb3JtLWZvcm0taW5kaWNhdG9yLW1vdXNlLW92ZXItcm93Jyk7XG4gIHNwbGl0Q29sTGVmdDogSFRNTEVsZW1lbnQ7XG4gIHNwbGl0Q29sUmlnaHQ6IEhUTUxFbGVtZW50O1xuICBpbnB1dENsaWNrZWQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgc2V0IGRhdGFmcmFtZShkZjogREcuRGF0YUZyYW1lKSB7XG4gICAgdGhpcy5kYXRhRnJhbWUgPSBkZjtcbiAgICB0aGlzLm9uVGFibGVBdHRhY2hlZCgpO1xuICB9XG5cbiAgc2V0IGZpeGVkUm93TnVtYmVycyhpZHhzOiBudW1iZXJbXSkge1xuICAgIHRoaXMuaW5kZXhlcyA9IGlkeHM7XG4gICAgdGhpcy5zaG93Q3VycmVudFJvdyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd01vdXNlT3ZlclJvdyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1NlbGVjdGVkUm93cyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0ZpeGVkUm93cyA9IHRydWU7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHNldCBjb2x1bW5zKGNvbE5hbWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSBjb2xOYW1lcztcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFJlbmRlcmVyU2l6ZShyZW5kZXJlcjogREcuR3JpZENlbGxSZW5kZXJlcik6IERHLlBvaW50IHtcbiAgICBsZXQgd2lkdGggPSByZW5kZXJlci5kZWZhdWx0V2lkdGg7XG4gICAgbGV0IGhlaWdodCA9IHJlbmRlcmVyLmRlZmF1bHRIZWlnaHQ7XG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0TW9sZWN1bGVTaXplKCk7XG5cbiAgICBzd2l0Y2ggKHRoaXMubW9sZWN1bGVTaXplKSB7XG4gICAgICBjYXNlICdub3JtYWwnOiByZXR1cm4gbmV3IERHLlBvaW50KHdpZHRoLCBoZWlnaHQpO1xuICAgICAgY2FzZSAnbGFyZ2UnOiByZXR1cm4gbmV3IERHLlBvaW50KE1hdGguZmxvb3Iod2lkdGggKiAxLjUpLCBNYXRoLmZsb29yKGhlaWdodCAqIDEuNSkpO1xuICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgZGVmYXVsdDogcmV0dXJuIG5ldyBERy5Qb2ludChNYXRoLmZsb29yKHdpZHRoICogMC42NiksIE1hdGguZmxvb3IoaGVpZ2h0ICogMC42NikpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRNb2xlY3VsZVNpemUoKTogREcuUG9pbnQge1xuICAgIHN3aXRjaCAodGhpcy5tb2xlY3VsZVNpemUpIHtcbiAgICAgIGNhc2UgJ25vcm1hbCc6IHJldHVybiBuZXcgREcuUG9pbnQoMjAwLCAxMDApO1xuICAgICAgY2FzZSAnbGFyZ2UnOiByZXR1cm4gbmV3IERHLlBvaW50KDMwMCwgMTUwKTtcbiAgICAgIGNhc2UgJ3NtYWxsJzpcbiAgICAgIGRlZmF1bHQ6IHJldHVybiBuZXcgREcuUG9pbnQoMTIwLCA2MCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuaGVscFVybCA9ICdodHRwczovL2RhdGFncm9rLmFpL2hlbHAvdmlzdWFsaXplL3ZpZXdlcnMvZm9ybXMnO1xuXG4gICAgLy8gcHJvcGVydGllc1xuICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSB0aGlzLmFkZFByb3BlcnR5KCdmaWVsZHNDb2x1bW5OYW1lcycsIERHLlRZUEUuQ09MVU1OX0xJU1QpO1xuICAgIHRoaXMuY29sb3JDb2RlID0gdGhpcy5ib29sKCdjb2xvckNvZGUnLCB0cnVlKTtcbiAgICB0aGlzLnNob3dDdXJyZW50Um93ID0gdGhpcy5ib29sKCdzaG93Q3VycmVudFJvdycsIHRydWUpO1xuICAgIHRoaXMuc2hvd01vdXNlT3ZlclJvdyA9IHRoaXMuYm9vbCgnc2hvd01vdXNlT3ZlclJvdycsIHRydWUpO1xuICAgIHRoaXMuc2hvd1NlbGVjdGVkUm93cyA9IHRoaXMuYm9vbCgnc2hvd1NlbGVjdGVkUm93cycsIHRydWUpO1xuICAgIHRoaXMudXNlR3JpZFNvcnQgPSB0aGlzLmJvb2woJ3VzZUdyaWRTb3J0JywgdHJ1ZSwge2Rlc2NyaXB0aW9uOiAnU29ydCB2YWx1ZXMgdGhlIHNhbWUgd2F5IGFzIGluIHRoZSBzcHJlYWRzaGVldCd9KTtcbiAgICB0aGlzLnNvcnRCeUNvbHVtbk5hbWUgPSB0aGlzLmNvbHVtbignc29ydEJ5Jyk7XG4gICAgdGhpcy5zb3J0QXNjZW5kaW5nID0gZmFsc2U7XG4gICAgdGhpcy5tb2xlY3VsZVNpemUgPSB0aGlzLnN0cmluZygnbW9sZWN1bGVTaXplJywgJ3NtYWxsJywge2Nob2ljZXM6IFsnc21hbGwnLCAnbm9ybWFsJywgJ2xhcmdlJ119KSBhcyAnc21hbGwnIHwgJ25vcm1hbCcgfCAnbGFyZ2UnO1xuXG4gICAgLy9maWVsZHNcbiAgICB0aGlzLmluZGV4ZXMgPSBbXTtcblxuICAgIC8vIGluaXRcbiAgICB0aGlzLnJvb3QuY2xhc3NMaXN0LmFkZCgnZDQtbXVsdGktZm9ybScpO1xuICAgIHRoaXMuY29sdW1uSGVhZGVyc0RpdiA9IHVpLmRpdihbXSwgJ2Q0LW11bHRpLWZvcm0taGVhZGVyJyk7XG4gICAgdGhpcy52aXJ0dWFsVmlldyA9IHVpLnZpcnR1YWxWaWV3KDAsIChpOiBudW1iZXIpID0+IHRoaXMucmVuZGVyRm9ybShpKSwgZmFsc2UsIDEpO1xuICAgIGNvbnN0IGNvbHVtbkhlYWRlcnNCb3ggPSB1aS5kaXYodGhpcy5jb2x1bW5IZWFkZXJzRGl2KTtcbiAgICBjb25zdCBmb3JtV2l0aEhlYWRlckRpdiA9IHVpLnNwbGl0SChbY29sdW1uSGVhZGVyc0JveCwgdGhpcy52aXJ0dWFsVmlldy5yb290XSwgbnVsbCwgdHJ1ZSk7XG4gICAgdGhpcy5yb290LmFwcGVuZENoaWxkKGZvcm1XaXRoSGVhZGVyRGl2KTtcblxuICAgIHRoaXMuc3BsaXRDb2xMZWZ0ID0gZm9ybVdpdGhIZWFkZXJEaXYuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5zcGxpdENvbFJpZ2h0ID0gZm9ybVdpdGhIZWFkZXJEaXYubGFzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcblxuICAgIHVpLnRvb2x0aXAuYmluZCh0aGlzLmN1cnJlbnRSb3dJbmRpY2F0b3IsICdDdXJyZW50IHJvdycpO1xuICAgIHVpLnRvb2x0aXAuYmluZCh0aGlzLm1vdXNlT3ZlclJvd0luZGljYXRvciwgJ01vdXNlIG92ZXIgcm93Jyk7XG5cbiAgICB1aS50b29scy53YWl0Rm9yRWxlbWVudEluRG9tKHRoaXMucm9vdCkudGhlbigoXykgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5IZWFkZXJzRGl2LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdycsICdoaWRkZW4nLCAnaW1wb3J0YW50Jyk7XG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuY29sdW1uSGVhZGVyc0Rpdi5zdHlsZSwge1xuICAgICAgICAvLyBvdmVmbG93OidoaWRkZW4gIWltcG9ydGFudCcsXG4gICAgICAgIG1pbldpZHRoOiAnMTUwcHgnLFxuICAgICAgICBmbGV4U2hyaW5rOiAnMCdcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnNwbGl0Q29sTGVmdC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cnLCAnaGlkZGVuJywgJ2ltcG9ydGFudCcpO1xuICAgICAgY29sdW1uSGVhZGVyc0JveC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cnLCAnc2Nyb2xsJywgJ2ltcG9ydGFudCcpO1xuICAgICAgT2JqZWN0LmFzc2lnbihjb2x1bW5IZWFkZXJzQm94LnN0eWxlLCB7XG4gICAgICAgIGJveFNpemluZzogJ2NvbnRlbnQtYm94JyxcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgcGFkZGluZ1JpZ2h0OiAnMTdweCd9KTtcblxuICAgICAgY29sdW1uSGVhZGVyc0JveC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy52aXJ0dWFsVmlldy5yb290LnNjcm9sbFRvcCA9IGNvbHVtbkhlYWRlcnNCb3guc2Nyb2xsVG9wO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMudmlydHVhbFZpZXcucm9vdC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgY29sdW1uSGVhZGVyc0JveC5zY3JvbGxUb3AgPSB0aGlzLnZpcnR1YWxWaWV3LnJvb3Quc2Nyb2xsVG9wO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB1aS50b29scy53YWl0Rm9yRWxlbWVudEluRG9tKHRoaXMudmlydHVhbFZpZXcucm9vdCkudGhlbigoXykgPT4ge1xuICAgICAgdGhpcy5maXRIZWFkZXJUb0xhYmVsV2lkdGgoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZpdEhlYWRlclRvTGFiZWxXaWR0aCh3aWR0aD86IG51bWJlcikge1xuICAgIGNvbnN0IHcgPSB3aWR0aCA/PyB0aGlzLmNvbHVtbkxhYmVsV2lkdGg7XG4gICAgY29uc3Qgcm9vdFdpZHRoID0gdGhpcy5yb290LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIHRoaXMuc3BsaXRDb2xMZWZ0LnN0eWxlLndpZHRoID0gYCR7dyArIDMwfXB4YDtcbiAgICB0aGlzLnNwbGl0Q29sUmlnaHQuc3R5bGUud2lkdGggPSBgJHtyb290V2lkdGggLSB3IC0gMzAgLSA0fXB4YDtcbiAgfVxuXG4gIGdldENvbHVtbldpZHRoKGVsOkhUTUxFbGVtZW50KSB7XG4gICAgcmV0dXJuIHBhcnNlSW50KGVsLnN0eWxlLndpZHRoKTtcbiAgfVxuXG4gIG9uVGFibGVBdHRhY2hlZCgpIHtcbiAgICBpZiAodGhpcy5maWVsZHNDb2x1bW5OYW1lcyA9PT0gbnVsbClcbiAgICAgIHRoaXMuc2V0RmllbGRzQ29sdW1uTmFtZXModGhpcy5kYXRhRnJhbWUuY29sdW1ucy5uYW1lcygpKTtcblxuICAgIGNvbnN0IHN1YiA9IChzdHJlYW06IE9ic2VydmFibGU8dW5rbm93bj4sIGFjdGlvbjogRnVuY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuc3Vicy5wdXNoKERHLmRlYm91bmNlKHN0cmVhbSwgNTApLnN1YnNjcmliZSgoXykgPT4gYWN0aW9uKCkpKTtcbiAgICB9O1xuXG4gICAgc3ViKHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5vbkNoYW5nZWQsICgpID0+IHRoaXMucmVuZGVyKCkpO1xuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5maWx0ZXIub25DaGFuZ2VkLCAoKSA9PiB0aGlzLnJlbmRlcigpKTtcbiAgICBzdWIodGhpcy5kYXRhRnJhbWUub25NZXRhZGF0YUNoYW5nZWQsICgpID0+IHRoaXMucmVuZGVyKCkpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBncmlkID0gdGhpcy5nZXRHcmlkKCk7XG4gICAgICBpZiAoZ3JpZClcbiAgICAgICAgc3ViKGdyaWQub25Sb3dzU29ydGVkLCAoKSA9PiB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlbmRlcigpKTtcbiAgICAgICAgfSk7XG4gICAgfSlcblxuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5vbkNvbHVtbnNSZW1vdmVkLCAoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUZpZWxkc0NvbHVtbk5hbWVzKCk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH0pO1xuXG4gICAgc3ViKHRoaXMuZGF0YUZyYW1lLm9uQ3VycmVudFJvd0NoYW5nZWQucGlwZShmaWx0ZXIoKF8pID0+IHRoaXMuc2hvd0N1cnJlbnRSb3cpKSxcbiAgICAgICgpID0+IHRoaXMudmlydHVhbFZpZXcucmVmcmVzaEl0ZW0odGhpcy5jdXJyZW50Um93UG9zISkpO1xuXG4gICAgc3ViKHRoaXMuZGF0YUZyYW1lLm9uTW91c2VPdmVyUm93Q2hhbmdlZC5waXBlKGZpbHRlcigoXykgPT4gdGhpcy5zaG93TW91c2VPdmVyUm93KSksXG4gICAgICAoKSA9PiB0aGlzLnZpcnR1YWxWaWV3LnJlZnJlc2hJdGVtKHRoaXMubW91c2VPdmVyUG9zISkpO1xuXG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHNldEZpZWxkc0NvbHVtbk5hbWVzKGRmQ29sdW1uczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzID0gZGZDb2x1bW5zLmxlbmd0aCA+IDIwID8gZGZDb2x1bW5zLnNsaWNlKDAsIDIwKSA6IGRmQ29sdW1ucztcbiAgfVxuXG4gIHVwZGF0ZUZpZWxkc0NvbHVtbk5hbWVzKCkge1xuICAgIGNvbnN0IG5ld0NvbHVtbnMgPSB0aGlzLmRhdGFGcmFtZS5jb2x1bW5zLm5hbWVzKCk7XG4gICAgbGV0IGNvdW50ZXIgPSB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50ZXI7IGkrKykge1xuICAgICAgY29uc3QgY29sSWR4ID0gbmV3Q29sdW1ucy5pbmRleE9mKHRoaXMuZmllbGRzQ29sdW1uTmFtZXNbaV0pO1xuICAgICAgaWYgKGNvbElkeCA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5maWVsZHNDb2x1bW5OYW1lcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGNvdW50ZXItLTtcbiAgICAgICAgaS0tO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uUHJvcGVydHlDaGFuZ2VkKHByb3BlcnR5OiBERy5Qcm9wZXJ0eSk6IHZvaWQge1xuICAgIGlmICgocHJvcGVydHkubmFtZSA9PT0gJ3Nob3dDdXJyZW50Um93JyB8fCBwcm9wZXJ0eS5uYW1lID09PSAnc2hvd01vdXNlT3ZlclJvdycgfHxcbiAgICAgIHByb3BlcnR5Lm5hbWUgPT09ICdzaG93U2VsZWN0ZWRSb3dzJyAmJiBwcm9wZXJ0eS5nZXQodGhpcykgPT09IHRydWUpICYmIHRoaXMuc2hvd0ZpeGVkUm93cylcbiAgICAgIGdyb2suc2hlbGwud2FybmluZyhgQ2Fubm90IHNldCAke3Byb3BlcnR5Lm5hbWV9IHRvIHRydWUgc2luY2UgZml4ZWQgcm93cyBhcmUgc2V0YCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJlbmRlckhlYWRlcigpIHtcbiAgICB1aS5lbXB0eSh0aGlzLmNvbHVtbkhlYWRlcnNEaXYpO1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLnJlbmRlckZvcm0oMCwgdHJ1ZSk7XG4gICAgZm9ybS5jbGFzc0xpc3QuYWRkKCd0ZW1wJyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmb3JtKTtcblxuICAgIGZvciAoY29uc3QgbmFtZSBvZiB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzKSB7XG4gICAgICBjb25zdCBmb3JtRmllbGQgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ1tjb2x1bW49XCInICsgbmFtZSArICdcIl0nKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgaWYgKGZvcm1GaWVsZCkge1xuICAgICAgICBjb25zdCBjb2x1bW5MYWJlbCA9IHVpLmJpbmQodGhpcy5kYXRhRnJhbWUuY29sKG5hbWUpLCB1aS5kaXZUZXh0KG5hbWUpKTtcbiAgICAgICAgY29uc3QgY2xvc2VJY29uID0gdWkuaWNvbkZBKCd0aW1lcycsICgpID0+IHtcbiAgICAgICAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzID0gdGhpcy5maWVsZHNDb2x1bW5OYW1lcy5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSAhPT0gbmFtZSk7XG4gICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNvbHVtbkxhYmVsQ29udGFpbmVyID0gdWkuZGl2KFtjb2x1bW5MYWJlbCwgY2xvc2VJY29uXSwgJ2Q0LW11bHRpLWZvcm0tY29sdW1uLW5hbWUgZDQtZmxleC1yb3cnKTtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5nZXRTb3J0QnlDb2x1bW5zKCkuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgaWYgKGlkeCA+IC0xKVxuICAgICAgICAgIGNvbHVtbkxhYmVsQ29udGFpbmVyLmFwcGVuZCh1aS5kaXZUZXh0KHRoaXMuZ2V0U29ydEJ5VHlwZXMoKVtpZHhdID8gJ+KGkScgOiAn4oaTJywgJ2Q0LW11bHRpLWZvcm0tY29sdW1uLXNvcnQtaW5kaWNhdG9yJykpO1xuXG4gICAgICAgIGNvbnN0IG9mZnNldFRvcCA9IGZvcm1GaWVsZC50eXBlID09PSAnY2hlY2tib3gnID9cbiAgICAgICAgICBmb3JtRmllbGQub2Zmc2V0VG9wIC0gQk9PTEVBTl9JTlBVVF9UT1BfTUFSR0lOIDogZm9ybUZpZWxkLm9mZnNldFRvcDtcbiAgICAgICAgY29sdW1uTGFiZWxDb250YWluZXIuc3R5bGUudG9wID0gYCR7b2Zmc2V0VG9wICsgMTB9cHhgO1xuICAgICAgICB0aGlzLmNvbHVtbkhlYWRlcnNEaXYuYXBwZW5kQ2hpbGQoY29sdW1uTGFiZWxDb250YWluZXIpO1xuXG4gICAgICAgIGNvbHVtbkxhYmVsLm9uY2xpY2sgPSAoXzogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLmN1cnJlbnRDb2wgPSB0aGlzLmRhdGFGcmFtZS5jb2wobmFtZSkhO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbHVtbkxhYmVsLm9uZGJsY2xpY2sgPSAoXzogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5zb3J0QnlDb2x1bW5OYW1lKSB7XG4gICAgICAgICAgICB0aGlzLnNvcnRCeUNvbHVtbk5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgdGhpcy5zb3J0QXNjZW5kaW5nID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc29ydEFzY2VuZGluZylcbiAgICAgICAgICAgIHRoaXMuc29ydEJ5Q29sdW1uTmFtZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLnNvcnRBc2NlbmRpbmcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGNvbHVtbkxhYmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gdGhpcy5jb2x1bW5MYWJlbFdpZHRoKVxuICAgICAgICAgIHRoaXMuY29sdW1uTGFiZWxXaWR0aCA9IGNvbHVtbkxhYmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBjb2x1bW5MYWJlbENvbnRhaW5lci5vbm1vdXNlZW50ZXIgPSAoZTogTW91c2VFdmVudCkgPT4gY2xvc2VJY29uLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgICAgIGNvbHVtbkxhYmVsQ29udGFpbmVyLm9ubW91c2VsZWF2ZSA9IChlOiBNb3VzZUV2ZW50KSA9PiBjbG9zZUljb24uc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvcm0ucmVtb3ZlKCk7XG4gIH1cblxuICBnZXQgY3VycmVudFJvd1BvcygpIHsgcmV0dXJuIHRoaXMuc2hvd0N1cnJlbnRSb3cgPyAwIDogbnVsbDsgfVxuICBnZXQgbW91c2VPdmVyUG9zKCkgeyByZXR1cm4gdGhpcy5zaG93TW91c2VPdmVyUm93ID8gKHRoaXMuc2hvd0N1cnJlbnRSb3cgPyAxIDogMCkgOiBudWxsOyB9XG5cbiAgZ2V0R3JpZCgpIHtcbiAgICBpZiAodGhpcy52aWV3ICYmICh0aGlzLnZpZXcgYXMgREcuVGFibGVWaWV3KS5ncmlkKVxuICAgICAgcmV0dXJuICh0aGlzLnZpZXcgYXMgREcuVGFibGVWaWV3KS5ncmlkO1xuICAgIGlmICh0aGlzLmRhdGFGcmFtZSAmJiBncm9rLnNoZWxsLnR2ICYmIGdyb2suc2hlbGwudHYuZGF0YUZyYW1lID09PSB0aGlzLmRhdGFGcmFtZSAmJiBncm9rLnNoZWxsLnR2LmdyaWQpXG4gICAgICByZXR1cm4gZ3Jvay5zaGVsbC50di5ncmlkO1xuICAgIGNvbnN0IHR2ID0gQXJyYXkuZnJvbShncm9rLnNoZWxsLnRhYmxlVmlld3MpLmZpbmQoKHR2KSA9PiB0di5kYXRhRnJhbWUgPT09IHRoaXMuZGF0YUZyYW1lKTtcbiAgICBpZiAodHYgJiYgdHYuZ3JpZClcbiAgICAgIHJldHVybiB0di5ncmlkO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmVuZGVyRm9ybShyb3c6IG51bWJlciwgaGVhZGVyPzogYm9vbGVhbikge1xuICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdldEdyaWQoKTtcbiAgICBjb25zdCBzYXZlZElkeCA9IHJvdztcblxuICAgIGlmIChoZWFkZXIpXG4gICAgICByb3cgPSAwO1xuICAgIGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc2hvd0N1cnJlbnRSb3cgJiYgcm93ID09PSB0aGlzLmN1cnJlbnRSb3dQb3MpXG4gICAgICAgIHJvdyA9IHRoaXMuZGF0YUZyYW1lLmN1cnJlbnRSb3dJZHg7XG4gICAgICBlbHNlIGlmICh0aGlzLnNob3dNb3VzZU92ZXJSb3cgJiYgcm93ID09PSB0aGlzLm1vdXNlT3ZlclBvcylcbiAgICAgICAgcm93ID0gdGhpcy5kYXRhRnJhbWUubW91c2VPdmVyUm93SWR4O1xuICAgICAgZWxzZVxuICAgICAgICByb3cgPSB0aGlzLmluZGV4ZXNbcm93IC0gKHRoaXMuc2hvd0N1cnJlbnRSb3cgPyAxIDogMCkgLSAodGhpcy5zaG93TW91c2VPdmVyUm93ID8gMSA6IDApXTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtID0gdWkuZGl2VihcbiAgICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMubWFwKChuYW1lKSA9PiB7XG4gICAgICAgIGxldCByZXNEaXY6IEhUTUxFbGVtZW50ID0gdWkuZGl2KCk7XG4gICAgICAgIGlmIChyb3cgPT09IC0xKVxuICAgICAgICAgIHJldHVybiByZXNEaXY7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBmb3IgbW9sZWN1bGVzLCB1c2UgdGhlIGdyaWRDb2wgcmVuZGVyZXIgaW5zdGVhZCBvZiBpbnB1dEJhc2VcbiAgICAgICAgICBjb25zdCBjb2wgPSB0aGlzLmRhdGFGcmFtZS5jb2wobmFtZSkhO1xuICAgICAgICAgIGlmIChjb2wuc2VtVHlwZSAmJiBncmlkPy5jb2wobmFtZSk/LnJlbmRlcmVyKSB7XG4gICAgICAgICAgICBjb25zdCByZW5kZXJlciA9IGdyaWQhLmNvbChuYW1lKSEucmVuZGVyZXIhO1xuICAgICAgICAgICAgY29uc3QgcmVuZGVyZXJTaXplID0gdGhpcy5nZXRSZW5kZXJlclNpemUocmVuZGVyZXIpO1xuICAgICAgICAgICAgY29uc3QgZ3JpZENlbGwgPSBERy5HcmlkQ2VsbC5mcm9tQ29sdW1uUm93KGdyaWQhLCBuYW1lLCBncmlkIS50YWJsZVJvd1RvR3JpZChyb3cpKTtcbiAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IHVpLmNhbnZhcyhyZW5kZXJlclNpemUueCwgcmVuZGVyZXJTaXplLnkpO1xuICAgICAgICAgICAgY2FudmFzLndpZHRoID0gcmVuZGVyZXJTaXplLnggKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcbiAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSByZW5kZXJlclNpemUueSAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvO1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJykhO1xuICAgICAgICAgICAgLy8gY3R4LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG4gICAgICAgICAgICBjdHguc2NhbGUod2luZG93LmRldmljZVBpeGVsUmF0aW8sIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnY29sdW1uJywgbmFtZSk7XG5cbiAgICAgICAgICAgIGdyaWRDZWxsLnJlbmRlcih7Y29udGV4dDogY3R4LCBib3VuZHM6IG5ldyBERy5SZWN0KDAsIDAsIHJlbmRlcmVyU2l6ZS54LCByZW5kZXJlclNpemUueSl9KTtcbiAgICAgICAgICAgIHJlc0RpdiA9IGNhbnZhcztcbiAgICAgICAgICAgIHJlc0Rpdi5zdHlsZS5iYWNrZ3JvdW5kID0gJ3doaXRlJzsgLy8gZml4ZXMgYmVmb3JlIGNoYW5nZXMgb2YgdmllcnR1YWwgdmlldyBub3QgcmVtb3Zpbmcgb2xkIGl0ZW1zXG4gICAgICAgICAgICByZXNEaXYub25jbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLmN1cnJlbnRDZWxsID0gdGhpcy5kYXRhRnJhbWUuY2VsbChyb3csIG5hbWUpO1xuICAgICAgICAgICAgICB0aGlzLmlucHV0Q2xpY2tlZC5uZXh0KG5hbWUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHVpLnRvb2x0aXAuYmluZChyZXNEaXYsIG5hbWUpO1xuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gREcuSW5wdXRCYXNlLmZvckNvbHVtbihjb2wpO1xuICAgICAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZS5jb2wobmFtZSkhLnNlbVR5cGUgPT09IERHLlNFTVRZUEUuTU9MRUNVTEUpXG4gICAgICAgICAgICAgICAgaW5wdXQuaW5wdXQuY2xhc3NMaXN0LmFkZChgZDQtbXVsdGktZm9ybS1tb2xlY3VsZS1pbnB1dC0ke3RoaXMubW9sZWN1bGVTaXplfWApO1xuICAgICAgICAgICAgICBpbnB1dC5pbnB1dC5zZXRBdHRyaWJ1dGUoJ2NvbHVtbicsIG5hbWUpO1xuICAgICAgICAgICAgICBpbnB1dC52YWx1ZSA9IHRoaXMuZGF0YUZyYW1lLmNvbChuYW1lKT8uaXNOb25lKHJvdykgPyBudWxsIDogdGhpcy5kYXRhRnJhbWUuZ2V0KG5hbWUsIHJvdyk7XG4gICAgICAgICAgICAgIGlucHV0LnJlYWRPbmx5ID0gdHJ1ZTtcblxuICAgICAgICAgICAgICBpZiAodGhpcy5jb2xvckNvZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZ3JpZCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZ2MgPSBncmlkLmNvbChuYW1lKTtcblxuICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3IgPSB0aGlzLmRhdGFGcmFtZS5jb2wobmFtZSk/Lm1ldGEuY29sb3JzLmdldENvbG9yKHJvdyk7XG4gICAgICAgICAgICAgICAgICBpZiAoY29sb3IgJiYgY29sb3IgIT0gNDI5NDk2NzI5NSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZ2M/LmlzVGV4dENvbG9yQ29kZWQpXG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXQuaW5wdXQuc3R5bGUuY29sb3IgPSBgJHtERy5Db2xvci50b0h0bWwoY29sb3IpfSFpbXBvcnRhbnQ7YDtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXQuaW5wdXQuc3R5bGUuY29sb3IgPSBgJHtERy5Db2xvci50b0h0bWwoREcuQ29sb3IuZ2V0Q29udHJhc3RDb2xvcihjb2xvcikpfSFpbXBvcnRhbnQ7YDtcbiAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5pbnB1dC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBERy5Db2xvci50b0h0bWwoY29sb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdjPy5jb250ZW50Q2VsbFN0eWxlPy50ZXh0Q29sb3IpXG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXQuaW5wdXQuc3R5bGUuY29sb3IgPSBERy5Db2xvci50b0h0bWwoZ2MhLmNvbnRlbnRDZWxsU3R5bGUhLnRleHRDb2xvcik7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGdjPy5jb250ZW50Q2VsbFN0eWxlPy5iYWNrQ29sb3IpXG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXQuaW5wdXQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gREcuQ29sb3IudG9IdG1sKGdjIS5jb250ZW50Q2VsbFN0eWxlIS5iYWNrQ29sb3IpO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBpZiAoZ2M/LmNvbnRlbnRDZWxsU3R5bGU/LmhvcnpBbGlnbiA9PSBcImNlbnRlclwiIHx8IGdjPy5jb250ZW50Q2VsbFN0eWxlPy5ob3J6QWxpZ24gPT0gXCJyaWdodFwiKVxuICAgICAgICAgICAgICAgICAgICBpbnB1dC5pbnB1dC5zdHlsZS50ZXh0QWxpZ24gPSBnYyEuY29udGVudENlbGxTdHlsZS5ob3J6QWxpZ24hO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoZ2MhLmNvbnRlbnRDZWxsU3R5bGU/LmZvbnQpXG4gICAgICAgICAgICAgICAgICAgIGlucHV0LmlucHV0LnN0eWxlLmZvbnQgPSBnYyEuY29udGVudENlbGxTdHlsZS5mb250O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpbnB1dC5pbnB1dC5vbmNsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5jdXJyZW50Q2VsbCA9IHRoaXMuZGF0YUZyYW1lLmNlbGwocm93LCBuYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q2xpY2tlZC5uZXh0KG5hbWUpO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB1aS50b29sdGlwLmJpbmQoaW5wdXQuaW5wdXQsIG5hbWUpO1xuXG4gICAgICAgICAgICAgIHJlc0RpdiA9IGlucHV0LmlucHV0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNEaXY7XG4gICAgICB9XG4gICAgICApLCAnZDQtbXVsdGktZm9ybS1mb3JtJyk7XG5cbiAgICBpZiAodGhpcy5zaG93TW91c2VPdmVyUm93ICYmIHNhdmVkSWR4ID09IHRoaXMubW91c2VPdmVyUG9zKVxuICAgICAgZm9ybS5hcHBlbmQodGhpcy5tb3VzZU92ZXJSb3dJbmRpY2F0b3IpO1xuICAgIGlmICh0aGlzLnNob3dDdXJyZW50Um93ICYmIHNhdmVkSWR4ID09PSB0aGlzLmN1cnJlbnRSb3dQb3MpXG4gICAgICBmb3JtLmFwcGVuZCh0aGlzLmN1cnJlbnRSb3dJbmRpY2F0b3IpO1xuXG4gICAgZm9ybS5vbmNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQuY3RybEtleSAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSByb3c7IGkrKylcbiAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KGksIGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uZ2V0KHJvdyk7XG4gICAgICAgICAgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldChyb3csICFjdXJyZW50U2VsZWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHRoaXMuZGF0YUZyYW1lLnJvd0NvdW50OyBpKyspXG4gICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KGksIGkgPD0gcm93KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAoIXRoaXMuc2hvd0N1cnJlbnRSb3cgfHwgc2F2ZWRJZHggIT09IHRoaXMuY3VycmVudFJvd1BvcylcbiAgICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLmN1cnJlbnRSb3dJZHggPSByb3c7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGlmICghdGhpcy5zaG93TW91c2VPdmVyUm93IHx8IHNhdmVkSWR4ICE9PSB0aGlzLm1vdXNlT3ZlclBvcykge1xuICAgICAgZm9ybS5vbm1vdXNlZW50ZXIgPSAoKSA9PiB0aGlzLmRhdGFGcmFtZS5tb3VzZU92ZXJSb3dJZHggPSByb3c7XG4gICAgICBmb3JtLm9ubW91c2VsZWF2ZSA9ICgpID0+IHRoaXMuZGF0YUZyYW1lLm1vdXNlT3ZlclJvd0lkeCA9IC0xO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybTtcbiAgfVxuXG4gIGdldFNvcnRCeUNvbHVtbnMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdldEdyaWQoKTtcbiAgICBpZiAodGhpcy5zb3J0QnlDb2x1bW5OYW1lICYmIHRoaXMuZGF0YUZyYW1lLmNvbHVtbnMuY29udGFpbnModGhpcy5zb3J0QnlDb2x1bW5OYW1lKSlcbiAgICAgIHJldHVybiBbdGhpcy5zb3J0QnlDb2x1bW5OYW1lXTtcbiAgICBlbHNlIGlmIChncmlkICYmIGdyaWQ/LnNvcnRCeUNvbHVtbnM/Lmxlbmd0aCA+IDApXG4gICAgICByZXR1cm4gZ3JpZC5zb3J0QnlDb2x1bW5zLm1hcCgoYykgPT4gYy5uYW1lKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRTb3J0QnlUeXBlcygpOiBib29sZWFuW10ge1xuICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdldEdyaWQoKTtcbiAgICBpZiAodGhpcy5zb3J0QnlDb2x1bW5OYW1lICYmIHRoaXMuZGF0YUZyYW1lLmNvbHVtbnMuY29udGFpbnModGhpcy5zb3J0QnlDb2x1bW5OYW1lKSlcbiAgICAgIHJldHVybiBbdGhpcy5zb3J0QXNjZW5kaW5nXTtcbiAgICBlbHNlIGlmIChncmlkICYmIGdyaWQ/LnNvcnRCeUNvbHVtbnM/Lmxlbmd0aCA+IDApXG4gICAgICByZXR1cm4gZ3JpZC5zb3J0VHlwZXM7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdldEdyaWQoKTtcblxuICAgIGlmICghdGhpcy5zaG93Rml4ZWRSb3dzKSB7XG4gICAgICB0aGlzLmluZGV4ZXMgPSBbXTtcbiAgICAgIGlmICh0aGlzLnNob3dTZWxlY3RlZFJvd3MgJiYgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnRydWVDb3VudCA+IDApIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uQW5kRmlsdGVyID0gdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmNsb25lKCkuYW5kKHRoaXMuZGF0YUZyYW1lLmZpbHRlcik7XG4gICAgICAgIGlmICh0aGlzLnNvcnRCeUNvbHVtbk5hbWUgJiYgdGhpcy5kYXRhRnJhbWUuY29sdW1ucy5jb250YWlucyh0aGlzLnNvcnRCeUNvbHVtbk5hbWUpKVxuICAgICAgICAgIHRoaXMuaW5kZXhlcyA9IHRoaXMuZGF0YUZyYW1lLmdldFNvcnRlZE9yZGVyKFt0aGlzLnNvcnRCeUNvbHVtbk5hbWVdLCBbdGhpcy5zb3J0QXNjZW5kaW5nXSwgc2VsZWN0aW9uQW5kRmlsdGVyKTtcbiAgICAgICAgZWxzZSBpZiAoZ3JpZCAmJiBncmlkPy5zb3J0QnlDb2x1bW5zPy5sZW5ndGggPiAwKVxuICAgICAgICAgIHRoaXMuaW5kZXhlcyA9IHRoaXMuZGF0YUZyYW1lLmdldFNvcnRlZE9yZGVyKGdyaWQuc29ydEJ5Q29sdW1ucywgZ3JpZC5zb3J0VHlwZXMsIHNlbGVjdGlvbkFuZEZpbHRlcik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aGlzLmluZGV4ZXMgPSBzZWxlY3Rpb25BbmRGaWx0ZXIuZ2V0U2VsZWN0ZWRJbmRleGVzKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdWkuZW1wdHkodGhpcy5jb2x1bW5IZWFkZXJzRGl2KTtcblxuICAgIHRoaXMucmVuZGVySGVhZGVyKCk7XG5cbiAgICB0aGlzLnZpcnR1YWxWaWV3LnNldERhdGEoXG4gICAgICB0aGlzLmluZGV4ZXMubGVuZ3RoICsgKHRoaXMuc2hvd0N1cnJlbnRSb3cgPyAxIDogMCkgKyAodGhpcy5zaG93TW91c2VPdmVyUm93ID8gMSA6IDApLFxuICAgICAgKGk6IG51bWJlcikgPT4gdGhpcy5yZW5kZXJGb3JtKGkpKTtcbiAgfVxufVxuIl19
375
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtdmlld2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybXMtdmlld2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBYSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLGFBQWE7QUFDYixPQUFPLHFCQUFxQixDQUFDO0FBRTdCLE1BQU0sMkJBQTJCLEdBQUcsK0RBQStELENBQUM7QUFDcEcsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUM7QUFFcEMsTUFBTSxPQUFPLFdBQVksU0FBUSxFQUFFLENBQUMsUUFBUTtJQUMxQyxJQUFJLElBQUksS0FBYSxPQUFPLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUF1QjVDLElBQUksU0FBUyxDQUFDLEVBQWdCO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxlQUFlLENBQUMsSUFBYztRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFrQjtRQUM1QixJQUFJLENBQUMsaUJBQWlCLEdB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QUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO3FCQUM3RyxJQUFJLElBQUksSUFBSSxDQUFBLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLGFBQWEsMENBQUUsTUFBTSxJQUFHLENBQUM7b0JBQzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLGtCQUFrQixDQUFDLENBQUM7O29CQUVyRyxJQUFJLENBQUMsT0FBTyxHQUFHLGtCQUFrQixDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDMUQ7U0FDRjtRQUVELEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFaEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3JGLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0ICcuLi8uLi9jc3MvZm9ybXMuY3NzJztcblxuY29uc3QgQ09MU19MSU1JVF9FWENFRURFRF9XQVJOSU5HID0gYE51bWJlciBvZiBjb2x1bW5zIGlzIG1vcmUgdGhhbiAyMC4gRmlyc3QgMjAgY29sdW1ucyBhcmUgc2hvd25gO1xuY29uc3QgQk9PTEVBTl9JTlBVVF9UT1BfTUFSR0lOID0gMTU7XG5cbmV4cG9ydCBjbGFzcyBGb3Jtc1ZpZXdlciBleHRlbmRzIERHLkpzVmlld2VyIHtcbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHsgcmV0dXJuICdGb3Jtc1ZpZXdlcic7IH1cblxuICByZW5kZXJlclNpemU6ICdzbWFsbCcgfCAnbm9ybWFsJyB8ICdsYXJnZSc7XG4gIGZpZWxkc0NvbHVtbk5hbWVzOiBzdHJpbmdbXTtcbiAgY29sb3JDb2RlOiBib29sZWFuO1xuICBzaG93Q3VycmVudFJvdzogYm9vbGVhbjtcbiAgc2hvd01vdXNlT3ZlclJvdzogYm9vbGVhbjtcbiAgc2hvd1NlbGVjdGVkUm93czogYm9vbGVhbjtcbiAgc2hvd0ZpeGVkUm93cyA9IGZhbHNlO1xuICB1c2VHcmlkU29ydCA9IHRydWU7XG4gIHNvcnRCeUNvbHVtbk5hbWU/OiBzdHJpbmc7XG4gIHNvcnRBc2NlbmRpbmc6IGJvb2xlYW47XG5cbiAgaW5kZXhlczogbnVtYmVyW10gfCBJbnQzMkFycmF5O1xuICBjb2x1bW5IZWFkZXJzRGl2OiBIVE1MRGl2RWxlbWVudDtcbiAgdmlydHVhbFZpZXc6IERHLlZpcnR1YWxWaWV3O1xuICBjb2x1bW5MYWJlbFdpZHRoOiBudW1iZXIgPSAwO1xuICBjdXJyZW50Um93SW5kaWNhdG9yID0gdWkuZGl2KCcnLCAnZDQtbXVsdGktZm9ybS1mb3JtLWluZGljYXRvciBkNC1tdWx0aS1mb3JtLWZvcm0taW5kaWNhdG9yLWN1cnJlbnQtcm93Jyk7XG4gIG1vdXNlT3ZlclJvd0luZGljYXRvciA9IHVpLmRpdignJywgJ2Q0LW11bHRpLWZvcm0tZm9ybS1pbmRpY2F0b3IgZDQtbXVsdGktZm9ybS1mb3JtLWluZGljYXRvci1tb3VzZS1vdmVyLXJvdycpO1xuICBzcGxpdENvbExlZnQ6IEhUTUxFbGVtZW50O1xuICBzcGxpdENvbFJpZ2h0OiBIVE1MRWxlbWVudDtcbiAgaW5wdXRDbGlja2VkOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHNldCBkYXRhZnJhbWUoZGY6IERHLkRhdGFGcmFtZSkge1xuICAgIHRoaXMuZGF0YUZyYW1lID0gZGY7XG4gICAgdGhpcy5vblRhYmxlQXR0YWNoZWQoKTtcbiAgfVxuXG4gIHNldCBmaXhlZFJvd051bWJlcnMoaWR4czogbnVtYmVyW10pIHtcbiAgICB0aGlzLmluZGV4ZXMgPSBpZHhzO1xuICAgIHRoaXMuc2hvd0N1cnJlbnRSb3cgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dNb3VzZU92ZXJSb3cgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dTZWxlY3RlZFJvd3MgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dGaXhlZFJvd3MgPSB0cnVlO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBzZXQgY29sdW1ucyhjb2xOYW1lczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzID0gY29sTmFtZXM7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRSZW5kZXJlclNpemUocmVuZGVyZXI6IERHLkdyaWRDZWxsUmVuZGVyZXIpOiBERy5Qb2ludCB7XG4gICAgbGV0IHdpZHRoID0gcmVuZGVyZXIuZGVmYXVsdFdpZHRoO1xuICAgIGxldCBoZWlnaHQgPSByZW5kZXJlci5kZWZhdWx0SGVpZ2h0O1xuXG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0U2l6ZSgpO1xuXG4gICAgc3dpdGNoICh0aGlzLnJlbmRlcmVyU2l6ZSkge1xuICAgICAgY2FzZSAnbm9ybWFsJzogcmV0dXJuIG5ldyBERy5Qb2ludCh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIGNhc2UgJ2xhcmdlJzogcmV0dXJuIG5ldyBERy5Qb2ludChNYXRoLmZsb29yKHdpZHRoICogMS41KSwgTWF0aC5mbG9vcihoZWlnaHQgKiAxLjUpKTtcbiAgICAgIGNhc2UgJ3NtYWxsJzpcbiAgICAgIGRlZmF1bHQ6IHJldHVybiBuZXcgREcuUG9pbnQoTWF0aC5mbG9vcih3aWR0aCAqIDAuNjYpLCBNYXRoLmZsb29yKGhlaWdodCAqIDAuNjYpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0U2l6ZSgpOiBERy5Qb2ludCB7XG4gICAgc3dpdGNoICh0aGlzLnJlbmRlcmVyU2l6ZSkge1xuICAgICAgY2FzZSAnbm9ybWFsJzogcmV0dXJuIG5ldyBERy5Qb2ludCgyMDAsIDEwMCk7XG4gICAgICBjYXNlICdsYXJnZSc6IHJldHVybiBuZXcgREcuUG9pbnQoMzAwLCAxNTApO1xuICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgZGVmYXVsdDogcmV0dXJuIG5ldyBERy5Qb2ludCgxMjAsIDYwKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5oZWxwVXJsID0gJ2h0dHBzOi8vZGF0YWdyb2suYWkvaGVscC92aXN1YWxpemUvdmlld2Vycy9mb3Jtcyc7XG5cbiAgICAvLyBwcm9wZXJ0aWVzXG4gICAgdGhpcy5maWVsZHNDb2x1bW5OYW1lcyA9IHRoaXMuYWRkUHJvcGVydHkoJ2ZpZWxkc0NvbHVtbk5hbWVzJywgREcuVFlQRS5DT0xVTU5fTElTVCk7XG4gICAgdGhpcy5jb2xvckNvZGUgPSB0aGlzLmJvb2woJ2NvbG9yQ29kZScsIHRydWUpO1xuICAgIHRoaXMuc2hvd0N1cnJlbnRSb3cgPSB0aGlzLmJvb2woJ3Nob3dDdXJyZW50Um93JywgdHJ1ZSk7XG4gICAgdGhpcy5zaG93TW91c2VPdmVyUm93ID0gdGhpcy5ib29sKCdzaG93TW91c2VPdmVyUm93JywgdHJ1ZSk7XG4gICAgdGhpcy5zaG93U2VsZWN0ZWRSb3dzID0gdGhpcy5ib29sKCdzaG93U2VsZWN0ZWRSb3dzJywgdHJ1ZSk7XG4gICAgdGhpcy51c2VHcmlkU29ydCA9IHRoaXMuYm9vbCgndXNlR3JpZFNvcnQnLCB0cnVlLCB7ZGVzY3JpcHRpb246ICdTb3J0IHZhbHVlcyB0aGUgc2FtZSB3YXkgYXMgaW4gdGhlIHNwcmVhZHNoZWV0J30pO1xuICAgIHRoaXMuc29ydEJ5Q29sdW1uTmFtZSA9IHRoaXMuY29sdW1uKCdzb3J0QnknKTtcbiAgICB0aGlzLnNvcnRBc2NlbmRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnJlbmRlcmVyU2l6ZSA9IHRoaXMuc3RyaW5nKCdyZW5kZXJlclNpemUnLCAnc21hbGwnLCB7Y2hvaWNlczogWydzbWFsbCcsICdub3JtYWwnLCAnbGFyZ2UnXSwgZGVzY3JpcHRpb246ICdTZXRzIHRoZSBkaXNwbGF5IHNpemUgb2YgcmVuZGVyZWQgY29udGVudCd9KSBhcyAnc21hbGwnIHwgJ25vcm1hbCcgfCAnbGFyZ2UnO1xuXG4gICAgLy9maWVsZHNcbiAgICB0aGlzLmluZGV4ZXMgPSBbXTtcblxuICAgIC8vIGluaXRcbiAgICB0aGlzLnJvb3QuY2xhc3NMaXN0LmFkZCgnZDQtbXVsdGktZm9ybScpO1xuICAgIHRoaXMuY29sdW1uSGVhZGVyc0RpdiA9IHVpLmRpdihbXSwgJ2Q0LW11bHRpLWZvcm0taGVhZGVyJyk7XG4gICAgdGhpcy52aXJ0dWFsVmlldyA9IHVpLnZpcnR1YWxWaWV3KDAsIChpOiBudW1iZXIpID0+IHRoaXMucmVuZGVyRm9ybShpKSwgZmFsc2UsIDEpO1xuICAgIGNvbnN0IGNvbHVtbkhlYWRlcnNCb3ggPSB1aS5kaXYodGhpcy5jb2x1bW5IZWFkZXJzRGl2KTtcbiAgICBjb25zdCBmb3JtV2l0aEhlYWRlckRpdiA9IHVpLnNwbGl0SChbY29sdW1uSGVhZGVyc0JveCwgdGhpcy52aXJ0dWFsVmlldy5yb290XSwgbnVsbCwgdHJ1ZSk7XG4gICAgdGhpcy5yb290LmFwcGVuZENoaWxkKGZvcm1XaXRoSGVhZGVyRGl2KTtcblxuICAgIHRoaXMuc3BsaXRDb2xMZWZ0ID0gZm9ybVdpdGhIZWFkZXJEaXYuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5zcGxpdENvbFJpZ2h0ID0gZm9ybVdpdGhIZWFkZXJEaXYubGFzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcblxuICAgIHVpLnRvb2x0aXAuYmluZCh0aGlzLmN1cnJlbnRSb3dJbmRpY2F0b3IsICdDdXJyZW50IHJvdycpO1xuICAgIHVpLnRvb2x0aXAuYmluZCh0aGlzLm1vdXNlT3ZlclJvd0luZGljYXRvciwgJ01vdXNlIG92ZXIgcm93Jyk7XG5cbiAgICB1aS50b29scy53YWl0Rm9yRWxlbWVudEluRG9tKHRoaXMucm9vdCkudGhlbigoXykgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5IZWFkZXJzRGl2LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdycsICdoaWRkZW4nLCAnaW1wb3J0YW50Jyk7XG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuY29sdW1uSGVhZGVyc0Rpdi5zdHlsZSwge1xuICAgICAgICAvLyBvdmVmbG93OidoaWRkZW4gIWltcG9ydGFudCcsXG4gICAgICAgIG1pbldpZHRoOiAnMTUwcHgnLFxuICAgICAgICBmbGV4U2hyaW5rOiAnMCdcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnNwbGl0Q29sTGVmdC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cnLCAnaGlkZGVuJywgJ2ltcG9ydGFudCcpO1xuICAgICAgY29sdW1uSGVhZGVyc0JveC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cnLCAnc2Nyb2xsJywgJ2ltcG9ydGFudCcpO1xuICAgICAgT2JqZWN0LmFzc2lnbihjb2x1bW5IZWFkZXJzQm94LnN0eWxlLCB7XG4gICAgICAgIGJveFNpemluZzogJ2NvbnRlbnQtYm94JyxcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgcGFkZGluZ1JpZ2h0OiAnMTdweCd9KTtcblxuICAgICAgY29sdW1uSGVhZGVyc0JveC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy52aXJ0dWFsVmlldy5yb290LnNjcm9sbFRvcCA9IGNvbHVtbkhlYWRlcnNCb3guc2Nyb2xsVG9wO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMudmlydHVhbFZpZXcucm9vdC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgY29sdW1uSGVhZGVyc0JveC5zY3JvbGxUb3AgPSB0aGlzLnZpcnR1YWxWaWV3LnJvb3Quc2Nyb2xsVG9wO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB1aS50b29scy53YWl0Rm9yRWxlbWVudEluRG9tKHRoaXMudmlydHVhbFZpZXcucm9vdCkudGhlbigoXykgPT4ge1xuICAgICAgdGhpcy5maXRIZWFkZXJUb0xhYmVsV2lkdGgoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZpdEhlYWRlclRvTGFiZWxXaWR0aCh3aWR0aD86IG51bWJlcikge1xuICAgIGNvbnN0IHcgPSB3aWR0aCA/PyB0aGlzLmNvbHVtbkxhYmVsV2lkdGg7XG4gICAgY29uc3Qgcm9vdFdpZHRoID0gdGhpcy5yb290LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIHRoaXMuc3BsaXRDb2xMZWZ0LnN0eWxlLndpZHRoID0gYCR7dyArIDMwfXB4YDtcbiAgICB0aGlzLnNwbGl0Q29sUmlnaHQuc3R5bGUud2lkdGggPSBgJHtyb290V2lkdGggLSB3IC0gMzAgLSA0fXB4YDtcbiAgfVxuXG4gIGdldENvbHVtbldpZHRoKGVsOkhUTUxFbGVtZW50KSB7XG4gICAgcmV0dXJuIHBhcnNlSW50KGVsLnN0eWxlLndpZHRoKTtcbiAgfVxuXG4gIG9uVGFibGVBdHRhY2hlZCgpIHtcbiAgICBpZiAodGhpcy5maWVsZHNDb2x1bW5OYW1lcyA9PT0gbnVsbClcbiAgICAgIHRoaXMuc2V0RmllbGRzQ29sdW1uTmFtZXModGhpcy5kYXRhRnJhbWUuY29sdW1ucy5uYW1lcygpKTtcbiAgICBpZiAodGhpcy5kYXRhRnJhbWUuY29sdW1ucy5ieVNlbVR5cGUoJ2ZpdCcpICE9IG51bGwgJiYgdGhpcy5yZW5kZXJlclNpemUgPT09ICdzbWFsbCcpXG4gICAgICB0aGlzLnJlbmRlcmVyU2l6ZSA9ICdub3JtYWwnO1xuXG4gICAgY29uc3Qgc3ViID0gKHN0cmVhbTogT2JzZXJ2YWJsZTx1bmtub3duPiwgYWN0aW9uOiBGdW5jdGlvbikgPT4ge1xuICAgICAgdGhpcy5zdWJzLnB1c2goREcuZGVib3VuY2Uoc3RyZWFtLCA1MCkuc3Vic2NyaWJlKChfKSA9PiBhY3Rpb24oKSkpO1xuICAgIH07XG5cbiAgICBzdWIodGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLm9uQ2hhbmdlZCwgKCkgPT4gdGhpcy5yZW5kZXIoKSk7XG4gICAgc3ViKHRoaXMuZGF0YUZyYW1lLmZpbHRlci5vbkNoYW5nZWQsICgpID0+IHRoaXMucmVuZGVyKCkpO1xuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5vbk1ldGFkYXRhQ2hhbmdlZCwgKCkgPT4gdGhpcy5yZW5kZXIoKSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdldEdyaWQoKTtcbiAgICAgIGlmIChncmlkKVxuICAgICAgICBzdWIoZ3JpZC5vblJvd3NTb3J0ZWQsICgpID0+IHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVuZGVyKCkpO1xuICAgICAgICB9KTtcbiAgICB9KVxuXG4gICAgc3ViKHRoaXMuZGF0YUZyYW1lLm9uQ29sdW1uc1JlbW92ZWQsICgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlRmllbGRzQ29sdW1uTmFtZXMoKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfSk7XG5cbiAgICBzdWIodGhpcy5kYXRhRnJhbWUub25DdXJyZW50Um93Q2hhbmdlZC5waXBlKGZpbHRlcigoXykgPT4gdGhpcy5zaG93Q3VycmVudFJvdykpLFxuICAgICAgKCkgPT4gdGhpcy52aXJ0dWFsVmlldy5yZWZyZXNoSXRlbSh0aGlzLmN1cnJlbnRSb3dQb3MhKSk7XG5cbiAgICBzdWIodGhpcy5kYXRhRnJhbWUub25Nb3VzZU92ZXJSb3dDaGFuZ2VkLnBpcGUoZmlsdGVyKChfKSA9PiB0aGlzLnNob3dNb3VzZU92ZXJSb3cpKSxcbiAgICAgICgpID0+IHRoaXMudmlydHVhbFZpZXcucmVmcmVzaEl0ZW0odGhpcy5tb3VzZU92ZXJQb3MhKSk7XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgc2V0RmllbGRzQ29sdW1uTmFtZXMoZGZDb2x1bW5zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSBkZkNvbHVtbnMubGVuZ3RoID4gMjAgPyBkZkNvbHVtbnMuc2xpY2UoMCwgMjApIDogZGZDb2x1bW5zO1xuICB9XG5cbiAgdXBkYXRlRmllbGRzQ29sdW1uTmFtZXMoKSB7XG4gICAgY29uc3QgbmV3Q29sdW1ucyA9IHRoaXMuZGF0YUZyYW1lLmNvbHVtbnMubmFtZXMoKTtcbiAgICBsZXQgY291bnRlciA9IHRoaXMuZmllbGRzQ29sdW1uTmFtZXMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnRlcjsgaSsrKSB7XG4gICAgICBjb25zdCBjb2xJZHggPSBuZXdDb2x1bW5zLmluZGV4T2YodGhpcy5maWVsZHNDb2x1bW5OYW1lc1tpXSk7XG4gICAgICBpZiAoY29sSWR4ID09PSAtMSkge1xuICAgICAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgY291bnRlci0tO1xuICAgICAgICBpLS07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHk6IERHLlByb3BlcnR5KTogdm9pZCB7XG4gICAgaWYgKChwcm9wZXJ0eS5uYW1lID09PSAnc2hvd0N1cnJlbnRSb3cnIHx8IHByb3BlcnR5Lm5hbWUgPT09ICdzaG93TW91c2VPdmVyUm93JyB8fFxuICAgICAgcHJvcGVydHkubmFtZSA9PT0gJ3Nob3dTZWxlY3RlZFJvd3MnICYmIHByb3BlcnR5LmdldCh0aGlzKSA9PT0gdHJ1ZSkgJiYgdGhpcy5zaG93Rml4ZWRSb3dzKVxuICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKGBDYW5ub3Qgc2V0ICR7cHJvcGVydHkubmFtZX0gdG8gdHJ1ZSBzaW5jZSBmaXhlZCByb3dzIGFyZSBzZXRgKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmVuZGVySGVhZGVyKCkge1xuICAgIHVpLmVtcHR5KHRoaXMuY29sdW1uSGVhZGVyc0Rpdik7XG4gICAgY29uc3QgZm9ybSA9IHRoaXMucmVuZGVyRm9ybSgwLCB0cnVlKTtcbiAgICBmb3JtLmNsYXNzTGlzdC5hZGQoJ3RlbXAnKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZvcm0pO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMpIHtcbiAgICAgIGNvbnN0IGZvcm1GaWVsZCA9IGZvcm0ucXVlcnlTZWxlY3RvcignW2NvbHVtbj1cIicgKyBuYW1lICsgJ1wiXScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbkxhYmVsID0gdWkuYmluZCh0aGlzLmRhdGFGcmFtZS5jb2wobmFtZSksIHVpLmRpdlRleHQobmFtZSkpO1xuICAgICAgICBjb25zdCBjbG9zZUljb24gPSB1aS5pY29uRkEoJ3RpbWVzJywgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzLmZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSBuYW1lKTtcbiAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY29sdW1uTGFiZWxDb250YWluZXIgPSB1aS5kaXYoW2NvbHVtbkxhYmVsLCBjbG9zZUljb25dLCAnZDQtbXVsdGktZm9ybS1jb2x1bW4tbmFtZSBkNC1mbGV4LXJvdycpO1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmdldFNvcnRCeUNvbHVtbnMoKS5pbmRleE9mKG5hbWUpO1xuICAgICAgICBpZiAoaWR4ID4gLTEpXG4gICAgICAgICAgY29sdW1uTGFiZWxDb250YWluZXIuYXBwZW5kKHVpLmRpdlRleHQodGhpcy5nZXRTb3J0QnlUeXBlcygpW2lkeF0gPyAn4oaRJyA6ICfihpMnLCAnZDQtbXVsdGktZm9ybS1jb2x1bW4tc29ydC1pbmRpY2F0b3InKSk7XG5cbiAgICAgICAgY29uc3Qgb2Zmc2V0VG9wID0gZm9ybUZpZWxkLnR5cGUgPT09ICdjaGVja2JveCcgP1xuICAgICAgICAgIGZvcm1GaWVsZC5vZmZzZXRUb3AgLSBCT09MRUFOX0lOUFVUX1RPUF9NQVJHSU4gOiBmb3JtRmllbGQub2Zmc2V0VG9wO1xuICAgICAgICBjb2x1bW5MYWJlbENvbnRhaW5lci5zdHlsZS50b3AgPSBgJHtvZmZzZXRUb3AgKyAxMH1weGA7XG4gICAgICAgIHRoaXMuY29sdW1uSGVhZGVyc0Rpdi5hcHBlbmRDaGlsZChjb2x1bW5MYWJlbENvbnRhaW5lcik7XG5cbiAgICAgICAgY29sdW1uTGFiZWwub25jbGljayA9IChfOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRhRnJhbWUuY3VycmVudENvbCA9IHRoaXMuZGF0YUZyYW1lLmNvbChuYW1lKSE7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29sdW1uTGFiZWwub25kYmxjbGljayA9IChfOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLnNvcnRCeUNvbHVtbk5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuc29ydEJ5Q29sdW1uTmFtZSA9IG5hbWU7XG4gICAgICAgICAgICB0aGlzLnNvcnRBc2NlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAodGhpcy5zb3J0QXNjZW5kaW5nKVxuICAgICAgICAgICAgdGhpcy5zb3J0QnlDb2x1bW5OYW1lID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuc29ydEFzY2VuZGluZyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoY29sdW1uTGFiZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiB0aGlzLmNvbHVtbkxhYmVsV2lkdGgpXG4gICAgICAgICAgdGhpcy5jb2x1bW5MYWJlbFdpZHRoID0gY29sdW1uTGFiZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIGNvbHVtbkxhYmVsQ29udGFpbmVyLm9ubW91c2VlbnRlciA9IChlOiBNb3VzZUV2ZW50KSA9PiBjbG9zZUljb24uc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICAgICAgY29sdW1uTGFiZWxDb250YWluZXIub25tb3VzZWxlYXZlID0gKGU6IE1vdXNlRXZlbnQpID0+IGNsb3NlSWNvbi5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9ybS5yZW1vdmUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50Um93UG9zKCkgeyByZXR1cm4gdGhpcy5zaG93Q3VycmVudFJvdyA/IDAgOiBudWxsOyB9XG4gIGdldCBtb3VzZU92ZXJQb3MoKSB7IHJldHVybiB0aGlzLnNob3dNb3VzZU92ZXJSb3cgPyAodGhpcy5zaG93Q3VycmVudFJvdyA/IDEgOiAwKSA6IG51bGw7IH1cblxuICBnZXRHcmlkKCkge1xuICAgIGlmICh0aGlzLnZpZXcgJiYgKHRoaXMudmlldyBhcyBERy5UYWJsZVZpZXcpLmdyaWQpXG4gICAgICByZXR1cm4gKHRoaXMudmlldyBhcyBERy5UYWJsZVZpZXcpLmdyaWQ7XG4gICAgaWYgKHRoaXMuZGF0YUZyYW1lICYmIGdyb2suc2hlbGwudHYgJiYgZ3Jvay5zaGVsbC50di5kYXRhRnJhbWUgPT09IHRoaXMuZGF0YUZyYW1lICYmIGdyb2suc2hlbGwudHYuZ3JpZClcbiAgICAgIHJldHVybiBncm9rLnNoZWxsLnR2LmdyaWQ7XG4gICAgY29uc3QgdHYgPSBBcnJheS5mcm9tKGdyb2suc2hlbGwudGFibGVWaWV3cykuZmluZCgodHYpID0+IHR2LmRhdGFGcmFtZSA9PT0gdGhpcy5kYXRhRnJhbWUpO1xuICAgIGlmICh0diAmJiB0di5ncmlkKVxuICAgICAgcmV0dXJuIHR2LmdyaWQ7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZW5kZXJGb3JtKHJvdzogbnVtYmVyLCBoZWFkZXI/OiBib29sZWFuKSB7XG4gICAgY29uc3QgZ3JpZCA9IHRoaXMuZ2V0R3JpZCgpO1xuICAgIGNvbnN0IHNhdmVkSWR4ID0gcm93O1xuXG4gICAgaWYgKGhlYWRlcilcbiAgICAgIHJvdyA9IDA7XG4gICAgZWxzZSB7XG4gICAgICBpZiAodGhpcy5zaG93Q3VycmVudFJvdyAmJiByb3cgPT09IHRoaXMuY3VycmVudFJvd1BvcylcbiAgICAgICAgcm93ID0gdGhpcy5kYXRhRnJhbWUuY3VycmVudFJvd0lkeDtcbiAgICAgIGVsc2UgaWYgKHRoaXMuc2hvd01vdXNlT3ZlclJvdyAmJiByb3cgPT09IHRoaXMubW91c2VPdmVyUG9zKVxuICAgICAgICByb3cgPSB0aGlzLmRhdGFGcmFtZS5tb3VzZU92ZXJSb3dJZHg7XG4gICAgICBlbHNlXG4gICAgICAgIHJvdyA9IHRoaXMuaW5kZXhlc1tyb3cgLSAodGhpcy5zaG93Q3VycmVudFJvdyA/IDEgOiAwKSAtICh0aGlzLnNob3dNb3VzZU92ZXJSb3cgPyAxIDogMCldO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm0gPSB1aS5kaXZWKFxuICAgICAgdGhpcy5maWVsZHNDb2x1bW5OYW1lcy5tYXAoKG5hbWUpID0+IHtcbiAgICAgICAgbGV0IHJlc0RpdjogSFRNTEVsZW1lbnQgPSB1aS5kaXYoKTtcbiAgICAgICAgaWYgKHJvdyA9PT0gLTEpXG4gICAgICAgICAgcmV0dXJuIHJlc0RpdjtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIGZvciBtb2xlY3VsZXMsIHVzZSB0aGUgZ3JpZENvbCByZW5kZXJlciBpbnN0ZWFkIG9mIGlucHV0QmFzZVxuICAgICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuZGF0YUZyYW1lLmNvbChuYW1lKSE7XG4gICAgICAgICAgaWYgKGNvbC5zZW1UeXBlICYmIGNvbC5tZXRhLmNlbGxSZW5kZXJlciAmJiBncmlkPy5jb2wobmFtZSk/LnJlbmRlcmVyKSB7XG4gICAgICAgICAgICBjb25zdCByZW5kZXJlciA9IGdyaWQhLmNvbChuYW1lKSEucmVuZGVyZXIhO1xuICAgICAgICAgICAgY29uc3QgcmVuZGVyZXJTaXplID0gdGhpcy5nZXRSZW5kZXJlclNpemUocmVuZGVyZXIpO1xuICAgICAgICAgICAgY29uc3QgZ3JpZENlbGwgPSBERy5HcmlkQ2VsbC5mcm9tQ29sdW1uUm93KGdyaWQhLCBuYW1lLCBncmlkIS50YWJsZVJvd1RvR3JpZChyb3cpKTtcbiAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IHVpLmNhbnZhcyhyZW5kZXJlclNpemUueCwgcmVuZGVyZXJTaXplLnkpO1xuICAgICAgICAgICAgY2FudmFzLndpZHRoID0gcmVuZGVyZXJTaXplLnggKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcbiAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSByZW5kZXJlclNpemUueSAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvO1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJykhO1xuICAgICAgICAgICAgLy8gY3R4LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG4gICAgICAgICAgICBjdHguc2NhbGUod2luZG93LmRldmljZVBpeGVsUmF0aW8sIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnY29sdW1uJywgbmFtZSk7XG5cbiAgICAgICAgICAgIGdyaWRDZWxsLnJlbmRlcih7Y29udGV4dDogY3R4LCBib3VuZHM6IG5ldyBERy5SZWN0KDAsIDAsIHJlbmRlcmVyU2l6ZS54LCByZW5kZXJlclNpemUueSl9KTtcbiAgICAgICAgICAgIHJlc0RpdiA9IGNhbnZhcztcbiAgICAgICAgICAgIHJlc0Rpdi5zdHlsZS5iYWNrZ3JvdW5kID0gJ3doaXRlJzsgLy8gZml4ZXMgYmVmb3JlIGNoYW5nZXMgb2YgdmllcnR1YWwgdmlldyBub3QgcmVtb3Zpbmcgb2xkIGl0ZW1zXG4gICAgICAgICAgICByZXNEaXYub25jbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLmN1cnJlbnRDZWxsID0gdGhpcy5kYXRhRnJhbWUuY2VsbChyb3csIG5hbWUpO1xuICAgICAgICAgICAgICB0aGlzLmlucHV0Q2xpY2tlZC5uZXh0KG5hbWUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHVpLnRvb2x0aXAuYmluZChyZXNEaXYsIG5hbWUpO1xuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gREcuSW5wdXRCYXNlLmZvckNvbHVtbihjb2wpO1xuICAgICAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZS5jb2wobmFtZSkhLnNlbVR5cGUgPT09IERHLlNFTVRZUEUuTU9MRUNVTEUpXG4gICAgICAgICAgICAgICAgaW5wdXQuaW5wdXQuY2xhc3NMaXN0LmFkZChgZDQtbXVsdGktZm9ybS1tb2xlY3VsZS1pbnB1dC0ke3RoaXMucmVuZGVyZXJTaXplfWApO1xuICAgICAgICAgICAgICBpbnB1dC5pbnB1dC5zZXRBdHRyaWJ1dGUoJ2NvbHVtbicsIG5hbWUpO1xuICAgICAgICAgICAgICBpbnB1dC52YWx1ZSA9IHRoaXMuZGF0YUZyYW1lLmNvbChuYW1lKT8uaXNOb25lKHJvdykgPyBudWxsIDogdGhpcy5kYXRhRnJhbWUuZ2V0KG5hbWUsIHJvdyk7XG4gICAgICAgICAgICAgIGlucHV0LnJlYWRPbmx5ID0gdHJ1ZTtcblxuICAgICAgICAgICAgICBpZiAodGhpcy5jb2xvckNvZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZ3JpZCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZ2MgPSBncmlkLmNvbChuYW1lKTtcblxuICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3IgPSB0aGlzLmRhdGFGcmFtZS5jb2wobmFtZSk/Lm1ldGEuY29sb3JzLmdldENvbG9yKHJvdyk7XG4gICAgICAgICAgICAgICAgICBpZiAoY29sb3IgJiYgY29sb3IgIT0gNDI5NDk2NzI5NSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZ2M/LmlzVGV4dENvbG9yQ29kZWQpXG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXQuaW5wdXQuc3R5bGUuY29sb3IgPSBgJHtERy5Db2xvci50b0h0bWwoY29sb3IpfSFpbXBvcnRhbnQ7YDtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXQuaW5wdXQuc3R5bGUuY29sb3IgPSBgJHtERy5Db2xvci50b0h0bWwoREcuQ29sb3IuZ2V0Q29udHJhc3RDb2xvcihjb2xvcikpfSFpbXBvcnRhbnQ7YDtcbiAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5pbnB1dC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBERy5Db2xvci50b0h0bWwoY29sb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdjPy5jb250ZW50Q2VsbFN0eWxlPy50ZXh0Q29sb3IpXG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXQuaW5wdXQuc3R5bGUuY29sb3IgPSBERy5Db2xvci50b0h0bWwoZ2MhLmNvbnRlbnRDZWxsU3R5bGUhLnRleHRDb2xvcik7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGdjPy5jb250ZW50Q2VsbFN0eWxlPy5iYWNrQ29sb3IpXG4gICAgICAgICAgICAgICAgICAgICAgaW5wdXQuaW5wdXQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gREcuQ29sb3IudG9IdG1sKGdjIS5jb250ZW50Q2VsbFN0eWxlIS5iYWNrQ29sb3IpO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBpZiAoZ2M/LmNvbnRlbnRDZWxsU3R5bGU/LmhvcnpBbGlnbiA9PSBcImNlbnRlclwiIHx8IGdjPy5jb250ZW50Q2VsbFN0eWxlPy5ob3J6QWxpZ24gPT0gXCJyaWdodFwiKVxuICAgICAgICAgICAgICAgICAgICBpbnB1dC5pbnB1dC5zdHlsZS50ZXh0QWxpZ24gPSBnYyEuY29udGVudENlbGxTdHlsZS5ob3J6QWxpZ24hO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoZ2MhLmNvbnRlbnRDZWxsU3R5bGU/LmZvbnQpXG4gICAgICAgICAgICAgICAgICAgIGlucHV0LmlucHV0LnN0eWxlLmZvbnQgPSBnYyEuY29udGVudENlbGxTdHlsZS5mb250O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpbnB1dC5pbnB1dC5vbmNsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5jdXJyZW50Q2VsbCA9IHRoaXMuZGF0YUZyYW1lLmNlbGwocm93LCBuYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q2xpY2tlZC5uZXh0KG5hbWUpO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB1aS50b29sdGlwLmJpbmQoaW5wdXQuaW5wdXQsIG5hbWUpO1xuXG4gICAgICAgICAgICAgIHJlc0RpdiA9IGlucHV0LmlucHV0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNEaXY7XG4gICAgICB9XG4gICAgICApLCAnZDQtbXVsdGktZm9ybS1mb3JtJyk7XG5cbiAgICBpZiAodGhpcy5zaG93TW91c2VPdmVyUm93ICYmIHNhdmVkSWR4ID09IHRoaXMubW91c2VPdmVyUG9zKVxuICAgICAgZm9ybS5hcHBlbmQodGhpcy5tb3VzZU92ZXJSb3dJbmRpY2F0b3IpO1xuICAgIGlmICh0aGlzLnNob3dDdXJyZW50Um93ICYmIHNhdmVkSWR4ID09PSB0aGlzLmN1cnJlbnRSb3dQb3MpXG4gICAgICBmb3JtLmFwcGVuZCh0aGlzLmN1cnJlbnRSb3dJbmRpY2F0b3IpO1xuXG4gICAgZm9ybS5vbmNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQuY3RybEtleSAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSByb3c7IGkrKylcbiAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KGksIGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uZ2V0KHJvdyk7XG4gICAgICAgICAgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldChyb3csICFjdXJyZW50U2VsZWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHRoaXMuZGF0YUZyYW1lLnJvd0NvdW50OyBpKyspXG4gICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KGksIGkgPD0gcm93KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAoIXRoaXMuc2hvd0N1cnJlbnRSb3cgfHwgc2F2ZWRJZHggIT09IHRoaXMuY3VycmVudFJvd1BvcylcbiAgICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLmN1cnJlbnRSb3dJZHggPSByb3c7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGlmICghdGhpcy5zaG93TW91c2VPdmVyUm93IHx8IHNhdmVkSWR4ICE9PSB0aGlzLm1vdXNlT3ZlclBvcykge1xuICAgICAgZm9ybS5vbm1vdXNlZW50ZXIgPSAoKSA9PiB0aGlzLmRhdGFGcmFtZS5tb3VzZU92ZXJSb3dJZHggPSByb3c7XG4gICAgICBmb3JtLm9ubW91c2VsZWF2ZSA9ICgpID0+IHRoaXMuZGF0YUZyYW1lLm1vdXNlT3ZlclJvd0lkeCA9IC0xO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybTtcbiAgfVxuXG4gIGdldFNvcnRCeUNvbHVtbnMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdldEdyaWQoKTtcbiAgICBpZiAodGhpcy5zb3J0QnlDb2x1bW5OYW1lICYmIHRoaXMuZGF0YUZyYW1lLmNvbHVtbnMuY29udGFpbnModGhpcy5zb3J0QnlDb2x1bW5OYW1lKSlcbiAgICAgIHJldHVybiBbdGhpcy5zb3J0QnlDb2x1bW5OYW1lXTtcbiAgICBlbHNlIGlmIChncmlkICYmIGdyaWQ/LnNvcnRCeUNvbHVtbnM/Lmxlbmd0aCA+IDApXG4gICAgICByZXR1cm4gZ3JpZC5zb3J0QnlDb2x1bW5zLm1hcCgoYykgPT4gYy5uYW1lKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRTb3J0QnlUeXBlcygpOiBib29sZWFuW10ge1xuICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdldEdyaWQoKTtcbiAgICBpZiAodGhpcy5zb3J0QnlDb2x1bW5OYW1lICYmIHRoaXMuZGF0YUZyYW1lLmNvbHVtbnMuY29udGFpbnModGhpcy5zb3J0QnlDb2x1bW5OYW1lKSlcbiAgICAgIHJldHVybiBbdGhpcy5zb3J0QXNjZW5kaW5nXTtcbiAgICBlbHNlIGlmIChncmlkICYmIGdyaWQ/LnNvcnRCeUNvbHVtbnM/Lmxlbmd0aCA+IDApXG4gICAgICByZXR1cm4gZ3JpZC5zb3J0VHlwZXM7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdldEdyaWQoKTtcblxuICAgIGlmICghdGhpcy5zaG93Rml4ZWRSb3dzKSB7XG4gICAgICB0aGlzLmluZGV4ZXMgPSBbXTtcbiAgICAgIGlmICh0aGlzLnNob3dTZWxlY3RlZFJvd3MgJiYgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnRydWVDb3VudCA+IDApIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uQW5kRmlsdGVyID0gdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmNsb25lKCkuYW5kKHRoaXMuZGF0YUZyYW1lLmZpbHRlcik7XG4gICAgICAgIGlmICh0aGlzLnNvcnRCeUNvbHVtbk5hbWUgJiYgdGhpcy5kYXRhRnJhbWUuY29sdW1ucy5jb250YWlucyh0aGlzLnNvcnRCeUNvbHVtbk5hbWUpKVxuICAgICAgICAgIHRoaXMuaW5kZXhlcyA9IHRoaXMuZGF0YUZyYW1lLmdldFNvcnRlZE9yZGVyKFt0aGlzLnNvcnRCeUNvbHVtbk5hbWVdLCBbdGhpcy5zb3J0QXNjZW5kaW5nXSwgc2VsZWN0aW9uQW5kRmlsdGVyKTtcbiAgICAgICAgZWxzZSBpZiAoZ3JpZCAmJiBncmlkPy5zb3J0QnlDb2x1bW5zPy5sZW5ndGggPiAwKVxuICAgICAgICAgIHRoaXMuaW5kZXhlcyA9IHRoaXMuZGF0YUZyYW1lLmdldFNvcnRlZE9yZGVyKGdyaWQuc29ydEJ5Q29sdW1ucywgZ3JpZC5zb3J0VHlwZXMsIHNlbGVjdGlvbkFuZEZpbHRlcik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aGlzLmluZGV4ZXMgPSBzZWxlY3Rpb25BbmRGaWx0ZXIuZ2V0U2VsZWN0ZWRJbmRleGVzKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdWkuZW1wdHkodGhpcy5jb2x1bW5IZWFkZXJzRGl2KTtcblxuICAgIHRoaXMucmVuZGVySGVhZGVyKCk7XG5cbiAgICB0aGlzLnZpcnR1YWxWaWV3LnNldERhdGEoXG4gICAgICB0aGlzLmluZGV4ZXMubGVuZ3RoICsgKHRoaXMuc2hvd0N1cnJlbnRSb3cgPyAxIDogMCkgKyAodGhpcy5zaG93TW91c2VPdmVyUm93ID8gMSA6IDApLFxuICAgICAgKGk6IG51bWJlcikgPT4gdGhpcy5yZW5kZXJGb3JtKGkpKTtcbiAgfVxufVxuIl19