obsidian-dev-utils 94.5.0 → 94.6.1

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.
Files changed (34) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/integration-test-plugin/main.js +221 -2
  3. package/dist/lib/cjs/__merged.cjs +11 -1
  4. package/dist/lib/cjs/__merged.d.cts +2 -0
  5. package/dist/lib/cjs/blob.cjs +6 -3
  6. package/dist/lib/cjs/blob.d.cts +18 -1
  7. package/dist/lib/cjs/generated-during-build.cjs +1 -1
  8. package/dist/lib/cjs/index.cjs +4 -1
  9. package/dist/lib/cjs/index.d.cts +1 -0
  10. package/dist/lib/cjs/jpeg-metadata.cjs +274 -0
  11. package/dist/lib/cjs/jpeg-metadata.d.cts +42 -0
  12. package/dist/lib/cjs/obsidian/attachment-unit-folder.cjs +155 -0
  13. package/dist/lib/cjs/obsidian/attachment-unit-folder.d.cts +73 -0
  14. package/dist/lib/cjs/obsidian/components/plugin-settings-component.cjs +4 -1
  15. package/dist/lib/cjs/obsidian/index.cjs +4 -1
  16. package/dist/lib/cjs/obsidian/index.d.cts +1 -0
  17. package/dist/lib/cjs/script-utils/exec.cjs +5 -3
  18. package/dist/lib/esm/__merged.d.mts +2 -0
  19. package/dist/lib/esm/__merged.mjs +13 -1
  20. package/dist/lib/esm/blob.d.mts +18 -1
  21. package/dist/lib/esm/blob.mjs +9 -3
  22. package/dist/lib/esm/generated-during-build.mjs +1 -1
  23. package/dist/lib/esm/index.d.mts +1 -0
  24. package/dist/lib/esm/index.mjs +3 -1
  25. package/dist/lib/esm/jpeg-metadata.d.mts +42 -0
  26. package/dist/lib/esm/jpeg-metadata.mjs +169 -0
  27. package/dist/lib/esm/obsidian/attachment-unit-folder.d.mts +73 -0
  28. package/dist/lib/esm/obsidian/attachment-unit-folder.mjs +50 -0
  29. package/dist/lib/esm/obsidian/components/plugin-settings-component.mjs +4 -1
  30. package/dist/lib/esm/obsidian/index.d.mts +1 -0
  31. package/dist/lib/esm/obsidian/index.mjs +3 -1
  32. package/dist/lib/esm/script-utils/exec.mjs +5 -3
  33. package/obsidian/attachment-unit-folder/package.json +6 -0
  34. package/package.json +14 -13
@@ -296,7 +296,6 @@ ${stderr}`));
296
296
  });
297
297
  }
298
298
  const LOCAL_STORAGE_NODE_OPTION = "--localstorage-file=:memory:";
299
- const CHILD_ENV = buildChildEnv(import_node_process.default.env, import_node_process.default.allowedNodeEnvironmentFlags);
300
299
  function buildCommandLine($arguments) {
301
300
  return import_node_process.default.platform === "win32" ? (0, import_cli_utils.toCommandLine)($arguments) : (0, import_cli_utils.toPosixCommandLine)($arguments);
302
301
  }
@@ -318,6 +317,9 @@ async function executeBatches(params) {
318
317
  }
319
318
  return results.join("\n");
320
319
  }
320
+ function getChildEnv() {
321
+ return buildChildEnv(import_node_process.default.env, import_node_process.default.allowedNodeEnvironmentFlags);
322
+ }
321
323
  function getMaxCommandLength() {
322
324
  const WINDOWS_MAX_COMMAND_LENGTH = 8191;
323
325
  const UNIX_MAX_COMMAND_LENGTH = 131072;
@@ -376,7 +378,7 @@ function isExecArgument(part) {
376
378
  function spawnViaShell(params) {
377
379
  const { command, cwd, env: extraEnv, isInteractive = false, rawArguments } = params;
378
380
  const env = {
379
- ...CHILD_ENV,
381
+ ...getChildEnv(),
380
382
  ...extraEnv
381
383
  };
382
384
  const stdio = isInteractive ? "inherit" : "pipe";
@@ -406,4 +408,4 @@ function spawnViaShell(params) {
406
408
  buildChildEnv,
407
409
  exec
408
410
  });
409
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9leGVjLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGV4ZWN1dGluZyBjb21tYW5kcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENoaWxkUHJvY2VzcyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2Vzcyc7XG5cbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vZGVidWcudHMnO1xuaW1wb3J0IHsgbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vb2JqZWN0LXV0aWxzLnRzJztcbmltcG9ydCB7IHRyaW1FbmQgfSBmcm9tICcuLi9zdHJpbmcudHMnO1xuaW1wb3J0IHsgYXNzZXJ0Tm9uTnVsbGFibGUgfSBmcm9tICcuLi90eXBlLWd1YXJkcy50cyc7XG5pbXBvcnQge1xuICBjbWRFc2NhcGVDb21tYW5kTGluZSBhcyBjb21tYW5kRXNjYXBlQ29tbWFuZExpbmUsXG4gIHRvQ29tbWFuZExpbmUsXG4gIHRvUG9zaXhDb21tYW5kTGluZVxufSBmcm9tICcuL2NsaS11dGlscy50cyc7XG5cbi8qKlxuICogQSBjb21tYW5kIHBhcnQ6IGVpdGhlciBhIHBsYWluIHN0cmluZyBvciBhbiB7QGxpbmsgRXhlY0FyZ3VtZW50fSB3aXRoIGJhdGNoZWQgYXJndW1lbnRzLlxuICovXG5leHBvcnQgdHlwZSBDb21tYW5kUGFydCA9IEV4ZWNBcmd1bWVudCB8IHN0cmluZztcblxuLyoqXG4gKiBBIGNvbW1hbmQgYXJndW1lbnQgdGhhdCBjb250YWlucyBhIGxpc3Qgb2YgYXJncyB0byBiZSBiYXRjaGVkLlxuICogSWYgdGhlIGV4cGFuZGVkIGNvbW1hbmQgZXhjZWVkcyB0aGUgcGxhdGZvcm0ncyBtYXggY29tbWFuZCBsZW5ndGgsXG4gKiB0aGUgYmF0Y2hlZCBhcmdzIGFyZSBzcGxpdCBpbnRvIHNlcXVlbnRpYWwgZXhlY3V0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjQXJndW1lbnQge1xuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyB0byBiYXRjaC5cbiAgICovXG4gIHJlYWRvbmx5IGJhdGNoZWRBcmd1bWVudHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBleGVjfSB0aGF0IHJldHVybiBkZXRhaWxlZCByZXN1bHRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNEZXRhaWxlZE9wdGlvbnMgZXh0ZW5kcyBFeGVjT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNdXN0IGJlIGB0cnVlYCB0byByZWNlaXZlIGRldGFpbGVkIHJlc3VsdHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRGV0YWlsczogdHJ1ZTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBleGVjdXRpbmcgYSBjb21tYW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgY3VycmVudCB3b3JraW5nIGZvbGRlciBmb3IgdGhlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY3dkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIGNoaWxkIHByb2Nlc3MsIG1lcmdlZCBvdmVyIHRoZSBpbmhlcml0ZWQgZW52aXJvbm1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB7fWBcbiAgICovXG4gIHJlYWRvbmx5IGVudj86IE5vZGVKUy5Qcm9jZXNzRW52O1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGF0dGFjaGVzIHRoZSBjaGlsZCBwcm9jZXNzJ3Mgc3RkaW8gZGlyZWN0bHkgdG8gdGhlIHRlcm1pbmFsIChgc3RkaW86ICdpbmhlcml0J2ApIGluc3RlYWRcbiAgICogb2YgY2FwdHVyaW5nIGl0LiBVc2UgZm9yIGxvbmctcnVubmluZyBvciBpbnRlcmFjdGl2ZSBjb21tYW5kcyBzdWNoIGFzIGRldiBzZXJ2ZXJzIGFuZCB3YXRjaCBtb2RlLlxuICAgKiBCZWNhdXNlIHRoZSBvdXRwdXQgaXMgbm90IGNhcHR1cmVkLCB0aGUgcmVzb2x2ZWQgc3Rkb3V0IGlzIGFuIGVtcHR5IHN0cmluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNJbnRlcmFjdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgc3VwcHJlc3NlcyB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBpc1F1aWV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIGNvbW1hbmQgZmFpbHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRmFpbElmQ2FsbGVkRnJvbU91dHNpZGVSb290PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCBpZ25vcmVzIHRoZSBleGl0IGNvZGUgb2YgdGhlIGNvbW1hbmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZElnbm9yZUV4aXRDb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYGZhbHNlYCwgb25seSByZXR1cm5zIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVEZXRhaWxzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQW4gaW5wdXQgdG8gYmUgcGFzc2VkIHRvIHRoZSBjb21tYW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJydgXG4gICAqL1xuICByZWFkb25seSBzdGRpbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHJlc3VsdCBvZiB7QGxpbmsgZXhlY30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBBbiBleGl0IGNvZGUgb2YgdGhlIGNvbW1hbmQuIEEgdmFsdWUgb2YgYG51bGxgIGluZGljYXRlcyB0aGF0IHRoZSBwcm9jZXNzIGRpZCBub3QgZXhpdCBub3JtYWxseS5cbiAgICovXG4gIHJlYWRvbmx5IGV4aXRDb2RlOiBudWxsIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHNpZ25hbCB0aGF0IGNhdXNlZCB0aGUgcHJvY2VzcyB0byBiZSB0ZXJtaW5hdGVkLiBBIHZhbHVlIG9mIGBudWxsYCBpbmRpY2F0ZXMgdGhhdCBubyBzaWduYWwgd2FzIHJlY2VpdmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhpdFNpZ25hbDogTm9kZUpTLlNpZ25hbHMgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBBIHN0YW5kYXJkIGVycm9yIG91dHB1dCBmcm9tIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RkZXJyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3RhbmRhcmQgb3V0cHV0IGZyb20gdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBzdGRvdXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZXhlY30gdGhhdCByZXR1cm4gb25seSBzdGRvdXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY1NpbXBsZU9wdGlvbnMgZXh0ZW5kcyBFeGVjT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNdXN0IGJlIGBmYWxzZWAgb3Igb21pdHRlZCB0byByZWNlaXZlIG9ubHkgc3Rkb3V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRGV0YWlscz86IGZhbHNlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBleGVjU3RyaW5nfS5cbiAqL1xuaW50ZXJmYWNlIEV4ZWNTdHJpbmdQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGNvbW1hbmQgc3RyaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhlYyBvcHRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgb3B0aW9ucz86IEV4ZWNPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgYXJndW1lbnQgYXJyYXkgKGlmIGF2YWlsYWJsZSksIHVzZWQgYnkgdGhlIFBvd2VyU2hlbGxcbiAgICogZmFsbGJhY2sgcGF0aCB0byBxdW90ZSBhcmd1bWVudHMgd2l0aCBQb3dlclNoZWxsLW5hdGl2ZSBzaW5nbGUgcXVvdGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmF3QXJndW1lbnRzPzogc3RyaW5nW107XG59XG4vKipcbiAqIEFwcGVuZHMgYSBzaW5nbGUgYG5vZGVgIENMSSBvcHRpb24gdG8gYSBgTk9ERV9PUFRJT05TYCBzdHJpbmcsIHByZXNlcnZpbmcgYW55IG9wdGlvbnMgYWxyZWFkeSBwcmVzZW50LlxuICpcbiAqIEBwYXJhbSBleGlzdGluZ05vZGVPcHRpb25zIC0gVGhlIGN1cnJlbnQgYE5PREVfT1BUSU9OU2AgdmFsdWUgKGUuZy4gYHByb2Nlc3MuZW52Lk5PREVfT1BUSU9OU2ApLCBpZiBhbnkuXG4gKiBAcGFyYW0gb3B0aW9uIC0gVGhlIGBub2RlYCBDTEkgb3B0aW9uIHRvIGFwcGVuZCAoZS5nLiBgLS1sb2NhbHN0b3JhZ2UtZmlsZT06bWVtb3J5OmApLlxuICogQHJldHVybnMgVGhlIGNvbWJpbmVkIGBOT0RFX09QVElPTlNgIHN0cmluZy4gSWYgYG9wdGlvbmAgaXMgYWxyZWFkeSBwcmVzZW50LCB0aGUgdmFsdWUgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kTm9kZU9wdGlvbihleGlzdGluZ05vZGVPcHRpb25zOiBzdHJpbmcgfCB1bmRlZmluZWQsIG9wdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgdHJpbW1lZCA9IChleGlzdGluZ05vZGVPcHRpb25zID8/ICcnKS50cmltKCk7XG4gIGlmICh0cmltbWVkID09PSAnJykge1xuICAgIHJldHVybiBvcHRpb247XG4gIH1cbiAgaWYgKHRyaW1tZWQuc3BsaXQoL1xccysvKS5pbmNsdWRlcyhvcHRpb24pKSB7XG4gICAgcmV0dXJuIHRyaW1tZWQ7XG4gIH1cbiAgcmV0dXJuIGAke3RyaW1tZWR9ICR7b3B0aW9ufWA7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBlbnZpcm9ubWVudCBmb3IgY2hpbGQgcHJvY2Vzc2VzOiB0aGUgcGFyZW50IGVudmlyb25tZW50IHBsdXMgYERFQlVHX0NPTE9SU2AsIGFuZCBcdTIwMTQgd2hlblxuICogdGhlIHJ1bm5pbmcgYG5vZGVgIHN1cHBvcnRzIGl0IFx1MjAxNCB7QGxpbmsgTE9DQUxfU1RPUkFHRV9OT0RFX09QVElPTn0gYXBwZW5kZWQgdG8gYE5PREVfT1BUSU9OU2AuXG4gKlxuICogVGhlIHN1cHBvcnQgY2hlY2sgZ3VhcmRzIGFnYWluc3Qgb2xkZXIgYG5vZGVgICg8IDIyKTogcGFzc2luZyBhbiBvcHRpb24gYG5vZGVgIGRvZXMgbm90IHJlY29nbml6ZSB2aWFcbiAqIGBOT0RFX09QVElPTlNgIG1ha2VzIGl0IGV4aXQgYmVmb3JlIHJ1bm5pbmcsIHdoaWNoIHdvdWxkIGJyZWFrIGV2ZXJ5IHNwYXduZWQgdG9vbC5cbiAqXG4gKiBAcGFyYW0gYmFzZUVudiAtIFRoZSBwYXJlbnQgZW52aXJvbm1lbnQgdG8gZXh0ZW5kICh0eXBpY2FsbHkgYHByb2Nlc3MuZW52YCkuXG4gKiBAcGFyYW0gYWxsb3dlZE5vZGVFbnZpcm9ubWVudEZsYWdzIC0gVGhlIGBub2RlYCBvcHRpb25zIGFjY2VwdGVkIHZpYSBgTk9ERV9PUFRJT05TYCAodHlwaWNhbGx5IGBwcm9jZXNzLmFsbG93ZWROb2RlRW52aXJvbm1lbnRGbGFnc2ApLlxuICogQHJldHVybnMgVGhlIGVudmlyb25tZW50IHRvIHBhc3MgdG8gc3Bhd25lZCBjaGlsZCBwcm9jZXNzZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZENoaWxkRW52KGJhc2VFbnY6IE5vZGVKUy5Qcm9jZXNzRW52LCBhbGxvd2VkTm9kZUVudmlyb25tZW50RmxhZ3M6IFJlYWRvbmx5U2V0PHN0cmluZz4pOiBOb2RlSlMuUHJvY2Vzc0VudiB7XG4gIGNvbnN0IGVudjogTm9kZUpTLlByb2Nlc3NFbnYgPSB7XG4gICAgREVCVUdfQ09MT1JTOiAnMScsXG4gICAgLi4uYmFzZUVudlxuICB9O1xuICBpZiAoYWxsb3dlZE5vZGVFbnZpcm9ubWVudEZsYWdzLmhhcygnLS1sb2NhbHN0b3JhZ2UtZmlsZScpKSB7XG4gICAgZW52WydOT0RFX09QVElPTlMnXSA9IGFwcGVuZE5vZGVPcHRpb24oYmFzZUVudlsnTk9ERV9PUFRJT05TJ10sIExPQ0FMX1NUT1JBR0VfTk9ERV9PUFRJT04pO1xuICB9XG4gIHJldHVybiBlbnY7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gKiBAdGhyb3dzIElmIHRoZSBjb21tYW5kIGZhaWxzIHdpdGggYSBub24temVybyBleGl0IGNvZGUgYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGBmYWxzZWAuXG4gKiAgICAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGl0IGNvZGUgYW5kIHN0ZGVyci5cbiAqICAgICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgZXhlY3V0aW9uIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBgdHJ1ZWAsXG4gKiAgICAgICAgIHRoZSBlcnJvciBpcyByZXNvbHZlZCB3aXRoIHRoZSBzdGRvdXQgYW5kIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWMoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9ucz86IEV4ZWNTaW1wbGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xuLyoqXG4gKiBFeGVjdXRlcyBhIGNvbW1hbmQuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCB0byBleGVjdXRlLiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBleGVjdXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjRGV0YWlsZWRPcHRpb25zKTogUHJvbWlzZTxFeGVjUmVzdWx0Pjtcbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQgb3IgYW4gRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbW1hbmQpKSB7XG4gICAgY29uc3QgYmF0Y2hSZXN1bHQgPSBoYW5kbGVCYXRjaGVkQ29tbWFuZChjb21tYW5kLCBvcHRpb25zKTtcbiAgICBpZiAoYmF0Y2hSZXN1bHQpIHtcbiAgICAgIHJldHVybiBiYXRjaFJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgJGFyZ3VtZW50cyA9IGNvbW1hbmQuZmlsdGVyKChwYXJ0KTogcGFydCBpcyBzdHJpbmcgPT4gdHlwZW9mIHBhcnQgPT09ICdzdHJpbmcnKTtcbiAgICBjb25zdCBjb21tYW5kTGluZSA9IGJ1aWxkQ29tbWFuZExpbmUoJGFyZ3VtZW50cyk7XG5cbiAgICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuICAgIGlmIChjb21tYW5kTGluZS5sZW5ndGggPiBtYXhDb21tYW5kTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICBgQ29tbWFuZCBsaW5lIGlzIHRvbyBsb25nICgke1N0cmluZyhjb21tYW5kTGluZS5sZW5ndGgpfSBjaGFycywgbWF4ICR7U3RyaW5nKG1heENvbW1hbmRMZW5ndGgpfSBvbiAke3Byb2Nlc3MucGxhdGZvcm19KS4gQ29uc2lkZXIgc3BsaXR0aW5nIGludG8gc21hbGxlciBiYXRjaGVzIG9yIHVzZSBFeGVjQXJnLmBcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXhlY1N0cmluZyh7XG4gICAgICBjb21tYW5kOiBjb21tYW5kTGluZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICByYXdBcmd1bWVudHM6ICRhcmd1bWVudHNcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IG1heENvbW1hbmRMZW5ndGggPSBnZXRNYXhDb21tYW5kTGVuZ3RoKCk7XG4gIGlmIChjb21tYW5kLmxlbmd0aCA+IG1heENvbW1hbmRMZW5ndGgpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICBuZXcgRXJyb3IoXG4gICAgICAgIGBDb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgKCR7U3RyaW5nKGNvbW1hbmQubGVuZ3RoKX0gY2hhcnMsIG1heCAke1N0cmluZyhtYXhDb21tYW5kTGVuZ3RoKX0gb24gJHtwcm9jZXNzLnBsYXRmb3JtfSkuIENvbnNpZGVyIHNwbGl0dGluZyBpbnRvIHNtYWxsZXIgYmF0Y2hlcyBvciB1c2UgRXhlY0FyZy5gXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBleGVjU3RyaW5nKHtcbiAgICBjb21tYW5kLFxuICAgIG9wdGlvbnNcbiAgfSk7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBzaW5nbGUgc3RyaW5nIGNvbW1hbmQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmVzdWx0LlxuICovXG5mdW5jdGlvbiBleGVjU3RyaW5nKHBhcmFtczogRXhlY1N0cmluZ1BhcmFtcyk6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgY29tbWFuZCxcbiAgICBvcHRpb25zID0ge30sXG4gICAgcmF3QXJndW1lbnRzXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHtcbiAgICBjd2QgPSBwcm9jZXNzLmN3ZCgpLFxuICAgIGVudixcbiAgICBpc0ludGVyYWN0aXZlID0gZmFsc2UsXG4gICAgaXNRdWlldDogcXVpZXQgPSBmYWxzZSxcbiAgICBzaG91bGRJZ25vcmVFeGl0Q29kZTogaWdub3JlRXhpdENvZGUgPSBmYWxzZSxcbiAgICBzaG91bGRJbmNsdWRlRGV0YWlscyA9IGZhbHNlLFxuICAgIHN0ZGluID0gJydcbiAgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBnZXRMaWJEZWJ1Z2dlcignRXhlYycpKGBFeGVjdXRpbmcgY29tbWFuZDogJHtjb21tYW5kfWApO1xuXG4gICAgY29uc3QgY2hpbGQgPSBzcGF3blZpYVNoZWxsKG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxTcGF3blZpYVNoZWxsUGFyYW1zPih7XG4gICAgICBjb21tYW5kLFxuICAgICAgY3dkLFxuICAgICAgZW52LFxuICAgICAgaXNJbnRlcmFjdGl2ZSxcbiAgICAgIHJhd0FyZ3VtZW50c1xuICAgIH0pKTtcblxuICAgIGxldCBzdGRvdXQgPSAnJztcbiAgICBsZXQgc3RkZXJyID0gJyc7XG5cbiAgICAvLyBJbiBpbnRlcmFjdGl2ZSBtb2RlIHRoZSBjaGlsZCdzIHN0ZGlvIGlzIGluaGVyaXRlZCBieSB0aGUgdGVybWluYWwsIHNvIHRoZXJlIGFyZSBubyBzdHJlYW1zIHRvIHJlYWQgYW5kIG5vdGhpbmcgaXMgY2FwdHVyZWQuXG4gICAgaWYgKCFpc0ludGVyYWN0aXZlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0ZGVycjogY2hpbGRTdGRlcnIsXG4gICAgICAgIHN0ZGluOiBjaGlsZFN0ZGluLFxuICAgICAgICBzdGRvdXQ6IGNoaWxkU3Rkb3V0XG4gICAgICB9ID0gY2hpbGQ7XG4gICAgICBhc3NlcnROb25OdWxsYWJsZShjaGlsZFN0ZGluLCAnQ2hpbGQgcHJvY2VzcyBzdGRpbiBpcyBub3QgYXZhaWxhYmxlJyk7XG4gICAgICBhc3NlcnROb25OdWxsYWJsZShjaGlsZFN0ZG91dCwgJ0NoaWxkIHByb2Nlc3Mgc3Rkb3V0IGlzIG5vdCBhdmFpbGFibGUnKTtcbiAgICAgIGFzc2VydE5vbk51bGxhYmxlKGNoaWxkU3RkZXJyLCAnQ2hpbGQgcHJvY2VzcyBzdGRlcnIgaXMgbm90IGF2YWlsYWJsZScpO1xuXG4gICAgICBjaGlsZFN0ZGluLndyaXRlKHN0ZGluKTtcbiAgICAgIGNoaWxkU3RkaW4uZW5kKCk7XG5cbiAgICAgIGNoaWxkU3Rkb3V0Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgc3Rkb3V0ICs9IGRhdGEudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgICB9KTtcblxuICAgICAgY2hpbGRTdGRvdXQub24oJ2VuZCcsICgpID0+IHtcbiAgICAgICAgc3Rkb3V0ID0gdHJpbUVuZCh7XG4gICAgICAgICAgJHN0cmluZzogc3Rkb3V0LFxuICAgICAgICAgIHN1ZmZpeDogJ1xcbidcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgY2hpbGRTdGRlcnIub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBzdGRlcnIgKz0gZGF0YS50b1N0cmluZygndXRmLTgnKTtcbiAgICAgIH0pO1xuXG4gICAgICBjaGlsZFN0ZGVyci5vbignZW5kJywgKCkgPT4ge1xuICAgICAgICBzdGRlcnIgPSB0cmltRW5kKHtcbiAgICAgICAgICAkc3RyaW5nOiBzdGRlcnIsXG4gICAgICAgICAgc3VmZml4OiAnXFxuJ1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNoaWxkLm9uKCdjbG9zZScsIChleGl0Q29kZSwgZXhpdFNpZ25hbCkgPT4ge1xuICAgICAgaWYgKGV4aXRDb2RlICE9PSAwICYmICFpZ25vcmVFeGl0Q29kZSkge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBDb21tYW5kIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAke2V4aXRDb2RlID8gU3RyaW5nKGV4aXRDb2RlKSA6ICcobnVsbCknfVxcbiR7c3RkZXJyfWApKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNob3VsZEluY2x1ZGVEZXRhaWxzKSB7XG4gICAgICAgIHJlc29sdmUoc3Rkb3V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIGV4aXRDb2RlLFxuICAgICAgICBleGl0U2lnbmFsLFxuICAgICAgICBzdGRlcnIsXG4gICAgICAgIHN0ZG91dFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5vbignZXJyb3InLCAoZXJyb3IpID0+IHtcbiAgICAgIGlmICghaWdub3JlRXhpdENvZGUpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNob3VsZEluY2x1ZGVEZXRhaWxzKSB7XG4gICAgICAgIHJlc29sdmUoc3Rkb3V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgZXhpdENvZGU6IG51bGwsXG4gICAgICAgIGV4aXRTaWduYWw6IG51bGwsXG4gICAgICAgIHN0ZGVycixcbiAgICAgICAgc3Rkb3V0XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogQSBgbm9kZWAgQ0xJIG9wdGlvbiAocGFzc2VkIHZpYSBgTk9ERV9PUFRJT05TYCkgdGhhdCBwcm92aWRlcyBhbiBpbi1tZW1vcnkgYGxvY2FsU3RvcmFnZWAgdG8gZXZlcnlcbiAqIHNwYXduZWQgYG5vZGVgIHByb2Nlc3MuIE5vZGUgMjIrIGV4cG9zZXMgYW4gZXhwZXJpbWVudGFsIFdlYiBTdG9yYWdlIGBsb2NhbFN0b3JhZ2VgLCBidXQgYWNjZXNzaW5nIGl0XG4gKiB3aXRob3V0IGAtLWxvY2Fsc3RvcmFnZS1maWxlYCBlbWl0cyBhbiBgRXhwZXJpbWVudGFsV2FybmluZ2AgYW5kIGxlYXZlcyBgbG9jYWxTdG9yYWdlYCB1bmF2YWlsYWJsZS5cbiAqIFBvaW50aW5nIGl0IGF0IHRoZSBzcGVjaWFsIGA6bWVtb3J5OmAgZGF0YWJhc2UgZ2l2ZXMgZWFjaCBwcm9jZXNzIGEgd29ya2luZywgbm9uLXBlcnNpc3RlbnRcbiAqIGBsb2NhbFN0b3JhZ2VgIChubyBmaWxlIG9uIGRpc2ssIG5vIHN0YXRlIHNoYXJlZCBiZXR3ZWVuIHByb2Nlc3NlcykgXHUyMDE0IG1hdGNoaW5nIHRoZSByZWFsIE9ic2lkaWFuXG4gKiAoRWxlY3Ryb24pIHJ1bnRpbWUgYW5kIHNpbGVuY2luZyB0aGUgd2FybmluZyBieSBhZGRyZXNzaW5nIGl0cyByb290IGNhdXNlIHJhdGhlciB0aGFuIHN1cHByZXNzaW5nIGl0LlxuICpcbiAqIEl0IGlzIGFwcGxpZWQgb25seSB3aGVuIHRoZSBydW5uaW5nIGBub2RlYCBhY3R1YWxseSBzdXBwb3J0cyBpdCAoc2VlIHtAbGluayBidWlsZENoaWxkRW52fSk6IHBhc3NpbmdcbiAqIGFuIG9wdGlvbiBgbm9kZWAgZG9lcyBub3QgcmVjb2duaXplIHZpYSBgTk9ERV9PUFRJT05TYCBtYWtlcyBpdCByZWZ1c2UgdG8gc3RhcnQsIHNvIGFuIG9sZGVyIGBub2RlYFxuICogKDwgMjIpIG11c3QgYmUgbGVmdCB1bnRvdWNoZWQuXG4gKi9cbmNvbnN0IExPQ0FMX1NUT1JBR0VfTk9ERV9PUFRJT04gPSAnLS1sb2NhbHN0b3JhZ2UtZmlsZT06bWVtb3J5Oic7XG5cbi8qKlxuICogRGVmYXVsdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgcGFzc2VkIHRvIGNoaWxkIHByb2Nlc3Nlcy5cbiAqL1xuY29uc3QgQ0hJTERfRU5WID0gYnVpbGRDaGlsZEVudihwcm9jZXNzLmVudiwgcHJvY2Vzcy5hbGxvd2VkTm9kZUVudmlyb25tZW50RmxhZ3MpO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBleGVjdXRlQmF0Y2hlc30uXG4gKi9cbmludGVyZmFjZSBFeGVjdXRlQmF0Y2hlc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYmFzZSBjb21tYW5kIHdpdGhvdXQgYmF0Y2hlZCBhcmdzLlxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZUNvbW1hbmQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGJhdGNoZXMgb2YgYXJncy5cbiAgICovXG4gIHJlYWRvbmx5IGJhdGNoZXM6IHN0cmluZ1tdW107XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBvcHRpb25zOiBFeGVjT3B0aW9ucztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgc3Bhd25WaWFTaGVsbH0uXG4gKi9cbmludGVyZmFjZSBTcGF3blZpYVNoZWxsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kIHN0cmluZyB0byBleGVjdXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgd29ya2luZyBkaXJlY3RvcnkuXG4gICAqL1xuICByZWFkb25seSBjd2Q6IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbWVyZ2VkIG92ZXIgdGhlIGluaGVyaXRlZCBjaGlsZCBlbnZpcm9ubWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGVudj86IE5vZGVKUy5Qcm9jZXNzRW52O1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGF0dGFjaGVzIHRoZSBjaGlsZCdzIHN0ZGlvIHRvIHRoZSB0ZXJtaW5hbCBpbnN0ZWFkIG9mIHBpcGluZyBpdC5cbiAgICovXG4gIHJlYWRvbmx5IGlzSW50ZXJhY3RpdmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgYXJndW1lbnQgYXJyYXkgKGlmIGF2YWlsYWJsZSkuXG4gICAqL1xuICByZWFkb25seSByYXdBcmd1bWVudHM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBjb21tYW5kLWxpbmUgc3RyaW5nIGZyb20gYW4gYXJndW1lbnQgYXJyYXksIHF1b3RlZCBmb3IgdGhlIHNoZWxsIHRoYXRcbiAqIHtAbGluayBzcGF3blZpYVNoZWxsfSB3aWxsIHJvdXRlIHRocm91Z2ggb24gdGhlIGN1cnJlbnQgcGxhdGZvcm0uXG4gKlxuICogT24gV2luZG93cyB0aGUgY29tbWFuZCBpcyBleGVjdXRlZCB2aWEgYGNtZC5leGVgLCBzbyBpdCB1c2VzIHRoZVxuICogYENvbW1hbmRMaW5lVG9Bcmd2V2AgY29udmVudGlvbiAoe0BsaW5rIHRvQ29tbWFuZExpbmV9KTsge0BsaW5rIHNwYXduVmlhU2hlbGx9XG4gKiB0aGVuIGFwcGxpZXMge0BsaW5rIGNtZEVzY2FwZUNvbW1hbmRMaW5lfSBvbiB0b3AgZm9yIGBjbWQuZXhlYCBtZXRhY2hhcmFjdGVycy5cbiAqIEVsc2V3aGVyZSB0aGUgY29tbWFuZCBpcyBleGVjdXRlZCB2aWEgYHNoIC1jYCwgc28gaXQgdXNlcyBQT1NJWCBzaW5nbGUtcXVvdGVcbiAqIHF1b3RpbmcgKHtAbGluayB0b1Bvc2l4Q29tbWFuZExpbmV9KSBhbmQgbmVlZHMgbm8gZnVydGhlciBlc2NhcGluZy5cbiAqXG4gKiBUaGUgcGxhdGZvcm0gYnJhbmNoIGhlcmUgTVVTVCBzdGF5IGluIHN5bmMgd2l0aCB0aGUgb25lIGluIHtAbGluayBzcGF3blZpYVNoZWxsfS5cbiAqXG4gKiBAcGFyYW0gJGFyZ3VtZW50cyAtIFRoZSBhcmd1bWVudCBhcnJheSB0byBxdW90ZSBhbmQgam9pbi5cbiAqIEByZXR1cm5zIFRoZSBxdW90ZWQgY29tbWFuZC1saW5lIHN0cmluZyBmb3IgdGhlIGN1cnJlbnQgcGxhdGZvcm0ncyBzaGVsbC5cbiAqL1xuZnVuY3Rpb24gYnVpbGRDb21tYW5kTGluZSgkYXJndW1lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIHJldHVybiBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gdG9Db21tYW5kTGluZSgkYXJndW1lbnRzKSA6IHRvUG9zaXhDb21tYW5kTGluZSgkYXJndW1lbnRzKTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBiYXRjaGVkIGNvbW1hbmRzIHNlcXVlbnRpYWxseSBhbmQgY29uY2F0ZW5hdGVzIHN0ZG91dC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBiYXRjaGVkIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEgUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGNvbmNhdGVuYXRlZCByZXN1bHQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVCYXRjaGVzKHBhcmFtczogRXhlY3V0ZUJhdGNoZXNQYXJhbXMpOiBQcm9taXNlPEV4ZWNSZXN1bHQgfCBzdHJpbmc+IHtcbiAgY29uc3QgeyBiYXNlQ29tbWFuZCwgYmF0Y2hlcywgb3B0aW9ucyB9ID0gcGFyYW1zO1xuICBjb25zdCByZXN1bHRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYmF0Y2ggb2YgYmF0Y2hlcykge1xuICAgIGNvbnN0IGJhdGNoQ29tbWFuZCA9IGAke2Jhc2VDb21tYW5kfSAke2J1aWxkQ29tbWFuZExpbmUoYmF0Y2gpfWA7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhlY1N0cmluZyh7XG4gICAgICBjb21tYW5kOiBiYXRjaENvbW1hbmQsXG4gICAgICBvcHRpb25zXG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy5zaG91bGRJbmNsdWRlRGV0YWlscykge1xuICAgIHJldHVybiB7IGV4aXRDb2RlOiAwLCBleGl0U2lnbmFsOiBudWxsLCBzdGRlcnI6ICcnLCBzdGRvdXQ6IHJlc3VsdHMuam9pbignXFxuJykgfTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzLmpvaW4oJ1xcbicpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHBsYXRmb3JtLXNwZWNpZmljIG1heCBjb21tYW5kIGxpbmUgbGVuZ3RoLlxuICpcbiAqIEByZXR1cm5zIFRoZSBtYXggY29tbWFuZCBsZW5ndGggaW4gY2hhcmFjdGVycy5cbiAqL1xuZnVuY3Rpb24gZ2V0TWF4Q29tbWFuZExlbmd0aCgpOiBudW1iZXIge1xuICBjb25zdCBXSU5ET1dTX01BWF9DT01NQU5EX0xFTkdUSCA9IDgxOTE7XG4gIGNvbnN0IFVOSVhfTUFYX0NPTU1BTkRfTEVOR1RIID0gMTMxXzA3MjtcbiAgcmV0dXJuIHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBXSU5ET1dTX01BWF9DT01NQU5EX0xFTkdUSCA6IFVOSVhfTUFYX0NPTU1BTkRfTEVOR1RIO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgYSBjb21tYW5kIGFycmF5IHRoYXQgbWF5IGNvbnRhaW4gYW4ge0BsaW5rIEV4ZWNBcmd1bWVudH0uXG4gKiBSZXR1cm5zIGEgUHJvbWlzZSBpZiBiYXRjaGluZyBpcyBuZWVkZWQsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBjb21tYW5kXG4gKiBoYXMgbm8gRXhlY0FyZyBhbmQgc2hvdWxkIGJlIHByb2Nlc3NlZCBub3JtYWxseS5cbiAqXG4gKiBAcGFyYW0gcGFydHMgLSBUaGUgY29tbWFuZCBwYXJ0cy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGV4ZWMgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgUHJvbWlzZSBpZiBiYXRjaGluZyBpcyBoYW5kbGVkLCBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlQmF0Y2hlZENvbW1hbmQocGFydHM6IENvbW1hbmRQYXJ0W10sIG9wdGlvbnM6IEV4ZWNPcHRpb25zKTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGV4ZWNBcmd1bWVudHMgPSBwYXJ0cy5maWx0ZXIoaXNFeGVjQXJndW1lbnQpO1xuICBpZiAoZXhlY0FyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmIChleGVjQXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdPbmx5IG9uZSBFeGVjQXJnIHdpdGggYmF0Y2hlZEFyZ3VtZW50cyBpcyBhbGxvd2VkIHBlciBjb21tYW5kJykpO1xuICB9XG5cbiAgY29uc3QgZXhlY0FyZ3VtZW50ID0gZXhlY0FyZ3VtZW50c1swXTtcbiAgYXNzZXJ0Tm9uTnVsbGFibGUoZXhlY0FyZ3VtZW50KTtcbiAgY29uc3Qgc3RhdGljUGFydHMgPSBwYXJ0cy5maWx0ZXIoKHBhcnQpOiBwYXJ0IGlzIHN0cmluZyA9PiB0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpO1xuICBjb25zdCBiYXNlQ29tbWFuZCA9IGJ1aWxkQ29tbWFuZExpbmUoc3RhdGljUGFydHMpO1xuICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuXG4gIC8vIFRyeSBleHBhbmRpbmcgYWxsIGFyZ3MgaW5saW5lXG4gIGNvbnN0IGZ1bGxDb21tYW5kID0gYCR7YmFzZUNvbW1hbmR9ICR7YnVpbGRDb21tYW5kTGluZShbLi4uZXhlY0FyZ3VtZW50LmJhdGNoZWRBcmd1bWVudHNdKX1gO1xuICBpZiAoZnVsbENvbW1hbmQubGVuZ3RoIDw9IG1heENvbW1hbmRMZW5ndGgpIHtcbiAgICByZXR1cm4gZXhlY1N0cmluZyh7XG4gICAgICBjb21tYW5kOiBmdWxsQ29tbWFuZCxcbiAgICAgIG9wdGlvbnNcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFNwbGl0IGludG8gYmF0Y2hlc1xuICBjb25zdCBiYXRjaGVzOiBzdHJpbmdbXVtdID0gW107XG4gIGxldCBjdXJyZW50QmF0Y2g6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBhcmd1bWVudCBvZiBleGVjQXJndW1lbnQuYmF0Y2hlZEFyZ3VtZW50cykge1xuICAgIGNvbnN0IHRlbnRhdGl2ZSA9IGAke2Jhc2VDb21tYW5kfSAke2J1aWxkQ29tbWFuZExpbmUoWy4uLmN1cnJlbnRCYXRjaCwgYXJndW1lbnRdKX1gO1xuICAgIGlmICh0ZW50YXRpdmUubGVuZ3RoID4gbWF4Q29tbWFuZExlbmd0aCkge1xuICAgICAgaWYgKGN1cnJlbnRCYXRjaC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDYW5ub3Qgc3BsaXQgY29tbWFuZCBpbnRvIGJhdGNoZXM6IGEgc2luZ2xlIGFyZ3VtZW50ICgke1N0cmluZyhhcmd1bWVudC5sZW5ndGgpfSBjaGFycykgcGx1cyB0aGUgYmFzZSBjb21tYW5kICgke1N0cmluZyhiYXNlQ29tbWFuZC5sZW5ndGgpfSBjaGFycykgZXhjZWVkcyB0aGUgbWF4IGNvbW1hbmQgbGVuZ3RoICgke1N0cmluZyhtYXhDb21tYW5kTGVuZ3RoKX0pLmBcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBiYXRjaGVzLnB1c2goY3VycmVudEJhdGNoKTtcbiAgICAgIGN1cnJlbnRCYXRjaCA9IFthcmd1bWVudF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRCYXRjaC5wdXNoKGFyZ3VtZW50KTtcbiAgICB9XG4gIH1cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsd2F5cyB0cnVlIGFmdGVyIHRoZSBsb29wOyBiYXRjaGVkQXJndW1lbnRzIGlzIG5vbi1lbXB0eSBhdCB0aGlzIHBvaW50LiAqL1xuICBpZiAoY3VycmVudEJhdGNoLmxlbmd0aCA+IDApIHtcbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIGJhdGNoZXMucHVzaChjdXJyZW50QmF0Y2gpO1xuICB9XG5cbiAgcmV0dXJuIGV4ZWN1dGVCYXRjaGVzKHtcbiAgICBiYXNlQ29tbWFuZCxcbiAgICBiYXRjaGVzLFxuICAgIG9wdGlvbnNcbiAgfSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgY29tbWFuZCBwYXJ0IGlzIGFuIHtAbGluayBFeGVjQXJndW1lbnR9LlxuICpcbiAqIEBwYXJhbSBwYXJ0IC0gVGhlIGNvbW1hbmQgcGFydCB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHBhcnQgaXMgYW4gRXhlY0FyZy5cbiAqL1xuZnVuY3Rpb24gaXNFeGVjQXJndW1lbnQocGFydDogQ29tbWFuZFBhcnQpOiBwYXJ0IGlzIEV4ZWNBcmd1bWVudCB7XG4gIHJldHVybiB0eXBlb2YgcGFydCA9PT0gJ29iamVjdCcgJiYgJ2JhdGNoZWRBcmd1bWVudHMnIGluIHBhcnQ7XG59XG5cbi8qKlxuICogU3Bhd25zIGEgY2hpbGQgcHJvY2VzcyB2aWEgdGhlIGFwcHJvcHJpYXRlIHNoZWxsLlxuICpcbiAqIE9uIFdpbmRvd3MsIGlmIHRoZSBjb21tYW5kIGNvbnRhaW5zIG5ld2xpbmVzICh3aGljaCBgY21kLmV4ZWAgY2Fubm90IGhhbmRsZSlcbiAqIGFuZCB0aGUgcmF3IGFyZ3MgYXJyYXkgaXMgYXZhaWxhYmxlLCBzcGF3bnMgdGhlIHByb2Nlc3MgZGlyZWN0bHkgd2l0aG91dFxuICogYW55IHNoZWxsIFx1MjAxNCBwYXNzaW5nIGFyZ3MgdmlhIGBDcmVhdGVQcm9jZXNzYCwgd2hpY2ggYXZvaWRzIGFsbCBxdW90aW5nIGlzc3Vlcy5cbiAqXG4gKiBPbiBXaW5kb3dzIChjbWQuZXhlIHBhdGgpLCBhcHBsaWVzIGBeYC1lc2NhcGluZyBmb3IgY21kIG1ldGFjaGFyYWN0ZXJzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3Igc3Bhd25pbmcgdGhlIGNoaWxkIHByb2Nlc3MuXG4gKiBAcmV0dXJucyBUaGUgc3Bhd25lZCBjaGlsZCBwcm9jZXNzLlxuICovXG5mdW5jdGlvbiBzcGF3blZpYVNoZWxsKHBhcmFtczogU3Bhd25WaWFTaGVsbFBhcmFtcyk6IENoaWxkUHJvY2VzcyB7XG4gIGNvbnN0IHsgY29tbWFuZCwgY3dkLCBlbnY6IGV4dHJhRW52LCBpc0ludGVyYWN0aXZlID0gZmFsc2UsIHJhd0FyZ3VtZW50cyB9ID0gcGFyYW1zO1xuICBjb25zdCBlbnY6IE5vZGVKUy5Qcm9jZXNzRW52ID0ge1xuICAgIC4uLkNISUxEX0VOVixcbiAgICAuLi5leHRyYUVudlxuICB9O1xuICBjb25zdCBzdGRpbzogJ2luaGVyaXQnIHwgJ3BpcGUnID0gaXNJbnRlcmFjdGl2ZSA/ICdpbmhlcml0JyA6ICdwaXBlJztcbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgJiYgY29tbWFuZC5pbmNsdWRlcygnXFxuJykpIHtcbiAgICBpZiAoIXJhd0FyZ3VtZW50cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21tYW5kcyBjb250YWluaW5nIG5ld2xpbmVzIGNhbm5vdCBiZSBleGVjdXRlZCB0aHJvdWdoIGNtZC5leGUgb24gV2luZG93cy4gUGFzcyBhbiBhcmd1bWVudCBhcnJheSBpbnN0ZWFkIG9mIGEgc3RyaW5nLicpO1xuICAgIH1cbiAgICBjb25zdCBbcHJvZ3JhbSwgLi4uJGFyZ3VtZW50c10gPSByYXdBcmd1bWVudHM7XG4gICAgYXNzZXJ0Tm9uTnVsbGFibGUocHJvZ3JhbSwgJ0NvbW1hbmQgYXJyYXkgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgICByZXR1cm4gc3Bhd24ocHJvZ3JhbSwgJGFyZ3VtZW50cywge1xuICAgICAgY3dkLFxuICAgICAgZW52LFxuICAgICAgc3RkaW9cbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHNoZWxsQ29tbWFuZCA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBjb21tYW5kRXNjYXBlQ29tbWFuZExpbmUoY29tbWFuZCkgOiBjb21tYW5kO1xuICByZXR1cm4gc3Bhd24oc2hlbGxDb21tYW5kLCBbXSwge1xuICAgIGN3ZCxcbiAgICBlbnYsXG4gICAgc2hlbGw6IHRydWUsXG4gICAgc3RkaW9cbiAgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
411
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9leGVjLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGV4ZWN1dGluZyBjb21tYW5kcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENoaWxkUHJvY2VzcyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2Vzcyc7XG5cbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vZGVidWcudHMnO1xuaW1wb3J0IHsgbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vb2JqZWN0LXV0aWxzLnRzJztcbmltcG9ydCB7IHRyaW1FbmQgfSBmcm9tICcuLi9zdHJpbmcudHMnO1xuaW1wb3J0IHsgYXNzZXJ0Tm9uTnVsbGFibGUgfSBmcm9tICcuLi90eXBlLWd1YXJkcy50cyc7XG5pbXBvcnQge1xuICBjbWRFc2NhcGVDb21tYW5kTGluZSBhcyBjb21tYW5kRXNjYXBlQ29tbWFuZExpbmUsXG4gIHRvQ29tbWFuZExpbmUsXG4gIHRvUG9zaXhDb21tYW5kTGluZVxufSBmcm9tICcuL2NsaS11dGlscy50cyc7XG5cbi8qKlxuICogQSBjb21tYW5kIHBhcnQ6IGVpdGhlciBhIHBsYWluIHN0cmluZyBvciBhbiB7QGxpbmsgRXhlY0FyZ3VtZW50fSB3aXRoIGJhdGNoZWQgYXJndW1lbnRzLlxuICovXG5leHBvcnQgdHlwZSBDb21tYW5kUGFydCA9IEV4ZWNBcmd1bWVudCB8IHN0cmluZztcblxuLyoqXG4gKiBBIGNvbW1hbmQgYXJndW1lbnQgdGhhdCBjb250YWlucyBhIGxpc3Qgb2YgYXJncyB0byBiZSBiYXRjaGVkLlxuICogSWYgdGhlIGV4cGFuZGVkIGNvbW1hbmQgZXhjZWVkcyB0aGUgcGxhdGZvcm0ncyBtYXggY29tbWFuZCBsZW5ndGgsXG4gKiB0aGUgYmF0Y2hlZCBhcmdzIGFyZSBzcGxpdCBpbnRvIHNlcXVlbnRpYWwgZXhlY3V0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjQXJndW1lbnQge1xuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyB0byBiYXRjaC5cbiAgICovXG4gIHJlYWRvbmx5IGJhdGNoZWRBcmd1bWVudHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBleGVjfSB0aGF0IHJldHVybiBkZXRhaWxlZCByZXN1bHRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNEZXRhaWxlZE9wdGlvbnMgZXh0ZW5kcyBFeGVjT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNdXN0IGJlIGB0cnVlYCB0byByZWNlaXZlIGRldGFpbGVkIHJlc3VsdHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRGV0YWlsczogdHJ1ZTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBleGVjdXRpbmcgYSBjb21tYW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgY3VycmVudCB3b3JraW5nIGZvbGRlciBmb3IgdGhlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY3dkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIGNoaWxkIHByb2Nlc3MsIG1lcmdlZCBvdmVyIHRoZSBpbmhlcml0ZWQgZW52aXJvbm1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB7fWBcbiAgICovXG4gIHJlYWRvbmx5IGVudj86IE5vZGVKUy5Qcm9jZXNzRW52O1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGF0dGFjaGVzIHRoZSBjaGlsZCBwcm9jZXNzJ3Mgc3RkaW8gZGlyZWN0bHkgdG8gdGhlIHRlcm1pbmFsIChgc3RkaW86ICdpbmhlcml0J2ApIGluc3RlYWRcbiAgICogb2YgY2FwdHVyaW5nIGl0LiBVc2UgZm9yIGxvbmctcnVubmluZyBvciBpbnRlcmFjdGl2ZSBjb21tYW5kcyBzdWNoIGFzIGRldiBzZXJ2ZXJzIGFuZCB3YXRjaCBtb2RlLlxuICAgKiBCZWNhdXNlIHRoZSBvdXRwdXQgaXMgbm90IGNhcHR1cmVkLCB0aGUgcmVzb2x2ZWQgc3Rkb3V0IGlzIGFuIGVtcHR5IHN0cmluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNJbnRlcmFjdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgc3VwcHJlc3NlcyB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBpc1F1aWV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIGNvbW1hbmQgZmFpbHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRmFpbElmQ2FsbGVkRnJvbU91dHNpZGVSb290PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCBpZ25vcmVzIHRoZSBleGl0IGNvZGUgb2YgdGhlIGNvbW1hbmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZElnbm9yZUV4aXRDb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYGZhbHNlYCwgb25seSByZXR1cm5zIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVEZXRhaWxzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQW4gaW5wdXQgdG8gYmUgcGFzc2VkIHRvIHRoZSBjb21tYW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJydgXG4gICAqL1xuICByZWFkb25seSBzdGRpbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHJlc3VsdCBvZiB7QGxpbmsgZXhlY30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBBbiBleGl0IGNvZGUgb2YgdGhlIGNvbW1hbmQuIEEgdmFsdWUgb2YgYG51bGxgIGluZGljYXRlcyB0aGF0IHRoZSBwcm9jZXNzIGRpZCBub3QgZXhpdCBub3JtYWxseS5cbiAgICovXG4gIHJlYWRvbmx5IGV4aXRDb2RlOiBudWxsIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHNpZ25hbCB0aGF0IGNhdXNlZCB0aGUgcHJvY2VzcyB0byBiZSB0ZXJtaW5hdGVkLiBBIHZhbHVlIG9mIGBudWxsYCBpbmRpY2F0ZXMgdGhhdCBubyBzaWduYWwgd2FzIHJlY2VpdmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhpdFNpZ25hbDogTm9kZUpTLlNpZ25hbHMgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBBIHN0YW5kYXJkIGVycm9yIG91dHB1dCBmcm9tIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RkZXJyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3RhbmRhcmQgb3V0cHV0IGZyb20gdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBzdGRvdXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZXhlY30gdGhhdCByZXR1cm4gb25seSBzdGRvdXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY1NpbXBsZU9wdGlvbnMgZXh0ZW5kcyBFeGVjT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNdXN0IGJlIGBmYWxzZWAgb3Igb21pdHRlZCB0byByZWNlaXZlIG9ubHkgc3Rkb3V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRGV0YWlscz86IGZhbHNlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBleGVjU3RyaW5nfS5cbiAqL1xuaW50ZXJmYWNlIEV4ZWNTdHJpbmdQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGNvbW1hbmQgc3RyaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhlYyBvcHRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgb3B0aW9ucz86IEV4ZWNPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgYXJndW1lbnQgYXJyYXkgKGlmIGF2YWlsYWJsZSksIHVzZWQgYnkgdGhlIFBvd2VyU2hlbGxcbiAgICogZmFsbGJhY2sgcGF0aCB0byBxdW90ZSBhcmd1bWVudHMgd2l0aCBQb3dlclNoZWxsLW5hdGl2ZSBzaW5nbGUgcXVvdGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmF3QXJndW1lbnRzPzogc3RyaW5nW107XG59XG4vKipcbiAqIEFwcGVuZHMgYSBzaW5nbGUgYG5vZGVgIENMSSBvcHRpb24gdG8gYSBgTk9ERV9PUFRJT05TYCBzdHJpbmcsIHByZXNlcnZpbmcgYW55IG9wdGlvbnMgYWxyZWFkeSBwcmVzZW50LlxuICpcbiAqIEBwYXJhbSBleGlzdGluZ05vZGVPcHRpb25zIC0gVGhlIGN1cnJlbnQgYE5PREVfT1BUSU9OU2AgdmFsdWUgKGUuZy4gYHByb2Nlc3MuZW52Lk5PREVfT1BUSU9OU2ApLCBpZiBhbnkuXG4gKiBAcGFyYW0gb3B0aW9uIC0gVGhlIGBub2RlYCBDTEkgb3B0aW9uIHRvIGFwcGVuZCAoZS5nLiBgLS1sb2NhbHN0b3JhZ2UtZmlsZT06bWVtb3J5OmApLlxuICogQHJldHVybnMgVGhlIGNvbWJpbmVkIGBOT0RFX09QVElPTlNgIHN0cmluZy4gSWYgYG9wdGlvbmAgaXMgYWxyZWFkeSBwcmVzZW50LCB0aGUgdmFsdWUgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kTm9kZU9wdGlvbihleGlzdGluZ05vZGVPcHRpb25zOiBzdHJpbmcgfCB1bmRlZmluZWQsIG9wdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgdHJpbW1lZCA9IChleGlzdGluZ05vZGVPcHRpb25zID8/ICcnKS50cmltKCk7XG4gIGlmICh0cmltbWVkID09PSAnJykge1xuICAgIHJldHVybiBvcHRpb247XG4gIH1cbiAgaWYgKHRyaW1tZWQuc3BsaXQoL1xccysvKS5pbmNsdWRlcyhvcHRpb24pKSB7XG4gICAgcmV0dXJuIHRyaW1tZWQ7XG4gIH1cbiAgcmV0dXJuIGAke3RyaW1tZWR9ICR7b3B0aW9ufWA7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBlbnZpcm9ubWVudCBmb3IgY2hpbGQgcHJvY2Vzc2VzOiB0aGUgcGFyZW50IGVudmlyb25tZW50IHBsdXMgYERFQlVHX0NPTE9SU2AsIGFuZCBcdTIwMTQgd2hlblxuICogdGhlIHJ1bm5pbmcgYG5vZGVgIHN1cHBvcnRzIGl0IFx1MjAxNCB7QGxpbmsgTE9DQUxfU1RPUkFHRV9OT0RFX09QVElPTn0gYXBwZW5kZWQgdG8gYE5PREVfT1BUSU9OU2AuXG4gKlxuICogVGhlIHN1cHBvcnQgY2hlY2sgZ3VhcmRzIGFnYWluc3Qgb2xkZXIgYG5vZGVgICg8IDIyKTogcGFzc2luZyBhbiBvcHRpb24gYG5vZGVgIGRvZXMgbm90IHJlY29nbml6ZSB2aWFcbiAqIGBOT0RFX09QVElPTlNgIG1ha2VzIGl0IGV4aXQgYmVmb3JlIHJ1bm5pbmcsIHdoaWNoIHdvdWxkIGJyZWFrIGV2ZXJ5IHNwYXduZWQgdG9vbC5cbiAqXG4gKiBAcGFyYW0gYmFzZUVudiAtIFRoZSBwYXJlbnQgZW52aXJvbm1lbnQgdG8gZXh0ZW5kICh0eXBpY2FsbHkgYHByb2Nlc3MuZW52YCkuXG4gKiBAcGFyYW0gYWxsb3dlZE5vZGVFbnZpcm9ubWVudEZsYWdzIC0gVGhlIGBub2RlYCBvcHRpb25zIGFjY2VwdGVkIHZpYSBgTk9ERV9PUFRJT05TYCAodHlwaWNhbGx5IGBwcm9jZXNzLmFsbG93ZWROb2RlRW52aXJvbm1lbnRGbGFnc2ApLlxuICogQHJldHVybnMgVGhlIGVudmlyb25tZW50IHRvIHBhc3MgdG8gc3Bhd25lZCBjaGlsZCBwcm9jZXNzZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZENoaWxkRW52KGJhc2VFbnY6IE5vZGVKUy5Qcm9jZXNzRW52LCBhbGxvd2VkTm9kZUVudmlyb25tZW50RmxhZ3M6IFJlYWRvbmx5U2V0PHN0cmluZz4pOiBOb2RlSlMuUHJvY2Vzc0VudiB7XG4gIGNvbnN0IGVudjogTm9kZUpTLlByb2Nlc3NFbnYgPSB7XG4gICAgREVCVUdfQ09MT1JTOiAnMScsXG4gICAgLi4uYmFzZUVudlxuICB9O1xuICBpZiAoYWxsb3dlZE5vZGVFbnZpcm9ubWVudEZsYWdzLmhhcygnLS1sb2NhbHN0b3JhZ2UtZmlsZScpKSB7XG4gICAgZW52WydOT0RFX09QVElPTlMnXSA9IGFwcGVuZE5vZGVPcHRpb24oYmFzZUVudlsnTk9ERV9PUFRJT05TJ10sIExPQ0FMX1NUT1JBR0VfTk9ERV9PUFRJT04pO1xuICB9XG4gIHJldHVybiBlbnY7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gKiBAdGhyb3dzIElmIHRoZSBjb21tYW5kIGZhaWxzIHdpdGggYSBub24temVybyBleGl0IGNvZGUgYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGBmYWxzZWAuXG4gKiAgICAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGl0IGNvZGUgYW5kIHN0ZGVyci5cbiAqICAgICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgZXhlY3V0aW9uIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBgdHJ1ZWAsXG4gKiAgICAgICAgIHRoZSBlcnJvciBpcyByZXNvbHZlZCB3aXRoIHRoZSBzdGRvdXQgYW5kIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWMoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9ucz86IEV4ZWNTaW1wbGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xuLyoqXG4gKiBFeGVjdXRlcyBhIGNvbW1hbmQuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCB0byBleGVjdXRlLiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBleGVjdXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjRGV0YWlsZWRPcHRpb25zKTogUHJvbWlzZTxFeGVjUmVzdWx0Pjtcbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQgb3IgYW4gRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbW1hbmQpKSB7XG4gICAgY29uc3QgYmF0Y2hSZXN1bHQgPSBoYW5kbGVCYXRjaGVkQ29tbWFuZChjb21tYW5kLCBvcHRpb25zKTtcbiAgICBpZiAoYmF0Y2hSZXN1bHQpIHtcbiAgICAgIHJldHVybiBiYXRjaFJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgJGFyZ3VtZW50cyA9IGNvbW1hbmQuZmlsdGVyKChwYXJ0KTogcGFydCBpcyBzdHJpbmcgPT4gdHlwZW9mIHBhcnQgPT09ICdzdHJpbmcnKTtcbiAgICBjb25zdCBjb21tYW5kTGluZSA9IGJ1aWxkQ29tbWFuZExpbmUoJGFyZ3VtZW50cyk7XG5cbiAgICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuICAgIGlmIChjb21tYW5kTGluZS5sZW5ndGggPiBtYXhDb21tYW5kTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICBgQ29tbWFuZCBsaW5lIGlzIHRvbyBsb25nICgke1N0cmluZyhjb21tYW5kTGluZS5sZW5ndGgpfSBjaGFycywgbWF4ICR7U3RyaW5nKG1heENvbW1hbmRMZW5ndGgpfSBvbiAke3Byb2Nlc3MucGxhdGZvcm19KS4gQ29uc2lkZXIgc3BsaXR0aW5nIGludG8gc21hbGxlciBiYXRjaGVzIG9yIHVzZSBFeGVjQXJnLmBcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXhlY1N0cmluZyh7XG4gICAgICBjb21tYW5kOiBjb21tYW5kTGluZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICByYXdBcmd1bWVudHM6ICRhcmd1bWVudHNcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IG1heENvbW1hbmRMZW5ndGggPSBnZXRNYXhDb21tYW5kTGVuZ3RoKCk7XG4gIGlmIChjb21tYW5kLmxlbmd0aCA+IG1heENvbW1hbmRMZW5ndGgpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICBuZXcgRXJyb3IoXG4gICAgICAgIGBDb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgKCR7U3RyaW5nKGNvbW1hbmQubGVuZ3RoKX0gY2hhcnMsIG1heCAke1N0cmluZyhtYXhDb21tYW5kTGVuZ3RoKX0gb24gJHtwcm9jZXNzLnBsYXRmb3JtfSkuIENvbnNpZGVyIHNwbGl0dGluZyBpbnRvIHNtYWxsZXIgYmF0Y2hlcyBvciB1c2UgRXhlY0FyZy5gXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBleGVjU3RyaW5nKHtcbiAgICBjb21tYW5kLFxuICAgIG9wdGlvbnNcbiAgfSk7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBzaW5nbGUgc3RyaW5nIGNvbW1hbmQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmVzdWx0LlxuICovXG5mdW5jdGlvbiBleGVjU3RyaW5nKHBhcmFtczogRXhlY1N0cmluZ1BhcmFtcyk6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgY29tbWFuZCxcbiAgICBvcHRpb25zID0ge30sXG4gICAgcmF3QXJndW1lbnRzXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHtcbiAgICBjd2QgPSBwcm9jZXNzLmN3ZCgpLFxuICAgIGVudixcbiAgICBpc0ludGVyYWN0aXZlID0gZmFsc2UsXG4gICAgaXNRdWlldDogcXVpZXQgPSBmYWxzZSxcbiAgICBzaG91bGRJZ25vcmVFeGl0Q29kZTogaWdub3JlRXhpdENvZGUgPSBmYWxzZSxcbiAgICBzaG91bGRJbmNsdWRlRGV0YWlscyA9IGZhbHNlLFxuICAgIHN0ZGluID0gJydcbiAgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBnZXRMaWJEZWJ1Z2dlcignRXhlYycpKGBFeGVjdXRpbmcgY29tbWFuZDogJHtjb21tYW5kfWApO1xuXG4gICAgY29uc3QgY2hpbGQgPSBzcGF3blZpYVNoZWxsKG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxTcGF3blZpYVNoZWxsUGFyYW1zPih7XG4gICAgICBjb21tYW5kLFxuICAgICAgY3dkLFxuICAgICAgZW52LFxuICAgICAgaXNJbnRlcmFjdGl2ZSxcbiAgICAgIHJhd0FyZ3VtZW50c1xuICAgIH0pKTtcblxuICAgIGxldCBzdGRvdXQgPSAnJztcbiAgICBsZXQgc3RkZXJyID0gJyc7XG5cbiAgICAvLyBJbiBpbnRlcmFjdGl2ZSBtb2RlIHRoZSBjaGlsZCdzIHN0ZGlvIGlzIGluaGVyaXRlZCBieSB0aGUgdGVybWluYWwsIHNvIHRoZXJlIGFyZSBubyBzdHJlYW1zIHRvIHJlYWQgYW5kIG5vdGhpbmcgaXMgY2FwdHVyZWQuXG4gICAgaWYgKCFpc0ludGVyYWN0aXZlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0ZGVycjogY2hpbGRTdGRlcnIsXG4gICAgICAgIHN0ZGluOiBjaGlsZFN0ZGluLFxuICAgICAgICBzdGRvdXQ6IGNoaWxkU3Rkb3V0XG4gICAgICB9ID0gY2hpbGQ7XG4gICAgICBhc3NlcnROb25OdWxsYWJsZShjaGlsZFN0ZGluLCAnQ2hpbGQgcHJvY2VzcyBzdGRpbiBpcyBub3QgYXZhaWxhYmxlJyk7XG4gICAgICBhc3NlcnROb25OdWxsYWJsZShjaGlsZFN0ZG91dCwgJ0NoaWxkIHByb2Nlc3Mgc3Rkb3V0IGlzIG5vdCBhdmFpbGFibGUnKTtcbiAgICAgIGFzc2VydE5vbk51bGxhYmxlKGNoaWxkU3RkZXJyLCAnQ2hpbGQgcHJvY2VzcyBzdGRlcnIgaXMgbm90IGF2YWlsYWJsZScpO1xuXG4gICAgICBjaGlsZFN0ZGluLndyaXRlKHN0ZGluKTtcbiAgICAgIGNoaWxkU3RkaW4uZW5kKCk7XG5cbiAgICAgIGNoaWxkU3Rkb3V0Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgc3Rkb3V0ICs9IGRhdGEudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgICB9KTtcblxuICAgICAgY2hpbGRTdGRvdXQub24oJ2VuZCcsICgpID0+IHtcbiAgICAgICAgc3Rkb3V0ID0gdHJpbUVuZCh7XG4gICAgICAgICAgJHN0cmluZzogc3Rkb3V0LFxuICAgICAgICAgIHN1ZmZpeDogJ1xcbidcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgY2hpbGRTdGRlcnIub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBzdGRlcnIgKz0gZGF0YS50b1N0cmluZygndXRmLTgnKTtcbiAgICAgIH0pO1xuXG4gICAgICBjaGlsZFN0ZGVyci5vbignZW5kJywgKCkgPT4ge1xuICAgICAgICBzdGRlcnIgPSB0cmltRW5kKHtcbiAgICAgICAgICAkc3RyaW5nOiBzdGRlcnIsXG4gICAgICAgICAgc3VmZml4OiAnXFxuJ1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNoaWxkLm9uKCdjbG9zZScsIChleGl0Q29kZSwgZXhpdFNpZ25hbCkgPT4ge1xuICAgICAgaWYgKGV4aXRDb2RlICE9PSAwICYmICFpZ25vcmVFeGl0Q29kZSkge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBDb21tYW5kIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAke2V4aXRDb2RlID8gU3RyaW5nKGV4aXRDb2RlKSA6ICcobnVsbCknfVxcbiR7c3RkZXJyfWApKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNob3VsZEluY2x1ZGVEZXRhaWxzKSB7XG4gICAgICAgIHJlc29sdmUoc3Rkb3V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIGV4aXRDb2RlLFxuICAgICAgICBleGl0U2lnbmFsLFxuICAgICAgICBzdGRlcnIsXG4gICAgICAgIHN0ZG91dFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5vbignZXJyb3InLCAoZXJyb3IpID0+IHtcbiAgICAgIGlmICghaWdub3JlRXhpdENvZGUpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNob3VsZEluY2x1ZGVEZXRhaWxzKSB7XG4gICAgICAgIHJlc29sdmUoc3Rkb3V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgZXhpdENvZGU6IG51bGwsXG4gICAgICAgIGV4aXRTaWduYWw6IG51bGwsXG4gICAgICAgIHN0ZGVycixcbiAgICAgICAgc3Rkb3V0XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogQSBgbm9kZWAgQ0xJIG9wdGlvbiAocGFzc2VkIHZpYSBgTk9ERV9PUFRJT05TYCkgdGhhdCBwcm92aWRlcyBhbiBpbi1tZW1vcnkgYGxvY2FsU3RvcmFnZWAgdG8gZXZlcnlcbiAqIHNwYXduZWQgYG5vZGVgIHByb2Nlc3MuIE5vZGUgMjIrIGV4cG9zZXMgYW4gZXhwZXJpbWVudGFsIFdlYiBTdG9yYWdlIGBsb2NhbFN0b3JhZ2VgLCBidXQgYWNjZXNzaW5nIGl0XG4gKiB3aXRob3V0IGAtLWxvY2Fsc3RvcmFnZS1maWxlYCBlbWl0cyBhbiBgRXhwZXJpbWVudGFsV2FybmluZ2AgYW5kIGxlYXZlcyBgbG9jYWxTdG9yYWdlYCB1bmF2YWlsYWJsZS5cbiAqIFBvaW50aW5nIGl0IGF0IHRoZSBzcGVjaWFsIGA6bWVtb3J5OmAgZGF0YWJhc2UgZ2l2ZXMgZWFjaCBwcm9jZXNzIGEgd29ya2luZywgbm9uLXBlcnNpc3RlbnRcbiAqIGBsb2NhbFN0b3JhZ2VgIChubyBmaWxlIG9uIGRpc2ssIG5vIHN0YXRlIHNoYXJlZCBiZXR3ZWVuIHByb2Nlc3NlcykgXHUyMDE0IG1hdGNoaW5nIHRoZSByZWFsIE9ic2lkaWFuXG4gKiAoRWxlY3Ryb24pIHJ1bnRpbWUgYW5kIHNpbGVuY2luZyB0aGUgd2FybmluZyBieSBhZGRyZXNzaW5nIGl0cyByb290IGNhdXNlIHJhdGhlciB0aGFuIHN1cHByZXNzaW5nIGl0LlxuICpcbiAqIEl0IGlzIGFwcGxpZWQgb25seSB3aGVuIHRoZSBydW5uaW5nIGBub2RlYCBhY3R1YWxseSBzdXBwb3J0cyBpdCAoc2VlIHtAbGluayBidWlsZENoaWxkRW52fSk6IHBhc3NpbmdcbiAqIGFuIG9wdGlvbiBgbm9kZWAgZG9lcyBub3QgcmVjb2duaXplIHZpYSBgTk9ERV9PUFRJT05TYCBtYWtlcyBpdCByZWZ1c2UgdG8gc3RhcnQsIHNvIGFuIG9sZGVyIGBub2RlYFxuICogKDwgMjIpIG11c3QgYmUgbGVmdCB1bnRvdWNoZWQuXG4gKi9cbmNvbnN0IExPQ0FMX1NUT1JBR0VfTk9ERV9PUFRJT04gPSAnLS1sb2NhbHN0b3JhZ2UtZmlsZT06bWVtb3J5Oic7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGV4ZWN1dGVCYXRjaGVzfS5cbiAqL1xuaW50ZXJmYWNlIEV4ZWN1dGVCYXRjaGVzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBiYXNlIGNvbW1hbmQgd2l0aG91dCBiYXRjaGVkIGFyZ3MuXG4gICAqL1xuICByZWFkb25seSBiYXNlQ29tbWFuZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYmF0Y2hlcyBvZiBhcmdzLlxuICAgKi9cbiAgcmVhZG9ubHkgYmF0Y2hlczogc3RyaW5nW11bXTtcblxuICAvKipcbiAgICogVGhlIGV4ZWMgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbnM6IEV4ZWNPcHRpb25zO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBzcGF3blZpYVNoZWxsfS5cbiAqL1xuaW50ZXJmYWNlIFNwYXduVmlhU2hlbGxQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGNvbW1hbmQgc3RyaW5nIHRvIGV4ZWN1dGUuXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbiAgICovXG4gIHJlYWRvbmx5IGN3ZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyBtZXJnZWQgb3ZlciB0aGUgaW5oZXJpdGVkIGNoaWxkIGVudmlyb25tZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZW52PzogTm9kZUpTLlByb2Nlc3NFbnY7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgYXR0YWNoZXMgdGhlIGNoaWxkJ3Mgc3RkaW8gdG8gdGhlIHRlcm1pbmFsIGluc3RlYWQgb2YgcGlwaW5nIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgaXNJbnRlcmFjdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBvcmlnaW5hbCBhcmd1bWVudCBhcnJheSAoaWYgYXZhaWxhYmxlKS5cbiAgICovXG4gIHJlYWRvbmx5IHJhd0FyZ3VtZW50cz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhIGNvbW1hbmQtbGluZSBzdHJpbmcgZnJvbSBhbiBhcmd1bWVudCBhcnJheSwgcXVvdGVkIGZvciB0aGUgc2hlbGwgdGhhdFxuICoge0BsaW5rIHNwYXduVmlhU2hlbGx9IHdpbGwgcm91dGUgdGhyb3VnaCBvbiB0aGUgY3VycmVudCBwbGF0Zm9ybS5cbiAqXG4gKiBPbiBXaW5kb3dzIHRoZSBjb21tYW5kIGlzIGV4ZWN1dGVkIHZpYSBgY21kLmV4ZWAsIHNvIGl0IHVzZXMgdGhlXG4gKiBgQ29tbWFuZExpbmVUb0FyZ3ZXYCBjb252ZW50aW9uICh7QGxpbmsgdG9Db21tYW5kTGluZX0pOyB7QGxpbmsgc3Bhd25WaWFTaGVsbH1cbiAqIHRoZW4gYXBwbGllcyB7QGxpbmsgY21kRXNjYXBlQ29tbWFuZExpbmV9IG9uIHRvcCBmb3IgYGNtZC5leGVgIG1ldGFjaGFyYWN0ZXJzLlxuICogRWxzZXdoZXJlIHRoZSBjb21tYW5kIGlzIGV4ZWN1dGVkIHZpYSBgc2ggLWNgLCBzbyBpdCB1c2VzIFBPU0lYIHNpbmdsZS1xdW90ZVxuICogcXVvdGluZyAoe0BsaW5rIHRvUG9zaXhDb21tYW5kTGluZX0pIGFuZCBuZWVkcyBubyBmdXJ0aGVyIGVzY2FwaW5nLlxuICpcbiAqIFRoZSBwbGF0Zm9ybSBicmFuY2ggaGVyZSBNVVNUIHN0YXkgaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4ge0BsaW5rIHNwYXduVmlhU2hlbGx9LlxuICpcbiAqIEBwYXJhbSAkYXJndW1lbnRzIC0gVGhlIGFyZ3VtZW50IGFycmF5IHRvIHF1b3RlIGFuZCBqb2luLlxuICogQHJldHVybnMgVGhlIHF1b3RlZCBjb21tYW5kLWxpbmUgc3RyaW5nIGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybSdzIHNoZWxsLlxuICovXG5mdW5jdGlvbiBidWlsZENvbW1hbmRMaW5lKCRhcmd1bWVudHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyB0b0NvbW1hbmRMaW5lKCRhcmd1bWVudHMpIDogdG9Qb3NpeENvbW1hbmRMaW5lKCRhcmd1bWVudHMpO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGJhdGNoZWQgY29tbWFuZHMgc2VxdWVudGlhbGx5IGFuZCBjb25jYXRlbmF0ZXMgc3Rkb3V0LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJhdGNoZWQgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgY29uY2F0ZW5hdGVkIHJlc3VsdC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUJhdGNoZXMocGFyYW1zOiBFeGVjdXRlQmF0Y2hlc1BhcmFtcyk6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4ge1xuICBjb25zdCB7IGJhc2VDb21tYW5kLCBiYXRjaGVzLCBvcHRpb25zIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHJlc3VsdHM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBiYXRjaCBvZiBiYXRjaGVzKSB7XG4gICAgY29uc3QgYmF0Y2hDb21tYW5kID0gYCR7YmFzZUNvbW1hbmR9ICR7YnVpbGRDb21tYW5kTGluZShiYXRjaCl9YDtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBleGVjU3RyaW5nKHtcbiAgICAgIGNvbW1hbmQ6IGJhdGNoQ29tbWFuZCxcbiAgICAgIG9wdGlvbnNcbiAgICB9KTtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnNob3VsZEluY2x1ZGVEZXRhaWxzKSB7XG4gICAgcmV0dXJuIHsgZXhpdENvZGU6IDAsIGV4aXRTaWduYWw6IG51bGwsIHN0ZGVycjogJycsIHN0ZG91dDogcmVzdWx0cy5qb2luKCdcXG4nKSB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHMuam9pbignXFxuJyk7XG59XG5cbi8qKlxuICogRGVmYXVsdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgcGFzc2VkIHRvIGNoaWxkIHByb2Nlc3NlcywgcmVzb2x2ZWQgYXQgc3Bhd24gdGltZS5cbiAqXG4gKiBEZWxpYmVyYXRlbHkgbm90IGEgbW9kdWxlLWxldmVsIGNvbnN0YW50LiBgLmVudmAgaXMgbG9hZGVkIGJ5IGBsb2FkRW52RmlsZUlmRXhpc3RzYCBmcm9tIGluc2lkZVxuICogYHdyYXBDbGlUYXNrYCwgYW5kIEVTTSBldmFsdWF0ZXMgZXZlcnkgaW1wb3J0IGJlZm9yZSB0aGUgZW50cnkgbW9kdWxlJ3MgZmlyc3Qgc3RhdGVtZW50IFx1MjAxNCBzbyBhXG4gKiBzbmFwc2hvdCB0YWtlbiBoZXJlIHdvdWxkIGFsd2F5cyBwcmVkYXRlIHRoZSBsb2FkLCBhbmQgZXZlcnkgc3Bhd25lZCBjaGlsZCB3b3VsZCBydW4gd2l0aG91dCB0aGVcbiAqIHJlcG8ncyBvd24gYC5lbnZgLiBOb3RoaW5nIHN1cmZhY2VkIHRoYXQgd2hpbGUgVml0ZXN0IDMgY29waWVkIHRoZSBgLmVudmAgaXQgbG9hZGVkIGludG8gdGhlXG4gKiB3b3JrZXIncyBgcHJvY2Vzcy5lbnZgOyBWaXRlc3QgNCB3cml0ZXMgdGhvc2UgdG8gYGltcG9ydC5tZXRhLmVudmAgb25seSwgbGVhdmluZyB0aGlzIHRoZSBzb2xlXG4gKiBwYXRoIGFuZCBhbiBlbXB0eSBvbmUuXG4gKlxuICogQHJldHVybnMgVGhlIGVudmlyb25tZW50IHRvIHBhc3MgdG8gc3Bhd25lZCBjaGlsZCBwcm9jZXNzZXMsIHJlZmxlY3RpbmcgYHByb2Nlc3MuZW52YCBhcyBpdCBzdGFuZHMgbm93LlxuICovXG5mdW5jdGlvbiBnZXRDaGlsZEVudigpOiBOb2RlSlMuUHJvY2Vzc0VudiB7XG4gIHJldHVybiBidWlsZENoaWxkRW52KHByb2Nlc3MuZW52LCBwcm9jZXNzLmFsbG93ZWROb2RlRW52aXJvbm1lbnRGbGFncyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgbWF4IGNvbW1hbmQgbGluZSBsZW5ndGguXG4gKlxuICogQHJldHVybnMgVGhlIG1heCBjb21tYW5kIGxlbmd0aCBpbiBjaGFyYWN0ZXJzLlxuICovXG5mdW5jdGlvbiBnZXRNYXhDb21tYW5kTGVuZ3RoKCk6IG51bWJlciB7XG4gIGNvbnN0IFdJTkRPV1NfTUFYX0NPTU1BTkRfTEVOR1RIID0gODE5MTtcbiAgY29uc3QgVU5JWF9NQVhfQ09NTUFORF9MRU5HVEggPSAxMzFfMDcyO1xuICByZXR1cm4gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IFdJTkRPV1NfTUFYX0NPTU1BTkRfTEVOR1RIIDogVU5JWF9NQVhfQ09NTUFORF9MRU5HVEg7XG59XG5cbi8qKlxuICogSGFuZGxlcyBhIGNvbW1hbmQgYXJyYXkgdGhhdCBtYXkgY29udGFpbiBhbiB7QGxpbmsgRXhlY0FyZ3VtZW50fS5cbiAqIFJldHVybnMgYSBQcm9taXNlIGlmIGJhdGNoaW5nIGlzIG5lZWRlZCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIGNvbW1hbmRcbiAqIGhhcyBubyBFeGVjQXJnIGFuZCBzaG91bGQgYmUgcHJvY2Vzc2VkIG5vcm1hbGx5LlxuICpcbiAqIEBwYXJhbSBwYXJ0cyAtIFRoZSBjb21tYW5kIHBhcnRzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgZXhlYyBvcHRpb25zLlxuICogQHJldHVybnMgQSBQcm9taXNlIGlmIGJhdGNoaW5nIGlzIGhhbmRsZWQsIG9yIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBoYW5kbGVCYXRjaGVkQ29tbWFuZChwYXJ0czogQ29tbWFuZFBhcnRbXSwgb3B0aW9uczogRXhlY09wdGlvbnMpOiBQcm9taXNlPEV4ZWNSZXN1bHQgfCBzdHJpbmc+IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZXhlY0FyZ3VtZW50cyA9IHBhcnRzLmZpbHRlcihpc0V4ZWNBcmd1bWVudCk7XG4gIGlmIChleGVjQXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGV4ZWNBcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ09ubHkgb25lIEV4ZWNBcmcgd2l0aCBiYXRjaGVkQXJndW1lbnRzIGlzIGFsbG93ZWQgcGVyIGNvbW1hbmQnKSk7XG4gIH1cblxuICBjb25zdCBleGVjQXJndW1lbnQgPSBleGVjQXJndW1lbnRzWzBdO1xuICBhc3NlcnROb25OdWxsYWJsZShleGVjQXJndW1lbnQpO1xuICBjb25zdCBzdGF0aWNQYXJ0cyA9IHBhcnRzLmZpbHRlcigocGFydCk6IHBhcnQgaXMgc3RyaW5nID0+IHR5cGVvZiBwYXJ0ID09PSAnc3RyaW5nJyk7XG4gIGNvbnN0IGJhc2VDb21tYW5kID0gYnVpbGRDb21tYW5kTGluZShzdGF0aWNQYXJ0cyk7XG4gIGNvbnN0IG1heENvbW1hbmRMZW5ndGggPSBnZXRNYXhDb21tYW5kTGVuZ3RoKCk7XG5cbiAgLy8gVHJ5IGV4cGFuZGluZyBhbGwgYXJncyBpbmxpbmVcbiAgY29uc3QgZnVsbENvbW1hbmQgPSBgJHtiYXNlQ29tbWFuZH0gJHtidWlsZENvbW1hbmRMaW5lKFsuLi5leGVjQXJndW1lbnQuYmF0Y2hlZEFyZ3VtZW50c10pfWA7XG4gIGlmIChmdWxsQ29tbWFuZC5sZW5ndGggPD0gbWF4Q29tbWFuZExlbmd0aCkge1xuICAgIHJldHVybiBleGVjU3RyaW5nKHtcbiAgICAgIGNvbW1hbmQ6IGZ1bGxDb21tYW5kLFxuICAgICAgb3B0aW9uc1xuICAgIH0pO1xuICB9XG5cbiAgLy8gU3BsaXQgaW50byBiYXRjaGVzXG4gIGNvbnN0IGJhdGNoZXM6IHN0cmluZ1tdW10gPSBbXTtcbiAgbGV0IGN1cnJlbnRCYXRjaDogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFyZ3VtZW50IG9mIGV4ZWNBcmd1bWVudC5iYXRjaGVkQXJndW1lbnRzKSB7XG4gICAgY29uc3QgdGVudGF0aXZlID0gYCR7YmFzZUNvbW1hbmR9ICR7YnVpbGRDb21tYW5kTGluZShbLi4uY3VycmVudEJhdGNoLCBhcmd1bWVudF0pfWA7XG4gICAgaWYgKHRlbnRhdGl2ZS5sZW5ndGggPiBtYXhDb21tYW5kTGVuZ3RoKSB7XG4gICAgICBpZiAoY3VycmVudEJhdGNoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgYENhbm5vdCBzcGxpdCBjb21tYW5kIGludG8gYmF0Y2hlczogYSBzaW5nbGUgYXJndW1lbnQgKCR7U3RyaW5nKGFyZ3VtZW50Lmxlbmd0aCl9IGNoYXJzKSBwbHVzIHRoZSBiYXNlIGNvbW1hbmQgKCR7U3RyaW5nKGJhc2VDb21tYW5kLmxlbmd0aCl9IGNoYXJzKSBleGNlZWRzIHRoZSBtYXggY29tbWFuZCBsZW5ndGggKCR7U3RyaW5nKG1heENvbW1hbmRMZW5ndGgpfSkuYFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGJhdGNoZXMucHVzaChjdXJyZW50QmF0Y2gpO1xuICAgICAgY3VycmVudEJhdGNoID0gW2FyZ3VtZW50XTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudEJhdGNoLnB1c2goYXJndW1lbnQpO1xuICAgIH1cbiAgfVxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWx3YXlzIHRydWUgYWZ0ZXIgdGhlIGxvb3A7IGJhdGNoZWRBcmd1bWVudHMgaXMgbm9uLWVtcHR5IGF0IHRoaXMgcG9pbnQuICovXG4gIGlmIChjdXJyZW50QmF0Y2gubGVuZ3RoID4gMCkge1xuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgYmF0Y2hlcy5wdXNoKGN1cnJlbnRCYXRjaCk7XG4gIH1cblxuICByZXR1cm4gZXhlY3V0ZUJhdGNoZXMoe1xuICAgIGJhc2VDb21tYW5kLFxuICAgIGJhdGNoZXMsXG4gICAgb3B0aW9uc1xuICB9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBjb21tYW5kIHBhcnQgaXMgYW4ge0BsaW5rIEV4ZWNBcmd1bWVudH0uXG4gKlxuICogQHBhcmFtIHBhcnQgLSBUaGUgY29tbWFuZCBwYXJ0IHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcGFydCBpcyBhbiBFeGVjQXJnLlxuICovXG5mdW5jdGlvbiBpc0V4ZWNBcmd1bWVudChwYXJ0OiBDb21tYW5kUGFydCk6IHBhcnQgaXMgRXhlY0FyZ3VtZW50IHtcbiAgcmV0dXJuIHR5cGVvZiBwYXJ0ID09PSAnb2JqZWN0JyAmJiAnYmF0Y2hlZEFyZ3VtZW50cycgaW4gcGFydDtcbn1cblxuLyoqXG4gKiBTcGF3bnMgYSBjaGlsZCBwcm9jZXNzIHZpYSB0aGUgYXBwcm9wcmlhdGUgc2hlbGwuXG4gKlxuICogT24gV2luZG93cywgaWYgdGhlIGNvbW1hbmQgY29udGFpbnMgbmV3bGluZXMgKHdoaWNoIGBjbWQuZXhlYCBjYW5ub3QgaGFuZGxlKVxuICogYW5kIHRoZSByYXcgYXJncyBhcnJheSBpcyBhdmFpbGFibGUsIHNwYXducyB0aGUgcHJvY2VzcyBkaXJlY3RseSB3aXRob3V0XG4gKiBhbnkgc2hlbGwgXHUyMDE0IHBhc3NpbmcgYXJncyB2aWEgYENyZWF0ZVByb2Nlc3NgLCB3aGljaCBhdm9pZHMgYWxsIHF1b3RpbmcgaXNzdWVzLlxuICpcbiAqIE9uIFdpbmRvd3MgKGNtZC5leGUgcGF0aCksIGFwcGxpZXMgYF5gLWVzY2FwaW5nIGZvciBjbWQgbWV0YWNoYXJhY3RlcnMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBzcGF3bmluZyB0aGUgY2hpbGQgcHJvY2Vzcy5cbiAqIEByZXR1cm5zIFRoZSBzcGF3bmVkIGNoaWxkIHByb2Nlc3MuXG4gKi9cbmZ1bmN0aW9uIHNwYXduVmlhU2hlbGwocGFyYW1zOiBTcGF3blZpYVNoZWxsUGFyYW1zKTogQ2hpbGRQcm9jZXNzIHtcbiAgY29uc3QgeyBjb21tYW5kLCBjd2QsIGVudjogZXh0cmFFbnYsIGlzSW50ZXJhY3RpdmUgPSBmYWxzZSwgcmF3QXJndW1lbnRzIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGVudjogTm9kZUpTLlByb2Nlc3NFbnYgPSB7XG4gICAgLi4uZ2V0Q2hpbGRFbnYoKSxcbiAgICAuLi5leHRyYUVudlxuICB9O1xuICBjb25zdCBzdGRpbzogJ2luaGVyaXQnIHwgJ3BpcGUnID0gaXNJbnRlcmFjdGl2ZSA/ICdpbmhlcml0JyA6ICdwaXBlJztcbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgJiYgY29tbWFuZC5pbmNsdWRlcygnXFxuJykpIHtcbiAgICBpZiAoIXJhd0FyZ3VtZW50cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21tYW5kcyBjb250YWluaW5nIG5ld2xpbmVzIGNhbm5vdCBiZSBleGVjdXRlZCB0aHJvdWdoIGNtZC5leGUgb24gV2luZG93cy4gUGFzcyBhbiBhcmd1bWVudCBhcnJheSBpbnN0ZWFkIG9mIGEgc3RyaW5nLicpO1xuICAgIH1cbiAgICBjb25zdCBbcHJvZ3JhbSwgLi4uJGFyZ3VtZW50c10gPSByYXdBcmd1bWVudHM7XG4gICAgYXNzZXJ0Tm9uTnVsbGFibGUocHJvZ3JhbSwgJ0NvbW1hbmQgYXJyYXkgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgICByZXR1cm4gc3Bhd24ocHJvZ3JhbSwgJGFyZ3VtZW50cywge1xuICAgICAgY3dkLFxuICAgICAgZW52LFxuICAgICAgc3RkaW9cbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHNoZWxsQ29tbWFuZCA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBjb21tYW5kRXNjYXBlQ29tbWFuZExpbmUoY29tbWFuZCkgOiBjb21tYW5kO1xuICByZXR1cm4gc3Bhd24oc2hlbGxDb21tYW5kLCBbXSwge1xuICAgIGN3ZCxcbiAgICBlbnYsXG4gICAgc2hlbGw6IHRydWUsXG4gICAgc3RkaW9cbiAgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEsZ0NBQXNCO0FBQ3RCLDBCQUFvQjtBQUVwQixtQkFBK0I7QUFDL0IsMEJBQTRDO0FBQzVDLG9CQUF3QjtBQUN4Qix5QkFBa0M7QUFDbEMsdUJBSU87QUEwSkEsU0FBUyxpQkFBaUIscUJBQXlDLFFBQXdCO0FBQ2hHLFFBQU0sV0FBVyx1QkFBdUIsSUFBSSxLQUFL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QUFlO0FBQUEsSUFDcEI7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBUUEsU0FBUyxlQUFlLE1BQXlDO0FBQy9ELFNBQU8sT0FBTyxTQUFTLFlBQVksc0JBQXNCO0FBQzNEO0FBY0EsU0FBUyxjQUFjLFFBQTJDO0FBQ2hFLFFBQU0sRUFBRSxTQUFTLEtBQUssS0FBSyxVQUFVLGdCQUFnQixPQUFPLGFBQWEsSUFBSTtBQUM3RSxRQUFNLE1BQXlCO0FBQUEsSUFDN0IsR0FBRyxZQUFZO0FBQUEsSUFDZixHQUFHO0FBQUEsRUFDTDtBQUNBLFFBQU0sUUFBNEIsZ0JBQWdCLFlBQVk7QUFDOUQsTUFBSSxvQkFBQUEsUUFBUSxhQUFhLFdBQVcsUUFBUSxTQUFTLElBQUksR0FBRztBQUMxRCxRQUFJLENBQUMsY0FBYztBQUNqQixZQUFNLElBQUksTUFBTSx5SEFBeUg7QUFBQSxJQUMzSTtBQUNBLFVBQU0sQ0FBQyxTQUFTLEdBQUcsVUFBVSxJQUFJO0FBQ2pDLDhDQUFrQixTQUFTLGlDQUFpQztBQUM1RCxlQUFPLGlDQUFNLFNBQVMsWUFBWTtBQUFBLE1BQ2hDO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBRUEsUUFBTSxlQUFlLG9CQUFBQSxRQUFRLGFBQWEsY0FBVSxpQkFBQUMsc0JBQXlCLE9BQU8sSUFBSTtBQUN4RixhQUFPLGlDQUFNLGNBQWMsQ0FBQyxHQUFHO0FBQUEsSUFDN0I7QUFBQSxJQUNBO0FBQUEsSUFDQSxPQUFPO0FBQUEsSUFDUDtBQUFBLEVBQ0YsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogWyJtYXhDb21tYW5kTGVuZ3RoIiwgInByb2Nlc3MiLCAiY29tbWFuZEVzY2FwZUNvbW1hbmRMaW5lIl0KfQo=
@@ -12,6 +12,7 @@ export { ASYNC_WRAPPER_ERROR_MESSAGE, CustomStackTraceError, emitAsyncErrorEvent
12
12
  export { cloneFunction, createFunction, getFunctionExpressionString, noop, noopAsync, noopAsyncSingletonPromise, omitAsyncReturnType, omitReturnType } from './function.mjs';
13
13
  export { LIBRARY_STYLES, LIBRARY_VERSION } from './generated-during-build.mjs';
14
14
  export { createDivAsync, createElAsync, createFragmentAsync, createSpanAsync, createSvgAsync, ensureLoaded, getDocumentWindow, getZIndex, isElementVisibleInOffsetParent, isLoaded, onAncestorScrollOrResize, toPx, waitUntilConnected } from './html-element.mjs';
15
+ export { extractJpegMetadataSegments, injectJpegMetadataSegments } from './jpeg-metadata.mjs';
15
16
  export { Library, LIBRARY_NAME } from './library.mjs';
16
17
  export { assignWithNonEnumerableProperties, castTo, cloneWithNonEnumerableProperties, deleteProperties, deleteProperty, extractDefaultExportInterop, FunctionHandlingMode, getAllEntries, getAllKeys, getNestedPropertyValue, getPrototypeOf, isDeepEqual, nameof, normalizeOptionalProperties, removeUndefinedProperties, setNestedPropertyValue, toJson } from './object-utils.mjs';
17
18
  export { getObsidianDevUtilsState, resetObsidianDevUtilsState } from './obsidian-dev-utils-state.mjs';
@@ -19,6 +20,7 @@ export { AppActiveFileProvider } from './obsidian/active-file-provider.mjs';
19
20
  export { getApp } from './obsidian/app.mjs';
20
21
  export { retryWithTimeoutNotice, runWithTimeoutNotice } from './obsidian/async-with-notice.mjs';
21
22
  export { AttachmentPathContext, DUMMY_PATH, getAttachmentFilePath, getAttachmentFolderPath, getAttachmentFolderPathSyncOrNull, getAvailablePathForAttachments, hasOwnAttachmentFolder, isAtProperAttachmentPath } from './obsidian/attachment-path.mjs';
23
+ export { findAttachmentUnitFolderPath, rebasePathOntoFolder } from './obsidian/attachment-unit-folder.mjs';
22
24
  export { renderBacklinksTable, renderDelayedBacklinks, renderDelayedBacklinksForFolder } from './obsidian/backlink.mjs';
23
25
  export { PluginBasesViewRegistrar } from './obsidian/bases-view-registrar.mjs';
24
26
  export { CalloutMode, renderCallout, wrapForCallout } from './obsidian/callout.mjs';
@@ -159,6 +159,10 @@ import {
159
159
  toPx,
160
160
  waitUntilConnected
161
161
  } from "./html-element.mjs";
162
+ import {
163
+ extractJpegMetadataSegments,
164
+ injectJpegMetadataSegments
165
+ } from "./jpeg-metadata.mjs";
162
166
  import {
163
167
  Library,
164
168
  LIBRARY_NAME
@@ -202,6 +206,10 @@ import {
202
206
  hasOwnAttachmentFolder,
203
207
  isAtProperAttachmentPath
204
208
  } from "./obsidian/attachment-path.mjs";
209
+ import {
210
+ findAttachmentUnitFolderPath,
211
+ rebasePathOntoFolder
212
+ } from "./obsidian/attachment-unit-folder.mjs";
205
213
  import {
206
214
  renderBacklinksTable,
207
215
  renderDelayedBacklinks,
@@ -962,8 +970,10 @@ export {
962
970
  escapeRegExp,
963
971
  extname,
964
972
  extractDefaultExportInterop,
973
+ extractJpegMetadataSegments,
965
974
  extractLinkFile,
966
975
  filterInPlace,
976
+ findAttachmentUnitFolderPath,
967
977
  fixFrontmatterMarkdownLinks,
968
978
  fixTitle,
969
979
  flushQueue,
@@ -1053,6 +1063,7 @@ export {
1053
1063
  initDebugController,
1054
1064
  initI18N,
1055
1065
  initPluginContext,
1066
+ injectJpegMetadataSegments,
1056
1067
  insertAfterCodeBlock,
1057
1068
  insertAt,
1058
1069
  insertBeforeCodeBlock,
@@ -1155,6 +1166,7 @@ export {
1155
1166
  prompt,
1156
1167
  queueMicrotaskAsync,
1157
1168
  readSafe,
1169
+ rebasePathOntoFolder,
1158
1170
  referenceToFileChange,
1159
1171
  registerAsyncErrorEventHandler,
1160
1172
  registerAsyncEvent,
@@ -1267,4 +1279,4 @@ export {
1267
1279
  waitUntilConnected,
1268
1280
  wrapForCallout
1269
1281
  };
1270
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL19fbWVyZ2VkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0IHtcbiAgYWJvcnRTaWduYWxBbnksXG4gIGFib3J0U2lnbmFsTmV2ZXIsXG4gIGFib3J0U2lnbmFsVGltZW91dCxcbiAgSU5GSU5JVEVfVElNRU9VVCxcbiAgb25BYm9ydCxcbiAgd2FpdEZvckFib3J0XG59IGZyb20gJy4vYWJvcnQtY29udHJvbGxlci50cyc7XG5leHBvcnQge1xuICBmaWx0ZXJJblBsYWNlLFxuICBzbmFwc2hvdCxcbiAgdW5pcXVlLFxuICB1bmlxdWVJblBsYWNlXG59IGZyb20gJy4vYXJyYXkudHMnO1xuZXhwb3J0IHtcbiAgQXN5bmNFdmVudFJlZkRpc3Bvc2FibGUsXG4gIEFzeW5jRXZlbnRzLFxuICBBc3luY0V2ZW50c0Jhc2UsXG4gIG1peGluQXN5bmNFdmVudHMsXG4gIHN1YnNjcmliZUFzeW5jRGlzcG9zYWJsZUV2ZW50XG59IGZyb20gJy4vYXN5bmMtZXZlbnRzLnRzJztcbmV4cG9ydCB7XG4gIGFkZEVycm9ySGFuZGxlcixcbiAgYXN5bmNGaWx0ZXIsXG4gIGFzeW5jRmlsdGVySW5QbGFjZSxcbiAgYXN5bmNGbGF0TWFwLFxuICBhc3luY01hcCxcbiAgY2hhaW4sXG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgY29udmVydFN5bmNUb0FzeW5jLFxuICBkaXNhYmxlQXN5bmNPcGVyYXRpb25UcmFja2luZyxcbiAgZW5hYmxlQXN5bmNPcGVyYXRpb25UcmFja2luZyxcbiAgaGFuZGxlU2lsZW50RXJyb3IsXG4gIGlnbm9yZUVycm9yLFxuICBpbnZva2VBc3luY1NhZmVseSxcbiAgaW52b2tlQXN5bmNTYWZlbHlBZnRlckRlbGF5LFxuICBpc0FzeW5jT3BlcmF0aW9uVHJhY2tpbmdFbmFibGVkLFxuICBtYXJrc0FzVGVybWluYXRlUmV0cnksXG4gIG5ldmVyRW5kcyxcbiAgbmV4dFRpY2tBc3luYyxcbiAgbm9ybWFsaXplUHJvbWlzYWJsZSxcbiAgcHJvbWlzZUFsbEFzeW5jRm5zU2VxdWVudGlhbGx5LFxuICBwcm9taXNlQWxsU2VxdWVudGlhbGx5LFxuICBxdWV1ZU1pY3JvdGFza0FzeW5jLFxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVBc3luYyxcbiAgcmV0cnlXaXRoVGltZW91dCxcbiAgcnVuV2l0aFRpbWVvdXQsXG4gIHNldEltbWVkaWF0ZUFzeW5jLFxuICBzZXRUaW1lb3V0QXN5bmMsXG4gIHNsZWVwLFxuICB0aW1lb3V0LFxuICB0b0FycmF5LFxuICB3YWl0Rm9yQWxsQXN5bmNPcGVyYXRpb25zXG59IGZyb20gJy4vYXN5bmMudHMnO1xuZXhwb3J0IHsgQmVlcGVyIH0gZnJvbSAnLi9iZWVwZXIudHMnO1xuZXhwb3J0IHtcbiAgYmxvYlRvQXJyYXlCdWZmZXIsXG4gIGJsb2JUb0RhdGFVcmwsXG4gIGJsb2JUb0pwZWdBcnJheUJ1ZmZlcixcbiAgZGF0YVVybFRvQXJyYXlCdWZmZXIsXG4gIGlzSW1hZ2VGaWxlXG59IGZyb20gJy4vYmxvYi50cyc7XG5leHBvcnQge1xuICBlbmFibGVMaWJyYXJ5RGVidWdnZXJzLFxuICBnZXREZWJ1Z0NvbnRyb2xsZXIsXG4gIGdldERlYnVnZ2VyLFxuICBnZXRMaWJEZWJ1Z2dlcixcbiAgcHJpbnRXaXRoU3RhY2tUcmFjZSxcbiAgc2hvd0luaXRpYWxEZWJ1Z01lc3NhZ2Vcbn0gZnJvbSAnLi9kZWJ1Zy50cyc7XG5leHBvcnQge1xuICBBc3luY0NhbGxiYWNrRGlzcG9zYWJsZSxcbiAgQXN5bmNEaXNwb3NhYmxlQmFzZSxcbiAgQ2FsbGJhY2tEaXNwb3NhYmxlLFxuICBDb21iaW5lQXN5bmNEaXNwb3NhYmxlLFxuICBDb21iaW5lRGlzcG9zYWJsZSxcbiAgRGlzcG9zYWJsZUJhc2UsXG4gIGRpc3Bvc2UsXG4gIGRpc3Bvc2VBc3luYyxcbiAgRGlzcG9zZUVycm9yQmVoYXZpb3IsXG4gIERpc3Bvc2VPcmRlcixcbiAgaXNBc3luY0Rpc3Bvc2FibGUsXG4gIGlzQXN5bmNEaXNwb3NhYmxlRXgsXG4gIGlzRGlzcG9zYWJsZSxcbiAgaXNEaXNwb3NhYmxlRXgsXG4gIE11bHRpcGxlRGlzcG9zZUJlaGF2aW9yLFxuICB0b0FzeW5jRGlzcG9zYWJsZUV4LFxuICB0b0Rpc3Bvc2FibGVFeFxufSBmcm9tICcuL2Rpc3Bvc2FibGUudHMnO1xuZXhwb3J0IHtcbiAgZ2V0RW51bUtleSxcbiAgZ2V0RW51bVZhbHVlXG59IGZyb20gJy4vZW51bS50cyc7XG5leHBvcnQge1xuICBBU1lOQ19XUkFQUEVSX0VSUk9SX01FU1NBR0UsXG4gIEN1c3RvbVN0YWNrVHJhY2VFcnJvcixcbiAgZW1pdEFzeW5jRXJyb3JFdmVudCxcbiAgZXJyb3JUb1N0cmluZyxcbiAgRXJyb3JXcmFwcGVyLFxuICBnZXRTdGFja1RyYWNlLFxuICBpc0FzeW5jRXJyb3JJZ25vcmVDb250ZXh0QWN0aXZlLFxuICBwcmludEVycm9yLFxuICByZWdpc3RlckFzeW5jRXJyb3JFdmVudEhhbmRsZXIsXG4gIFNpbGVudEVycm9yLFxuICBzdGFydEFzeW5jRXJyb3JJZ25vcmVDb250ZXh0LFxuICBzdGFydENvbGxlY3RpbmdVbmhhbmRsZWRBc3luY0Vycm9ycyxcbiAgc3RvcENvbGxlY3RpbmdVbmhhbmRsZWRBc3luY0Vycm9ycyxcbiAgdGhyb3dFeHByZXNzaW9uXG59IGZyb20gJy4vZXJyb3IudHMnO1xuZXhwb3J0IHtcbiAgY2xvbmVGdW5jdGlvbixcbiAgY3JlYXRlRnVuY3Rpb24sXG4gIGdldEZ1bmN0aW9uRXhwcmVzc2lvblN0cmluZyxcbiAgbm9vcCxcbiAgbm9vcEFzeW5jLFxuICBub29wQXN5bmNTaW5nbGV0b25Qcm9taXNlLFxuICBvbWl0QXN5bmNSZXR1cm5UeXBlLFxuICBvbWl0UmV0dXJuVHlwZVxufSBmcm9tICcuL2Z1bmN0aW9uLnRzJztcbmV4cG9ydCB7XG4gIExJQlJBUllfU1RZTEVTLFxuICBMSUJSQVJZX1ZFUlNJT05cbn0gZnJvbSAnLi9nZW5lcmF0ZWQtZHVyaW5nLWJ1aWxkLnRzJztcbmV4cG9ydCB7XG4gIGNyZWF0ZURpdkFzeW5jLFxuICBjcmVhdGVFbEFzeW5jLFxuICBjcmVhdGVGcmFnbWVudEFzeW5jLFxuICBjcmVhdGVTcGFuQXN5bmMsXG4gIGNyZWF0ZVN2Z0FzeW5jLFxuICBlbnN1cmVMb2FkZWQsXG4gIGdldERvY3VtZW50V2luZG93LFxuICBnZXRaSW5kZXgsXG4gIGlzRWxlbWVudFZpc2libGVJbk9mZnNldFBhcmVudCxcbiAgaXNMb2FkZWQsXG4gIG9uQW5jZXN0b3JTY3JvbGxPclJlc2l6ZSxcbiAgdG9QeCxcbiAgd2FpdFVudGlsQ29ubmVjdGVkXG59IGZyb20gJy4vaHRtbC1lbGVtZW50LnRzJztcbmV4cG9ydCB7XG4gIExpYnJhcnksXG4gIExJQlJBUllfTkFNRVxufSBmcm9tICcuL2xpYnJhcnkudHMnO1xuZXhwb3J0IHtcbiAgYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzLFxuICBjYXN0VG8sXG4gIGNsb25lV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzLFxuICBkZWxldGVQcm9wZXJ0aWVzLFxuICBkZWxldGVQcm9wZXJ0eSxcbiAgZXh0cmFjdERlZmF1bHRFeHBvcnRJbnRlcm9wLFxuICBGdW5jdGlvbkhhbmRsaW5nTW9kZSxcbiAgZ2V0QWxsRW50cmllcyxcbiAgZ2V0QWxsS2V5cyxcbiAgZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZSxcbiAgZ2V0UHJvdG90eXBlT2YsXG4gIGlzRGVlcEVxdWFsLFxuICBuYW1lb2YsXG4gIG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllcyxcbiAgcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyxcbiAgc2V0TmVzdGVkUHJvcGVydHlWYWx1ZSxcbiAgdG9Kc29uXG59IGZyb20gJy4vb2JqZWN0LXV0aWxzLnRzJztcbmV4cG9ydCB7XG4gIGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSxcbiAgcmVzZXRPYnNpZGlhbkRldlV0aWxzU3RhdGVcbn0gZnJvbSAnLi9vYnNpZGlhbi1kZXYtdXRpbHMtc3RhdGUudHMnO1xuZXhwb3J0IHsgQXBwQWN0aXZlRmlsZVByb3ZpZGVyIH0gZnJvbSAnLi9vYnNpZGlhbi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5leHBvcnQgeyBnZXRBcHAgfSBmcm9tICcuL29ic2lkaWFuL2FwcC50cyc7XG5leHBvcnQge1xuICByZXRyeVdpdGhUaW1lb3V0Tm90aWNlLFxuICBydW5XaXRoVGltZW91dE5vdGljZVxufSBmcm9tICcuL29ic2lkaWFuL2FzeW5jLXdpdGgtbm90aWNlLnRzJztcbmV4cG9ydCB7XG4gIEF0dGFjaG1lbnRQYXRoQ29udGV4dCxcbiAgRFVNTVlfUEFUSCxcbiAgZ2V0QXR0YWNobWVudEZpbGVQYXRoLFxuICBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCxcbiAgZ2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsLFxuICBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMsXG4gIGhhc093bkF0dGFjaG1lbnRGb2xkZXIsXG4gIGlzQXRQcm9wZXJBdHRhY2htZW50UGF0aFxufSBmcm9tICcuL29ic2lkaWFuL2F0dGFjaG1lbnQtcGF0aC50cyc7XG5leHBvcnQge1xuICByZW5kZXJCYWNrbGlua3NUYWJsZSxcbiAgcmVuZGVyRGVsYXllZEJhY2tsaW5rcyxcbiAgcmVuZGVyRGVsYXllZEJhY2tsaW5rc0ZvckZvbGRlclxufSBmcm9tICcuL29ic2lkaWFuL2JhY2tsaW5rLnRzJztcbmV4cG9ydCB7IFBsdWdpbkJhc2VzVmlld1JlZ2lzdHJhciB9IGZyb20gJy4vb2JzaWRpYW4vYmFzZXMtdmlldy1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgQ2FsbG91dE1vZGUsXG4gIHJlbmRlckNhbGxvdXQsXG4gIHdyYXBGb3JDYWxsb3V0XG59IGZyb20gJy4vb2JzaWRpYW4vY2FsbG91dC50cyc7XG5leHBvcnQgeyBnZXRDYW52YXNSZWZlcmVuY2VzIH0gZnJvbSAnLi9vYnNpZGlhbi9jYW52YXMudHMnO1xuZXhwb3J0IHtcbiAgQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4LFxuICBnZXRDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgsXG4gIHNldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCxcbiAgdW5zZXRDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXhcbn0gZnJvbSAnLi9vYnNpZGlhbi9jYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgudHMnO1xuZXhwb3J0IHsgY3JlYXRlQ29kZUJsb2NrUmVnRXhwIH0gZnJvbSAnLi9vYnNpZGlhbi9jb2RlLWJsb2NrLXJlZy1leHAudHMnO1xuZXhwb3J0IHsgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvYWJzdHJhY3QtZmlsZS1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgQ29tbWFuZEhhbmRsZXJDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvY29tbWFuZC1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vb2JzaWRpYW4vY29tbWFuZC1oYW5kbGVycy9jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgRWRpdG9yQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvZWRpdG9yLWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBGaWxlQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvZmlsZS1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgRm9sZGVyQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvZm9sZGVyLWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBHbG9iYWxDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vb2JzaWRpYW4vY29tbWFuZC1oYW5kbGVycy9nbG9iYWwtY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IE9wZW5EZW1vVmF1bHRDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vb2JzaWRpYW4vY29tbWFuZC1oYW5kbGVycy9vcGVuLWRlbW8tdmF1bHQtY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IE9wZW5TZXR0aW5nc0NvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9vYnNpZGlhbi9jb21tYW5kLWhhbmRsZXJzL29wZW4tc2V0dGluZ3MtY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IFVubG9ja0FjdGl2ZU5vdGVDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vb2JzaWRpYW4vY29tbWFuZC1oYW5kbGVycy91bmxvY2stYWN0aXZlLW5vdGUtY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IFBsdWdpbkNvbW1hbmRSZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7XG4gIGNvbmZpZ3VyZUNvbW11bml0eVBsdWdpbixcbiAgQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LFxuICBkaXNhYmxlQ29tbXVuaXR5UGx1Z2luLFxuICBlbmFibGVDb21tdW5pdHlQbHVnaW4sXG4gIGdldENvbW11bml0eVBsdWdpblJlcG8sXG4gIGdldExhdGVzdFJlbGVhc2VWZXJzaW9uLFxuICBpbnN0YWxsQ29tbXVuaXR5UGx1Z2luLFxuICBpbnN0YWxsQ29uZmlndXJlRW5hYmxlQ29tbXVuaXR5UGx1Z2luLFxuICBzZWFyY2hDb21tdW5pdHlQbHVnaW5zLFxuICB0b2dnbGVFbmFibGVDb21tdW5pdHlQbHVnaW4sXG4gIHRvZ2dsZUluc3RhbGxDb21tdW5pdHlQbHVnaW4sXG4gIHVuaW5zdGFsbENvbW11bml0eVBsdWdpblxufSBmcm9tICcuL29ic2lkaWFuL2NvbW11bml0eS1wbHVnaW5zLnRzJztcbmV4cG9ydCB7IEFib3J0U2lnbmFsQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL2Fib3J0LXNpZ25hbC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL2FsbC13aW5kb3dzLWV2ZW50LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBBc3luY0Vycm9ySGFuZGxlckNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9hc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyByZWdpc3RlckFzeW5jRXZlbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvYXN5bmMtZXZlbnRzLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXhDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvY2FzZS1pbnNlbnNpdGl2ZS1maWxlLWluZGV4LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9jb21wb25lbnQtZXgudHMnO1xuZXhwb3J0IHsgQ29uc29sZURlYnVnQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL2NvbnNvbGUtZGVidWctY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGFzRGlzcG9zYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9kaXNwb3NhYmxlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBFbWJlZEV4dGVuc2lvbnNDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvZW1iZWQtZXh0ZW5zaW9ucy1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgR2VuZXJhdGVNYXJrZG93bkxpbmtEZWZhdWx0UGFyYW1zQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL2dlbmVyYXRlLW1hcmtkb3duLWxpbmstZGVmYXVsdC1wYXJhbXMtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIENhbGxiYWNrTGF5b3V0UmVhZHlDb21wb25lbnQsXG4gIExheW91dFJlYWR5Q29tcG9uZW50XG59IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9sYXlvdXQtcmVhZHktY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE1lbnVFdmVudFJlZ2lzdHJhckNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHtcbiAgYXJvdW5kLFxuICBoYXNQYXRjaFRva2VuLFxuICBNb25rZXlBcm91bmRDb21wb25lbnRcbn0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE5vdGVib29rTmF2aWdhdG9yTWVudUV2ZW50UmVnaXN0cmFyQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL25vdGVib29rLW5hdmlnYXRvci1tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUGx1Z2luQ29udGV4dENvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9wbHVnaW4tY29udGV4dC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHtcbiAgUGx1Z2luTm90aWNlQ29tcG9uZW50LFxuICBQbHVnaW5Ob3RpY2VNb2RlXG59IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvcGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBQbHVnaW5TZXR0aW5nc1RhYkNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9wbHVnaW4tc2V0dGluZ3MtdGFiLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBQb2ludGVyUG9zaXRpb25Db21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvcG9pbnRlci1wb3NpdGlvbi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUmVnaXN0cnlDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvcmVnaXN0cnktY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIEVtcHR5Rm9sZGVyQmVoYXZpb3IsXG4gIFJlbmFtZURlbGV0ZUhhbmRsZXJDb21wb25lbnRcbn0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL3JlbmFtZS1kZWxldGUtaGFuZGxlci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgU3ludGF4SGlnaGxpZ2h0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL3N5bnRheC1oaWdobGlnaHRpbmctY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGdldERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IgfSBmcm9tICcuL29ic2lkaWFuL2NvbnN0cnVjdG9ycy9nZXQtZG9tLWV2ZW50cy1oYW5kbGVycy1jb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4vb2JzaWRpYW4vY3NzLWNsYXNzLnRzJztcbmV4cG9ydCB7IFBsdWdpbkRhdGFIYW5kbGVyIH0gZnJvbSAnLi9vYnNpZGlhbi9kYXRhLWhhbmRsZXIudHMnO1xuZXhwb3J0IHtcbiAgZml4VGl0bGUsXG4gIG1ha2VMaW5rV2l0aFBhdGhcbn0gZnJvbSAnLi9vYnNpZGlhbi9kYXRhdmlldy1saW5rLnRzJztcbmV4cG9ydCB7XG4gIGdldFJlbmRlcmVkQ29udGFpbmVyLFxuICBpbnNlcnRDb2RlQmxvY2ssXG4gIHJlbG9hZEN1cnJlbnRGaWxlQ2FjaGUsXG4gIHJlbmRlcklmcmFtZSxcbiAgcmVuZGVyUGFnaW5hdGVkTGlzdCxcbiAgcmVuZGVyUGFnaW5hdGVkVGFibGVcbn0gZnJvbSAnLi9vYnNpZGlhbi9kYXRhdmlldy50cyc7XG5leHBvcnQgeyBib290c3RyYXBEZW1vVmF1bHQgfSBmcm9tICcuL29ic2lkaWFuL2RlbW8tdmF1bHQtaGVscGVyLnRzJztcbmV4cG9ydCB7IG9wZW5EZW1vVmF1bHQgfSBmcm9tICcuL29ic2lkaWFuL2Rlc2t0b3AtZGVtby12YXVsdC1vcGVuZXIudHMnO1xuZXhwb3J0IHtcbiAgaG92ZXJFbGVtZW50LFxuICBtb3ZlTW91c2UsXG4gIHByZXNzS2V5LFxuICB0eXBlSW50b0VkaXRvcixcbiAgdW5ob3ZlckVsZW1lbnRcbn0gZnJvbSAnLi9vYnNpZGlhbi9kZXNrdG9wLXRydXN0ZWQtaW5wdXQudHMnO1xuZXhwb3J0IHsgUGx1Z2luRWRpdG9yRXh0ZW5zaW9uUmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi9lZGl0b3ItZXh0ZW5zaW9uLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgeyBQbHVnaW5FZGl0b3JTdWdnZXN0UmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi9lZGl0b3Itc3VnZ2VzdC1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgc3luY09wZW5FZGl0b3JCdWZmZXJzRm9yUGF0aCxcbiAgdG9nZ2xlRWRpdG9yUmVhZE9ubHlcbn0gZnJvbSAnLi9vYnNpZGlhbi9lZGl0b3IudHMnO1xuZXhwb3J0IHtcbiAgRXZlbnRSZWZEaXNwb3NhYmxlLFxuICBzdWJzY3JpYmVEaXNwb3NhYmxlRXZlbnQsXG4gIHN1YnNjcmliZUV2ZW50XG59IGZyb20gJy4vb2JzaWRpYW4vZXZlbnRzLnRzJztcbmV4cG9ydCB7IFBsdWdpbkV4dGVuc2lvbnNSZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL2V4dGVuc2lvbnMtcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7XG4gIGFwcGx5Q29udGVudENoYW5nZXMsXG4gIGFwcGx5RmlsZUNoYW5nZXMsXG4gIGlzQ2FudmFzQ2hhbmdlLFxuICBpc0NhbnZhc0ZpbGVOb2RlQ2hhbmdlLFxuICBpc0NhbnZhc1RleHROb2RlQ2hhbmdlLFxuICBpc0NvbnRlbnRDaGFuZ2UsXG4gIGlzRnJvbnRtYXR0ZXJDaGFuZ2UsXG4gIGlzRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0cyxcbiAgdG9Gcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzXG59IGZyb20gJy4vb2JzaWRpYW4vZmlsZS1jaGFuZ2UudHMnO1xuZXhwb3J0IHtcbiAgYWRkQWxpYXMsXG4gIGRlbGV0ZUFsaWFzLFxuICBwcm9jZXNzRnJvbnRtYXR0ZXIsXG4gIHdhaXRGb3JQZW5kaW5nTGlua1VwZGF0ZXNcbn0gZnJvbSAnLi9vYnNpZGlhbi9maWxlLW1hbmFnZXIudHMnO1xuZXhwb3J0IHtcbiAgYXNBcnJheU9mRmlsZXMsXG4gIGFzQXJyYXlPZkZvbGRlcnMsXG4gIGFzRmlsZSxcbiAgYXNGaWxlT3JOdWxsLFxuICBhc0ZvbGRlcixcbiAgYXNGb2xkZXJPck51bGwsXG4gIEJBU0VfRklMRV9FWFRFTlNJT04sXG4gIENBTlZBU19GSUxFX0VYVEVOU0lPTixcbiAgY2hlY2tFeHRlbnNpb24sXG4gIGRvZXNFeGlzdCxcbiAgRmlsZVN5c3RlbVR5cGUsXG4gIGdldEFic3RyYWN0RmlsZSxcbiAgZ2V0QWJzdHJhY3RGaWxlT3JOdWxsLFxuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGaWxlU3lzdGVtVHlwZSxcbiAgZ2V0Rm9sZGVyLFxuICBnZXRGb2xkZXJPck51bGwsXG4gIGdldE1hcmtkb3duRmlsZXMsXG4gIGdldE9yQ3JlYXRlRmlsZSxcbiAgZ2V0T3JDcmVhdGVGb2xkZXIsXG4gIGdldFBhdGgsXG4gIGlzQWJzdHJhY3RGaWxlLFxuICBpc0Jhc2VGaWxlLFxuICBpc0NhbnZhc0ZpbGUsXG4gIGlzRmlsZSxcbiAgaXNGb2xkZXIsXG4gIGlzTWFya2Rvd25GaWxlLFxuICBpc05vdGUsXG4gIGlzVHJlYXRlZEFzQXR0YWNobWVudCxcbiAgTUFSS0RPV05fRklMRV9FWFRFTlNJT04sXG4gIHRyaW1NYXJrZG93bkV4dGVuc2lvblxufSBmcm9tICcuL29ic2lkaWFuL2ZpbGUtc3lzdGVtLnRzJztcbmV4cG9ydCB7XG4gIEZPTERFUl9OT1RFU19QTFVHSU5fSUQsXG4gIEZvbGRlck5vdGVMb2NhdGlvbixcbiAgcmVzb2x2ZUZvbGRlck5vdGUsXG4gIHJlc29sdmVGb2xkZXJOb3RlQ29uZmlnXG59IGZyb20gJy4vb2JzaWRpYW4vZm9sZGVyLW5vdGUudHMnO1xuZXhwb3J0IHtcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzLFxuICB0b0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHNcbn0gZnJvbSAnLi9vYnNpZGlhbi9mcm9udG1hdHRlci1saW5rLWNhY2hlLXdpdGgtb2Zmc2V0cy50cyc7XG5leHBvcnQge1xuICBwYXJzZUZyb250bWF0dGVyLFxuICBzZXRGcm9udG1hdHRlclxufSBmcm9tICcuL29ic2lkaWFuL2Zyb250bWF0dGVyLnRzJztcbmV4cG9ydCB7IFBsdWdpbkhvdmVyTGlua1NvdXJjZVJlZ2lzdHJhciB9IGZyb20gJy4vb2JzaWRpYW4vaG92ZXItbGluay1zb3VyY2UtcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7IGFwcGVuZENvZGVCbG9jayB9IGZyb20gJy4vb2JzaWRpYW4vaHRtbC1lbGVtZW50LnRzJztcbmV4cG9ydCB7XG4gIERFRkFVTFRfTlMsXG4gIGluaXRJMThOLFxuICB0XG59IGZyb20gJy4vb2JzaWRpYW4vaTE4bi9pMThuLnRzJztcbmV4cG9ydCB7IGVuIH0gZnJvbSAnLi9vYnNpZGlhbi9pMThuL2xvY2FsZXMvZW4udHMnO1xuZXhwb3J0IHtcbiAgREVGQVVMVF9MQU5HVUFHRSxcbiAgZGVmYXVsdFRyYW5zbGF0aW9uc01hcFxufSBmcm9tICcuL29ic2lkaWFuL2kxOG4vbG9jYWxlcy90cmFuc2xhdGlvbnMtbWFwLnRzJztcbmV4cG9ydCB7IGlzSW5PYnNpZGlhbiB9IGZyb20gJy4vb2JzaWRpYW4vaXMtaW4tb2JzaWRpYW4udHMnO1xuZXhwb3J0IHtcbiAgY29udmVydExpbmssXG4gIGVkaXRCYWNrbGlua3MsXG4gIGVkaXRMaW5rcyxcbiAgZWRpdExpbmtzSW5Db250ZW50LFxuICBleHRyYWN0TGlua0ZpbGUsXG4gIGZpeEZyb250bWF0dGVyTWFya2Rvd25MaW5rcyxcbiAgZ2VuZXJhdGVNYXJrZG93bkxpbmssXG4gIGdlbmVyYXRlUmF3TWFya2Rvd25MaW5rLFxuICBnZXRHZW5lcmF0ZU1hcmtkb3duTGlua0RlZmF1bHRQYXJhbXNGbnMsXG4gIGhhc0FuZ2xlQnJhY2tldHMsXG4gIGhhc0VtYmVkU3ludGF4LFxuICBoYXNMZWFkaW5nRG90LFxuICBoYXNMZWFkaW5nU2xhc2gsXG4gIGhhc1dpa2lsaW5rU3ludGF4LFxuICBMaW5rUGF0aFN0eWxlLFxuICBMaW5rU3R5bGUsXG4gIHNob3VsZFJlc2V0QWxpYXMsXG4gIHNwbGl0U3VicGF0aCxcbiAgdXBkYXRlRmlsZVVybExpbmtzSW5Db250ZW50LFxuICB1cGRhdGVGaWxlVXJsTGlua3NJbkZpbGUsXG4gIHVwZGF0ZUxpbmssXG4gIHVwZGF0ZUxpbmtzSW5Db250ZW50LFxuICB1cGRhdGVMaW5rc0luRmlsZVxufSBmcm9tICcuL29ic2lkaWFuL2xpbmsudHMnO1xuZXhwb3J0IHsgaW52b2tlQXN5bmNBbmRMb2cgfSBmcm9tICcuL29ic2lkaWFuL2xvZ2dlci50cyc7XG5leHBvcnQgeyBsb29wIH0gZnJvbSAnLi9vYnNpZGlhbi9sb29wLnRzJztcbmV4cG9ydCB7IFBsdWdpbk1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi9tYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3Nvci1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvLFxuICBpbnNlcnRBZnRlckNvZGVCbG9jayxcbiAgaW5zZXJ0QmVmb3JlQ29kZUJsb2NrLFxuICByZW1vdmVDb2RlQmxvY2ssXG4gIHJlcGxhY2VDb2RlQmxvY2tcbn0gZnJvbSAnLi9vYnNpZGlhbi9tYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3Nvci50cyc7XG5leHBvcnQgeyBQbHVnaW5NYXJrZG93blBvc3RQcm9jZXNzb3JSZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL21hcmtkb3duLXBvc3QtcHJvY2Vzc29yLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgeyBnZXRGdWxsQ29udGVudEh0bWwgfSBmcm9tICcuL29ic2lkaWFuL21hcmtkb3duLXZpZXcudHMnO1xuZXhwb3J0IHtcbiAgZnVsbFJlbmRlcixcbiAgbWFya2Rvd25Ub0h0bWwsXG4gIHJlZ2lzdGVyTGlua0hhbmRsZXJzLFxuICByZW5kZXJFeHRlcm5hbExpbmssXG4gIHJlbmRlckludGVybmFsTGlua1xufSBmcm9tICcuL29ic2lkaWFuL21hcmtkb3duLnRzJztcbmV4cG9ydCB7XG4gIENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLFxuICBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHksXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgsXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlLFxuICBnZXRDYWNoZVNhZmUsXG4gIGdldEZyb250bWF0dGVyU2FmZSxcbiAgZ2V0TGlua3MsXG4gIGlzQ2FjaGVkTWV0YWRhdGFFeCxcbiAgcGFyc2VNZXRhZGF0YSxcbiAgcmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGUsXG4gIHJlZ2lzdGVyRmlsZXMsXG4gIHVucmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGUsXG4gIHVucmVnaXN0ZXJGaWxlc1xufSBmcm9tICcuL29ic2lkaWFuL21ldGFkYXRhLWNhY2hlLnRzJztcbmV4cG9ydCB7IGFsZXJ0IH0gZnJvbSAnLi9vYnNpZGlhbi9tb2RhbHMvYWxlcnQudHMnO1xuZXhwb3J0IHsgY29uZmlybSB9IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL2NvbmZpcm0udHMnO1xuZXhwb3J0IHsgTWluaW1pemFibGVNb2RhbCB9IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL21pbmltaXphYmxlLW1vZGFsLnRzJztcbmV4cG9ydCB7XG4gIE1vZGFsQmFzZSxcbiAgc2hvd01vZGFsXG59IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL21vZGFsLnRzJztcbmV4cG9ydCB7IHByb21wdCB9IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL3Byb21wdC50cyc7XG5leHBvcnQgeyBzZWxlY3RJdGVtIH0gZnJvbSAnLi9vYnNpZGlhbi9tb2RhbHMvc2VsZWN0LWl0ZW0udHMnO1xuZXhwb3J0IHsgc2VsZWN0T3B0aW9uIH0gZnJvbSAnLi9vYnNpZGlhbi9tb2RhbHMvc2VsZWN0LW9wdGlvbi50cyc7XG5leHBvcnQgeyBTdWdnZXN0TW9kYWxDb21tYW5kQnVpbGRlciB9IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL3N1Z2dlc3QtbW9kYWwtY29tbWFuZC1idWlsZGVyLnRzJztcbmV4cG9ydCB7XG4gIE5PVEVCT09LX05BVklHQVRPUl9NRU5VX1NPVVJDRSxcbiAgTk9URUJPT0tfTkFWSUdBVE9SX1BMVUdJTl9JRCxcbiAgcmVzb2x2ZU5vdGVib29rTmF2aWdhdG9yQXBpXG59IGZyb20gJy4vb2JzaWRpYW4vbm90ZWJvb2stbmF2aWdhdG9yLnRzJztcbmV4cG9ydCB7IFBsdWdpbk9ic2lkaWFuUHJvdG9jb2xIYW5kbGVyUmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi9vYnNpZGlhbi1wcm90b2NvbC1oYW5kbGVyLXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBnZXROZXdMaW5rRm9ybWF0LFxuICBpc1NwZWxsY2hlY2tFbmFibGVkLFxuICBzaG91bGRVc2VXaWtpbGlua3Ncbn0gZnJvbSAnLi9vYnNpZGlhbi9vYnNpZGlhbi1zZXR0aW5ncy50cyc7XG5leHBvcnQge1xuICBlbmNvZGVVcmwsXG4gIGVzY2FwZUFsaWFzLFxuICBpc1BhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlLFxuICBpc1BhcnNlTGlua1JlZmVyZW5jZSxcbiAgcGFyc2VGcm9udG1hdHRlckxpbmtzLFxuICBwYXJzZUxpbmssXG4gIHBhcnNlTGlua3MsXG4gIHRvUGFyc2VMaW5rUmVmZXJlbmNlLFxuICB1bmVzY2FwZUFsaWFzXG59IGZyb20gJy4vb2JzaWRpYW4vcGFyc2UtbGluay50cyc7XG5leHBvcnQge1xuICBQYXRoU2V0dGluZ3MsXG4gIHBhdGhzVmFsaWRhdG9yXG59IGZyb20gJy4vb2JzaWRpYW4vcGF0aC1zZXR0aW5ncy50cyc7XG5leHBvcnQgeyBwcmludFRvUGRmIH0gZnJvbSAnLi9vYnNpZGlhbi9wZGYudHMnO1xuZXhwb3J0IHsgUGx1Z2luQ2xpSGFuZGxlclJlZ2lzdHJhciB9IGZyb20gJy4vb2JzaWRpYW4vcGx1Z2luLWNsaS1oYW5kbGVyLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4vb2JzaWRpYW4vcGx1Z2luL29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzLnRzJztcbmV4cG9ydCB7XG4gIGFkZFBsdWdpbkNzc0NsYXNzZXMsXG4gIGluaXREZWJ1Z0NvbnRyb2xsZXIsXG4gIGluaXRQbHVnaW5Db250ZXh0XG59IGZyb20gJy4vb2JzaWRpYW4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcbmV4cG9ydCB7IFBsdWdpbkV2ZW50U291cmNlSW1wbCB9IGZyb20gJy4vb2JzaWRpYW4vcGx1Z2luL3BsdWdpbi1ldmVudC1zb3VyY2UudHMnO1xuZXhwb3J0IHtcbiAgUGx1Z2luU2V0dGluZ3NUYWJCYXNlLFxuICBTQVZFX1RPX0ZJTEVfQ09OVEVYVFxufSBmcm9tICcuL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4tc2V0dGluZ3MtdGFiLnRzJztcbmV4cG9ydCB7XG4gIFBsdWdpbkJhc2UsXG4gIHJlbG9hZFBsdWdpbixcbiAgc2hvd0Vycm9yQW5kRGlzYWJsZVBsdWdpblxufSBmcm9tICcuL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4udHMnO1xuZXhwb3J0IHsgZWRpdEZpZWxkc0luUG9wb3ZlciB9IGZyb20gJy4vb2JzaWRpYW4vcG9wb3ZlcnMvZmllbGQtcG9wb3Zlci50cyc7XG5leHBvcnQge1xuICBjcmVhdGVBbmNob3JGcm9tRG9jdW1lbnRDZW50ZXIsXG4gIGNyZWF0ZUFuY2hvckZyb21FbGVtZW50LFxuICBjcmVhdGVBbmNob3JGcm9tUG9pbnQsXG4gIGNyZWF0ZUFuY2hvckZyb21TZWxlY3Rpb25cbn0gZnJvbSAnLi9vYnNpZGlhbi9wb3BvdmVycy9wb3BvdmVyLWFuY2hvci50cyc7XG5leHBvcnQgeyBzaG93UG9wb3ZlciB9IGZyb20gJy4vb2JzaWRpYW4vcG9wb3ZlcnMvcG9wb3Zlci50cyc7XG5leHBvcnQge1xuICBhZGRUb1F1ZXVlLFxuICBhZGRUb1F1ZXVlQW5kV2FpdCxcbiAgZmx1c2hRdWV1ZVxufSBmcm9tICcuL29ic2lkaWFuL3F1ZXVlLnRzJztcbmV4cG9ydCB7XG4gIEFwcENvbnRleHQsXG4gIHVzZUFwcFxufSBmcm9tICcuL29ic2lkaWFuL3JlYWN0L2FwcC1jb250ZXh0LnRzJztcbmV4cG9ydCB7XG4gIGlzQ2FudmFzRmlsZU5vZGVSZWZlcmVuY2UsXG4gIGlzQ2FudmFzUmVmZXJlbmNlLFxuICBpc0NhbnZhc1RleHROb2RlUmVmZXJlbmNlLFxuICByZWZlcmVuY2VUb0ZpbGVDaGFuZ2UsXG4gIHNvcnRSZWZlcmVuY2VzXG59IGZyb20gJy4vb2JzaWRpYW4vcmVmZXJlbmNlLnRzJztcbmV4cG9ydCB7XG4gIGlzUmVzb3VyY2VMb2NrZWRGb3JQYXRoLFxuICBpc1Jlc291cmNlTG9ja2VkRm9yUGF0aEJ5QW5jZXN0b3IsXG4gIGxvY2tSZXNvdXJjZUZvclBhdGgsXG4gIHJlcXVlc3RSZXNvdXJjZVVubG9ja0ZvclBhdGgsXG4gIFJlc291cmNlTG9ja0NvbXBvbmVudCxcbiAgUmVzb3VyY2VMb2NrZWRFcnJvcixcbiAgdW5sb2NrUmVzb3VyY2VGb3JQYXRoXG59IGZyb20gJy4vb2JzaWRpYW4vcmVzb3VyY2UtbG9jay50cyc7XG5leHBvcnQgeyByZWxhdGl2ZVBhdGhUb1Jlc291cmNlVXJsIH0gZnJvbSAnLi9vYnNpZGlhbi9yZXNvdXJjZS11cmwudHMnO1xuZXhwb3J0IHsgUGx1Z2luUmliYm9uSWNvblJlZ2lzdHJhciB9IGZyb20gJy4vb2JzaWRpYW4vcmliYm9uLWljb24tcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvY2hlY2tib3gtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IENvZGVIaWdobGlnaHRlckNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL2NvZGUtaGlnaGxpZ2h0ZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IERhdGVDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9kYXRlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBEYXRlVGltZUNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL2RhdGUtdGltZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgRW1haWxDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9lbWFpbC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgRmlsZUNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL2ZpbGUtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE1vbnRoQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvbW9udGgtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS1kcm9wZG93bi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgTXVsdGlwbGVFbWFpbENvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL211bHRpcGxlLWVtYWlsLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBNdWx0aXBsZUZpbGVDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS1maWxlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBNdWx0aXBsZVRleHRDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9udW1iZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvcGFzc3dvcmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGVuc3VyZVdyYXBwZWQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9zZXR0aW5nLWNvbXBvbmVudC13cmFwcGVyLnRzJztcbmV4cG9ydCB7IFRlbGVwaG9uZUNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3RlbGVwaG9uZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgZ2V0VGV4dEJhc2VkQ29tcG9uZW50VmFsdWUgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy90ZXh0LWJhc2VkLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBUaW1lQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvdGltZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHJpU3RhdGVDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3RyaS1zdGF0ZS1jaGVja2JveC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHlwZWREcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3R5cGVkLWRyb3Bkb3duLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBUeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC1tdWx0aXBsZS1kcm9wZG93bi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHlwZWRSYW5nZVRleHRDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC1yYW5nZS10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBUeXBlZFRleHRDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBVcmxDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy91cmwtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGdldFZhbGlkYXRvckNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3ZhbGlkYXRvci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgV2Vla0NvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3dlZWstY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIGFkb3B0U2V0dGluZ0V4LFxuICBTZXR0aW5nRXhcbn0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWV4LnRzJztcbmV4cG9ydCB7IFNldHRpbmdHcm91cEV4IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWdyb3VwLWV4LnRzJztcbmV4cG9ydCB7IFBsdWdpblN0YXR1c0Jhckl0ZW1SZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL3N0YXR1cy1iYXItaXRlbS1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgZ2V0T3NBbmRPYnNpZGlhblVuc2FmZVBhdGhDaGFyc1JlZ0V4cCxcbiAgZ2V0T3NVbnNhZmVQYXRoQ2hhcnNSZWdFeHAsXG4gIGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIsXG4gIE9CU0lESUFOX1VOU0FGRV9GSUxFTkFNRV9DSEFSUyxcbiAgVU5JWF9VTlNBRkVfUEFUSF9DSEFSUyxcbiAgV0lORE9XU19VTlNBRkVfUEFUSF9DSEFSU1xufSBmcm9tICcuL29ic2lkaWFuL3ZhbGlkYXRpb24udHMnO1xuZXhwb3J0IHtcbiAgZGVsZXRlSWZOb3RVc2VkLFxuICBEZWxldGVJZk5vdFVzZWRSZXN1bHRcbn0gZnJvbSAnLi9vYnNpZGlhbi92YXVsdC1kZWxldGUudHMnO1xuZXhwb3J0IHsgVmF1bHRUcmFuc2FjdGlvbiB9IGZyb20gJy4vb2JzaWRpYW4vdmF1bHQtdHJhbnNhY3Rpb24udHMnO1xuZXhwb3J0IHtcbiAgY2xlYW51cEVtcHR5Rm9sZGVycyxcbiAgY29weVNhZmUsXG4gIGNyZWF0ZUZvbGRlclNhZmUsXG4gIENyZWF0ZUZvbGRlclNhZmVSZXN1bHQsXG4gIGNyZWF0ZVRlbXBvcmFyeUZpbGUsXG4gIGNyZWF0ZVRlbXBvcmFyeUZvbGRlcixcbiAgZGVsZXRlRW1wdHlGb2xkZXIsXG4gIGRlbGV0ZUVtcHR5Rm9sZGVySGllcmFyY2h5LFxuICBnZXRBYnN0cmFjdEZpbGVQYXRoU2FmZSxcbiAgZ2V0QXZhaWxhYmxlUGF0aCxcbiAgZ2V0RmlsZVBhdGhTYWZlLFxuICBnZXRGb2xkZXJQYXRoU2FmZSxcbiAgZ2V0TWFya2Rvd25GaWxlc1NvcnRlZCxcbiAgZ2V0Tm90ZUZpbGVzU29ydGVkLFxuICBnZXRPckNyZWF0ZUFic3RyYWN0RmlsZVNhZmUsXG4gIGdldE9yQ3JlYXRlRmlsZVNhZmUsXG4gIGdldE9yQ3JlYXRlRm9sZGVyU2FmZSxcbiAgZ2V0U2FmZVJlbmFtZVBhdGgsXG4gIEludm9rZUZpbGVBY3Rpb25TYWZlUmVzdWx0LFxuICBpbnZva2VXaXRoRmlsZVN5c3RlbUxvY2ssXG4gIGlzQ2hpbGQsXG4gIGlzQ2hpbGRPclNlbGYsXG4gIGlzRW1wdHlGb2xkZXIsXG4gIGxpc3RTYWZlLFxuICBwcm9jZXNzLFxuICByZWFkU2FmZSxcbiAgcmVuYW1lU2FmZSxcbiAgc2F2ZU5vdGUsXG4gIHRyYXNoU2FmZVxufSBmcm9tICcuL29ic2lkaWFuL3ZhdWx0LnRzJztcbmV4cG9ydCB7IFBsdWdpblZpZXdSZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL3ZpZXctcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7XG4gIGVuc3VyZUxheW91dFJlYWR5LFxuICBnZXRBbGxDb250YWluZXJzLFxuICBnZXRBbGxEb21XaW5kb3dzLFxuICBnZXRNYWluV2luZG93LFxuICBzd2l0Y2hUb01haW5XaW5kb3csXG4gIHN3aXRjaFRvV2luZG93XG59IGZyb20gJy4vb2JzaWRpYW4vd29ya3NwYWNlLnRzJztcbmV4cG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkZWxpbWl0ZXIsXG4gIGRpcm5hbWUsXG4gIGV4dG5hbWUsXG4gIGZvcm1hdCxcbiAgZ2V0RmlsZU5hbWUsXG4gIGdldEZvbGRlck5hbWUsXG4gIGlzQWJzb2x1dGUsXG4gIGpvaW4sXG4gIG1ha2VGaWxlTmFtZSxcbiAgbm9ybWFsaXplSWZSZWxhdGl2ZSxcbiAgbm9ybWFsaXplUGF0aCxcbiAgcGFyc2UsXG4gIHBvc2l4LFxuICByZWxhdGl2ZSxcbiAgcmVzb2x2ZSxcbiAgc2VwYXJhdG9yLFxuICB0b1Bvc2l4QnVmZmVyLFxuICB0b1Bvc2l4UGF0aFxufSBmcm9tICcuL3BhdGgudHMnO1xuZXhwb3J0IHtcbiAgQUxXQVlTX01BVENIX1JFR19FWFAsXG4gIGVzY2FwZVJlZ0V4cCxcbiAgZ2V0TWFuZGF0b3J5TmFtZWRHcm91cCxcbiAgZ2V0T3B0aW9uYWxOYW1lZEdyb3VwLFxuICBpc1ZhbGlkUmVnRXhwLFxuICBORVZFUl9NQVRDSF9SRUdfRVhQLFxuICBvbmVPZixcbiAgUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3lcbn0gZnJvbSAnLi9yZWctZXhwLnRzJztcbmV4cG9ydCB7XG4gIGJ5cGFzc1N0cmljdFByb3h5LFxuICBzdHJpY3RQcm94eVxufSBmcm9tICcuL3N0cmljdC1wcm94eS50cyc7XG5leHBvcnQge1xuICBFTVBUWSxcbiAgZW5zdXJlRW5kc1dpdGgsXG4gIGVuc3VyZUxmRW5kaW5ncyxcbiAgZW5zdXJlU3RhcnRzV2l0aCxcbiAgZXNjYXBlLFxuICBnZXRMZk5vcm1hbGl6ZWRPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwcGVyLFxuICBoYXNTaW5nbGVPY2N1cnJlbmNlLFxuICBpbmRlbnQsXG4gIGluc2VydEF0LFxuICBtYWtlVmFsaWRWYXJpYWJsZU5hbWUsXG4gIG5vcm1hbGl6ZVN0cmluZyxcbiAgcmVwbGFjZSxcbiAgcmVwbGFjZUFsbCxcbiAgcmVwbGFjZUFsbEFzeW5jLFxuICB0cmltRW5kLFxuICB0cmltU3RhcnQsXG4gIHVuZXNjYXBlLFxuICB1bmluZGVudFxufSBmcm9tICcuL3N0cmluZy50cyc7XG5leHBvcnQgeyBEYXRlVHJhbnNmb3JtZXIgfSBmcm9tICcuL3RyYW5zZm9ybWVycy9kYXRlLXRyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IER1cmF0aW9uVHJhbnNmb3JtZXIgfSBmcm9tICcuL3RyYW5zZm9ybWVycy9kdXJhdGlvbi10cmFuc2Zvcm1lci50cyc7XG5leHBvcnQgeyBHcm91cFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvZ3JvdXAtdHJhbnNmb3JtZXIudHMnO1xuZXhwb3J0IHsgTWFwVHJhbnNmb3JtZXIgfSBmcm9tICcuL3RyYW5zZm9ybWVycy9tYXAtdHJhbnNmb3JtZXIudHMnO1xuZXhwb3J0IHsgU2V0VHJhbnNmb3JtZXIgfSBmcm9tICcuL3RyYW5zZm9ybWVycy9zZXQtdHJhbnNmb3JtZXIudHMnO1xuZXhwb3J0IHsgU2tpcFByaXZhdGVQcm9wZXJ0eVRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvc2tpcC1wcml2YXRlLXByb3BlcnR5LXRyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvdHJhbnNmb3JtZXIudHMnO1xuZXhwb3J0IHsgVHdvV2F5TWFwVHJhbnNmb3JtZXIgfSBmcm9tICcuL3RyYW5zZm9ybWVycy90d28td2F5LW1hcC10cmFuc2Zvcm1lci50cyc7XG5leHBvcnQgeyBUeXBlZFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvdHlwZWQtdHJhbnNmb3JtZXIudHMnO1xuZXhwb3J0IHsgVHdvV2F5TWFwIH0gZnJvbSAnLi90d28td2F5LW1hcC50cyc7XG5leHBvcnQge1xuICBhc3NlcnQsXG4gIGFzc2VydEdlbmVyaWNPYmplY3QsXG4gIGFzc2VydE5ldmVyLFxuICBhc3NlcnROb25OdWxsYWJsZSxcbiAgZW5zdXJlR2VuZXJpY09iamVjdCxcbiAgZW5zdXJlTm9uTnVsbGFibGVcbn0gZnJvbSAnLi90eXBlLWd1YXJkcy50cyc7XG5leHBvcnQgeyBUeXBlQXNzZXJ0ZXIgfSBmcm9tICcuL3R5cGUudHMnO1xuZXhwb3J0IHtcbiAgaXNGaWxlVXJsLFxuICBpc1VybCxcbiAgbm9ybWFsaXplRmlsZVVybFxufSBmcm9tICcuL3VybC50cyc7XG5leHBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuL3ZhbHVlLXByb3ZpZGVyLnRzJztcbmV4cG9ydCB7IFZhbHVlV3JhcHBlciB9IGZyb20gJy4vdmFsdWUtd3JhcHBlci50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGNBQWM7QUFDdkI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFB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RUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUywwQkFBMEI7QUFDbkMsU0FBUyxxQkFBcUI7QUFDOUI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHNDQUFzQztBQUMvQyxTQUFTLG9DQUFvQztBQUM3QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsaUNBQWlDO0FBQzFDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxzQ0FBc0M7QUFD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
1282
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL19fbWVyZ2VkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0IHtcbiAgYWJvcnRTaWduYWxBbnksXG4gIGFib3J0U2lnbmFsTmV2ZXIsXG4gIGFib3J0U2lnbmFsVGltZW91dCxcbiAgSU5GSU5JVEVfVElNRU9VVCxcbiAgb25BYm9ydCxcbiAgd2FpdEZvckFib3J0XG59IGZyb20gJy4vYWJvcnQtY29udHJvbGxlci50cyc7XG5leHBvcnQge1xuICBmaWx0ZXJJblBsYWNlLFxuICBzbmFwc2hvdCxcbiAgdW5pcXVlLFxuICB1bmlxdWVJblBsYWNlXG59IGZyb20gJy4vYXJyYXkudHMnO1xuZXhwb3J0IHtcbiAgQXN5bmNFdmVudFJlZkRpc3Bvc2FibGUsXG4gIEFzeW5jRXZlbnRzLFxuICBBc3luY0V2ZW50c0Jhc2UsXG4gIG1peGluQXN5bmNFdmVudHMsXG4gIHN1YnNjcmliZUFzeW5jRGlzcG9zYWJsZUV2ZW50XG59IGZyb20gJy4vYXN5bmMtZXZlbnRzLnRzJztcbmV4cG9ydCB7XG4gIGFkZEVycm9ySGFuZGxlcixcbiAgYXN5bmNGaWx0ZXIsXG4gIGFzeW5jRmlsdGVySW5QbGFjZSxcbiAgYXN5bmNGbGF0TWFwLFxuICBhc3luY01hcCxcbiAgY2hhaW4sXG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgY29udmVydFN5bmNUb0FzeW5jLFxuICBkaXNhYmxlQXN5bmNPcGVyYXRpb25UcmFja2luZyxcbiAgZW5hYmxlQXN5bmNPcGVyYXRpb25UcmFja2luZyxcbiAgaGFuZGxlU2lsZW50RXJyb3IsXG4gIGlnbm9yZUVycm9yLFxuICBpbnZva2VBc3luY1NhZmVseSxcbiAgaW52b2tlQXN5bmNTYWZlbHlBZnRlckRlbGF5LFxuICBpc0FzeW5jT3BlcmF0aW9uVHJhY2tpbmdFbmFibGVkLFxuICBtYXJrc0FzVGVybWluYXRlUmV0cnksXG4gIG5ldmVyRW5kcyxcbiAgbmV4dFRpY2tBc3luYyxcbiAgbm9ybWFsaXplUHJvbWlzYWJsZSxcbiAgcHJvbWlzZUFsbEFzeW5jRm5zU2VxdWVudGlhbGx5LFxuICBwcm9taXNlQWxsU2VxdWVudGlhbGx5LFxuICBxdWV1ZU1pY3JvdGFza0FzeW5jLFxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVBc3luYyxcbiAgcmV0cnlXaXRoVGltZW91dCxcbiAgcnVuV2l0aFRpbWVvdXQsXG4gIHNldEltbWVkaWF0ZUFzeW5jLFxuICBzZXRUaW1lb3V0QXN5bmMsXG4gIHNsZWVwLFxuICB0aW1lb3V0LFxuICB0b0FycmF5LFxuICB3YWl0Rm9yQWxsQXN5bmNPcGVyYXRpb25zXG59IGZyb20gJy4vYXN5bmMudHMnO1xuZXhwb3J0IHsgQmVlcGVyIH0gZnJvbSAnLi9iZWVwZXIudHMnO1xuZXhwb3J0IHtcbiAgYmxvYlRvQXJyYXlCdWZmZXIsXG4gIGJsb2JUb0RhdGFVcmwsXG4gIGJsb2JUb0pwZWdBcnJheUJ1ZmZlcixcbiAgZGF0YVVybFRvQXJyYXlCdWZmZXIsXG4gIGlzSW1hZ2VGaWxlXG59IGZyb20gJy4vYmxvYi50cyc7XG5leHBvcnQge1xuICBlbmFibGVMaWJyYXJ5RGVidWdnZXJzLFxuICBnZXREZWJ1Z0NvbnRyb2xsZXIsXG4gIGdldERlYnVnZ2VyLFxuICBnZXRMaWJEZWJ1Z2dlcixcbiAgcHJpbnRXaXRoU3RhY2tUcmFjZSxcbiAgc2hvd0luaXRpYWxEZWJ1Z01lc3NhZ2Vcbn0gZnJvbSAnLi9kZWJ1Zy50cyc7XG5leHBvcnQge1xuICBBc3luY0NhbGxiYWNrRGlzcG9zYWJsZSxcbiAgQXN5bmNEaXNwb3NhYmxlQmFzZSxcbiAgQ2FsbGJhY2tEaXNwb3NhYmxlLFxuICBDb21iaW5lQXN5bmNEaXNwb3NhYmxlLFxuICBDb21iaW5lRGlzcG9zYWJsZSxcbiAgRGlzcG9zYWJsZUJhc2UsXG4gIGRpc3Bvc2UsXG4gIGRpc3Bvc2VBc3luYyxcbiAgRGlzcG9zZUVycm9yQmVoYXZpb3IsXG4gIERpc3Bvc2VPcmRlcixcbiAgaXNBc3luY0Rpc3Bvc2FibGUsXG4gIGlzQXN5bmNEaXNwb3NhYmxlRXgsXG4gIGlzRGlzcG9zYWJsZSxcbiAgaXNEaXNwb3NhYmxlRXgsXG4gIE11bHRpcGxlRGlzcG9zZUJlaGF2aW9yLFxuICB0b0FzeW5jRGlzcG9zYWJsZUV4LFxuICB0b0Rpc3Bvc2FibGVFeFxufSBmcm9tICcuL2Rpc3Bvc2FibGUudHMnO1xuZXhwb3J0IHtcbiAgZ2V0RW51bUtleSxcbiAgZ2V0RW51bVZhbHVlXG59IGZyb20gJy4vZW51bS50cyc7XG5leHBvcnQge1xuICBBU1lOQ19XUkFQUEVSX0VSUk9SX01FU1NBR0UsXG4gIEN1c3RvbVN0YWNrVHJhY2VFcnJvcixcbiAgZW1pdEFzeW5jRXJyb3JFdmVudCxcbiAgZXJyb3JUb1N0cmluZyxcbiAgRXJyb3JXcmFwcGVyLFxuICBnZXRTdGFja1RyYWNlLFxuICBpc0FzeW5jRXJyb3JJZ25vcmVDb250ZXh0QWN0aXZlLFxuICBwcmludEVycm9yLFxuICByZWdpc3RlckFzeW5jRXJyb3JFdmVudEhhbmRsZXIsXG4gIFNpbGVudEVycm9yLFxuICBzdGFydEFzeW5jRXJyb3JJZ25vcmVDb250ZXh0LFxuICBzdGFydENvbGxlY3RpbmdVbmhhbmRsZWRBc3luY0Vycm9ycyxcbiAgc3RvcENvbGxlY3RpbmdVbmhhbmRsZWRBc3luY0Vycm9ycyxcbiAgdGhyb3dFeHByZXNzaW9uXG59IGZyb20gJy4vZXJyb3IudHMnO1xuZXhwb3J0IHtcbiAgY2xvbmVGdW5jdGlvbixcbiAgY3JlYXRlRnVuY3Rpb24sXG4gIGdldEZ1bmN0aW9uRXhwcmVzc2lvblN0cmluZyxcbiAgbm9vcCxcbiAgbm9vcEFzeW5jLFxuICBub29wQXN5bmNTaW5nbGV0b25Qcm9taXNlLFxuICBvbWl0QXN5bmNSZXR1cm5UeXBlLFxuICBvbWl0UmV0dXJuVHlwZVxufSBmcm9tICcuL2Z1bmN0aW9uLnRzJztcbmV4cG9ydCB7XG4gIExJQlJBUllfU1RZTEVTLFxuICBMSUJSQVJZX1ZFUlNJT05cbn0gZnJvbSAnLi9nZW5lcmF0ZWQtZHVyaW5nLWJ1aWxkLnRzJztcbmV4cG9ydCB7XG4gIGNyZWF0ZURpdkFzeW5jLFxuICBjcmVhdGVFbEFzeW5jLFxuICBjcmVhdGVGcmFnbWVudEFzeW5jLFxuICBjcmVhdGVTcGFuQXN5bmMsXG4gIGNyZWF0ZVN2Z0FzeW5jLFxuICBlbnN1cmVMb2FkZWQsXG4gIGdldERvY3VtZW50V2luZG93LFxuICBnZXRaSW5kZXgsXG4gIGlzRWxlbWVudFZpc2libGVJbk9mZnNldFBhcmVudCxcbiAgaXNMb2FkZWQsXG4gIG9uQW5jZXN0b3JTY3JvbGxPclJlc2l6ZSxcbiAgdG9QeCxcbiAgd2FpdFVudGlsQ29ubmVjdGVkXG59IGZyb20gJy4vaHRtbC1lbGVtZW50LnRzJztcbmV4cG9ydCB7XG4gIGV4dHJhY3RKcGVnTWV0YWRhdGFTZWdtZW50cyxcbiAgaW5qZWN0SnBlZ01ldGFkYXRhU2VnbWVudHNcbn0gZnJvbSAnLi9qcGVnLW1ldGFkYXRhLnRzJztcbmV4cG9ydCB7XG4gIExpYnJhcnksXG4gIExJQlJBUllfTkFNRVxufSBmcm9tICcuL2xpYnJhcnkudHMnO1xuZXhwb3J0IHtcbiAgYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzLFxuICBjYXN0VG8sXG4gIGNsb25lV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzLFxuICBkZWxldGVQcm9wZXJ0aWVzLFxuICBkZWxldGVQcm9wZXJ0eSxcbiAgZXh0cmFjdERlZmF1bHRFeHBvcnRJbnRlcm9wLFxuICBGdW5jdGlvbkhhbmRsaW5nTW9kZSxcbiAgZ2V0QWxsRW50cmllcyxcbiAgZ2V0QWxsS2V5cyxcbiAgZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZSxcbiAgZ2V0UHJvdG90eXBlT2YsXG4gIGlzRGVlcEVxdWFsLFxuICBuYW1lb2YsXG4gIG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllcyxcbiAgcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyxcbiAgc2V0TmVzdGVkUHJvcGVydHlWYWx1ZSxcbiAgdG9Kc29uXG59IGZyb20gJy4vb2JqZWN0LXV0aWxzLnRzJztcbmV4cG9ydCB7XG4gIGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSxcbiAgcmVzZXRPYnNpZGlhbkRldlV0aWxzU3RhdGVcbn0gZnJvbSAnLi9vYnNpZGlhbi1kZXYtdXRpbHMtc3RhdGUudHMnO1xuZXhwb3J0IHsgQXBwQWN0aXZlRmlsZVByb3ZpZGVyIH0gZnJvbSAnLi9vYnNpZGlhbi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5leHBvcnQgeyBnZXRBcHAgfSBmcm9tICcuL29ic2lkaWFuL2FwcC50cyc7XG5leHBvcnQge1xuICByZXRyeVdpdGhUaW1lb3V0Tm90aWNlLFxuICBydW5XaXRoVGltZW91dE5vdGljZVxufSBmcm9tICcuL29ic2lkaWFuL2FzeW5jLXdpdGgtbm90aWNlLnRzJztcbmV4cG9ydCB7XG4gIEF0dGFjaG1lbnRQYXRoQ29udGV4dCxcbiAgRFVNTVlfUEFUSCxcbiAgZ2V0QXR0YWNobWVudEZpbGVQYXRoLFxuICBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCxcbiAgZ2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsLFxuICBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMsXG4gIGhhc093bkF0dGFjaG1lbnRGb2xkZXIsXG4gIGlzQXRQcm9wZXJBdHRhY2htZW50UGF0aFxufSBmcm9tICcuL29ic2lkaWFuL2F0dGFjaG1lbnQtcGF0aC50cyc7XG5leHBvcnQge1xuICBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoLFxuICByZWJhc2VQYXRoT250b0ZvbGRlclxufSBmcm9tICcuL29ic2lkaWFuL2F0dGFjaG1lbnQtdW5pdC1mb2xkZXIudHMnO1xuZXhwb3J0IHtcbiAgcmVuZGVyQmFja2xpbmtzVGFibGUsXG4gIHJlbmRlckRlbGF5ZWRCYWNrbGlua3MsXG4gIHJlbmRlckRlbGF5ZWRCYWNrbGlua3NGb3JGb2xkZXJcbn0gZnJvbSAnLi9vYnNpZGlhbi9iYWNrbGluay50cyc7XG5leHBvcnQgeyBQbHVnaW5CYXNlc1ZpZXdSZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL2Jhc2VzLXZpZXctcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7XG4gIENhbGxvdXRNb2RlLFxuICByZW5kZXJDYWxsb3V0LFxuICB3cmFwRm9yQ2FsbG91dFxufSBmcm9tICcuL29ic2lkaWFuL2NhbGxvdXQudHMnO1xuZXhwb3J0IHsgZ2V0Q2FudmFzUmVmZXJlbmNlcyB9IGZyb20gJy4vb2JzaWRpYW4vY2FudmFzLnRzJztcbmV4cG9ydCB7XG4gIENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCxcbiAgZ2V0Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4LFxuICBzZXRDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgsXG4gIHVuc2V0Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4XG59IGZyb20gJy4vb2JzaWRpYW4vY2FzZS1pbnNlbnNpdGl2ZS1maWxlLWluZGV4LnRzJztcbmV4cG9ydCB7IGNyZWF0ZUNvZGVCbG9ja1JlZ0V4cCB9IGZyb20gJy4vb2JzaWRpYW4vY29kZS1ibG9jay1yZWctZXhwLnRzJztcbmV4cG9ydCB7IEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9vYnNpZGlhbi9jb21tYW5kLWhhbmRsZXJzL2Fic3RyYWN0LWZpbGUtY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IENvbW1hbmRIYW5kbGVyQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21tYW5kLWhhbmRsZXJzL2NvbW1hbmQtaGFuZGxlci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IEVkaXRvckNvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9vYnNpZGlhbi9jb21tYW5kLWhhbmRsZXJzL2VkaXRvci1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgRmlsZUNvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9vYnNpZGlhbi9jb21tYW5kLWhhbmRsZXJzL2ZpbGUtY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IEZvbGRlckNvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9vYnNpZGlhbi9jb21tYW5kLWhhbmRsZXJzL2ZvbGRlci1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgR2xvYmFsQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvZ2xvYmFsLWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBPcGVuRGVtb1ZhdWx0Q29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvb3Blbi1kZW1vLXZhdWx0LWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBPcGVuU2V0dGluZ3NDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vb2JzaWRpYW4vY29tbWFuZC1oYW5kbGVycy9vcGVuLXNldHRpbmdzLWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBVbmxvY2tBY3RpdmVOb3RlQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvdW5sb2NrLWFjdGl2ZS1ub3RlLWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBQbHVnaW5Db21tYW5kUmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi9jb21tYW5kLXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBjb25maWd1cmVDb21tdW5pdHlQbHVnaW4sXG4gIENvbmZpZ3VyZUNvbW11bml0eVBsdWdpblJlc3VsdCxcbiAgZGlzYWJsZUNvbW11bml0eVBsdWdpbixcbiAgZW5hYmxlQ29tbXVuaXR5UGx1Z2luLFxuICBnZXRDb21tdW5pdHlQbHVnaW5SZXBvLFxuICBnZXRMYXRlc3RSZWxlYXNlVmVyc2lvbixcbiAgaW5zdGFsbENvbW11bml0eVBsdWdpbixcbiAgaW5zdGFsbENvbmZpZ3VyZUVuYWJsZUNvbW11bml0eVBsdWdpbixcbiAgc2VhcmNoQ29tbXVuaXR5UGx1Z2lucyxcbiAgdG9nZ2xlRW5hYmxlQ29tbXVuaXR5UGx1Z2luLFxuICB0b2dnbGVJbnN0YWxsQ29tbXVuaXR5UGx1Z2luLFxuICB1bmluc3RhbGxDb21tdW5pdHlQbHVnaW5cbn0gZnJvbSAnLi9vYnNpZGlhbi9jb21tdW5pdHktcGx1Z2lucy50cyc7XG5leHBvcnQgeyBBYm9ydFNpZ25hbENvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9hYm9ydC1zaWduYWwtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IEFsbFdpbmRvd3NFdmVudENvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9hbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgQXN5bmNFcnJvckhhbmRsZXJDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvYXN5bmMtZXJyb3ItaGFuZGxlci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgcmVnaXN0ZXJBc3luY0V2ZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL2FzeW5jLWV2ZW50cy1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4Q29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL2Nhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgQ29tcG9uZW50RXggfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvY29tcG9uZW50LWV4LnRzJztcbmV4cG9ydCB7IENvbnNvbGVEZWJ1Z0NvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9jb25zb2xlLWRlYnVnLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBhc0Rpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvZGlzcG9zYWJsZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgRW1iZWRFeHRlbnNpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL2VtYmVkLWV4dGVuc2lvbnMtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IEdlbmVyYXRlTWFya2Rvd25MaW5rRGVmYXVsdFBhcmFtc0NvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9nZW5lcmF0ZS1tYXJrZG93bi1saW5rLWRlZmF1bHQtcGFyYW1zLWNvbXBvbmVudC50cyc7XG5leHBvcnQge1xuICBDYWxsYmFja0xheW91dFJlYWR5Q29tcG9uZW50LFxuICBMYXlvdXRSZWFkeUNvbXBvbmVudFxufSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvbGF5b3V0LXJlYWR5LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBNZW51RXZlbnRSZWdpc3RyYXJDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIGFyb3VuZCxcbiAgaGFzUGF0Y2hUb2tlbixcbiAgTW9ua2V5QXJvdW5kQ29tcG9uZW50XG59IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9tb25rZXktYXJvdW5kLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBOb3RlYm9va05hdmlnYXRvck1lbnVFdmVudFJlZ2lzdHJhckNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9ub3RlYm9vay1uYXZpZ2F0b3ItbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFBsdWdpbkNvbnRleHRDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvcGx1Z2luLWNvbnRleHQtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIFBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgUGx1Z2luTm90aWNlTW9kZVxufSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlIH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUGx1Z2luU2V0dGluZ3NUYWJDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvcGx1Z2luLXNldHRpbmdzLXRhYi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUG9pbnRlclBvc2l0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL3BvaW50ZXItcG9zaXRpb24tY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFJlZ2lzdHJ5Q29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL3JlZ2lzdHJ5LWNvbXBvbmVudC50cyc7XG5leHBvcnQge1xuICBFbXB0eUZvbGRlckJlaGF2aW9yLFxuICBSZW5hbWVEZWxldGVIYW5kbGVyQ29tcG9uZW50XG59IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9yZW5hbWUtZGVsZXRlLWhhbmRsZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFN5bnRheEhpZ2hsaWdodGluZ0NvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9zeW50YXgtaGlnaGxpZ2h0aW5nLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBnZXREb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yIH0gZnJvbSAnLi9vYnNpZGlhbi9jb25zdHJ1Y3RvcnMvZ2V0LWRvbS1ldmVudHMtaGFuZGxlcnMtY29uc3RydWN0b3IudHMnO1xuZXhwb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuL29ic2lkaWFuL2Nzcy1jbGFzcy50cyc7XG5leHBvcnQgeyBQbHVnaW5EYXRhSGFuZGxlciB9IGZyb20gJy4vb2JzaWRpYW4vZGF0YS1oYW5kbGVyLnRzJztcbmV4cG9ydCB7XG4gIGZpeFRpdGxlLFxuICBtYWtlTGlua1dpdGhQYXRoXG59IGZyb20gJy4vb2JzaWRpYW4vZGF0YXZpZXctbGluay50cyc7XG5leHBvcnQge1xuICBnZXRSZW5kZXJlZENvbnRhaW5lcixcbiAgaW5zZXJ0Q29kZUJsb2NrLFxuICByZWxvYWRDdXJyZW50RmlsZUNhY2hlLFxuICByZW5kZXJJZnJhbWUsXG4gIHJlbmRlclBhZ2luYXRlZExpc3QsXG4gIHJlbmRlclBhZ2luYXRlZFRhYmxlXG59IGZyb20gJy4vb2JzaWRpYW4vZGF0YXZpZXcudHMnO1xuZXhwb3J0IHsgYm9vdHN0cmFwRGVtb1ZhdWx0IH0gZnJvbSAnLi9vYnNpZGlhbi9kZW1vLXZhdWx0LWhlbHBlci50cyc7XG5leHBvcnQgeyBvcGVuRGVtb1ZhdWx0IH0gZnJvbSAnLi9vYnNpZGlhbi9kZXNrdG9wLWRlbW8tdmF1bHQtb3BlbmVyLnRzJztcbmV4cG9ydCB7XG4gIGhvdmVyRWxlbWVudCxcbiAgbW92ZU1vdXNlLFxuICBwcmVzc0tleSxcbiAgdHlwZUludG9FZGl0b3IsXG4gIHVuaG92ZXJFbGVtZW50XG59IGZyb20gJy4vb2JzaWRpYW4vZGVza3RvcC10cnVzdGVkLWlucHV0LnRzJztcbmV4cG9ydCB7IFBsdWdpbkVkaXRvckV4dGVuc2lvblJlZ2lzdHJhciB9IGZyb20gJy4vb2JzaWRpYW4vZWRpdG9yLWV4dGVuc2lvbi1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHsgUGx1Z2luRWRpdG9yU3VnZ2VzdFJlZ2lzdHJhciB9IGZyb20gJy4vb2JzaWRpYW4vZWRpdG9yLXN1Z2dlc3QtcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7XG4gIHN5bmNPcGVuRWRpdG9yQnVmZmVyc0ZvclBhdGgsXG4gIHRvZ2dsZUVkaXRvclJlYWRPbmx5XG59IGZyb20gJy4vb2JzaWRpYW4vZWRpdG9yLnRzJztcbmV4cG9ydCB7XG4gIEV2ZW50UmVmRGlzcG9zYWJsZSxcbiAgc3Vic2NyaWJlRGlzcG9zYWJsZUV2ZW50LFxuICBzdWJzY3JpYmVFdmVudFxufSBmcm9tICcuL29ic2lkaWFuL2V2ZW50cy50cyc7XG5leHBvcnQgeyBQbHVnaW5FeHRlbnNpb25zUmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi9leHRlbnNpb25zLXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBhcHBseUNvbnRlbnRDaGFuZ2VzLFxuICBhcHBseUZpbGVDaGFuZ2VzLFxuICBpc0NhbnZhc0NoYW5nZSxcbiAgaXNDYW52YXNGaWxlTm9kZUNoYW5nZSxcbiAgaXNDYW52YXNUZXh0Tm9kZUNoYW5nZSxcbiAgaXNDb250ZW50Q2hhbmdlLFxuICBpc0Zyb250bWF0dGVyQ2hhbmdlLFxuICBpc0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHMsXG4gIHRvRnJvbnRtYXR0ZXJDaGFuZ2VXaXRoT2Zmc2V0c1xufSBmcm9tICcuL29ic2lkaWFuL2ZpbGUtY2hhbmdlLnRzJztcbmV4cG9ydCB7XG4gIGFkZEFsaWFzLFxuICBkZWxldGVBbGlhcyxcbiAgcHJvY2Vzc0Zyb250bWF0dGVyLFxuICB3YWl0Rm9yUGVuZGluZ0xpbmtVcGRhdGVzXG59IGZyb20gJy4vb2JzaWRpYW4vZmlsZS1tYW5hZ2VyLnRzJztcbmV4cG9ydCB7XG4gIGFzQXJyYXlPZkZpbGVzLFxuICBhc0FycmF5T2ZGb2xkZXJzLFxuICBhc0ZpbGUsXG4gIGFzRmlsZU9yTnVsbCxcbiAgYXNGb2xkZXIsXG4gIGFzRm9sZGVyT3JOdWxsLFxuICBCQVNFX0ZJTEVfRVhURU5TSU9OLFxuICBDQU5WQVNfRklMRV9FWFRFTlNJT04sXG4gIGNoZWNrRXh0ZW5zaW9uLFxuICBkb2VzRXhpc3QsXG4gIEZpbGVTeXN0ZW1UeXBlLFxuICBnZXRBYnN0cmFjdEZpbGUsXG4gIGdldEFic3RyYWN0RmlsZU9yTnVsbCxcbiAgZ2V0RmlsZSxcbiAgZ2V0RmlsZU9yTnVsbCxcbiAgZ2V0RmlsZVN5c3RlbVR5cGUsXG4gIGdldEZvbGRlcixcbiAgZ2V0Rm9sZGVyT3JOdWxsLFxuICBnZXRNYXJrZG93bkZpbGVzLFxuICBnZXRPckNyZWF0ZUZpbGUsXG4gIGdldE9yQ3JlYXRlRm9sZGVyLFxuICBnZXRQYXRoLFxuICBpc0Fic3RyYWN0RmlsZSxcbiAgaXNCYXNlRmlsZSxcbiAgaXNDYW52YXNGaWxlLFxuICBpc0ZpbGUsXG4gIGlzRm9sZGVyLFxuICBpc01hcmtkb3duRmlsZSxcbiAgaXNOb3RlLFxuICBpc1RyZWF0ZWRBc0F0dGFjaG1lbnQsXG4gIE1BUktET1dOX0ZJTEVfRVhURU5TSU9OLFxuICB0cmltTWFya2Rvd25FeHRlbnNpb25cbn0gZnJvbSAnLi9vYnNpZGlhbi9maWxlLXN5c3RlbS50cyc7XG5leHBvcnQge1xuICBGT0xERVJfTk9URVNfUExVR0lOX0lELFxuICBGb2xkZXJOb3RlTG9jYXRpb24sXG4gIHJlc29sdmVGb2xkZXJOb3RlLFxuICByZXNvbHZlRm9sZGVyTm90ZUNvbmZpZ1xufSBmcm9tICcuL29ic2lkaWFuL2ZvbGRlci1ub3RlLnRzJztcbmV4cG9ydCB7XG4gIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyxcbiAgdG9Gcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzXG59IGZyb20gJy4vb2JzaWRpYW4vZnJvbnRtYXR0ZXItbGluay1jYWNoZS13aXRoLW9mZnNldHMudHMnO1xuZXhwb3J0IHtcbiAgcGFyc2VGcm9udG1hdHRlcixcbiAgc2V0RnJvbnRtYXR0ZXJcbn0gZnJvbSAnLi9vYnNpZGlhbi9mcm9udG1hdHRlci50cyc7XG5leHBvcnQgeyBQbHVnaW5Ib3ZlckxpbmtTb3VyY2VSZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL2hvdmVyLWxpbmstc291cmNlLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgeyBhcHBlbmRDb2RlQmxvY2sgfSBmcm9tICcuL29ic2lkaWFuL2h0bWwtZWxlbWVudC50cyc7XG5leHBvcnQge1xuICBERUZBVUxUX05TLFxuICBpbml0STE4TixcbiAgdFxufSBmcm9tICcuL29ic2lkaWFuL2kxOG4vaTE4bi50cyc7XG5leHBvcnQgeyBlbiB9IGZyb20gJy4vb2JzaWRpYW4vaTE4bi9sb2NhbGVzL2VuLnRzJztcbmV4cG9ydCB7XG4gIERFRkFVTFRfTEFOR1VBR0UsXG4gIGRlZmF1bHRUcmFuc2xhdGlvbnNNYXBcbn0gZnJvbSAnLi9vYnNpZGlhbi9pMThuL2xvY2FsZXMvdHJhbnNsYXRpb25zLW1hcC50cyc7XG5leHBvcnQgeyBpc0luT2JzaWRpYW4gfSBmcm9tICcuL29ic2lkaWFuL2lzLWluLW9ic2lkaWFuLnRzJztcbmV4cG9ydCB7XG4gIGNvbnZlcnRMaW5rLFxuICBlZGl0QmFja2xpbmtzLFxuICBlZGl0TGlua3MsXG4gIGVkaXRMaW5rc0luQ29udGVudCxcbiAgZXh0cmFjdExpbmtGaWxlLFxuICBmaXhGcm9udG1hdHRlck1hcmtkb3duTGlua3MsXG4gIGdlbmVyYXRlTWFya2Rvd25MaW5rLFxuICBnZW5lcmF0ZVJhd01hcmtkb3duTGluayxcbiAgZ2V0R2VuZXJhdGVNYXJrZG93bkxpbmtEZWZhdWx0UGFyYW1zRm5zLFxuICBoYXNBbmdsZUJyYWNrZXRzLFxuICBoYXNFbWJlZFN5bnRheCxcbiAgaGFzTGVhZGluZ0RvdCxcbiAgaGFzTGVhZGluZ1NsYXNoLFxuICBoYXNXaWtpbGlua1N5bnRheCxcbiAgTGlua1BhdGhTdHlsZSxcbiAgTGlua1N0eWxlLFxuICBzaG91bGRSZXNldEFsaWFzLFxuICBzcGxpdFN1YnBhdGgsXG4gIHVwZGF0ZUZpbGVVcmxMaW5rc0luQ29udGVudCxcbiAgdXBkYXRlRmlsZVVybExpbmtzSW5GaWxlLFxuICB1cGRhdGVMaW5rLFxuICB1cGRhdGVMaW5rc0luQ29udGVudCxcbiAgdXBkYXRlTGlua3NJbkZpbGVcbn0gZnJvbSAnLi9vYnNpZGlhbi9saW5rLnRzJztcbmV4cG9ydCB7IGludm9rZUFzeW5jQW5kTG9nIH0gZnJvbSAnLi9vYnNpZGlhbi9sb2dnZXIudHMnO1xuZXhwb3J0IHsgbG9vcCB9IGZyb20gJy4vb2JzaWRpYW4vbG9vcC50cyc7XG5leHBvcnQgeyBQbHVnaW5NYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclJlZ2lzdHJhciB9IGZyb20gJy4vb2JzaWRpYW4vbWFya2Rvd24tY29kZS1ibG9jay1wcm9jZXNzb3ItcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7XG4gIGdldENvZGVCbG9ja01hcmtkb3duSW5mbyxcbiAgaW5zZXJ0QWZ0ZXJDb2RlQmxvY2ssXG4gIGluc2VydEJlZm9yZUNvZGVCbG9jayxcbiAgcmVtb3ZlQ29kZUJsb2NrLFxuICByZXBsYWNlQ29kZUJsb2NrXG59IGZyb20gJy4vb2JzaWRpYW4vbWFya2Rvd24tY29kZS1ibG9jay1wcm9jZXNzb3IudHMnO1xuZXhwb3J0IHsgUGx1Z2luTWFya2Rvd25Qb3N0UHJvY2Vzc29yUmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi9tYXJrZG93bi1wb3N0LXByb2Nlc3Nvci1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHsgZ2V0RnVsbENvbnRlbnRIdG1sIH0gZnJvbSAnLi9vYnNpZGlhbi9tYXJrZG93bi12aWV3LnRzJztcbmV4cG9ydCB7XG4gIGZ1bGxSZW5kZXIsXG4gIG1hcmtkb3duVG9IdG1sLFxuICByZWdpc3RlckxpbmtIYW5kbGVycyxcbiAgcmVuZGVyRXh0ZXJuYWxMaW5rLFxuICByZW5kZXJJbnRlcm5hbExpbmtcbn0gZnJvbSAnLi9vYnNpZGlhbi9tYXJrZG93bi50cyc7XG5leHBvcnQge1xuICBDYWNoZWRNZXRhZGF0YUV4RmVhdHVyZSxcbiAgZW5zdXJlTWV0YWRhdGFDYWNoZVJlYWR5LFxuICBnZXRCYWNrbGlua3NGb3JGaWxlT3JQYXRoLFxuICBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZSxcbiAgZ2V0Q2FjaGVTYWZlLFxuICBnZXRGcm9udG1hdHRlclNhZmUsXG4gIGdldExpbmtzLFxuICBpc0NhY2hlZE1ldGFkYXRhRXgsXG4gIHBhcnNlTWV0YWRhdGEsXG4gIHJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlLFxuICByZWdpc3RlckZpbGVzLFxuICB1bnJlZ2lzdGVyRmlsZUNhY2hlRm9yTm9uRXhpc3RpbmdGaWxlLFxuICB1bnJlZ2lzdGVyRmlsZXNcbn0gZnJvbSAnLi9vYnNpZGlhbi9tZXRhZGF0YS1jYWNoZS50cyc7XG5leHBvcnQgeyBhbGVydCB9IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL2FsZXJ0LnRzJztcbmV4cG9ydCB7IGNvbmZpcm0gfSBmcm9tICcuL29ic2lkaWFuL21vZGFscy9jb25maXJtLnRzJztcbmV4cG9ydCB7IE1pbmltaXphYmxlTW9kYWwgfSBmcm9tICcuL29ic2lkaWFuL21vZGFscy9taW5pbWl6YWJsZS1tb2RhbC50cyc7XG5leHBvcnQge1xuICBNb2RhbEJhc2UsXG4gIHNob3dNb2RhbFxufSBmcm9tICcuL29ic2lkaWFuL21vZGFscy9tb2RhbC50cyc7XG5leHBvcnQgeyBwcm9tcHQgfSBmcm9tICcuL29ic2lkaWFuL21vZGFscy9wcm9tcHQudHMnO1xuZXhwb3J0IHsgc2VsZWN0SXRlbSB9IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL3NlbGVjdC1pdGVtLnRzJztcbmV4cG9ydCB7IHNlbGVjdE9wdGlvbiB9IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL3NlbGVjdC1vcHRpb24udHMnO1xuZXhwb3J0IHsgU3VnZ2VzdE1vZGFsQ29tbWFuZEJ1aWxkZXIgfSBmcm9tICcuL29ic2lkaWFuL21vZGFscy9zdWdnZXN0LW1vZGFsLWNvbW1hbmQtYnVpbGRlci50cyc7XG5leHBvcnQge1xuICBOT1RFQk9PS19OQVZJR0FUT1JfTUVOVV9TT1VSQ0UsXG4gIE5PVEVCT09LX05BVklHQVRPUl9QTFVHSU5fSUQsXG4gIHJlc29sdmVOb3RlYm9va05hdmlnYXRvckFwaVxufSBmcm9tICcuL29ic2lkaWFuL25vdGVib29rLW5hdmlnYXRvci50cyc7XG5leHBvcnQgeyBQbHVnaW5PYnNpZGlhblByb3RvY29sSGFuZGxlclJlZ2lzdHJhciB9IGZyb20gJy4vb2JzaWRpYW4vb2JzaWRpYW4tcHJvdG9jb2wtaGFuZGxlci1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgZ2V0TmV3TGlua0Zvcm1hdCxcbiAgaXNTcGVsbGNoZWNrRW5hYmxlZCxcbiAgc2hvdWxkVXNlV2lraWxpbmtzXG59IGZyb20gJy4vb2JzaWRpYW4vb2JzaWRpYW4tc2V0dGluZ3MudHMnO1xuZXhwb3J0IHtcbiAgZW5jb2RlVXJsLFxuICBlc2NhcGVBbGlhcyxcbiAgaXNQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZSxcbiAgaXNQYXJzZUxpbmtSZWZlcmVuY2UsXG4gIHBhcnNlRnJvbnRtYXR0ZXJMaW5rcyxcbiAgcGFyc2VMaW5rLFxuICBwYXJzZUxpbmtzLFxuICB0b1BhcnNlTGlua1JlZmVyZW5jZSxcbiAgdW5lc2NhcGVBbGlhc1xufSBmcm9tICcuL29ic2lkaWFuL3BhcnNlLWxpbmsudHMnO1xuZXhwb3J0IHtcbiAgUGF0aFNldHRpbmdzLFxuICBwYXRoc1ZhbGlkYXRvclxufSBmcm9tICcuL29ic2lkaWFuL3BhdGgtc2V0dGluZ3MudHMnO1xuZXhwb3J0IHsgcHJpbnRUb1BkZiB9IGZyb20gJy4vb2JzaWRpYW4vcGRmLnRzJztcbmV4cG9ydCB7IFBsdWdpbkNsaUhhbmRsZXJSZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL3BsdWdpbi1jbGktaGFuZGxlci1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHsgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMgfSBmcm9tICcuL29ic2lkaWFuL3BsdWdpbi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5leHBvcnQge1xuICBhZGRQbHVnaW5Dc3NDbGFzc2VzLFxuICBpbml0RGVidWdDb250cm9sbGVyLFxuICBpbml0UGx1Z2luQ29udGV4dFxufSBmcm9tICcuL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4tY29udGV4dC50cyc7XG5leHBvcnQgeyBQbHVnaW5FdmVudFNvdXJjZUltcGwgfSBmcm9tICcuL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4tZXZlbnQtc291cmNlLnRzJztcbmV4cG9ydCB7XG4gIFBsdWdpblNldHRpbmdzVGFiQmFzZSxcbiAgU0FWRV9UT19GSUxFX0NPTlRFWFRcbn0gZnJvbSAnLi9vYnNpZGlhbi9wbHVnaW4vcGx1Z2luLXNldHRpbmdzLXRhYi50cyc7XG5leHBvcnQge1xuICBQbHVnaW5CYXNlLFxuICByZWxvYWRQbHVnaW4sXG4gIHNob3dFcnJvckFuZERpc2FibGVQbHVnaW5cbn0gZnJvbSAnLi9vYnNpZGlhbi9wbHVnaW4vcGx1Z2luLnRzJztcbmV4cG9ydCB7IGVkaXRGaWVsZHNJblBvcG92ZXIgfSBmcm9tICcuL29ic2lkaWFuL3BvcG92ZXJzL2ZpZWxkLXBvcG92ZXIudHMnO1xuZXhwb3J0IHtcbiAgY3JlYXRlQW5jaG9yRnJvbURvY3VtZW50Q2VudGVyLFxuICBjcmVhdGVBbmNob3JGcm9tRWxlbWVudCxcbiAgY3JlYXRlQW5jaG9yRnJvbVBvaW50LFxuICBjcmVhdGVBbmNob3JGcm9tU2VsZWN0aW9uXG59IGZyb20gJy4vb2JzaWRpYW4vcG9wb3ZlcnMvcG9wb3Zlci1hbmNob3IudHMnO1xuZXhwb3J0IHsgc2hvd1BvcG92ZXIgfSBmcm9tICcuL29ic2lkaWFuL3BvcG92ZXJzL3BvcG92ZXIudHMnO1xuZXhwb3J0IHtcbiAgYWRkVG9RdWV1ZSxcbiAgYWRkVG9RdWV1ZUFuZFdhaXQsXG4gIGZsdXNoUXVldWVcbn0gZnJvbSAnLi9vYnNpZGlhbi9xdWV1ZS50cyc7XG5leHBvcnQge1xuICBBcHBDb250ZXh0LFxuICB1c2VBcHBcbn0gZnJvbSAnLi9vYnNpZGlhbi9yZWFjdC9hcHAtY29udGV4dC50cyc7XG5leHBvcnQge1xuICBpc0NhbnZhc0ZpbGVOb2RlUmVmZXJlbmNlLFxuICBpc0NhbnZhc1JlZmVyZW5jZSxcbiAgaXNDYW52YXNUZXh0Tm9kZVJlZmVyZW5jZSxcbiAgcmVmZXJlbmNlVG9GaWxlQ2hhbmdlLFxuICBzb3J0UmVmZXJlbmNlc1xufSBmcm9tICcuL29ic2lkaWFuL3JlZmVyZW5jZS50cyc7XG5leHBvcnQge1xuICBpc1Jlc291cmNlTG9ja2VkRm9yUGF0aCxcbiAgaXNSZXNvdXJjZUxvY2tlZEZvclBhdGhCeUFuY2VzdG9yLFxuICBsb2NrUmVzb3VyY2VGb3JQYXRoLFxuICByZXF1ZXN0UmVzb3VyY2VVbmxvY2tGb3JQYXRoLFxuICBSZXNvdXJjZUxvY2tDb21wb25lbnQsXG4gIFJlc291cmNlTG9ja2VkRXJyb3IsXG4gIHVubG9ja1Jlc291cmNlRm9yUGF0aFxufSBmcm9tICcuL29ic2lkaWFuL3Jlc291cmNlLWxvY2sudHMnO1xuZXhwb3J0IHsgcmVsYXRpdmVQYXRoVG9SZXNvdXJjZVVybCB9IGZyb20gJy4vb2JzaWRpYW4vcmVzb3VyY2UtdXJsLnRzJztcbmV4cG9ydCB7IFBsdWdpblJpYmJvbkljb25SZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL3JpYmJvbi1pY29uLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL2NoZWNrYm94LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBDb2RlSGlnaGxpZ2h0ZXJDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9jb2RlLWhpZ2hsaWdodGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBEYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvZGF0ZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgRGF0ZVRpbWVDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9kYXRlLXRpbWUtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IEVtYWlsQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvZW1haWwtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IEZpbGVDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9maWxlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBNb250aENvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL21vbnRoLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBNdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvbXVsdGlwbGUtZHJvcGRvd24tY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE11bHRpcGxlRW1haWxDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS1lbWFpbC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgTXVsdGlwbGVGaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvbXVsdGlwbGUtZmlsZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgTXVsdGlwbGVUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvbXVsdGlwbGUtdGV4dC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgTnVtYmVyQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvbnVtYmVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBQYXNzd29yZENvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3Bhc3N3b3JkLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBlbnN1cmVXcmFwcGVkIH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvc2V0dGluZy1jb21wb25lbnQtd3JhcHBlci50cyc7XG5leHBvcnQgeyBUZWxlcGhvbmVDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy90ZWxlcGhvbmUtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGdldFRleHRCYXNlZENvbXBvbmVudFZhbHVlIH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvdGV4dC1iYXNlZC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVGltZUNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3RpbWUtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFRyaVN0YXRlQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy90cmktc3RhdGUtY2hlY2tib3gtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFR5cGVkRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC1kcm9wZG93bi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHlwZWRNdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvdHlwZWQtbXVsdGlwbGUtZHJvcGRvd24tY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFR5cGVkUmFuZ2VUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvdHlwZWQtcmFuZ2UtdGV4dC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHlwZWRUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvdHlwZWQtdGV4dC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVXJsQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvdXJsLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBnZXRWYWxpZGF0b3JDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy92YWxpZGF0b3ItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFdlZWtDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy93ZWVrLWNvbXBvbmVudC50cyc7XG5leHBvcnQge1xuICBhZG9wdFNldHRpbmdFeCxcbiAgU2V0dGluZ0V4XG59IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1leC50cyc7XG5leHBvcnQgeyBTZXR0aW5nR3JvdXBFeCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1ncm91cC1leC50cyc7XG5leHBvcnQgeyBQbHVnaW5TdGF0dXNCYXJJdGVtUmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi9zdGF0dXMtYmFyLWl0ZW0tcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7XG4gIGdldE9zQW5kT2JzaWRpYW5VbnNhZmVQYXRoQ2hhcnNSZWdFeHAsXG4gIGdldE9zVW5zYWZlUGF0aENoYXJzUmVnRXhwLFxuICBpc1ZhbGlkYXRpb25NZXNzYWdlSG9sZGVyLFxuICBPQlNJRElBTl9VTlNBRkVfRklMRU5BTUVfQ0hBUlMsXG4gIFVOSVhfVU5TQUZFX1BBVEhfQ0hBUlMsXG4gIFdJTkRPV1NfVU5TQUZFX1BBVEhfQ0hBUlNcbn0gZnJvbSAnLi9vYnNpZGlhbi92YWxpZGF0aW9uLnRzJztcbmV4cG9ydCB7XG4gIGRlbGV0ZUlmTm90VXNlZCxcbiAgRGVsZXRlSWZOb3RVc2VkUmVzdWx0XG59IGZyb20gJy4vb2JzaWRpYW4vdmF1bHQtZGVsZXRlLnRzJztcbmV4cG9ydCB7IFZhdWx0VHJhbnNhY3Rpb24gfSBmcm9tICcuL29ic2lkaWFuL3ZhdWx0LXRyYW5zYWN0aW9uLnRzJztcbmV4cG9ydCB7XG4gIGNsZWFudXBFbXB0eUZvbGRlcnMsXG4gIGNvcHlTYWZlLFxuICBjcmVhdGVGb2xkZXJTYWZlLFxuICBDcmVhdGVGb2xkZXJTYWZlUmVzdWx0LFxuICBjcmVhdGVUZW1wb3JhcnlGaWxlLFxuICBjcmVhdGVUZW1wb3JhcnlGb2xkZXIsXG4gIGRlbGV0ZUVtcHR5Rm9sZGVyLFxuICBkZWxldGVFbXB0eUZvbGRlckhpZXJhcmNoeSxcbiAgZ2V0QWJzdHJhY3RGaWxlUGF0aFNhZmUsXG4gIGdldEF2YWlsYWJsZVBhdGgsXG4gIGdldEZpbGVQYXRoU2FmZSxcbiAgZ2V0Rm9sZGVyUGF0aFNhZmUsXG4gIGdldE1hcmtkb3duRmlsZXNTb3J0ZWQsXG4gIGdldE5vdGVGaWxlc1NvcnRlZCxcbiAgZ2V0T3JDcmVhdGVBYnN0cmFjdEZpbGVTYWZlLFxuICBnZXRPckNyZWF0ZUZpbGVTYWZlLFxuICBnZXRPckNyZWF0ZUZvbGRlclNhZmUsXG4gIGdldFNhZmVSZW5hbWVQYXRoLFxuICBJbnZva2VGaWxlQWN0aW9uU2FmZVJlc3VsdCxcbiAgaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrLFxuICBpc0NoaWxkLFxuICBpc0NoaWxkT3JTZWxmLFxuICBpc0VtcHR5Rm9sZGVyLFxuICBsaXN0U2FmZSxcbiAgcHJvY2VzcyxcbiAgcmVhZFNhZmUsXG4gIHJlbmFtZVNhZmUsXG4gIHNhdmVOb3RlLFxuICB0cmFzaFNhZmVcbn0gZnJvbSAnLi9vYnNpZGlhbi92YXVsdC50cyc7XG5leHBvcnQgeyBQbHVnaW5WaWV3UmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi92aWV3LXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBlbnN1cmVMYXlvdXRSZWFkeSxcbiAgZ2V0QWxsQ29udGFpbmVycyxcbiAgZ2V0QWxsRG9tV2luZG93cyxcbiAgZ2V0TWFpbldpbmRvdyxcbiAgc3dpdGNoVG9NYWluV2luZG93LFxuICBzd2l0Y2hUb1dpbmRvd1xufSBmcm9tICcuL29ic2lkaWFuL3dvcmtzcGFjZS50cyc7XG5leHBvcnQge1xuICBiYXNlbmFtZSxcbiAgZGVsaW1pdGVyLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICBmb3JtYXQsXG4gIGdldEZpbGVOYW1lLFxuICBnZXRGb2xkZXJOYW1lLFxuICBpc0Fic29sdXRlLFxuICBqb2luLFxuICBtYWtlRmlsZU5hbWUsXG4gIG5vcm1hbGl6ZUlmUmVsYXRpdmUsXG4gIG5vcm1hbGl6ZVBhdGgsXG4gIHBhcnNlLFxuICBwb3NpeCxcbiAgcmVsYXRpdmUsXG4gIHJlc29sdmUsXG4gIHNlcGFyYXRvcixcbiAgdG9Qb3NpeEJ1ZmZlcixcbiAgdG9Qb3NpeFBhdGhcbn0gZnJvbSAnLi9wYXRoLnRzJztcbmV4cG9ydCB7XG4gIEFMV0FZU19NQVRDSF9SRUdfRVhQLFxuICBlc2NhcGVSZWdFeHAsXG4gIGdldE1hbmRhdG9yeU5hbWVkR3JvdXAsXG4gIGdldE9wdGlvbmFsTmFtZWRHcm91cCxcbiAgaXNWYWxpZFJlZ0V4cCxcbiAgTkVWRVJfTUFUQ0hfUkVHX0VYUCxcbiAgb25lT2YsXG4gIFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5XG59IGZyb20gJy4vcmVnLWV4cC50cyc7XG5leHBvcnQge1xuICBieXBhc3NTdHJpY3RQcm94eSxcbiAgc3RyaWN0UHJveHlcbn0gZnJvbSAnLi9zdHJpY3QtcHJveHkudHMnO1xuZXhwb3J0IHtcbiAgRU1QVFksXG4gIGVuc3VyZUVuZHNXaXRoLFxuICBlbnN1cmVMZkVuZGluZ3MsXG4gIGVuc3VyZVN0YXJ0c1dpdGgsXG4gIGVzY2FwZSxcbiAgZ2V0TGZOb3JtYWxpemVkT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcHBlcixcbiAgaGFzU2luZ2xlT2NjdXJyZW5jZSxcbiAgaW5kZW50LFxuICBpbnNlcnRBdCxcbiAgbWFrZVZhbGlkVmFyaWFibGVOYW1lLFxuICBub3JtYWxpemVTdHJpbmcsXG4gIHJlcGxhY2UsXG4gIHJlcGxhY2VBbGwsXG4gIHJlcGxhY2VBbGxBc3luYyxcbiAgdHJpbUVuZCxcbiAgdHJpbVN0YXJ0LFxuICB1bmVzY2FwZSxcbiAgdW5pbmRlbnRcbn0gZnJvbSAnLi9zdHJpbmcudHMnO1xuZXhwb3J0IHsgRGF0ZVRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvZGF0ZS10cmFuc2Zvcm1lci50cyc7XG5leHBvcnQgeyBEdXJhdGlvblRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvZHVyYXRpb24tdHJhbnNmb3JtZXIudHMnO1xuZXhwb3J0IHsgR3JvdXBUcmFuc2Zvcm1lciB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL2dyb3VwLXRyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IE1hcFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvbWFwLXRyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IFNldFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvc2V0LXRyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IFNraXBQcml2YXRlUHJvcGVydHlUcmFuc2Zvcm1lciB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3NraXAtcHJpdmF0ZS1wcm9wZXJ0eS10cmFuc2Zvcm1lci50cyc7XG5leHBvcnQgeyBUcmFuc2Zvcm1lciB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3RyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IFR3b1dheU1hcFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvdHdvLXdheS1tYXAtdHJhbnNmb3JtZXIudHMnO1xuZXhwb3J0IHsgVHlwZWRUcmFuc2Zvcm1lciB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3R5cGVkLXRyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IFR3b1dheU1hcCB9IGZyb20gJy4vdHdvLXdheS1tYXAudHMnO1xuZXhwb3J0IHtcbiAgYXNzZXJ0LFxuICBhc3NlcnRHZW5lcmljT2JqZWN0LFxuICBhc3NlcnROZXZlcixcbiAgYXNzZXJ0Tm9uTnVsbGFibGUsXG4gIGVuc3VyZUdlbmVyaWNPYmplY3QsXG4gIGVuc3VyZU5vbk51bGxhYmxlXG59IGZyb20gJy4vdHlwZS1ndWFyZHMudHMnO1xuZXhwb3J0IHsgVHlwZUFzc2VydGVyIH0gZnJvbSAnLi90eXBlLnRzJztcbmV4cG9ydCB7XG4gIGlzRmlsZVVybCxcbiAgaXNVcmwsXG4gIG5vcm1hbGl6ZUZpbGVVcmxcbn0gZnJvbSAnLi91cmwudHMnO1xuZXhwb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi92YWx1ZS1wcm92aWRlci50cyc7XG5leHBvcnQgeyBWYWx1ZVdyYXBwZXIgfSBmcm9tICcuL3ZhbHVlLXdyYXBwZXIudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxjQUFjO0FBQ3ZCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsNkJBQTZCO0FBQ3RDLFNBQVMsY0FBYztBQUN2QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFB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
@@ -4,6 +4,17 @@
4
4
  *
5
5
  * Contains utility functions for Blob objects.
6
6
  */
7
+ /**
8
+ * Options for {@link blobToJpegArrayBuffer}.
9
+ */
10
+ export interface BlobToJpegArrayBufferOptions {
11
+ /**
12
+ * Whether to carry the source image's metadata segments (EXIF, GPS, XMP, ICC profile) into the
13
+ * re-encoded JPEG. Only has an effect when the source is a JPEG. Defaults to `false`, which is the
14
+ * behavior a canvas re-encode has always had.
15
+ */
16
+ readonly shouldPreserveMetadata?: boolean | undefined;
17
+ }
7
18
  /**
8
19
  * Converts a {@link Blob} object to an {@link ArrayBuffer}.
9
20
  *
@@ -21,11 +32,17 @@ export declare function blobToDataUrl(blob: Blob): Promise<string>;
21
32
  /**
22
33
  * Converts a {@link Blob} object to a JPEG ArrayBuffer with the specified quality.
23
34
  *
35
+ * The conversion is a canvas re-encode, which keeps only the pixels — EXIF, GPS, XMP and the ICC
36
+ * profile are dropped by construction. Pass {@link BlobToJpegArrayBufferOptions.shouldPreserveMetadata}
37
+ * to carry those segments across from the source, which works only when the source is itself a JPEG:
38
+ * nothing else stores them in a form that can be copied verbatim.
39
+ *
24
40
  * @param blob - The Blob object to convert.
25
41
  * @param jpegQuality - The quality of the JPEG image (0 to 1).
42
+ * @param options - Conversion options.
26
43
  * @returns A {@link Promise} that resolves to an {@link ArrayBuffer}.
27
44
  */
28
- export declare function blobToJpegArrayBuffer(blob: Blob, jpegQuality: number): Promise<ArrayBuffer>;
45
+ export declare function blobToJpegArrayBuffer(blob: Blob, jpegQuality: number, options?: BlobToJpegArrayBufferOptions): Promise<ArrayBuffer>;
29
46
  /**
30
47
  * Converts a base64 encoded string to an {@link ArrayBuffer}.
31
48
  *
@@ -21,6 +21,10 @@ if you want to view the source, please visit the github repository of this plugi
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
24
+ import {
25
+ extractJpegMetadataSegments,
26
+ injectJpegMetadataSegments
27
+ } from "./jpeg-metadata.mjs";
24
28
  import { assertNonNullable } from "./type-guards.mjs";
25
29
  async function blobToArrayBuffer(blob) {
26
30
  return await blob.arrayBuffer();
@@ -35,7 +39,8 @@ async function blobToDataUrl(blob) {
35
39
  }
36
40
  });
37
41
  }
38
- async function blobToJpegArrayBuffer(blob, jpegQuality) {
42
+ async function blobToJpegArrayBuffer(blob, jpegQuality, options) {
43
+ const sourceSegments = options?.shouldPreserveMetadata ? extractJpegMetadataSegments(new Uint8Array(await blob.arrayBuffer())) : [];
39
44
  const dataUrl = await blobToDataUrl(blob);
40
45
  return new Promise((resolve) => {
41
46
  const image = new Image();
@@ -58,7 +63,8 @@ async function blobToJpegArrayBuffer(blob, jpegQuality) {
58
63
  context.restore();
59
64
  const jpegDataUrl = canvas.toDataURL("image/jpeg", jpegQuality);
60
65
  const arrayBuffer = dataUrlToArrayBuffer(jpegDataUrl);
61
- resolve(arrayBuffer);
66
+ const withMetadata = injectJpegMetadataSegments(new Uint8Array(arrayBuffer), sourceSegments);
67
+ resolve(withMetadata.buffer);
62
68
  }
63
69
  });
64
70
  }
@@ -86,4 +92,4 @@ export {
86
92
  dataUrlToArrayBuffer,
87
93
  isImageFile
88
94
  };
89
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Jsb2IudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgQmxvYiBvYmplY3RzLlxuICovXG5cbmltcG9ydCB7IGFzc2VydE5vbk51bGxhYmxlIH0gZnJvbSAnLi90eXBlLWd1YXJkcy50cyc7XG5cbi8qKlxuICogQ29udmVydHMgYSB7QGxpbmsgQmxvYn0gb2JqZWN0IHRvIGFuIHtAbGluayBBcnJheUJ1ZmZlcn0uXG4gKlxuICogQHBhcmFtIGJsb2IgLSBUaGUgQmxvYiBvYmplY3QgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYW4ge0BsaW5rIEFycmF5QnVmZmVyfS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb0FycmF5QnVmZmVyKGJsb2I6IEJsb2IpOiBQcm9taXNlPEFycmF5QnVmZmVyPiB7XG4gIHJldHVybiBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSB7QGxpbmsgQmxvYn0gb2JqZWN0IHRvIGEgZGF0YSBVUkwuXG4gKlxuICogQHBhcmFtIGJsb2IgLSBUaGUgQmxvYiBvYmplY3QgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBkYXRhIFVSTC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb0RhdGFVcmwoYmxvYjogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlbmQnLCBoYW5kbGVMb2FkRW5kKTtcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcblxuICAgIGZ1bmN0aW9uIGhhbmRsZUxvYWRFbmQoKTogdm9pZCB7XG4gICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEge0BsaW5rIEJsb2J9IG9iamVjdCB0byBhIEpQRUcgQXJyYXlCdWZmZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHF1YWxpdHkuXG4gKlxuICogQHBhcmFtIGJsb2IgLSBUaGUgQmxvYiBvYmplY3QgdG8gY29udmVydC5cbiAqIEBwYXJhbSBqcGVnUXVhbGl0eSAtIFRoZSBxdWFsaXR5IG9mIHRoZSBKUEVHIGltYWdlICgwIHRvIDEpLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhbiB7QGxpbmsgQXJyYXlCdWZmZXJ9LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYmxvYlRvSnBlZ0FycmF5QnVmZmVyKGJsb2I6IEJsb2IsIGpwZWdRdWFsaXR5OiBudW1iZXIpOiBQcm9taXNlPEFycmF5QnVmZmVyPiB7XG4gIGNvbnN0IGRhdGFVcmwgPSBhd2FpdCBibG9iVG9EYXRhVXJsKGJsb2IpO1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgIGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBoYW5kbGVMb2FkKTtcbiAgICBpbWFnZS5zcmMgPSBkYXRhVXJsO1xuXG4gICAgZnVuY3Rpb24gaGFuZGxlTG9hZCgpOiB2b2lkIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbm1kL3ByZWZlci1jcmVhdGUtZWwgLS0gQWdub3N0aWMgbW9kdWxlLlxuICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICBhc3NlcnROb25OdWxsYWJsZShjb250ZXh0LCAnQ291bGQgbm90IGdldCAyRCBjb250ZXh0LicpO1xuICAgICAgY29uc3QgaW1hZ2VXaWR0aCA9IGltYWdlLndpZHRoO1xuICAgICAgY29uc3QgaW1hZ2VIZWlnaHQgPSBpbWFnZS5oZWlnaHQ7XG5cbiAgICAgIGNhbnZhcy53aWR0aCA9IGltYWdlV2lkdGg7XG4gICAgICBjYW52YXMuaGVpZ2h0ID0gaW1hZ2VIZWlnaHQ7XG5cbiAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gJyNmZmYnO1xuICAgICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCk7XG4gICAgICBjb250ZXh0LnNhdmUoKTtcblxuICAgICAgY29uc3QgSEFMRiA9IDAuNTtcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKGltYWdlV2lkdGggKiBIQUxGLCBpbWFnZUhlaWdodCAqIEhBTEYpO1xuICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDAsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCAtaW1hZ2VXaWR0aCAqIEhBTEYsIC1pbWFnZUhlaWdodCAqIEhBTEYsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KTtcbiAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xuXG4gICAgICBjb25zdCBqcGVnRGF0YVVybCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnLCBqcGVnUXVhbGl0eSk7XG4gICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGRhdGFVcmxUb0FycmF5QnVmZmVyKGpwZWdEYXRhVXJsKTtcbiAgICAgIHJlc29sdmUoYXJyYXlCdWZmZXIpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcgdG8gYW4ge0BsaW5rIEFycmF5QnVmZmVyfS5cbiAqXG4gKiBAcGFyYW0gZGF0YVVybCAtIFRoZSBkYXRhIFVSTCB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGRlY29kZWQgQXJyYXlCdWZmZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRhVXJsVG9BcnJheUJ1ZmZlcihkYXRhVXJsOiBzdHJpbmcpOiBBcnJheUJ1ZmZlciB7XG4gIGNvbnN0IHBhcnRzID0gZGF0YVVybC5zcGxpdCgnO2Jhc2U2NCwnKTtcbiAgY29uc3QgYmFzZTY0ID0gcGFydHNbMV07XG4gIGlmICghYmFzZTY0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRhdGEgVVJMJyk7XG4gIH1cblxuICBjb25zdCByYXcgPSBhdG9iKGJhc2U2NCk7XG4gIGNvbnN0IHJhd0xlbmd0aCA9IHJhdy5sZW5ndGg7XG5cbiAgY29uc3QgdUludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KHJhd0xlbmd0aCk7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJhd0xlbmd0aDsgaW5kZXgrKykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1jb2RlLXBvaW50IC0tIGByYXdgIGlzIGEgYmluYXJ5IHN0cmluZywgb25lIGJ5dGUgcGVyIGNvZGUgdW5pdC4gYGNvZGVQb2ludEF0YCB3b3VsZCBjb21iaW5lIGEgc3Vycm9nYXRlIHBhaXIgaW50byBhIHZhbHVlIGFib3ZlIDI1NSBhbmQgY29uc3VtZSB0d28gcG9zaXRpb25zLCB3aGljaCBpcyBleGFjdGx5IHRoZSB3cm9uZyByZWFkaW5nIGhlcmUuXG4gICAgdUludDhBcnJheVtpbmRleF0gPSByYXcuY2hhckNvZGVBdChpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHVJbnQ4QXJyYXkuYnVmZmVyO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGdpdmVuIGZpbGUgaXMgYW4gaW1hZ2UuXG4gKlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgZmlsZSBpcyBhbiBpbWFnZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0ltYWdlRmlsZShmaWxlOiBGaWxlKTogYm9vbGVhbiB7XG4gIHJldHVybiBmaWxlLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1BLFNBQVMseUJBQXlCO0FBUWxDLGVBQXNCLGtCQUFrQixNQUFrQztBQUN4RSxTQUFPLE1BQU0sS0FBSyxZQUFZO0FBQ2hDO0FBUUEsZUFBc0IsY0FBYyxNQUE2QjtBQUMvRCxTQUFPLE1BQU0sSUFBSSxRQUFRLENBQUMsWUFBWTtBQUNwQyxVQUFNLFNBQVMsSUFBSSxXQUFXO0FBQzlCLFdBQU8saUJBQWlCLFdBQVcsYUFBYTtBQUNoRCxXQUFPLGNBQWMsSUFBSTtBQUV6QixhQUFTLGdCQUFzQjtBQUM3QixjQUFRLE9BQU8sTUFBZ0I7QUFBQSxJQUNqQztBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBU0EsZUFBc0Isc0JBQXNCLE1BQVksYUFBMkM7QUFDakcsUUFBTSxVQUFVLE1BQU0sY0FBYyxJQUFJO0FBQ3hDLFNBQU8sSUFBSSxRQUFRLENBQUMsWUFBWTtBQUM5QixVQUFNLFFBQVEsSUFBSSxNQUFNO0FBQ3hCLFVBQU0saUJBQWlCLFFBQVEsVUFBVTtBQUN6QyxVQUFNLE1BQU07QUFFWixhQUFTLGFBQW1CO0FBRTFCLFlBQU0sU0FBUyxTQUFTLGNBQWMsUUFBUTtBQUM5QyxZQUFNLFVBQVUsT0FBTyxXQUFXLElBQUk7QUFDdEMsd0JBQWtCLFNBQVMsMkJBQTJCO0FBQ3RELFlBQU0sYUFBYSxNQUFNO0FBQ3pCLFlBQU0sY0FBYyxNQUFNO0FBRTFCLGFBQU8sUUFBUTtBQUNmLGFBQU8sU0FBUztBQUVoQixjQUFRLFlBQVk7QUFDcEIsY0FBUSxTQUFTLEdBQUcsR0FBRyxZQUFZLFdBQVc7QUFDOUMsY0FBUSxLQUFLO0FBRWIsWUFBTSxPQUFPO0FBQ2IsY0FBUSxVQUFVLGFBQWEsTUFBTSxjQUFjLElBQUk7QUFDdkQsY0FBUSxVQUFVLE9BQU8sR0FBRyxHQUFHLFlBQVksYUFBYSxDQUFDLGFBQWEsTUFBTSxDQUFDLGNBQWMsTUFBTSxZQUFZLFdBQVc7QUFDeEgsY0FBUSxRQUFRO0FBRWhCLFlBQU0sY0FBYyxPQUFPLFVBQVUsY0FBYyxXQUFXO0FBQzlELFlBQU0sY0FBYyxxQkFBcUIsV0FBVztBQUNwRCxjQUFRLFdBQVc7QUFBQSxJQUNyQjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBUU8sU0FBUyxxQkFBcUIsU0FBOEI7QUFDakUsUUFBTSxRQUFRLFFBQVEsTUFBTSxVQUFVO0FBQ3RDLFFBQU0sU0FBUyxNQUFNLENBQUM7QUFDdEIsTUFBSSxDQUFDLFFBQVE7QUFDWCxVQUFNLElBQUksTUFBTSxrQkFBa0I7QUFBQSxFQUNwQztBQUVBLFFBQU0sTUFBTSxLQUFLLE1BQU07QUFDdkIsUUFBTSxZQUFZLElBQUk7QUFFdEIsUUFBTSxhQUFhLElBQUksV0FBVyxTQUFTO0FBRTNDLFdBQVMsUUFBUSxHQUFHLFFBQVEsV0FBVyxTQUFTO0FBRTlDLGVBQVcsS0FBSyxJQUFJLElBQUksV0FBVyxLQUFLO0FBQUEsRUFDMUM7QUFDQSxTQUFPLFdBQVc7QUFDcEI7QUFRTyxTQUFTLFlBQVksTUFBcUI7QUFDL0MsU0FBTyxLQUFLLEtBQUssV0FBVyxRQUFRO0FBQ3RDOyIsCiAgIm5hbWVzIjogW10KfQo=
95
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Jsb2IudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgQmxvYiBvYmplY3RzLlxuICovXG5cbmltcG9ydCB7XG4gIGV4dHJhY3RKcGVnTWV0YWRhdGFTZWdtZW50cyxcbiAgaW5qZWN0SnBlZ01ldGFkYXRhU2VnbWVudHNcbn0gZnJvbSAnLi9qcGVnLW1ldGFkYXRhLnRzJztcbmltcG9ydCB7IGFzc2VydE5vbk51bGxhYmxlIH0gZnJvbSAnLi90eXBlLWd1YXJkcy50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGJsb2JUb0pwZWdBcnJheUJ1ZmZlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmxvYlRvSnBlZ0FycmF5QnVmZmVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNhcnJ5IHRoZSBzb3VyY2UgaW1hZ2UncyBtZXRhZGF0YSBzZWdtZW50cyAoRVhJRiwgR1BTLCBYTVAsIElDQyBwcm9maWxlKSBpbnRvIHRoZVxuICAgKiByZS1lbmNvZGVkIEpQRUcuIE9ubHkgaGFzIGFuIGVmZmVjdCB3aGVuIHRoZSBzb3VyY2UgaXMgYSBKUEVHLiBEZWZhdWx0cyB0byBgZmFsc2VgLCB3aGljaCBpcyB0aGVcbiAgICogYmVoYXZpb3IgYSBjYW52YXMgcmUtZW5jb2RlIGhhcyBhbHdheXMgaGFkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUHJlc2VydmVNZXRhZGF0YT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSB7QGxpbmsgQmxvYn0gb2JqZWN0IHRvIGFuIHtAbGluayBBcnJheUJ1ZmZlcn0uXG4gKlxuICogQHBhcmFtIGJsb2IgLSBUaGUgQmxvYiBvYmplY3QgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYW4ge0BsaW5rIEFycmF5QnVmZmVyfS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb0FycmF5QnVmZmVyKGJsb2I6IEJsb2IpOiBQcm9taXNlPEFycmF5QnVmZmVyPiB7XG4gIHJldHVybiBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSB7QGxpbmsgQmxvYn0gb2JqZWN0IHRvIGEgZGF0YSBVUkwuXG4gKlxuICogQHBhcmFtIGJsb2IgLSBUaGUgQmxvYiBvYmplY3QgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBkYXRhIFVSTC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb0RhdGFVcmwoYmxvYjogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlbmQnLCBoYW5kbGVMb2FkRW5kKTtcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcblxuICAgIGZ1bmN0aW9uIGhhbmRsZUxvYWRFbmQoKTogdm9pZCB7XG4gICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEge0BsaW5rIEJsb2J9IG9iamVjdCB0byBhIEpQRUcgQXJyYXlCdWZmZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHF1YWxpdHkuXG4gKlxuICogVGhlIGNvbnZlcnNpb24gaXMgYSBjYW52YXMgcmUtZW5jb2RlLCB3aGljaCBrZWVwcyBvbmx5IHRoZSBwaXhlbHMgXHUyMDE0IEVYSUYsIEdQUywgWE1QIGFuZCB0aGUgSUNDXG4gKiBwcm9maWxlIGFyZSBkcm9wcGVkIGJ5IGNvbnN0cnVjdGlvbi4gUGFzcyB7QGxpbmsgQmxvYlRvSnBlZ0FycmF5QnVmZmVyT3B0aW9ucy5zaG91bGRQcmVzZXJ2ZU1ldGFkYXRhfVxuICogdG8gY2FycnkgdGhvc2Ugc2VnbWVudHMgYWNyb3NzIGZyb20gdGhlIHNvdXJjZSwgd2hpY2ggd29ya3Mgb25seSB3aGVuIHRoZSBzb3VyY2UgaXMgaXRzZWxmIGEgSlBFRzpcbiAqIG5vdGhpbmcgZWxzZSBzdG9yZXMgdGhlbSBpbiBhIGZvcm0gdGhhdCBjYW4gYmUgY29waWVkIHZlcmJhdGltLlxuICpcbiAqIEBwYXJhbSBibG9iIC0gVGhlIEJsb2Igb2JqZWN0IHRvIGNvbnZlcnQuXG4gKiBAcGFyYW0ganBlZ1F1YWxpdHkgLSBUaGUgcXVhbGl0eSBvZiB0aGUgSlBFRyBpbWFnZSAoMCB0byAxKS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29udmVyc2lvbiBvcHRpb25zLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhbiB7QGxpbmsgQXJyYXlCdWZmZXJ9LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYmxvYlRvSnBlZ0FycmF5QnVmZmVyKGJsb2I6IEJsb2IsIGpwZWdRdWFsaXR5OiBudW1iZXIsIG9wdGlvbnM/OiBCbG9iVG9KcGVnQXJyYXlCdWZmZXJPcHRpb25zKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xuICBjb25zdCBzb3VyY2VTZWdtZW50cyA9IG9wdGlvbnM/LnNob3VsZFByZXNlcnZlTWV0YWRhdGFcbiAgICA/IGV4dHJhY3RKcGVnTWV0YWRhdGFTZWdtZW50cyhuZXcgVWludDhBcnJheShhd2FpdCBibG9iLmFycmF5QnVmZmVyKCkpKVxuICAgIDogW107XG4gIGNvbnN0IGRhdGFVcmwgPSBhd2FpdCBibG9iVG9EYXRhVXJsKGJsb2IpO1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgIGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBoYW5kbGVMb2FkKTtcbiAgICBpbWFnZS5zcmMgPSBkYXRhVXJsO1xuXG4gICAgZnVuY3Rpb24gaGFuZGxlTG9hZCgpOiB2b2lkIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbm1kL3ByZWZlci1jcmVhdGUtZWwgLS0gQWdub3N0aWMgbW9kdWxlLlxuICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICBhc3NlcnROb25OdWxsYWJsZShjb250ZXh0LCAnQ291bGQgbm90IGdldCAyRCBjb250ZXh0LicpO1xuICAgICAgY29uc3QgaW1hZ2VXaWR0aCA9IGltYWdlLndpZHRoO1xuICAgICAgY29uc3QgaW1hZ2VIZWlnaHQgPSBpbWFnZS5oZWlnaHQ7XG5cbiAgICAgIGNhbnZhcy53aWR0aCA9IGltYWdlV2lkdGg7XG4gICAgICBjYW52YXMuaGVpZ2h0ID0gaW1hZ2VIZWlnaHQ7XG5cbiAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gJyNmZmYnO1xuICAgICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCk7XG4gICAgICBjb250ZXh0LnNhdmUoKTtcblxuICAgICAgY29uc3QgSEFMRiA9IDAuNTtcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKGltYWdlV2lkdGggKiBIQUxGLCBpbWFnZUhlaWdodCAqIEhBTEYpO1xuICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDAsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCAtaW1hZ2VXaWR0aCAqIEhBTEYsIC1pbWFnZUhlaWdodCAqIEhBTEYsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KTtcbiAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xuXG4gICAgICBjb25zdCBqcGVnRGF0YVVybCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnLCBqcGVnUXVhbGl0eSk7XG4gICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGRhdGFVcmxUb0FycmF5QnVmZmVyKGpwZWdEYXRhVXJsKTtcbiAgICAgIGNvbnN0IHdpdGhNZXRhZGF0YSA9IGluamVjdEpwZWdNZXRhZGF0YVNlZ21lbnRzKG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSwgc291cmNlU2VnbWVudHMpO1xuICAgICAgcmVzb2x2ZSh3aXRoTWV0YWRhdGEuYnVmZmVyIGFzIEFycmF5QnVmZmVyKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgYmFzZTY0IGVuY29kZWQgc3RyaW5nIHRvIGFuIHtAbGluayBBcnJheUJ1ZmZlcn0uXG4gKlxuICogQHBhcmFtIGRhdGFVcmwgLSBUaGUgZGF0YSBVUkwgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBkZWNvZGVkIEFycmF5QnVmZmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0YVVybFRvQXJyYXlCdWZmZXIoZGF0YVVybDogc3RyaW5nKTogQXJyYXlCdWZmZXIge1xuICBjb25zdCBwYXJ0cyA9IGRhdGFVcmwuc3BsaXQoJztiYXNlNjQsJyk7XG4gIGNvbnN0IGJhc2U2NCA9IHBhcnRzWzFdO1xuICBpZiAoIWJhc2U2NCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkYXRhIFVSTCcpO1xuICB9XG5cbiAgY29uc3QgcmF3ID0gYXRvYihiYXNlNjQpO1xuICBjb25zdCByYXdMZW5ndGggPSByYXcubGVuZ3RoO1xuXG4gIGNvbnN0IHVJbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShyYXdMZW5ndGgpO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCByYXdMZW5ndGg7IGluZGV4KyspIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItY29kZS1wb2ludCAtLSBgcmF3YCBpcyBhIGJpbmFyeSBzdHJpbmcsIG9uZSBieXRlIHBlciBjb2RlIHVuaXQuIGBjb2RlUG9pbnRBdGAgd291bGQgY29tYmluZSBhIHN1cnJvZ2F0ZSBwYWlyIGludG8gYSB2YWx1ZSBhYm92ZSAyNTUgYW5kIGNvbnN1bWUgdHdvIHBvc2l0aW9ucywgd2hpY2ggaXMgZXhhY3RseSB0aGUgd3JvbmcgcmVhZGluZyBoZXJlLlxuICAgIHVJbnQ4QXJyYXlbaW5kZXhdID0gcmF3LmNoYXJDb2RlQXQoaW5kZXgpO1xuICB9XG4gIHJldHVybiB1SW50OEFycmF5LmJ1ZmZlcjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBnaXZlbiBmaWxlIGlzIGFuIGltYWdlLlxuICpcbiAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGZpbGUgaXMgYW4gaW1hZ2UsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJbWFnZUZpbGUoZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMseUJBQXlCO0FBb0JsQyxlQUFzQixrQkFBa0IsTUFBa0M7QUFDeEUsU0FBTyxNQUFNLEtBQUssWUFBWTtBQUNoQztBQVFBLGVBQXNCLGNBQWMsTUFBNkI7QUFDL0QsU0FBTyxNQUFNLElBQUksUUFBUSxDQUFDLFlBQVk7QUFDcEMsVUFBTSxTQUFTLElBQUksV0FBVztBQUM5QixXQUFPLGlCQUFpQixXQUFXLGFBQWE7QUFDaEQsV0FBTyxjQUFjLElBQUk7QUFFekIsYUFBUyxnQkFBc0I7QUFDN0IsY0FBUSxPQUFPLE1BQWdCO0FBQUEsSUFDakM7QUFBQSxFQUNGLENBQUM7QUFDSDtBQWVBLGVBQXNCLHNCQUFzQixNQUFZLGFBQXFCLFNBQThEO0FBQ3pJLFFBQU0saUJBQWlCLFNBQVMseUJBQzVCLDRCQUE0QixJQUFJLFdBQVcsTUFBTSxLQUFLLFlBQVksQ0FBQyxDQUFDLElBQ3BFLENBQUM7QUFDTCxRQUFNLFVBQVUsTUFBTSxjQUFjLElBQUk7QUFDeEMsU0FBTyxJQUFJLFFBQVEsQ0FBQyxZQUFZO0FBQzlCLFVBQU0sUUFBUSxJQUFJLE1BQU07QUFDeEIsVUFBTSxpQkFBaUIsUUFBUSxVQUFVO0FBQ3pDLFVBQU0sTUFBTTtBQUVaLGFBQVMsYUFBbUI7QUFFMUIsWUFBTSxTQUFTLFNBQVMsY0FBYyxRQUFRO0FBQzlDLFlBQU0sVUFBVSxPQUFPLFdBQVcsSUFBSTtBQUN0Qyx3QkFBa0IsU0FBUywyQkFBMkI7QUFDdEQsWUFBTSxhQUFhLE1BQU07QUFDekIsWUFBTSxjQUFjLE1BQU07QUFFMUIsYUFBTyxRQUFRO0FBQ2YsYUFBTyxTQUFTO0FBRWhCLGNBQVEsWUFBWTtBQUNwQixjQUFRLFNBQVMsR0FBRyxHQUFHLFlBQVksV0FBVztBQUM5QyxjQUFRLEtBQUs7QUFFYixZQUFNLE9BQU87QUFDYixjQUFRLFVBQVUsYUFBYSxNQUFNLGNBQWMsSUFBSTtBQUN2RCxjQUFRLFVBQVUsT0FBTyxHQUFHLEdBQUcsWUFBWSxhQUFhLENBQUMsYUFBYSxNQUFNLENBQUMsY0FBYyxNQUFNLFlBQVksV0FBVztBQUN4SCxjQUFRLFFBQVE7QUFFaEIsWUFBTSxjQUFjLE9BQU8sVUFBVSxjQUFjLFdBQVc7QUFDOUQsWUFBTSxjQUFjLHFCQUFxQixXQUFXO0FBQ3BELFlBQU0sZUFBZSwyQkFBMkIsSUFBSSxXQUFXLFdBQVcsR0FBRyxjQUFjO0FBQzNGLGNBQVEsYUFBYSxNQUFxQjtBQUFBLElBQzVDO0FBQUEsRUFDRixDQUFDO0FBQ0g7QUFRTyxTQUFTLHFCQUFxQixTQUE4QjtBQUNqRSxRQUFNLFFBQVEsUUFBUSxNQUFNLFVBQVU7QUFDdEMsUUFBTSxTQUFTLE1BQU0sQ0FBQztBQUN0QixNQUFJLENBQUMsUUFBUTtBQUNYLFVBQU0sSUFBSSxNQUFNLGtCQUFrQjtBQUFBLEVBQ3BDO0FBRUEsUUFBTSxNQUFNLEtBQUssTUFBTTtBQUN2QixRQUFNLFlBQVksSUFBSTtBQUV0QixRQUFNLGFBQWEsSUFBSSxXQUFXLFNBQVM7QUFFM0MsV0FBUyxRQUFRLEdBQUcsUUFBUSxXQUFXLFNBQVM7QUFFOUMsZUFBVyxLQUFLLElBQUksSUFBSSxXQUFXLEtBQUs7QUFBQSxFQUMxQztBQUNBLFNBQU8sV0FBVztBQUNwQjtBQVFPLFNBQVMsWUFBWSxNQUFxQjtBQUMvQyxTQUFPLEtBQUssS0FBSyxXQUFXLFFBQVE7QUFDdEM7IiwKICAibmFtZXMiOiBbXQp9Cg==