footprintjs 10.2.0 → 10.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/esm/index.d.ts +1 -0
  2. package/dist/esm/index.js +1 -1
  3. package/dist/esm/lib/attempt/category.d.ts +4 -2
  4. package/dist/esm/lib/attempt/category.js +18 -11
  5. package/dist/esm/lib/attempt/errorField.d.ts +2 -0
  6. package/dist/esm/lib/attempt/errorField.js +32 -0
  7. package/dist/esm/lib/capture/nativeCoverage.d.ts +56 -0
  8. package/dist/esm/lib/capture/nativeCoverage.js +102 -0
  9. package/dist/esm/lib/memory/StageContext.d.ts +5 -0
  10. package/dist/esm/lib/memory/StageContext.js +27 -6
  11. package/dist/esm/lib/memory/attention.d.ts +2 -0
  12. package/dist/esm/lib/memory/attention.js +12 -5
  13. package/dist/esm/lib/recorder/ControlDepRecorder.d.ts +12 -1
  14. package/dist/esm/lib/recorder/ControlDepRecorder.js +23 -1
  15. package/dist/esm/lib/recorder/snapshot.d.ts +1 -1
  16. package/dist/esm/lib/recorder/snapshot.js +7 -2
  17. package/dist/esm/lib/runner/ExecutionRuntime.d.ts +9 -0
  18. package/dist/esm/lib/runner/ExecutionRuntime.js +13 -1
  19. package/dist/esm/lib/runner/FlowChartExecutor.d.ts +2 -0
  20. package/dist/esm/lib/runner/FlowChartExecutor.js +31 -2
  21. package/dist/esm/lib/runner/attach.js +4 -2
  22. package/dist/esm/lib/runner/options.d.ts +3 -0
  23. package/dist/esm/lib/runner/options.js +5 -1
  24. package/dist/esm/lib/runner/snapshot.d.ts +3 -1
  25. package/dist/esm/lib/runner/snapshot.js +35 -4
  26. package/dist/esm/lib/scope/ScopeFacade.js +4 -2
  27. package/dist/esm/lib/scope/runtime.d.ts +2 -0
  28. package/dist/esm/lib/scope/runtime.js +9 -1
  29. package/dist/index.js +1 -1
  30. package/dist/lib/attempt/category.js +18 -11
  31. package/dist/lib/attempt/errorField.js +36 -0
  32. package/dist/lib/capture/nativeCoverage.js +107 -0
  33. package/dist/lib/memory/StageContext.js +27 -6
  34. package/dist/lib/memory/attention.js +12 -5
  35. package/dist/lib/recorder/ControlDepRecorder.js +23 -1
  36. package/dist/lib/recorder/snapshot.js +7 -2
  37. package/dist/lib/runner/ExecutionRuntime.js +13 -1
  38. package/dist/lib/runner/FlowChartExecutor.js +34 -5
  39. package/dist/lib/runner/attach.js +3 -1
  40. package/dist/lib/runner/options.js +5 -1
  41. package/dist/lib/runner/snapshot.js +35 -4
  42. package/dist/lib/scope/ScopeFacade.js +3 -1
  43. package/dist/lib/scope/runtime.js +12 -2
  44. package/dist/types/index.d.ts +1 -0
  45. package/dist/types/lib/attempt/category.d.ts +4 -2
  46. package/dist/types/lib/attempt/errorField.d.ts +2 -0
  47. package/dist/types/lib/capture/nativeCoverage.d.ts +56 -0
  48. package/dist/types/lib/memory/StageContext.d.ts +5 -0
  49. package/dist/types/lib/memory/attention.d.ts +2 -0
  50. package/dist/types/lib/recorder/ControlDepRecorder.d.ts +12 -1
  51. package/dist/types/lib/recorder/snapshot.d.ts +1 -1
  52. package/dist/types/lib/runner/ExecutionRuntime.d.ts +9 -0
  53. package/dist/types/lib/runner/FlowChartExecutor.d.ts +2 -0
  54. package/dist/types/lib/runner/options.d.ts +3 -0
  55. package/dist/types/lib/runner/snapshot.d.ts +3 -1
  56. package/dist/types/lib/scope/runtime.d.ts +2 -0
  57. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -148,4 +148,4 @@ Object.defineProperty(exports, "enableDevMode", { enumerable: true, get: functio
148
148
  Object.defineProperty(exports, "isDevMode", { enumerable: true, get: function () { return devMode_js_1.isDevMode; } });
149
149
  var stringifySnapshot_js_1 = require("./lib/runner/stringifySnapshot.js");
150
150
  Object.defineProperty(exports, "stringifySnapshot", { enumerable: true, get: function () { return stringifySnapshot_js_1.stringifySnapshot; } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHOzs7QUFTSCw0QkFBNEI7QUFDNUIsbURBQXdGO0FBQS9FLHFHQUFBLFNBQVMsT0FBQTtBQUFFLDRHQUFBLGdCQUFnQixPQUFBO0FBQUUsNkdBQUEsaUJBQWlCLE9BQUE7QUFzQ3ZELGtEQUFtRDtBQUExQyxzR0FBQSxVQUFVLE9BQUE7QUFRbkIsNEJBQTRCO0FBQzVCLCtDQUEyQztBQUFsQyx5R0FBQSxTQUFTLE9BQUE7QUFvQmxCLG1DQUFtQztBQUNuQyxrREFBdUQ7QUFBOUMsa0dBQUEsTUFBTSxPQUFBO0FBQUUsa0dBQUEsTUFBTSxPQUFBO0FBaUR2Qjs7Ozs7O0dBTUc7QUFDSCxtREFBcUg7QUFBNUcsbUdBQUEsT0FBTyxPQUFBO0FBQUUsK0dBQUEsbUJBQW1CLE9BQUE7QUFBRSx5R0FBQSxhQUFhLE9BQUE7QUFBRSxzR0FBQSxVQUFVLE9BQUE7QUFBRSw4R0FBQSxrQkFBa0IsT0FBQTtBQVdwRixtREFBK0Y7QUFBdEYsNkdBQUEsaUJBQWlCLE9BQUE7QUFBRSw0R0FBQSxnQkFBZ0IsT0FBQTtBQUFFLDRHQUFBLGdCQUFnQixPQUFBO0FBMEI5RCxvQkFBb0I7QUFDcEIsa0RBQXdEO0FBQS9DLDJHQUFBLGVBQWUsT0FBQTtBQVF4QixvQkFBb0I7QUFDcEIsa0RBQTBEO0FBQWpELDZHQUFBLGlCQUFpQixPQUFBO0FBRTFCLG9CQUFvQjtBQUNwQixrREFBbUQ7QUFBMUMsc0dBQUEsVUFBVSxPQUFBO0FBcUJuQiwrQkFBK0I7QUFDL0IsaURBQXNEO0FBQTdDLDBHQUFBLGNBQWMsT0FBQTtBQUV2QiwrQkFBK0I7QUFDL0Isa0RBQXFEO0FBQTVDLDBHQUFBLGFBQWEsT0FBQTtBQUV0QixvQ0FBb0M7QUFDcEMscURBQTREO0FBQW5ELDhHQUFBLGlCQUFpQixPQUFBO0FBbUMxQixxRUFBcUU7QUFDckUscURBS2lDO0FBSi9CLG1IQUFBLHNCQUFzQixPQUFBO0FBQ3RCLG1IQUFBLHNCQUFzQixPQUFBO0FBQ3RCLCtHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLHdHQUFBLFdBQVcsT0FBQTtBQW1EYiwrQkFBK0I7QUFDL0IsbURBQThEO0FBQXJELGtIQUFBLHFCQUFxQixPQUFBO0FBSzlCLCtCQUErQjtBQUMvQixtREFBNkQ7QUFBcEQsaUhBQUEsb0JBQW9CLE9BQUE7QUFFN0IsK0JBQStCO0FBQy9CLG1EQUFzRTtBQUE3RCwwSEFBQSw2QkFBNkIsT0FBQTtBQUV0QywrQkFBK0I7QUFDL0IsbURBQXVFO0FBQTlELDJIQUFBLDhCQUE4QixPQUFBO0FBRXZDLCtCQUErQjtBQUMvQixtREFBeUU7QUFBaEUsNkhBQUEsZ0NBQWdDLE9BQUE7QUFFekMsK0JBQStCO0FBQy9CLG1EQUFpRTtBQUF4RCxxSEFBQSx3QkFBd0IsT0FBQTtBQUVqQywrQkFBK0I7QUFDL0IsbURBQXNFO0FBQTdELDBIQUFBLDZCQUE2QixPQUFBO0FBRXRDLCtCQUErQjtBQUMvQixtREFBb0U7QUFBM0Qsd0hBQUEsMkJBQTJCLE9BQUE7QUFFcEMsK0JBQStCO0FBQy9CLG1EQUFzRTtBQUE3RCwwSEFBQSw2QkFBNkIsT0FBQTtBQW1CdEMsdUNBQXVDO0FBQ3ZDLG1EQUE2RTtBQUFwRSwrR0FBQSxrQkFBa0IsT0FBQTtBQUFFLDZHQUFBLGdCQUFnQixPQUFBO0FBRTdDLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsK0VBQStFO0FBRS9FLDhCQUE4QjtBQUM5QixxREFBNEQ7QUFBbkQsOEdBQUEsaUJBQWlCLE9BQUE7QUEwQjFCLDZCQUE2QjtBQUM3QixrREFBaUQ7QUFBeEMsc0dBQUEsU0FBUyxPQUFBO0FBZ0VsQixzQ0FBc0M7QUFDdEMsbURBQTJFO0FBQWxFLHlHQUFBLFlBQVksT0FBQTtBQUFFLDBHQUFBLGFBQWEsT0FBQTtBQUFFLGtHQUFBLEtBQUssT0FBQTtBQUUzQyxzQ0FBc0M7QUFDdEMsbURBQXFHO0FBQTVGLGlIQUFBLG9CQUFvQixPQUFBO0FBQUUsa0hBQUEscUJBQXFCLE9BQUE7QUFBRSw0R0FBQSxlQUFlLE9BQUE7QUFTckUsZ0NBQWdDO0FBQ2hDLG1EQUEwRTtBQUFqRSw2R0FBQSxnQkFBZ0IsT0FBQTtBQUFFLDRHQUFBLGVBQWUsT0FBQTtBQUUxQywrRUFBK0U7QUFDL0UsaURBQWlEO0FBQ2pELCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7R0FXRztBQUNILCtDQUE0RTtBQUFuRSw0R0FBQSxjQUFjLE9BQUE7QUFBRSwyR0FBQSxhQUFhLE9BQUE7QUFBRSx1R0FBQSxTQUFTLE9BQUE7QUFTakQsMEVBQXNFO0FBQTdELHlIQUFBLGlCQUFpQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb290UHJpbnQg4oCUIFB1YmxpYyBBUEkgKHYzKVxuICpcbiAqIFRoZSBmbG93Y2hhcnQgcGF0dGVybiBmb3IgYmFja2VuZCBjb2RlLlxuICogQnVpbGQg4oaSIFJ1biDihpIgT2JzZXJ2ZS5cbiAqXG4gKiAqKlRoZSBjb21tb24gaW1wb3J0IHBhdGhzOioqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZmxvd0NoYXJ0LCBkZWNpZGUsIG5hcnJhdGl2ZSB9IGZyb20gJ2Zvb3RwcmludGpzJzsgICAgICAgICAgIC8vIG1haW4g4oCUIHN0YXJ0IGhlcmVcbiAqIGltcG9ydCB7IG1ldHJpY3MsIGRlYnVnLCBtYW5pZmVzdCB9ICAgICBmcm9tICdmb290cHJpbnRqcy9yZWNvcmRlcnMnOyAvLyByZWNvcmRlciBmYWN0b3JpZXNcbiAqIGltcG9ydCB7IHN0YXRlQXQsIGNhdXNhbENoYWluIH0gZnJvbSAnZm9vdHRyYWNlJzsgICAgIC8vIHJlYWQgYSBmaW5pc2hlZCBydW5cbiAqIGltcG9ydCB7IFJlY29yZEZyYW1lLCBFdmVudExvZyB9IGZyb20gJ2Zvb3R0cmFjZS93cml0ZSc7ICAgICAvLyB3cml0ZSBhIHJlY29yZCB5b3Vyc2VsZlxuICogaW1wb3J0IHsgU3RhZ2VDb250ZXh0IH0gICAgICAgICAgICAgICAgIGZyb20gJ2Zvb3RwcmludGpzL2FkdmFuY2VkJzsgIC8vIGVuZ2luZSBpbnRlcm5hbHNcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRdWljayBTdGFydCDigJQgRXZlcnl0aGluZyB5b3UgbmVlZCBmb3IgOTAlIG9mIHVzZSBjYXNlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydCwgU3RhZ2VGdW5jdGlvbiBhcyBTdGFnZUhhbmRsZXIsIFN0cmVhbUhhbmRsZXJzIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB7IGZsb3dDaGFydCwgRmxvd0NoYXJ0QnVpbGRlciwgZmxvd0NoYXJ0U2VsZWN0b3IgfSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnRcbiAqXG4gKiBDb25maWcgZm9yIGAuYWRkUGFyYWxsZWxGb3JFYWNoKClgIOKAlCBvbmUgYnJhbmNoIHBlciBpdGVtLCBicmFuY2ggY291bnRcbiAqIGRlY2lkZWQgYXQgcnVuIHRpbWUgZnJvbSB0aGUgcGF5bG9hZC4gYG1heEJyYW5jaGVzYCBhbmQgYGludG9gIGFyZSByZXF1aXJlZFxuICogb24gcHVycG9zZSAoc2VlIGRvY3MvZGVzaWduL2V4ZWN1dGlvbi1jb250cm9sLm1kKS5cbiAqL1xuZXhwb3J0IHR5cGUgeyBCcmFuY2hDaGFydCwgUGFyYWxsZWxGb3JFYWNoQ29uZmlnLCBSZXRyeVBvbGljeSB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0IOKAlCBidWlsZC10aW1lIG9ic2VydmVyICh0d2luIG9mIEZsb3dSZWNvcmRlcikgKi9cbmV4cG9ydCB0eXBlIHtcbiAgU3RydWN0dXJlRGVjaWRlckNvbXBsZXRlRXZlbnQsXG4gIFN0cnVjdHVyZUVkZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVFZGdlS2luZCxcbiAgU3RydWN0dXJlTG9vcEVkZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVSZWNvcmRlcixcbiAgU3RydWN0dXJlU3RhZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVTdGFnZVRhZ2dlZEV2ZW50LFxuICBTdHJ1Y3R1cmVTdWJmbG93TW91bnRlZEV2ZW50LFxufSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgVGltZSBCdWRnZXRcbiAqXG4gKiBgdGltZUJ1ZGdldChjaGFydClgIOKAlCB0aGUgc2xvd2VzdCBhIGNoYXJ0IGNhbiB0YWtlLCBmcm9tIGl0cyBkZWNsYXJlZCByZXRyeSBwb2xpY2llcyAoYGF0dGVtcHRzIMOXIHRpbWVvdXRNc2AgcGx1c1xuICogdGhlIHdhaXRzLCBzdW1tZWQgYWxvbmcgdGhlIHNsb3dlc3QgcGF0aCksIGFuZCBldmVyeSBzdGFnZSB0aGF0IG1ha2VzIGEgcGF0aCB1bmJvdW5kZWQsIGJ5IG5hbWUuIGAuYnVkZ2V0KG1zKWBcbiAqIGRlY2xhcmVzIHRoZSBjYWxsZXIncyBjb250cmFjdDsgYGJ1aWxkKClgIHJlZnVzZXMgYSBjaGFydCB0aGF0IGNhbm5vdCBrZWVwIGl0LiBBbHNvIGBjaGFydC50aW1lQnVkZ2V0KClgLlxuICovXG5leHBvcnQgdHlwZSB7XG4gIEJ1ZGdldEFzc3VtcHRpb25zLFxuICBCdWRnZXRTdGVwLFxuICBUaW1lQnVkZ2V0T3B0aW9ucyxcbiAgVGltZUJ1ZGdldFJlcG9ydCxcbiAgVW5ib3VuZGVkUmVhc29uLFxuICBVbmJvdW5kZWRTdGFnZSxcbn0gZnJvbSAnLi9saWIvYnVkZ2V0L2luZGV4LmpzJztcbmV4cG9ydCB7IHRpbWVCdWRnZXQgfSBmcm9tICcuL2xpYi9idWRnZXQvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFR5cGVkU3RhZ2VGdW5jdGlvbiB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFNjb3BlTWV0aG9kcywgVHlwZWRTY29wZSB9IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHsgbmFycmF0aXZlIH0gZnJvbSAnLi9yZWNvcmRlcnMuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZWNpc2lvbiBCcmFuY2hpbmcg4oCUIGRlY2lkZSgpIC8gc2VsZWN0KCkgd2l0aCBldmlkZW5jZSBjYXB0dXJlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgdHlwZSB7XG4gIERlY2lkZVJ1bGUsXG4gIERlY2lzaW9uRXZpZGVuY2UsXG4gIERlY2lzaW9uUmVzdWx0LFxuICBEZWZhdWx0QnJhbmNoLFxuICBGaWx0ZXJPcHMsXG4gIFJ1bGVFdmlkZW5jZSxcbiAgU2VsZWN0aW9uRXZpZGVuY2UsXG4gIFNlbGVjdGlvblJlc3VsdCxcbiAgV2hlbkNsYXVzZSxcbiAgV2hlcmVGaWx0ZXIsXG59IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgeyBkZWNpZGUsIHNlbGVjdCB9IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3JzICovXG5leHBvcnQgdHlwZSB7IFRlcm1pbmFsRmFpbHVyZUNvbnRleHQgfSBmcm9tICcuL2xpYi9lcnJvcnMvdGVybWluYWxGYWlsdXJlLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQXR0ZW1wdHMg4oCUIGV2ZXJ5IHRyeSBvZiBhIHJldHJpZWQgc3RhZ2UsIGFuZCB0aGUgZGVjaXNpb24gdGhhdCBmb2xsb3dlZCBpdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEBjYXRlZ29yeSBBdHRlbXB0c1xuICpcbiAqIE9uZSBgQXR0ZW1wdFJlY29yZGAgcGVyIGF0dGVtcHQgb2YgYSBzdGFnZSB3aXRoIGEgZGVjbGFyZWQgYHJldHJ5YCBwb2xpY3ksIGEgYHRpbWVvdXRNc2AsIG9yIGEgcnVuIGRlYWRsaW5lIOKAlFxuICogdGltaW5nLCBvdXRjb21lLCBmYWlsdXJlIGNhdGVnb3J5LCBhbmQgdGhlIHJldHJ5LW9yLXN0b3AgZGVjaXNpb24gYXMgYERlY2lzaW9uRXZpZGVuY2VgIOKAlCBvbiB0aGUgc3RhZ2Unc1xuICogZXhlY3V0aW9uLXRyZWUgbm9kZSAoYFN0YWdlU25hcHNob3QuYXR0ZW1wdHNgIC8gYGF0dGVtcHRTdW1tYXJ5YCkgYW5kIG9uIGBGbG93UmVjb3JkZXIub25BdHRlbXB0YC5cbiAqIEEgY2FsbCBhIHN0YWdlIG1ha2VzIHRocm91Z2ggYHNjb3BlLiRjYWxsYCBpcyByZWNvcmRlZCB0aGUgc2FtZSB3YXkgKGtpbmQgYCdjYWxsJ2ApLCBhbmQgc28gaXMgYW4gU0RLJ3Mgb3duIHJldHJ5XG4gKiBhbiBhZGFwdGVyIHJlcG9ydHMgdGhyb3VnaCBgb2JzZXJ2ZWQoKWAgKGBPYnNlcnZlZEF0dGVtcHRgLCBraW5kIGAnb2JzZXJ2ZWQnYCkuIGBBdHRlbXB0Q29udGV4dGAgaXMgd2hhdFxuICogYHNjb3BlLiRhdHRlbXB0KClgIHJldHVybnMsIGFuZCB3aGF0IGEgY2FsbCdzIGZ1bmN0aW9uIGdldHMgKHRoZSBhdHRlbXB0J3Mgc2lnbmFsLCB0aGUgdGltZSBsZWZ0LCBgb2JzZXJ2ZWRgKTtcbiAqIGBMYXRlV3JpdGVgIGlzIGEgd3JpdGUgKG9yIGNhbGwpIGFuIGVuZGVkIGF0dGVtcHQgdHJpZWQgKGBTdGFnZVNuYXBzaG90LmxhdGVXcml0ZXNgKS4gQSBzdGFnZSB0aGF0IGNoYW5nZXMgYW5cbiAqIG91dHNpZGUgc3lzdGVtIGRlY2xhcmVzIGl0IChgU3RhZ2VUb3VjaGVzYCwgYC50b3VjaGVzKClgKSwgYW5kIGEgY2FsbCBkb2VzIChgQ2FsbE9wdGlvbnNgKTogZXZlcnkgYXR0ZW1wdCB0aGVuXG4gKiBjYXJyaWVzIGl0cyBgQXR0ZW1wdEVmZmVjdGAsIGFuZCB0aGUga2V5IHJ1bGUgaXMgaGFuZGVkIGFuIGBJZGVtcG90ZW5jeUtleUNvbnRleHRgIG9uY2UgcGVyIGV4ZWN1dGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUge1xuICBBdHRlbXB0Q2F0ZWdvcnksXG4gIEF0dGVtcHRDb250ZXh0LFxuICBBdHRlbXB0RWZmZWN0LFxuICBBdHRlbXB0RXJyb3IsXG4gIEF0dGVtcHRJbnB1dHMsXG4gIEF0dGVtcHRLaW5kLFxuICBBdHRlbXB0TmV4dCxcbiAgQXR0ZW1wdE9wdGlvbnMsXG4gIEF0dGVtcHRPdXRjb21lLFxuICBBdHRlbXB0UmVhc29uLFxuICBBdHRlbXB0UmVjb3JkLFxuICBBdHRlbXB0U3VtbWFyeSxcbiAgQ2FsbE9wdGlvbnMsXG4gIElkZW1wb3RlbmN5S2V5Q29udGV4dCxcbiAgTGF0ZVdyaXRlLFxuICBPYnNlcnZlZEF0dGVtcHQsXG4gIFN0YWdlVG91Y2hlcyxcbiAgVW5rbm93bkVmZmVjdEluaXQsXG59IGZyb20gJy4vbGliL2F0dGVtcHQvaW5kZXguanMnO1xuLyoqXG4gKiBAY2F0ZWdvcnkgQXR0ZW1wdHNcbiAqXG4gKiBBbiBhdHRlbXB0IGJ5IG5hbWUgKGBzZXJpZXNgICsgYGF0dGVtcHRgKSBhbmQgcGVyLW91dGNvbWUgY291bnRzIOKAlCB3aGF0IHJlY29yZGVyIHJvd3MgaG9sZCBvZiBhdHRlbXB0cy5cbiAqL1xuZXhwb3J0IHR5cGUgeyBBdHRlbXB0T3V0Y29tZUNvdW50cywgQXR0ZW1wdFJlZiB9IGZyb20gJy4vbGliL3JlY29yZGVyL2F0dGVtcHRTZXJpZXMuanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBBdHRlbXB0c1xuICpcbiAqIGBhdHRlbXB0KClgIOKAlCB0aGUgYXR0ZW1wdCBydW5uZXIgZm9yIGNvZGUgdGhhdCBpcyBub3QgYSBzdGFnZSAocmVjb3JkcyBnbyB0byBpdHMgYG9uQXR0ZW1wdGApOyBgZXJyb3JDYXRlZ29yeWBcbiAqIOKAlCB0aGUgb25lIGZhaWx1cmUgY2xhc3NpZmllciAoc2V2ZW4gZml4ZWQgY2F0ZWdvcmllcyk7IGByZXRyeVJ1bGVzYCDigJQgdGhlIG9uZSByZXRyeSBydWxlIHRhYmxlLCBhcyBgZGVjaWRlKClgXG4gKiBydWxlczsgdGhlIGF0dGVtcHQgY29udHJhY3QncyB0d28gZXJyb3JzLlxuICovXG5leHBvcnQgeyBhdHRlbXB0LCBBdHRlbXB0VGltZW91dEVycm9yLCBlcnJvckNhdGVnb3J5LCByZXRyeVJ1bGVzLCBVbmtub3duRWZmZWN0RXJyb3IgfSBmcm9tICcuL2xpYi9hdHRlbXB0L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29ycmVsYXRpb25cbiAqXG4gKiBUaGUgcnVuJ3MgY29ycmVsYXRpb24gKDEwLjEpOiBgZW52LnRyYWNlcGFyZW50YCAoVzNDLCBwYXJzZWQgc3RyaWN0bHkpIG9yIGBlbnYudHJhY2VJZGAgKyBgZW52Lm9wZXJhdGlvbklkYFxuICogYmVjb21lIE9ORSBmcm96ZW4gYFJ1bkNvcnJlbGF0aW9uYCBwZXIgcnVuIOKAlCBvbiBgZ2V0U25hcHNob3QoKS5jb3JyZWxhdGlvbmAsIGV2ZXJ5IGZsb3cgZXZlbnQnc1xuICogYHRyYXZlcnNhbENvbnRleHQuY29ycmVsYXRpb25gIGFuZCBldmVyeSBzY29wZSBhbmQgZW1pdCBldmVudCdzIGBjb3JyZWxhdGlvbmAuIGBwYXJzZVRyYWNlcGFyZW50YCAvXG4gKiBgZm9ybWF0VHJhY2VwYXJlbnRgIGFyZSB0aGUgVzNDIGNvZGVjOyBhIHJlZnVzZWQgaGVhZGVyIHRocm93cyBgVHJhY2VwYXJlbnRFcnJvcmAgd2l0aCBhIG5hbWVkIGByZWFzb25gLlxuICovXG5leHBvcnQgdHlwZSB7IFBhcnNlZFRyYWNlcGFyZW50LCBSdW5Db3JyZWxhdGlvbiwgVHJhY2VwYXJlbnRGaWVsZHMsIFRyYWNlcGFyZW50UmVmdXNhbCB9IGZyb20gJy4vbGliL2F0dGVtcHQvaW5kZXguanMnO1xuZXhwb3J0IHsgZm9ybWF0VHJhY2VwYXJlbnQsIHBhcnNlVHJhY2VwYXJlbnQsIFRyYWNlcGFyZW50RXJyb3IgfSBmcm9tICcuL2xpYi9hdHRlbXB0L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVuIOKAlCBFeGVjdXRlIGNoYXJ0cyBhbmQgY29sbGVjdCByZXN1bHRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IFJ1blJlc3VsdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydEV4ZWN1dG9yT3B0aW9ucyB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKlxuICogVGhlIGNyYXNoLXNhZmUgcmVjb3JkICgxMC4xKTogdGhlIGV4ZWN1dG9yJ3MgYHNpbmtgIG9wdGlvbiwgaXRzIGFjY291bnRpbmcgb24gYGdldFNuYXBzaG90KCkuc2lua2AsXG4gKiBgZXhlY3V0b3IuZmx1c2hSZWNvcmQoKWAncyByZXN1bHQsIGFuZCB0aGUgZXJyb3IgYSBydW4gd2l0aCBgb25GYWlsdXJlOiAnZmFpbCdgIHJlamVjdHMgd2l0aC4gVGhlIHBvcnRcbiAqIChgUmVjb3JkU2lua2AsIGBtZW1vcnlTaW5rYCkgaXMgYGZvb3R0cmFjZS93cml0ZWAnczsgdGhlIGZpbGUgYWRhcHRlciBpcyBgZm9vdHByaW50anMvc2lua3NgLlxuICogQGNhdGVnb3J5IFJ1blxuICovXG5leHBvcnQgdHlwZSB7XG4gIFJlY29yZEZsdXNoUmVzdWx0LFxuICBSZWNvcmRTaW5rRmFpbHVyZU1vZGUsXG4gIFJlY29yZFNpbmtGbHVzaE1vZGUsXG4gIFJlY29yZFNpbmtPcHRpb24sXG4gIFJlY29yZFNpbmtPcHRpb25zLFxuICBSZWNvcmRTaW5rU3RhdHMsXG59IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHsgUmVjb3JkU2lua0Vycm9yIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBUaGUgZm91ciBvYnNlcnZhYmlsaXR5IGRpYWxzIGBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnNgIGluaGVyaXRzLlxuICogQGNhdGVnb3J5IFJ1blxuICovXG5leHBvcnQgdHlwZSB7IFJ1bkRpYWxzIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB7IEZsb3dDaGFydEV4ZWN1dG9yIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB7IFJ1bkNvbnRleHQgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHR5cGUgeyBDaGFydE9wZW5BUElPcHRpb25zLCBNQ1BUb29sRGVzY3JpcHRpb24sIFJ1bm5hYmxlRmxvd0NoYXJ0IH0gZnJvbSAnLi9saWIvcnVubmVyL1J1bm5hYmxlQ2hhcnQuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPYnNlcnZlIOKAlCBEYXRhIChzY29wZSByZWNvcmRlcnMsIGZpcmUgZHVyaW5nIHN0YWdlIGV4ZWN1dGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEYXRhICovXG5leHBvcnQgdHlwZSB7XG4gIENvbW1pdEV2ZW50LFxuICBFcnJvckV2ZW50LFxuICBSZWFkRXZlbnQsXG4gIFJlZGFjdGlvblBvbGljeSxcbiAgUmVkYWN0aW9uUmVwb3J0LFxuICBTY29wZVJlY29yZGVyLFxuICBTdGFnZUV2ZW50LFxuICBXcml0ZUV2ZW50LFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHsgTWV0cmljUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHsgRGVidWdSZWNvcmRlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBPcGVyYXRpb24gKi9cbmV4cG9ydCB7IFJlY29yZGVyT3BlcmF0aW9uIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEZWxpdmVyeSB0aWVyIChSRkMtMDAxIGRlZmVycmVkIG9ic2VydmVycylcbiAqXG4gKiBFdmVyeSBgYXR0YWNoKlJlY29yZGVyYCBjYWxsIGFjY2VwdHMgYW4gb3B0aW9ucyBiYWc6XG4gKiBgZXhlY3V0b3IuYXR0YWNoU2NvcGVSZWNvcmRlcihyZWMsIHsgZGVsaXZlcnk6ICdkZWZlcnJlZCcgfSlgIHRha2VzIHRoZVxuICogcmVjb3JkZXIgT1VUIG9mIHRoZSBlbmdpbmUncyBob3QgcGF0aCDigJQgZXZlbnRzIGFyZSBjYXB0dXJlZCBpbnRvIG9uZVxuICogYm91bmRlZCwgdG90YWxseS1vcmRlcmVkIHF1ZXVlIGFuZCBkZWxpdmVyZWQgYXQgdGhlIG5leHQgbWljcm90YXNrXG4gKiBjaGVja3BvaW50IChcIm9uZSBiZWF0IGJlaGluZFwiKS4gT21pdCBgZGVsaXZlcnlgIGZvciB0aGUgaGlzdG9yaWNhbFxuICogc3luY2hyb25vdXMgY2FsbCAoYnl0ZS1pZGVudGljYWwgdG8gcHJldmlvdXMgcmVsZWFzZXMpLiBBY2NvdW50aW5nXG4gKiBzdXJmYWNlcyBvbiBgc25hcHNob3Qub2JzZXJ2ZXJTdGF0c2A7IGBleGVjdXRvci5kcmFpbk9ic2VydmVycygpYCBzZXR0bGVzXG4gKiBhc3luYyBsaXN0ZW5lcnMgYmVmb3JlIHNodXRkb3duLiBTZWUgYGRvY3MvZ3VpZGVzL29ic2VydmVycy1kZWZlcnJlZC5tZGAuXG4gKi9cbmV4cG9ydCB0eXBlIHtcbiAgQXR0YWNoUmVjb3JkZXJPcHRpb25zLFxuICBPYnNlcnZlckRlbGl2ZXJ5LFxuICBPYnNlcnZlckRyYWluUmVzdWx0LFxuICBPYnNlcnZlclN0YXRzLFxufSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEZWxpdmVyeSB0aWVyIChSRkMtMDAxIGRlZmVycmVkIG9ic2VydmVycylcbiAqXG4gKiBgQ2FwdHVyZVBvbGljeWAg4oCUIGhvdyBhIGRlZmVycmVkIGV2ZW50J3MgcGF5bG9hZCBpcyBtYXRlcmlhbGl6ZWQgYXRcbiAqIGNhcHR1cmUgdGltZSAoYCdjbG9uZSdgIGJ5IGRlZmF1bHQgZm9yIGF0dGFjaCBvcHRpb25zIC8gYCdzdW1tYXJ5J2AgLyBgJ3JlZidgKS4gYE92ZXJmbG93UG9saWN5YFxuICog4oCUIHdoYXQgYSBzYXR1cmF0ZWQgcXVldWUgZG9lcyAoYCdkcm9wLW9sZGVzdCdgIGRlZmF1bHQgLyBgJ3NhbXBsZSdgIC9cbiAqIGAnYmxvY2snYCkuIGBEaXNwYXRjaGVyU3RhdHNgIC8gYExpc3RlbmVyU3RhdHNgIOKAlCB0aGUgYWNjb3VudGluZyBzaGFwZXNcbiAqIGVtYmVkZGVkIGluIGBPYnNlcnZlclN0YXRzYC4gVHlwZXMgb25seSDigJQgdGhlIG9ic2VydmVyLXF1ZXVlIG1vZHVsZVxuICogaXRzZWxmIGlzIGludGVybmFsOyBjb25zdW1lcnMgdXNlIHRoZSBhdHRhY2ggb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgeyBDYXB0dXJlUG9saWN5LCBEaXNwYXRjaGVyU3RhdHMsIExpc3RlbmVyU3RhdHMsIE92ZXJmbG93UG9saWN5IH0gZnJvbSAnLi9saWIvb2JzZXJ2ZXItcXVldWUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIENvbWJpbmVkIChib3RoIGRhdGEtZmxvdyBhbmQgY29udHJvbC1mbG93KSAqL1xuZXhwb3J0IHR5cGUgeyBDb21iaW5lZFJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBDb21iaW5lZCAoYm90aCBkYXRhLWZsb3cgYW5kIGNvbnRyb2wtZmxvdykgKi9cbmV4cG9ydCB7XG4gIGhhc0VtaXRSZWNvcmRlck1ldGhvZHMsXG4gIGhhc0Zsb3dSZWNvcmRlck1ldGhvZHMsXG4gIGhhc1JlY29yZGVyTWV0aG9kcyxcbiAgaXNGbG93RXZlbnQsXG59IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRW1pdCAodXNlci1hdXRob3JlZCBzdHJ1Y3R1cmVkIGV2ZW50cylcbiAqXG4gKiBUaGlyZCBvYnNlcnZlciBjaGFubmVsIChhbG9uZ3NpZGUgYFNjb3BlUmVjb3JkZXJgIGFuZCBgRmxvd1JlY29yZGVyYCkuIENvbnN1bWVyXG4gKiBjb2RlIGNhbGxzIGBzY29wZS4kZW1pdChuYW1lLCBwYXlsb2FkKWAgZnJvbSBpbnNpZGUgYSBzdGFnZTsgZXZlcnkgYXR0YWNoZWRcbiAqIGBFbWl0UmVjb3JkZXIub25FbWl0KGV2ZW50KWAgZmlyZXMgc3luY2hyb25vdXNseSB3aXRoIHN0YWdlLWNvbnRleHRcbiAqIGVucmljaG1lbnQuIFBhc3MtdGhyb3VnaCDigJQgbm8gYnVmZmVyaW5nLCB6ZXJvIGFsbG9jYXRpb24gd2hlbiBubyByZWNvcmRlclxuICogaXMgYXR0YWNoZWQuXG4gKi9cbmV4cG9ydCB0eXBlIHsgRW1pdEV2ZW50LCBFbWl0UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9ic2VydmUg4oCUIEZsb3cgKEZsb3dSZWNvcmRlciwgZmlyZXMgYWZ0ZXIgc3RhZ2UgZXhlY3V0aW9uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHtcbiAgRmxvd0F0dGVtcHRFdmVudCxcbiAgRmxvd0JyZWFrRXZlbnQsXG4gIEZsb3dEZWNpc2lvbkV2ZW50LFxuICBGbG93RXJyb3JFdmVudCxcbiAgRmxvd0ZvcmtFdmVudCxcbiAgRmxvd0xvb3BFdmVudCxcbiAgRmxvd05leHRFdmVudCxcbiAgRmxvd1JlY29yZGVyLFxuICBGbG93UnVuRXZlbnQsXG4gIEZsb3dSdW5GYWlsZWRFdmVudCxcbiAgRmxvd1NlbGVjdGVkRXZlbnQsXG4gIEZsb3dTdGFnZUV2ZW50LFxuICBGbG93U3RhZ2VSZXRyeUV2ZW50LFxuICBGbG93U3ViZmxvd0V2ZW50LFxuICBGbG93U3ViZmxvd1JlZ2lzdGVyZWRFdmVudCxcbiAgRmxvd1Rocm90dGxlZEV2ZW50LFxuICBSZXN1bWVMaW5rLFxuICBUcmF2ZXJzYWxDb250ZXh0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3dcbiAqXG4gKiBgTmFycmF0aXZlRm9ybWF0dGVyYCDigJQgcGx1Z2dhYmxlIGZvcm1hdHRlciB0aGF0IGNvbnZlcnRzIGV2ZW50IGNvbnRleHRcbiAqIG9iamVjdHMgaW50byB0aGUgdGV4dCBsaW5lcyBvZiB0aGUgbmFycmF0aXZlLlxuICovXG5leHBvcnQgdHlwZSB7IE5hcnJhdGl2ZUZvcm1hdHRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgdHlwZSB7IE1hbmlmZXN0QXR0ZW1wdFJvdywgTWFuaWZlc3RFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTWFuaWZlc3RGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IEFkYXB0aXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBNaWxlc3RvbmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFByb2dyZXNzaXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBSTEVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFNlcGFyYXRlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBTaWxlbnROYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFdpbmRvd2VkTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VsZi1EZXNjcmliaW5nIOKAlCAuY29udHJhY3QoKSwgdG9PcGVuQVBJKCksIHRvTUNQVG9vbCgpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU2VsZi1EZXNjcmliaW5nICovXG5leHBvcnQgdHlwZSB7IEpzb25TY2hlbWEgfSBmcm9tICcuL2xpYi9jb250cmFjdC9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNuYXBzaG90ICYgQ29tcG9zaXRpb24g4oCUIFN1YmZsb3cgbmF2aWdhdGlvbiBhbmQgQ29tcG9zYWJsZVJ1bm5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFNuYXBzaG90ICYgQ29tcG9zaXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgQ29tcG9zYWJsZVJ1bm5lciB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBSZWNvcmRlclNuYXBzaG90LCBSdW50aW1lU25hcHNob3QsIFN1YnRyZWVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHsgZ2V0U3VidHJlZVNuYXBzaG90LCBsaXN0U3ViZmxvd1BhdGhzIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2NvcGVSZWNvcmRlciBDb21wb3NpdGlvbiDigJQgQnVuZGxlIG11bHRpcGxlIHJlY29yZGVycyBpbnRvIGRvbWFpbiBwcmVzZXRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU2NvcGVSZWNvcmRlciAqL1xuZXhwb3J0IHsgQ29tcG9zaXRlUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBhdXNlL1Jlc3VtZSDigJQgU2VyaWFsaXphYmxlIGNoZWNrcG9pbnRzIGZvciBsb25nLXJ1bm5pbmcgb3IgaHVtYW4taW4tdGhlLWxvb3AgZmxvd3Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWUgKi9cbi8qKiBAY2F0ZWdvcnkgUGF1c2UvUmVzdW1lICovXG5leHBvcnQgdHlwZSB7XG4gIEZsb3djaGFydENoZWNrcG9pbnQsXG4gIFBhdXNhYmxlSGFuZGxlcixcbiAgUGF1c2VkRXhlY3V0aW9uLFxuICBQZW5kaW5nUGF1c2UsXG4gIFJlZGFjdGlvbk1hcmtzLFxufSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IFBhdXNlL1Jlc3VtZVxuICpcbiAqIGBpbnRlcnJ1cHQoc2NvcGUsIHsgcmVhc29uLCBleHBlY3RzPyB9KWAg4oCUIHN0b3AgbWlkLXN0YWdlIHRvIGFzayBhIHF1ZXN0aW9uLFxuICogYW5kIGdldCB0aGUgYW5zd2VyIGJhY2sgYXQgdGhlIHNhbWUgY2FsbCBzaXRlIHdoZW4gdGhlIHJ1biByZXN1bWVzLiBSZXN1bWVcbiAqIHJlLWVudGVycyB0aGUgc3RhZ2UgZnJvbSBpdHMgVE9QIChzdGFnZXMgYXJlIGF0b21pYyksIHNvIGtlZXAgdGhlIGhhbGZcbiAqIGJlZm9yZSB0aGUgY2FsbCBpZGVtcG90ZW50LlxuICovXG5leHBvcnQgdHlwZSB7IEludGVycnVwdFBheWxvYWQgfSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUGF1c2UvUmVzdW1lICovXG5leHBvcnQgeyBpbnRlcnJ1cHQgfSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU2NvcGVSZWNvcmRlciAqL1xuZXhwb3J0IHR5cGUgeyBDb21wb3NpdGVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29uZmlndXJhdGlvbiDigJQgVHlwZXMgcGFzc2VkIHRvIEZsb3dDaGFydEV4ZWN1dG9yIGFuZCBydW4oKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgRXhlY3V0aW9uRW52LCBFeGVjdXRvclJlc3VsdCwgUGF1c2VkUmVzdWx0LCBSdW5PcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uICovXG5leHBvcnQgdHlwZSB7IFNjb3BlRmFjdG9yeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb25cbiAqXG4gKiBSZWFkLXRyYWNraW5nIHBvbGljeSBmb3IgYFN0YWdlU25hcHNob3Quc3RhZ2VSZWFkc2AgKCMxNCk6XG4gKiBgJ2Z1bGwnYCAoZGVmYXVsdCDigJQgcGVyLXJlYWQgdmFsdWUgY2xvbmUsIGhpc3RvcmljYWwgYmVoYXZpb3IpIC9cbiAqIGAnc3VtbWFyeSdgIChjaGVhcCBgUmVhZFN1bW1hcnlNYXJrZXJgIHBlciByZWFkKSAvIGAnb2ZmJ2AgKG5vIHRyYWNraW5nLFxuICogemVybyBwZXItcmVhZCBjbG9uZSkuIFBhc3MgYXMgYG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyByZWFkVHJhY2tpbmcgfSlgXG4gKiBvciBjYWxsIGBleGVjdXRvci5zZXRSZWFkVHJhY2tpbmcobW9kZSlgIGJlZm9yZSBgcnVuKClgLlxuICovXG5leHBvcnQgdHlwZSB7IFJlYWRTdW1tYXJ5TWFya2VyLCBSZWFkVHJhY2tpbmdNb2RlIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvblxuICpcbiAqIFdyaXRlLXRyYWNraW5nIHBvbGljeSBmb3IgYFN0YWdlU25hcHNob3Quc3RhZ2VXcml0ZXNgICgjMTNjLUEpIOKAlCB0aGVcbiAqIHNpYmxpbmcgb2YgYFJlYWRUcmFja2luZ01vZGVgOyBib3RoIGFsaWFzIHRoZSBzaGFyZWQgYFJldGVudGlvblBvbGljeWBcbiAqIGZhbWlseSBmcm9tIGBsaWIvY2FwdHVyZWAuIGAnZnVsbCdgIChkZWZhdWx0IOKAlCBwZXItd3JpdGUgdmFsdWUgY2xvbmUsXG4gKiBoaXN0b3JpY2FsIGJlaGF2aW9yKSAvIGAnc3VtbWFyeSdgIChjaGVhcCBgV3JpdGVTdW1tYXJ5TWFya2VyYCBwZXIgd3JpdGUpXG4gKiAvIGAnb2ZmJ2AgKG5vIHRyYWNraW5nOyBgc3RhZ2VXcml0ZXNgIGFic2VudCBhbmQgdGhlIGBvbkNvbW1pdGAgbXV0YXRpb25zXG4gKiBwYXlsb2FkIGlzIGVtcHR5IOKAlCB3cml0ZXMgdGhlbXNlbHZlcyBzdGlsbCBjb21taXQsIGFuZCB0aGUgY29tbWl0IGxvZyBpc1xuICogdW5hZmZlY3RlZCkuIFBhc3MgYXMgYG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyB3cml0ZVRyYWNraW5nIH0pYCBvclxuICogY2FsbCBgZXhlY3V0b3Iuc2V0V3JpdGVUcmFja2luZyhtb2RlKWAgYmVmb3JlIGBydW4oKWAuXG4gKi9cbmV4cG9ydCB0eXBlIHsgUmV0ZW50aW9uUG9saWN5LCBXcml0ZVN1bW1hcnlNYXJrZXIsIFdyaXRlVHJhY2tpbmdNb2RlIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvblxuICpcbiAqIENvbW1pdC12YWx1ZXMgZW5jb2RpbmcgZm9yIHRoZSBDT01NSVQgTE9HICgjMTNjLUIpIOKAlCB0aGUgdGhpcmQgZGlhbCBvZlxuICogdGhlIGZhbWlseSwgYW5kIHRoZSBvbmx5IExPU1NMRVNTIG9uZSAoaXQgY2hhbmdlcyB0aGUgbG9nJ3MgZW5jb2RpbmcsXG4gKiBuZXZlciBpdHMgaW5mb3JtYXRpb24pLiBgJ2Z1bGwnYCAoZGVmYXVsdCDigJQgZXZlcnkgc3Vydml2aW5nIGBzZXRgIHN0b3Jlc1xuICogdGhlIGZ1bGwgZmluYWwgdmFsdWUsIGJ5dGUtaWRlbnRpY2FsIHRvIGhpc3RvcnkpIC8gYCdkZWx0YSdgIChhcnJheVxuICogbmV0LWNoYW5nZXMgdGhhdCBhcmUgXCJiYXNlIHBsdXMgYSB0YWlsXCIgY29tbWl0IGFzIGFuIGBhcHBlbmRgIHZlcmJcbiAqIHN0b3Jpbmcgb25seSB0aGUgdGFpbDsgYGRlbGV0ZVZhbHVlKClgIGNvbW1pdHMgYXMgYSByZWFsIGBkZWxldGVgIHZlcmI7XG4gKiBvbmUgdHJhY2UgZW50cnkgcGVyIHN1cnZpdmluZyBwYXRoKS4gUmVwbGF5IHJlY29uc3RydWN0cyBldmVyeSBzdGVwJ3NcbiAqIGZ1bGwgc3RhdGUgZXhhY3RseS4gQ29uc3VtZXJzIHJlYWRpbmcgYGJ1bmRsZS5vdmVyd3JpdGVba2V5XWAgYXMgdGhlIGZ1bGxcbiAqIHZhbHVlIG11c3QgdXNlIGBjb21taXRWYWx1ZUF0YCBmcm9tIGBmb290dHJhY2VgLiBQYXNzIGFzXG4gKiBgbmV3IEZsb3dDaGFydEV4ZWN1dG9yKGNoYXJ0LCB7IGNvbW1pdFZhbHVlcyB9KWAgb3IgY2FsbFxuICogYGV4ZWN1dG9yLnNldENvbW1pdFZhbHVlcyhtb2RlKWAgYmVmb3JlIGBydW4oKWA7IHRoZSBhY3RpdmUgbW9kZSBpcyB0aGVcbiAqIHNuYXBzaG90IGRpc2NyaW1pbmFudCBgZ2V0U25hcHNob3QoKS5jb21taXRWYWx1ZXNgLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbnRyYWN0ICYgVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBTY2hlbWFLaW5kLCBWYWxpZGF0aW9uSXNzdWUsIFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHsgZGV0ZWN0U2NoZW1hLCBpc1ZhbGlkYXRhYmxlLCBpc1pvZCB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgQ29udHJhY3QgJiBWYWxpZGF0aW9uICovXG5leHBvcnQgeyBJbnB1dFZhbGlkYXRpb25FcnJvciwgdmFsaWRhdGVBZ2FpbnN0U2NoZW1hLCB2YWxpZGF0ZU9yVGhyb3cgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFcnJvciBVdGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBFcnJvciBVdGlsaXRpZXMgKi9cbmV4cG9ydCB0eXBlIHsgU3RydWN0dXJlZEVycm9ySW5mbyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3IgVXRpbGl0aWVzICovXG5leHBvcnQgeyBleHRyYWN0RXJyb3JJbmZvLCBmb3JtYXRFcnJvckluZm8gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXYgVG9vbHMg4oCUIE1vZGUgZmxhZ3MgYW5kIFpvZCBzY29wZSB1dGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBAY2F0ZWdvcnkgRGV2IFRvb2xzXG4gKlxuICogR2xvYmFsIGRldi1tb2RlIGZsYWcuIENhbGwgYGVuYWJsZURldk1vZGUoKWAgYXQgYXBwbGljYXRpb24gc3RhcnR1cCB0b1xuICogdHVybiBvbiBkZXZlbG9wZXItb25seSBkaWFnbm9zdGljcyBhY3Jvc3MgdGhlIGxpYnJhcnkg4oCUIGNpcmN1bGFyLXJlZmVyZW5jZVxuICogZGV0ZWN0aW9uIGluIHNjb3BlIHdyaXRlcywgd2FybmluZ3Mgd2hlbiBhIHJlY29yZGVyIGhhcyBubyBvYnNlcnZlclxuICogbWV0aG9kcywgc3VzcGljaW91cy1wcmVkaWNhdGUgd2FybmluZ3MgaW4gZGVjaWRlL3NlbGVjdCwgc3RydWN0dXJhbFxuICogY2hlY2tzIGluIGBnZXRTdWJ0cmVlU25hcHNob3RgLCBhbmQgYW55IGZ1dHVyZSBkZXYtb25seSBkaWFnbm9zdGljLlxuICpcbiAqIFByb2R1Y3Rpb24gbGVhdmVzIGl0IE9GRiBieSBkZWZhdWx0ICh6ZXJvIG92ZXJoZWFkKS4gU2VlIHRoZSBKU0RvYyBvblxuICogYGVuYWJsZURldk1vZGVgIGZvciB0aGUgZnVsbCBsaXN0IGFuZCB1c2FnZSBleGFtcGxlLlxuICovXG5leHBvcnQgeyBkaXNhYmxlRGV2TW9kZSwgZW5hYmxlRGV2TW9kZSwgaXNEZXZNb2RlIH0gZnJvbSAnLi9saWIvZGV2TW9kZS5qcyc7XG5cbi8vIGBkZWZpbmVTY29wZUZyb21ab2RgIGFuZCB0aGUgb3RoZXIgem9kLWJhc2VkIHNjb3BlIGhlbHBlcnMgbW92ZWQgdG8gdGhlIG9wdC1pblxuLy8gYGZvb3RwcmludGpzL3pvZGAgZW50cnkg4oCUIGtlZXBpbmcgem9kIG91dCBvZiB0aGUgY29yZSBsb2FkIHBhdGggKGl0IGlzIGFuXG4vLyBvcHRpb25hbCBwZWVyKS4gSW1wb3J0IHRoZW0gZnJvbSAnZm9vdHByaW50anMvem9kJy5cbi8vIEEgcnVuJ3MgcmVjb3JkIGFzIEpTT04gd2l0aG91dCB0aGUgZW5naW5lJ3MgcmVjdXJzaW9uIGxpbWl0ICg5LjI2LjApOiB0aGVcbi8vIHNhbWUgYnl0ZXMgSlNPTi5zdHJpbmdpZnkgZW1pdHMsIGZvciBhIGRlZXAgYG5leHRgIGNoYWluIGl0IGNhbm5vdCBlbmNvZGUuXG5leHBvcnQgdHlwZSB7IFJldHJ5TG9vcENhbGwsIFJldHJ5TG9vcERlY2lzaW9uLCBSZXRyeUxvb3BJZGVudGl0eSB9IGZyb20gJy4vbGliL2F0dGVtcHQvcmV0cnlMb29wVHlwZXMuanMnO1xuZXhwb3J0IHR5cGUgeyBSZXRyeUxvb3BDb250ZXh0LCBSZXRyeUxvb3BPcHRpb25zLCBSZXRyeUxvb3BTdGF0ZSB9IGZyb20gJy4vbGliL2J1aWxkZXIvcmV0cnlMb29wLmpzJztcbmV4cG9ydCB7IHN0cmluZ2lmeVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL3N0cmluZ2lmeVNuYXBzaG90LmpzJztcbiJdfQ==
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHOzs7QUFTSCw0QkFBNEI7QUFDNUIsbURBQXdGO0FBQS9FLHFHQUFBLFNBQVMsT0FBQTtBQUFFLDRHQUFBLGdCQUFnQixPQUFBO0FBQUUsNkdBQUEsaUJBQWlCLE9BQUE7QUFzQ3ZELGtEQUFtRDtBQUExQyxzR0FBQSxVQUFVLE9BQUE7QUFRbkIsNEJBQTRCO0FBQzVCLCtDQUEyQztBQUFsQyx5R0FBQSxTQUFTLE9BQUE7QUFvQmxCLG1DQUFtQztBQUNuQyxrREFBdUQ7QUFBOUMsa0dBQUEsTUFBTSxPQUFBO0FBQUUsa0dBQUEsTUFBTSxPQUFBO0FBaUR2Qjs7Ozs7O0dBTUc7QUFDSCxtREFBcUg7QUFBNUcsbUdBQUEsT0FBTyxPQUFBO0FBQUUsK0dBQUEsbUJBQW1CLE9BQUE7QUFBRSx5R0FBQSxhQUFhLE9BQUE7QUFBRSxzR0FBQSxVQUFVLE9BQUE7QUFBRSw4R0FBQSxrQkFBa0IsT0FBQTtBQVdwRixtREFBK0Y7QUFBdEYsNkdBQUEsaUJBQWlCLE9BQUE7QUFBRSw0R0FBQSxnQkFBZ0IsT0FBQTtBQUFFLDRHQUFBLGdCQUFnQixPQUFBO0FBMEI5RCxvQkFBb0I7QUFDcEIsa0RBQXdEO0FBQS9DLDJHQUFBLGVBQWUsT0FBQTtBQVF4QixvQkFBb0I7QUFDcEIsa0RBQTBEO0FBQWpELDZHQUFBLGlCQUFpQixPQUFBO0FBRTFCLG9CQUFvQjtBQUNwQixrREFBbUQ7QUFBMUMsc0dBQUEsVUFBVSxPQUFBO0FBcUJuQiwrQkFBK0I7QUFDL0IsaURBQXNEO0FBQTdDLDBHQUFBLGNBQWMsT0FBQTtBQUV2QiwrQkFBK0I7QUFDL0Isa0RBQXFEO0FBQTVDLDBHQUFBLGFBQWEsT0FBQTtBQUV0QixvQ0FBb0M7QUFDcEMscURBQTREO0FBQW5ELDhHQUFBLGlCQUFpQixPQUFBO0FBbUMxQixxRUFBcUU7QUFDckUscURBS2lDO0FBSi9CLG1IQUFBLHNCQUFzQixPQUFBO0FBQ3RCLG1IQUFBLHNCQUFzQixPQUFBO0FBQ3RCLCtHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLHdHQUFBLFdBQVcsT0FBQTtBQW1EYiwrQkFBK0I7QUFDL0IsbURBQThEO0FBQXJELGtIQUFBLHFCQUFxQixPQUFBO0FBSzlCLCtCQUErQjtBQUMvQixtREFBNkQ7QUFBcEQsaUhBQUEsb0JBQW9CLE9BQUE7QUFFN0IsK0JBQStCO0FBQy9CLG1EQUFzRTtBQUE3RCwwSEFBQSw2QkFBNkIsT0FBQTtBQUV0QywrQkFBK0I7QUFDL0IsbURBQXVFO0FBQTlELDJIQUFBLDhCQUE4QixPQUFBO0FBRXZDLCtCQUErQjtBQUMvQixtREFBeUU7QUFBaEUsNkhBQUEsZ0NBQWdDLE9BQUE7QUFFekMsK0JBQStCO0FBQy9CLG1EQUFpRTtBQUF4RCxxSEFBQSx3QkFBd0IsT0FBQTtBQUVqQywrQkFBK0I7QUFDL0IsbURBQXNFO0FBQTdELDBIQUFBLDZCQUE2QixPQUFBO0FBRXRDLCtCQUErQjtBQUMvQixtREFBb0U7QUFBM0Qsd0hBQUEsMkJBQTJCLE9BQUE7QUFFcEMsK0JBQStCO0FBQy9CLG1EQUFzRTtBQUE3RCwwSEFBQSw2QkFBNkIsT0FBQTtBQW1CdEMsdUNBQXVDO0FBQ3ZDLG1EQUE2RTtBQUFwRSwrR0FBQSxrQkFBa0IsT0FBQTtBQUFFLDZHQUFBLGdCQUFnQixPQUFBO0FBRTdDLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsK0VBQStFO0FBRS9FLDhCQUE4QjtBQUM5QixxREFBNEQ7QUFBbkQsOEdBQUEsaUJBQWlCLE9BQUE7QUEwQjFCLDZCQUE2QjtBQUM3QixrREFBaUQ7QUFBeEMsc0dBQUEsU0FBUyxPQUFBO0FBZ0VsQixzQ0FBc0M7QUFDdEMsbURBQTJFO0FBQWxFLHlHQUFBLFlBQVksT0FBQTtBQUFFLDBHQUFBLGFBQWEsT0FBQTtBQUFFLGtHQUFBLEtBQUssT0FBQTtBQUUzQyxzQ0FBc0M7QUFDdEMsbURBQXFHO0FBQTVGLGlIQUFBLG9CQUFvQixPQUFBO0FBQUUsa0hBQUEscUJBQXFCLE9BQUE7QUFBRSw0R0FBQSxlQUFlLE9BQUE7QUFTckUsZ0NBQWdDO0FBQ2hDLG1EQUEwRTtBQUFqRSw2R0FBQSxnQkFBZ0IsT0FBQTtBQUFFLDRHQUFBLGVBQWUsT0FBQTtBQUUxQywrRUFBK0U7QUFDL0UsaURBQWlEO0FBQ2pELCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7R0FXRztBQUNILCtDQUE0RTtBQUFuRSw0R0FBQSxjQUFjLE9BQUE7QUFBRSwyR0FBQSxhQUFhLE9BQUE7QUFBRSx1R0FBQSxTQUFTLE9BQUE7QUFlakQsMEVBQXNFO0FBQTdELHlIQUFBLGlCQUFpQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb290UHJpbnQg4oCUIFB1YmxpYyBBUEkgKHYzKVxuICpcbiAqIFRoZSBmbG93Y2hhcnQgcGF0dGVybiBmb3IgYmFja2VuZCBjb2RlLlxuICogQnVpbGQg4oaSIFJ1biDihpIgT2JzZXJ2ZS5cbiAqXG4gKiAqKlRoZSBjb21tb24gaW1wb3J0IHBhdGhzOioqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZmxvd0NoYXJ0LCBkZWNpZGUsIG5hcnJhdGl2ZSB9IGZyb20gJ2Zvb3RwcmludGpzJzsgICAgICAgICAgIC8vIG1haW4g4oCUIHN0YXJ0IGhlcmVcbiAqIGltcG9ydCB7IG1ldHJpY3MsIGRlYnVnLCBtYW5pZmVzdCB9ICAgICBmcm9tICdmb290cHJpbnRqcy9yZWNvcmRlcnMnOyAvLyByZWNvcmRlciBmYWN0b3JpZXNcbiAqIGltcG9ydCB7IHN0YXRlQXQsIGNhdXNhbENoYWluIH0gZnJvbSAnZm9vdHRyYWNlJzsgICAgIC8vIHJlYWQgYSBmaW5pc2hlZCBydW5cbiAqIGltcG9ydCB7IFJlY29yZEZyYW1lLCBFdmVudExvZyB9IGZyb20gJ2Zvb3R0cmFjZS93cml0ZSc7ICAgICAvLyB3cml0ZSBhIHJlY29yZCB5b3Vyc2VsZlxuICogaW1wb3J0IHsgU3RhZ2VDb250ZXh0IH0gICAgICAgICAgICAgICAgIGZyb20gJ2Zvb3RwcmludGpzL2FkdmFuY2VkJzsgIC8vIGVuZ2luZSBpbnRlcm5hbHNcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRdWljayBTdGFydCDigJQgRXZlcnl0aGluZyB5b3UgbmVlZCBmb3IgOTAlIG9mIHVzZSBjYXNlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydCwgU3RhZ2VGdW5jdGlvbiBhcyBTdGFnZUhhbmRsZXIsIFN0cmVhbUhhbmRsZXJzIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB7IGZsb3dDaGFydCwgRmxvd0NoYXJ0QnVpbGRlciwgZmxvd0NoYXJ0U2VsZWN0b3IgfSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnRcbiAqXG4gKiBDb25maWcgZm9yIGAuYWRkUGFyYWxsZWxGb3JFYWNoKClgIOKAlCBvbmUgYnJhbmNoIHBlciBpdGVtLCBicmFuY2ggY291bnRcbiAqIGRlY2lkZWQgYXQgcnVuIHRpbWUgZnJvbSB0aGUgcGF5bG9hZC4gYG1heEJyYW5jaGVzYCBhbmQgYGludG9gIGFyZSByZXF1aXJlZFxuICogb24gcHVycG9zZSAoc2VlIGRvY3MvZGVzaWduL2V4ZWN1dGlvbi1jb250cm9sLm1kKS5cbiAqL1xuZXhwb3J0IHR5cGUgeyBCcmFuY2hDaGFydCwgUGFyYWxsZWxGb3JFYWNoQ29uZmlnLCBSZXRyeVBvbGljeSB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0IOKAlCBidWlsZC10aW1lIG9ic2VydmVyICh0d2luIG9mIEZsb3dSZWNvcmRlcikgKi9cbmV4cG9ydCB0eXBlIHtcbiAgU3RydWN0dXJlRGVjaWRlckNvbXBsZXRlRXZlbnQsXG4gIFN0cnVjdHVyZUVkZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVFZGdlS2luZCxcbiAgU3RydWN0dXJlTG9vcEVkZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVSZWNvcmRlcixcbiAgU3RydWN0dXJlU3RhZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVTdGFnZVRhZ2dlZEV2ZW50LFxuICBTdHJ1Y3R1cmVTdWJmbG93TW91bnRlZEV2ZW50LFxufSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgVGltZSBCdWRnZXRcbiAqXG4gKiBgdGltZUJ1ZGdldChjaGFydClgIOKAlCB0aGUgc2xvd2VzdCBhIGNoYXJ0IGNhbiB0YWtlLCBmcm9tIGl0cyBkZWNsYXJlZCByZXRyeSBwb2xpY2llcyAoYGF0dGVtcHRzIMOXIHRpbWVvdXRNc2AgcGx1c1xuICogdGhlIHdhaXRzLCBzdW1tZWQgYWxvbmcgdGhlIHNsb3dlc3QgcGF0aCksIGFuZCBldmVyeSBzdGFnZSB0aGF0IG1ha2VzIGEgcGF0aCB1bmJvdW5kZWQsIGJ5IG5hbWUuIGAuYnVkZ2V0KG1zKWBcbiAqIGRlY2xhcmVzIHRoZSBjYWxsZXIncyBjb250cmFjdDsgYGJ1aWxkKClgIHJlZnVzZXMgYSBjaGFydCB0aGF0IGNhbm5vdCBrZWVwIGl0LiBBbHNvIGBjaGFydC50aW1lQnVkZ2V0KClgLlxuICovXG5leHBvcnQgdHlwZSB7XG4gIEJ1ZGdldEFzc3VtcHRpb25zLFxuICBCdWRnZXRTdGVwLFxuICBUaW1lQnVkZ2V0T3B0aW9ucyxcbiAgVGltZUJ1ZGdldFJlcG9ydCxcbiAgVW5ib3VuZGVkUmVhc29uLFxuICBVbmJvdW5kZWRTdGFnZSxcbn0gZnJvbSAnLi9saWIvYnVkZ2V0L2luZGV4LmpzJztcbmV4cG9ydCB7IHRpbWVCdWRnZXQgfSBmcm9tICcuL2xpYi9idWRnZXQvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFR5cGVkU3RhZ2VGdW5jdGlvbiB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFNjb3BlTWV0aG9kcywgVHlwZWRTY29wZSB9IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHsgbmFycmF0aXZlIH0gZnJvbSAnLi9yZWNvcmRlcnMuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZWNpc2lvbiBCcmFuY2hpbmcg4oCUIGRlY2lkZSgpIC8gc2VsZWN0KCkgd2l0aCBldmlkZW5jZSBjYXB0dXJlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgdHlwZSB7XG4gIERlY2lkZVJ1bGUsXG4gIERlY2lzaW9uRXZpZGVuY2UsXG4gIERlY2lzaW9uUmVzdWx0LFxuICBEZWZhdWx0QnJhbmNoLFxuICBGaWx0ZXJPcHMsXG4gIFJ1bGVFdmlkZW5jZSxcbiAgU2VsZWN0aW9uRXZpZGVuY2UsXG4gIFNlbGVjdGlvblJlc3VsdCxcbiAgV2hlbkNsYXVzZSxcbiAgV2hlcmVGaWx0ZXIsXG59IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgeyBkZWNpZGUsIHNlbGVjdCB9IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3JzICovXG5leHBvcnQgdHlwZSB7IFRlcm1pbmFsRmFpbHVyZUNvbnRleHQgfSBmcm9tICcuL2xpYi9lcnJvcnMvdGVybWluYWxGYWlsdXJlLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQXR0ZW1wdHMg4oCUIGV2ZXJ5IHRyeSBvZiBhIHJldHJpZWQgc3RhZ2UsIGFuZCB0aGUgZGVjaXNpb24gdGhhdCBmb2xsb3dlZCBpdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEBjYXRlZ29yeSBBdHRlbXB0c1xuICpcbiAqIE9uZSBgQXR0ZW1wdFJlY29yZGAgcGVyIGF0dGVtcHQgb2YgYSBzdGFnZSB3aXRoIGEgZGVjbGFyZWQgYHJldHJ5YCBwb2xpY3ksIGEgYHRpbWVvdXRNc2AsIG9yIGEgcnVuIGRlYWRsaW5lIOKAlFxuICogdGltaW5nLCBvdXRjb21lLCBmYWlsdXJlIGNhdGVnb3J5LCBhbmQgdGhlIHJldHJ5LW9yLXN0b3AgZGVjaXNpb24gYXMgYERlY2lzaW9uRXZpZGVuY2VgIOKAlCBvbiB0aGUgc3RhZ2Unc1xuICogZXhlY3V0aW9uLXRyZWUgbm9kZSAoYFN0YWdlU25hcHNob3QuYXR0ZW1wdHNgIC8gYGF0dGVtcHRTdW1tYXJ5YCkgYW5kIG9uIGBGbG93UmVjb3JkZXIub25BdHRlbXB0YC5cbiAqIEEgY2FsbCBhIHN0YWdlIG1ha2VzIHRocm91Z2ggYHNjb3BlLiRjYWxsYCBpcyByZWNvcmRlZCB0aGUgc2FtZSB3YXkgKGtpbmQgYCdjYWxsJ2ApLCBhbmQgc28gaXMgYW4gU0RLJ3Mgb3duIHJldHJ5XG4gKiBhbiBhZGFwdGVyIHJlcG9ydHMgdGhyb3VnaCBgb2JzZXJ2ZWQoKWAgKGBPYnNlcnZlZEF0dGVtcHRgLCBraW5kIGAnb2JzZXJ2ZWQnYCkuIGBBdHRlbXB0Q29udGV4dGAgaXMgd2hhdFxuICogYHNjb3BlLiRhdHRlbXB0KClgIHJldHVybnMsIGFuZCB3aGF0IGEgY2FsbCdzIGZ1bmN0aW9uIGdldHMgKHRoZSBhdHRlbXB0J3Mgc2lnbmFsLCB0aGUgdGltZSBsZWZ0LCBgb2JzZXJ2ZWRgKTtcbiAqIGBMYXRlV3JpdGVgIGlzIGEgd3JpdGUgKG9yIGNhbGwpIGFuIGVuZGVkIGF0dGVtcHQgdHJpZWQgKGBTdGFnZVNuYXBzaG90LmxhdGVXcml0ZXNgKS4gQSBzdGFnZSB0aGF0IGNoYW5nZXMgYW5cbiAqIG91dHNpZGUgc3lzdGVtIGRlY2xhcmVzIGl0IChgU3RhZ2VUb3VjaGVzYCwgYC50b3VjaGVzKClgKSwgYW5kIGEgY2FsbCBkb2VzIChgQ2FsbE9wdGlvbnNgKTogZXZlcnkgYXR0ZW1wdCB0aGVuXG4gKiBjYXJyaWVzIGl0cyBgQXR0ZW1wdEVmZmVjdGAsIGFuZCB0aGUga2V5IHJ1bGUgaXMgaGFuZGVkIGFuIGBJZGVtcG90ZW5jeUtleUNvbnRleHRgIG9uY2UgcGVyIGV4ZWN1dGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUge1xuICBBdHRlbXB0Q2F0ZWdvcnksXG4gIEF0dGVtcHRDb250ZXh0LFxuICBBdHRlbXB0RWZmZWN0LFxuICBBdHRlbXB0RXJyb3IsXG4gIEF0dGVtcHRJbnB1dHMsXG4gIEF0dGVtcHRLaW5kLFxuICBBdHRlbXB0TmV4dCxcbiAgQXR0ZW1wdE9wdGlvbnMsXG4gIEF0dGVtcHRPdXRjb21lLFxuICBBdHRlbXB0UmVhc29uLFxuICBBdHRlbXB0UmVjb3JkLFxuICBBdHRlbXB0U3VtbWFyeSxcbiAgQ2FsbE9wdGlvbnMsXG4gIElkZW1wb3RlbmN5S2V5Q29udGV4dCxcbiAgTGF0ZVdyaXRlLFxuICBPYnNlcnZlZEF0dGVtcHQsXG4gIFN0YWdlVG91Y2hlcyxcbiAgVW5rbm93bkVmZmVjdEluaXQsXG59IGZyb20gJy4vbGliL2F0dGVtcHQvaW5kZXguanMnO1xuLyoqXG4gKiBAY2F0ZWdvcnkgQXR0ZW1wdHNcbiAqXG4gKiBBbiBhdHRlbXB0IGJ5IG5hbWUgKGBzZXJpZXNgICsgYGF0dGVtcHRgKSBhbmQgcGVyLW91dGNvbWUgY291bnRzIOKAlCB3aGF0IHJlY29yZGVyIHJvd3MgaG9sZCBvZiBhdHRlbXB0cy5cbiAqL1xuZXhwb3J0IHR5cGUgeyBBdHRlbXB0T3V0Y29tZUNvdW50cywgQXR0ZW1wdFJlZiB9IGZyb20gJy4vbGliL3JlY29yZGVyL2F0dGVtcHRTZXJpZXMuanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBBdHRlbXB0c1xuICpcbiAqIGBhdHRlbXB0KClgIOKAlCB0aGUgYXR0ZW1wdCBydW5uZXIgZm9yIGNvZGUgdGhhdCBpcyBub3QgYSBzdGFnZSAocmVjb3JkcyBnbyB0byBpdHMgYG9uQXR0ZW1wdGApOyBgZXJyb3JDYXRlZ29yeWBcbiAqIOKAlCB0aGUgb25lIGZhaWx1cmUgY2xhc3NpZmllciAoc2V2ZW4gZml4ZWQgY2F0ZWdvcmllcyk7IGByZXRyeVJ1bGVzYCDigJQgdGhlIG9uZSByZXRyeSBydWxlIHRhYmxlLCBhcyBgZGVjaWRlKClgXG4gKiBydWxlczsgdGhlIGF0dGVtcHQgY29udHJhY3QncyB0d28gZXJyb3JzLlxuICovXG5leHBvcnQgeyBhdHRlbXB0LCBBdHRlbXB0VGltZW91dEVycm9yLCBlcnJvckNhdGVnb3J5LCByZXRyeVJ1bGVzLCBVbmtub3duRWZmZWN0RXJyb3IgfSBmcm9tICcuL2xpYi9hdHRlbXB0L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29ycmVsYXRpb25cbiAqXG4gKiBUaGUgcnVuJ3MgY29ycmVsYXRpb24gKDEwLjEpOiBgZW52LnRyYWNlcGFyZW50YCAoVzNDLCBwYXJzZWQgc3RyaWN0bHkpIG9yIGBlbnYudHJhY2VJZGAgKyBgZW52Lm9wZXJhdGlvbklkYFxuICogYmVjb21lIE9ORSBmcm96ZW4gYFJ1bkNvcnJlbGF0aW9uYCBwZXIgcnVuIOKAlCBvbiBgZ2V0U25hcHNob3QoKS5jb3JyZWxhdGlvbmAsIGV2ZXJ5IGZsb3cgZXZlbnQnc1xuICogYHRyYXZlcnNhbENvbnRleHQuY29ycmVsYXRpb25gIGFuZCBldmVyeSBzY29wZSBhbmQgZW1pdCBldmVudCdzIGBjb3JyZWxhdGlvbmAuIGBwYXJzZVRyYWNlcGFyZW50YCAvXG4gKiBgZm9ybWF0VHJhY2VwYXJlbnRgIGFyZSB0aGUgVzNDIGNvZGVjOyBhIHJlZnVzZWQgaGVhZGVyIHRocm93cyBgVHJhY2VwYXJlbnRFcnJvcmAgd2l0aCBhIG5hbWVkIGByZWFzb25gLlxuICovXG5leHBvcnQgdHlwZSB7IFBhcnNlZFRyYWNlcGFyZW50LCBSdW5Db3JyZWxhdGlvbiwgVHJhY2VwYXJlbnRGaWVsZHMsIFRyYWNlcGFyZW50UmVmdXNhbCB9IGZyb20gJy4vbGliL2F0dGVtcHQvaW5kZXguanMnO1xuZXhwb3J0IHsgZm9ybWF0VHJhY2VwYXJlbnQsIHBhcnNlVHJhY2VwYXJlbnQsIFRyYWNlcGFyZW50RXJyb3IgfSBmcm9tICcuL2xpYi9hdHRlbXB0L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVuIOKAlCBFeGVjdXRlIGNoYXJ0cyBhbmQgY29sbGVjdCByZXN1bHRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IFJ1blJlc3VsdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydEV4ZWN1dG9yT3B0aW9ucyB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKlxuICogVGhlIGNyYXNoLXNhZmUgcmVjb3JkICgxMC4xKTogdGhlIGV4ZWN1dG9yJ3MgYHNpbmtgIG9wdGlvbiwgaXRzIGFjY291bnRpbmcgb24gYGdldFNuYXBzaG90KCkuc2lua2AsXG4gKiBgZXhlY3V0b3IuZmx1c2hSZWNvcmQoKWAncyByZXN1bHQsIGFuZCB0aGUgZXJyb3IgYSBydW4gd2l0aCBgb25GYWlsdXJlOiAnZmFpbCdgIHJlamVjdHMgd2l0aC4gVGhlIHBvcnRcbiAqIChgUmVjb3JkU2lua2AsIGBtZW1vcnlTaW5rYCkgaXMgYGZvb3R0cmFjZS93cml0ZWAnczsgdGhlIGZpbGUgYWRhcHRlciBpcyBgZm9vdHByaW50anMvc2lua3NgLlxuICogQGNhdGVnb3J5IFJ1blxuICovXG5leHBvcnQgdHlwZSB7XG4gIFJlY29yZEZsdXNoUmVzdWx0LFxuICBSZWNvcmRTaW5rRmFpbHVyZU1vZGUsXG4gIFJlY29yZFNpbmtGbHVzaE1vZGUsXG4gIFJlY29yZFNpbmtPcHRpb24sXG4gIFJlY29yZFNpbmtPcHRpb25zLFxuICBSZWNvcmRTaW5rU3RhdHMsXG59IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHsgUmVjb3JkU2lua0Vycm9yIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBUaGUgZm91ciBvYnNlcnZhYmlsaXR5IGRpYWxzIGBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnNgIGluaGVyaXRzLlxuICogQGNhdGVnb3J5IFJ1blxuICovXG5leHBvcnQgdHlwZSB7IFJ1bkRpYWxzIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB7IEZsb3dDaGFydEV4ZWN1dG9yIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB7IFJ1bkNvbnRleHQgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHR5cGUgeyBDaGFydE9wZW5BUElPcHRpb25zLCBNQ1BUb29sRGVzY3JpcHRpb24sIFJ1bm5hYmxlRmxvd0NoYXJ0IH0gZnJvbSAnLi9saWIvcnVubmVyL1J1bm5hYmxlQ2hhcnQuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPYnNlcnZlIOKAlCBEYXRhIChzY29wZSByZWNvcmRlcnMsIGZpcmUgZHVyaW5nIHN0YWdlIGV4ZWN1dGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEYXRhICovXG5leHBvcnQgdHlwZSB7XG4gIENvbW1pdEV2ZW50LFxuICBFcnJvckV2ZW50LFxuICBSZWFkRXZlbnQsXG4gIFJlZGFjdGlvblBvbGljeSxcbiAgUmVkYWN0aW9uUmVwb3J0LFxuICBTY29wZVJlY29yZGVyLFxuICBTdGFnZUV2ZW50LFxuICBXcml0ZUV2ZW50LFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHsgTWV0cmljUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHsgRGVidWdSZWNvcmRlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBPcGVyYXRpb24gKi9cbmV4cG9ydCB7IFJlY29yZGVyT3BlcmF0aW9uIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEZWxpdmVyeSB0aWVyIChSRkMtMDAxIGRlZmVycmVkIG9ic2VydmVycylcbiAqXG4gKiBFdmVyeSBgYXR0YWNoKlJlY29yZGVyYCBjYWxsIGFjY2VwdHMgYW4gb3B0aW9ucyBiYWc6XG4gKiBgZXhlY3V0b3IuYXR0YWNoU2NvcGVSZWNvcmRlcihyZWMsIHsgZGVsaXZlcnk6ICdkZWZlcnJlZCcgfSlgIHRha2VzIHRoZVxuICogcmVjb3JkZXIgT1VUIG9mIHRoZSBlbmdpbmUncyBob3QgcGF0aCDigJQgZXZlbnRzIGFyZSBjYXB0dXJlZCBpbnRvIG9uZVxuICogYm91bmRlZCwgdG90YWxseS1vcmRlcmVkIHF1ZXVlIGFuZCBkZWxpdmVyZWQgYXQgdGhlIG5leHQgbWljcm90YXNrXG4gKiBjaGVja3BvaW50IChcIm9uZSBiZWF0IGJlaGluZFwiKS4gT21pdCBgZGVsaXZlcnlgIGZvciB0aGUgaGlzdG9yaWNhbFxuICogc3luY2hyb25vdXMgY2FsbCAoYnl0ZS1pZGVudGljYWwgdG8gcHJldmlvdXMgcmVsZWFzZXMpLiBBY2NvdW50aW5nXG4gKiBzdXJmYWNlcyBvbiBgc25hcHNob3Qub2JzZXJ2ZXJTdGF0c2A7IGBleGVjdXRvci5kcmFpbk9ic2VydmVycygpYCBzZXR0bGVzXG4gKiBhc3luYyBsaXN0ZW5lcnMgYmVmb3JlIHNodXRkb3duLiBTZWUgYGRvY3MvZ3VpZGVzL29ic2VydmVycy1kZWZlcnJlZC5tZGAuXG4gKi9cbmV4cG9ydCB0eXBlIHtcbiAgQXR0YWNoUmVjb3JkZXJPcHRpb25zLFxuICBPYnNlcnZlckRlbGl2ZXJ5LFxuICBPYnNlcnZlckRyYWluUmVzdWx0LFxuICBPYnNlcnZlclN0YXRzLFxufSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEZWxpdmVyeSB0aWVyIChSRkMtMDAxIGRlZmVycmVkIG9ic2VydmVycylcbiAqXG4gKiBgQ2FwdHVyZVBvbGljeWAg4oCUIGhvdyBhIGRlZmVycmVkIGV2ZW50J3MgcGF5bG9hZCBpcyBtYXRlcmlhbGl6ZWQgYXRcbiAqIGNhcHR1cmUgdGltZSAoYCdjbG9uZSdgIGJ5IGRlZmF1bHQgZm9yIGF0dGFjaCBvcHRpb25zIC8gYCdzdW1tYXJ5J2AgLyBgJ3JlZidgKS4gYE92ZXJmbG93UG9saWN5YFxuICog4oCUIHdoYXQgYSBzYXR1cmF0ZWQgcXVldWUgZG9lcyAoYCdkcm9wLW9sZGVzdCdgIGRlZmF1bHQgLyBgJ3NhbXBsZSdgIC9cbiAqIGAnYmxvY2snYCkuIGBEaXNwYXRjaGVyU3RhdHNgIC8gYExpc3RlbmVyU3RhdHNgIOKAlCB0aGUgYWNjb3VudGluZyBzaGFwZXNcbiAqIGVtYmVkZGVkIGluIGBPYnNlcnZlclN0YXRzYC4gVHlwZXMgb25seSDigJQgdGhlIG9ic2VydmVyLXF1ZXVlIG1vZHVsZVxuICogaXRzZWxmIGlzIGludGVybmFsOyBjb25zdW1lcnMgdXNlIHRoZSBhdHRhY2ggb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgeyBDYXB0dXJlUG9saWN5LCBEaXNwYXRjaGVyU3RhdHMsIExpc3RlbmVyU3RhdHMsIE92ZXJmbG93UG9saWN5IH0gZnJvbSAnLi9saWIvb2JzZXJ2ZXItcXVldWUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIENvbWJpbmVkIChib3RoIGRhdGEtZmxvdyBhbmQgY29udHJvbC1mbG93KSAqL1xuZXhwb3J0IHR5cGUgeyBDb21iaW5lZFJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBDb21iaW5lZCAoYm90aCBkYXRhLWZsb3cgYW5kIGNvbnRyb2wtZmxvdykgKi9cbmV4cG9ydCB7XG4gIGhhc0VtaXRSZWNvcmRlck1ldGhvZHMsXG4gIGhhc0Zsb3dSZWNvcmRlck1ldGhvZHMsXG4gIGhhc1JlY29yZGVyTWV0aG9kcyxcbiAgaXNGbG93RXZlbnQsXG59IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRW1pdCAodXNlci1hdXRob3JlZCBzdHJ1Y3R1cmVkIGV2ZW50cylcbiAqXG4gKiBUaGlyZCBvYnNlcnZlciBjaGFubmVsIChhbG9uZ3NpZGUgYFNjb3BlUmVjb3JkZXJgIGFuZCBgRmxvd1JlY29yZGVyYCkuIENvbnN1bWVyXG4gKiBjb2RlIGNhbGxzIGBzY29wZS4kZW1pdChuYW1lLCBwYXlsb2FkKWAgZnJvbSBpbnNpZGUgYSBzdGFnZTsgZXZlcnkgYXR0YWNoZWRcbiAqIGBFbWl0UmVjb3JkZXIub25FbWl0KGV2ZW50KWAgZmlyZXMgc3luY2hyb25vdXNseSB3aXRoIHN0YWdlLWNvbnRleHRcbiAqIGVucmljaG1lbnQuIFBhc3MtdGhyb3VnaCDigJQgbm8gYnVmZmVyaW5nLCB6ZXJvIGFsbG9jYXRpb24gd2hlbiBubyByZWNvcmRlclxuICogaXMgYXR0YWNoZWQuXG4gKi9cbmV4cG9ydCB0eXBlIHsgRW1pdEV2ZW50LCBFbWl0UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9ic2VydmUg4oCUIEZsb3cgKEZsb3dSZWNvcmRlciwgZmlyZXMgYWZ0ZXIgc3RhZ2UgZXhlY3V0aW9uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHtcbiAgRmxvd0F0dGVtcHRFdmVudCxcbiAgRmxvd0JyZWFrRXZlbnQsXG4gIEZsb3dEZWNpc2lvbkV2ZW50LFxuICBGbG93RXJyb3JFdmVudCxcbiAgRmxvd0ZvcmtFdmVudCxcbiAgRmxvd0xvb3BFdmVudCxcbiAgRmxvd05leHRFdmVudCxcbiAgRmxvd1JlY29yZGVyLFxuICBGbG93UnVuRXZlbnQsXG4gIEZsb3dSdW5GYWlsZWRFdmVudCxcbiAgRmxvd1NlbGVjdGVkRXZlbnQsXG4gIEZsb3dTdGFnZUV2ZW50LFxuICBGbG93U3RhZ2VSZXRyeUV2ZW50LFxuICBGbG93U3ViZmxvd0V2ZW50LFxuICBGbG93U3ViZmxvd1JlZ2lzdGVyZWRFdmVudCxcbiAgRmxvd1Rocm90dGxlZEV2ZW50LFxuICBSZXN1bWVMaW5rLFxuICBUcmF2ZXJzYWxDb250ZXh0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3dcbiAqXG4gKiBgTmFycmF0aXZlRm9ybWF0dGVyYCDigJQgcGx1Z2dhYmxlIGZvcm1hdHRlciB0aGF0IGNvbnZlcnRzIGV2ZW50IGNvbnRleHRcbiAqIG9iamVjdHMgaW50byB0aGUgdGV4dCBsaW5lcyBvZiB0aGUgbmFycmF0aXZlLlxuICovXG5leHBvcnQgdHlwZSB7IE5hcnJhdGl2ZUZvcm1hdHRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgdHlwZSB7IE1hbmlmZXN0QXR0ZW1wdFJvdywgTWFuaWZlc3RFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTWFuaWZlc3RGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IEFkYXB0aXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBNaWxlc3RvbmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFByb2dyZXNzaXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBSTEVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFNlcGFyYXRlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBTaWxlbnROYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFdpbmRvd2VkTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VsZi1EZXNjcmliaW5nIOKAlCAuY29udHJhY3QoKSwgdG9PcGVuQVBJKCksIHRvTUNQVG9vbCgpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU2VsZi1EZXNjcmliaW5nICovXG5leHBvcnQgdHlwZSB7IEpzb25TY2hlbWEgfSBmcm9tICcuL2xpYi9jb250cmFjdC9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNuYXBzaG90ICYgQ29tcG9zaXRpb24g4oCUIFN1YmZsb3cgbmF2aWdhdGlvbiBhbmQgQ29tcG9zYWJsZVJ1bm5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFNuYXBzaG90ICYgQ29tcG9zaXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgQ29tcG9zYWJsZVJ1bm5lciB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBSZWNvcmRlclNuYXBzaG90LCBSdW50aW1lU25hcHNob3QsIFN1YnRyZWVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHsgZ2V0U3VidHJlZVNuYXBzaG90LCBsaXN0U3ViZmxvd1BhdGhzIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2NvcGVSZWNvcmRlciBDb21wb3NpdGlvbiDigJQgQnVuZGxlIG11bHRpcGxlIHJlY29yZGVycyBpbnRvIGRvbWFpbiBwcmVzZXRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU2NvcGVSZWNvcmRlciAqL1xuZXhwb3J0IHsgQ29tcG9zaXRlUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBhdXNlL1Jlc3VtZSDigJQgU2VyaWFsaXphYmxlIGNoZWNrcG9pbnRzIGZvciBsb25nLXJ1bm5pbmcgb3IgaHVtYW4taW4tdGhlLWxvb3AgZmxvd3Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWUgKi9cbi8qKiBAY2F0ZWdvcnkgUGF1c2UvUmVzdW1lICovXG5leHBvcnQgdHlwZSB7XG4gIEZsb3djaGFydENoZWNrcG9pbnQsXG4gIFBhdXNhYmxlSGFuZGxlcixcbiAgUGF1c2VkRXhlY3V0aW9uLFxuICBQZW5kaW5nUGF1c2UsXG4gIFJlZGFjdGlvbk1hcmtzLFxufSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IFBhdXNlL1Jlc3VtZVxuICpcbiAqIGBpbnRlcnJ1cHQoc2NvcGUsIHsgcmVhc29uLCBleHBlY3RzPyB9KWAg4oCUIHN0b3AgbWlkLXN0YWdlIHRvIGFzayBhIHF1ZXN0aW9uLFxuICogYW5kIGdldCB0aGUgYW5zd2VyIGJhY2sgYXQgdGhlIHNhbWUgY2FsbCBzaXRlIHdoZW4gdGhlIHJ1biByZXN1bWVzLiBSZXN1bWVcbiAqIHJlLWVudGVycyB0aGUgc3RhZ2UgZnJvbSBpdHMgVE9QIChzdGFnZXMgYXJlIGF0b21pYyksIHNvIGtlZXAgdGhlIGhhbGZcbiAqIGJlZm9yZSB0aGUgY2FsbCBpZGVtcG90ZW50LlxuICovXG5leHBvcnQgdHlwZSB7IEludGVycnVwdFBheWxvYWQgfSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUGF1c2UvUmVzdW1lICovXG5leHBvcnQgeyBpbnRlcnJ1cHQgfSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU2NvcGVSZWNvcmRlciAqL1xuZXhwb3J0IHR5cGUgeyBDb21wb3NpdGVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29uZmlndXJhdGlvbiDigJQgVHlwZXMgcGFzc2VkIHRvIEZsb3dDaGFydEV4ZWN1dG9yIGFuZCBydW4oKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgRXhlY3V0aW9uRW52LCBFeGVjdXRvclJlc3VsdCwgUGF1c2VkUmVzdWx0LCBSdW5PcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uICovXG5leHBvcnQgdHlwZSB7IFNjb3BlRmFjdG9yeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb25cbiAqXG4gKiBSZWFkLXRyYWNraW5nIHBvbGljeSBmb3IgYFN0YWdlU25hcHNob3Quc3RhZ2VSZWFkc2AgKCMxNCk6XG4gKiBgJ2Z1bGwnYCAoZGVmYXVsdCDigJQgcGVyLXJlYWQgdmFsdWUgY2xvbmUsIGhpc3RvcmljYWwgYmVoYXZpb3IpIC9cbiAqIGAnc3VtbWFyeSdgIChjaGVhcCBgUmVhZFN1bW1hcnlNYXJrZXJgIHBlciByZWFkKSAvIGAnb2ZmJ2AgKG5vIHRyYWNraW5nLFxuICogemVybyBwZXItcmVhZCBjbG9uZSkuIFBhc3MgYXMgYG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyByZWFkVHJhY2tpbmcgfSlgXG4gKiBvciBjYWxsIGBleGVjdXRvci5zZXRSZWFkVHJhY2tpbmcobW9kZSlgIGJlZm9yZSBgcnVuKClgLlxuICovXG5leHBvcnQgdHlwZSB7IFJlYWRTdW1tYXJ5TWFya2VyLCBSZWFkVHJhY2tpbmdNb2RlIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvblxuICpcbiAqIFdyaXRlLXRyYWNraW5nIHBvbGljeSBmb3IgYFN0YWdlU25hcHNob3Quc3RhZ2VXcml0ZXNgICgjMTNjLUEpIOKAlCB0aGVcbiAqIHNpYmxpbmcgb2YgYFJlYWRUcmFja2luZ01vZGVgOyBib3RoIGFsaWFzIHRoZSBzaGFyZWQgYFJldGVudGlvblBvbGljeWBcbiAqIGZhbWlseSBmcm9tIGBsaWIvY2FwdHVyZWAuIGAnZnVsbCdgIChkZWZhdWx0IOKAlCBwZXItd3JpdGUgdmFsdWUgY2xvbmUsXG4gKiBoaXN0b3JpY2FsIGJlaGF2aW9yKSAvIGAnc3VtbWFyeSdgIChjaGVhcCBgV3JpdGVTdW1tYXJ5TWFya2VyYCBwZXIgd3JpdGUpXG4gKiAvIGAnb2ZmJ2AgKG5vIHRyYWNraW5nOyBgc3RhZ2VXcml0ZXNgIGFic2VudCBhbmQgdGhlIGBvbkNvbW1pdGAgbXV0YXRpb25zXG4gKiBwYXlsb2FkIGlzIGVtcHR5IOKAlCB3cml0ZXMgdGhlbXNlbHZlcyBzdGlsbCBjb21taXQsIGFuZCB0aGUgY29tbWl0IGxvZyBpc1xuICogdW5hZmZlY3RlZCkuIFBhc3MgYXMgYG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyB3cml0ZVRyYWNraW5nIH0pYCBvclxuICogY2FsbCBgZXhlY3V0b3Iuc2V0V3JpdGVUcmFja2luZyhtb2RlKWAgYmVmb3JlIGBydW4oKWAuXG4gKi9cbmV4cG9ydCB0eXBlIHsgUmV0ZW50aW9uUG9saWN5LCBXcml0ZVN1bW1hcnlNYXJrZXIsIFdyaXRlVHJhY2tpbmdNb2RlIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvblxuICpcbiAqIENvbW1pdC12YWx1ZXMgZW5jb2RpbmcgZm9yIHRoZSBDT01NSVQgTE9HICgjMTNjLUIpIOKAlCB0aGUgdGhpcmQgZGlhbCBvZlxuICogdGhlIGZhbWlseSwgYW5kIHRoZSBvbmx5IExPU1NMRVNTIG9uZSAoaXQgY2hhbmdlcyB0aGUgbG9nJ3MgZW5jb2RpbmcsXG4gKiBuZXZlciBpdHMgaW5mb3JtYXRpb24pLiBgJ2Z1bGwnYCAoZGVmYXVsdCDigJQgZXZlcnkgc3Vydml2aW5nIGBzZXRgIHN0b3Jlc1xuICogdGhlIGZ1bGwgZmluYWwgdmFsdWUsIGJ5dGUtaWRlbnRpY2FsIHRvIGhpc3RvcnkpIC8gYCdkZWx0YSdgIChhcnJheVxuICogbmV0LWNoYW5nZXMgdGhhdCBhcmUgXCJiYXNlIHBsdXMgYSB0YWlsXCIgY29tbWl0IGFzIGFuIGBhcHBlbmRgIHZlcmJcbiAqIHN0b3Jpbmcgb25seSB0aGUgdGFpbDsgYGRlbGV0ZVZhbHVlKClgIGNvbW1pdHMgYXMgYSByZWFsIGBkZWxldGVgIHZlcmI7XG4gKiBvbmUgdHJhY2UgZW50cnkgcGVyIHN1cnZpdmluZyBwYXRoKS4gUmVwbGF5IHJlY29uc3RydWN0cyBldmVyeSBzdGVwJ3NcbiAqIGZ1bGwgc3RhdGUgZXhhY3RseS4gQ29uc3VtZXJzIHJlYWRpbmcgYGJ1bmRsZS5vdmVyd3JpdGVba2V5XWAgYXMgdGhlIGZ1bGxcbiAqIHZhbHVlIG11c3QgdXNlIGBjb21taXRWYWx1ZUF0YCBmcm9tIGBmb290dHJhY2VgLiBQYXNzIGFzXG4gKiBgbmV3IEZsb3dDaGFydEV4ZWN1dG9yKGNoYXJ0LCB7IGNvbW1pdFZhbHVlcyB9KWAgb3IgY2FsbFxuICogYGV4ZWN1dG9yLnNldENvbW1pdFZhbHVlcyhtb2RlKWAgYmVmb3JlIGBydW4oKWA7IHRoZSBhY3RpdmUgbW9kZSBpcyB0aGVcbiAqIHNuYXBzaG90IGRpc2NyaW1pbmFudCBgZ2V0U25hcHNob3QoKS5jb21taXRWYWx1ZXNgLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbnRyYWN0ICYgVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBTY2hlbWFLaW5kLCBWYWxpZGF0aW9uSXNzdWUsIFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHsgZGV0ZWN0U2NoZW1hLCBpc1ZhbGlkYXRhYmxlLCBpc1pvZCB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgQ29udHJhY3QgJiBWYWxpZGF0aW9uICovXG5leHBvcnQgeyBJbnB1dFZhbGlkYXRpb25FcnJvciwgdmFsaWRhdGVBZ2FpbnN0U2NoZW1hLCB2YWxpZGF0ZU9yVGhyb3cgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFcnJvciBVdGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBFcnJvciBVdGlsaXRpZXMgKi9cbmV4cG9ydCB0eXBlIHsgU3RydWN0dXJlZEVycm9ySW5mbyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3IgVXRpbGl0aWVzICovXG5leHBvcnQgeyBleHRyYWN0RXJyb3JJbmZvLCBmb3JtYXRFcnJvckluZm8gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXYgVG9vbHMg4oCUIE1vZGUgZmxhZ3MgYW5kIFpvZCBzY29wZSB1dGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBAY2F0ZWdvcnkgRGV2IFRvb2xzXG4gKlxuICogR2xvYmFsIGRldi1tb2RlIGZsYWcuIENhbGwgYGVuYWJsZURldk1vZGUoKWAgYXQgYXBwbGljYXRpb24gc3RhcnR1cCB0b1xuICogdHVybiBvbiBkZXZlbG9wZXItb25seSBkaWFnbm9zdGljcyBhY3Jvc3MgdGhlIGxpYnJhcnkg4oCUIGNpcmN1bGFyLXJlZmVyZW5jZVxuICogZGV0ZWN0aW9uIGluIHNjb3BlIHdyaXRlcywgd2FybmluZ3Mgd2hlbiBhIHJlY29yZGVyIGhhcyBubyBvYnNlcnZlclxuICogbWV0aG9kcywgc3VzcGljaW91cy1wcmVkaWNhdGUgd2FybmluZ3MgaW4gZGVjaWRlL3NlbGVjdCwgc3RydWN0dXJhbFxuICogY2hlY2tzIGluIGBnZXRTdWJ0cmVlU25hcHNob3RgLCBhbmQgYW55IGZ1dHVyZSBkZXYtb25seSBkaWFnbm9zdGljLlxuICpcbiAqIFByb2R1Y3Rpb24gbGVhdmVzIGl0IE9GRiBieSBkZWZhdWx0ICh6ZXJvIG92ZXJoZWFkKS4gU2VlIHRoZSBKU0RvYyBvblxuICogYGVuYWJsZURldk1vZGVgIGZvciB0aGUgZnVsbCBsaXN0IGFuZCB1c2FnZSBleGFtcGxlLlxuICovXG5leHBvcnQgeyBkaXNhYmxlRGV2TW9kZSwgZW5hYmxlRGV2TW9kZSwgaXNEZXZNb2RlIH0gZnJvbSAnLi9saWIvZGV2TW9kZS5qcyc7XG5cbi8vIGBkZWZpbmVTY29wZUZyb21ab2RgIGFuZCB0aGUgb3RoZXIgem9kLWJhc2VkIHNjb3BlIGhlbHBlcnMgbW92ZWQgdG8gdGhlIG9wdC1pblxuLy8gYGZvb3RwcmludGpzL3pvZGAgZW50cnkg4oCUIGtlZXBpbmcgem9kIG91dCBvZiB0aGUgY29yZSBsb2FkIHBhdGggKGl0IGlzIGFuXG4vLyBvcHRpb25hbCBwZWVyKS4gSW1wb3J0IHRoZW0gZnJvbSAnZm9vdHByaW50anMvem9kJy5cbi8vIEEgcnVuJ3MgcmVjb3JkIGFzIEpTT04gd2l0aG91dCB0aGUgZW5naW5lJ3MgcmVjdXJzaW9uIGxpbWl0ICg5LjI2LjApOiB0aGVcbi8vIHNhbWUgYnl0ZXMgSlNPTi5zdHJpbmdpZnkgZW1pdHMsIGZvciBhIGRlZXAgYG5leHRgIGNoYWluIGl0IGNhbm5vdCBlbmNvZGUuXG5leHBvcnQgdHlwZSB7IFJldHJ5TG9vcENhbGwsIFJldHJ5TG9vcERlY2lzaW9uLCBSZXRyeUxvb3BJZGVudGl0eSB9IGZyb20gJy4vbGliL2F0dGVtcHQvcmV0cnlMb29wVHlwZXMuanMnO1xuZXhwb3J0IHR5cGUgeyBSZXRyeUxvb3BDb250ZXh0LCBSZXRyeUxvb3BPcHRpb25zLCBSZXRyeUxvb3BTdGF0ZSB9IGZyb20gJy4vbGliL2J1aWxkZXIvcmV0cnlMb29wLmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ2FwdHVyZUNoYW5uZWxTdGF0dXMsXG4gIENhcHR1cmVMaW1pdGF0aW9uLFxuICBOYXRpdmVDYXB0dXJlTm90ZSxcbiAgUmVjb3JkZXJDYXB0dXJlQWNrbm93bGVkZ2VtZW50LFxufSBmcm9tICcuL2xpYi9jYXB0dXJlL25hdGl2ZUNvdmVyYWdlLmpzJztcbmV4cG9ydCB7IHN0cmluZ2lmeVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL3N0cmluZ2lmeVNuYXBzaG90LmpzJztcbiJdfQ==
@@ -21,12 +21,15 @@
21
21
  * `TypeError`, an `AbortError` / `TimeoutError` that was not the run's) → network
22
22
  * 9. anything else → unknown
23
23
  *
24
- * A status is a NUMBER (`status` or `statusCode`); a numeric string is not read as one. Total: a value whose
25
- * reads throw (a hostile Proxy) is `'unknown'`, never a second throw from an error path.
24
+ * A status is a NUMBER (`status` or `statusCode`); a numeric string is not read as one. Metadata uses only
25
+ * own/inherited data within 32 prototype objects; a caller accessor shadows farther data without executing.
26
+ * The captured platform DOMException name getter is the sole accessor exception and brand-checks its receiver.
27
+ * Inspection failures (a hostile Proxy) are `'unknown'`, never a second throw from an error path.
26
28
  */
27
29
  Object.defineProperty(exports, "__esModule", { value: true });
28
30
  exports.terminalCategory = exports.errorCategory = void 0;
29
31
  const errors_js_1 = require("../schema/errors.js");
32
+ const errorField_js_1 = require("./errorField.js");
30
33
  const errors_js_2 = require("./errors.js");
31
34
  /** Socket-level codes a transport failure carries (Node's `errno` names). */
32
35
  const NETWORK_CODES = new Set([
@@ -92,7 +95,7 @@ function categoryOf(error) {
92
95
  return 'unknown';
93
96
  const fields = error;
94
97
  const status = numberField(fields, 'status') ?? numberField(fields, 'statusCode');
95
- const declaresRetryAfter = isWait(fields.retryAfterMs) || isWait(fields.retryAfterSeconds);
98
+ const declaresRetryAfter = isWait((0, errorField_js_1.errorField)(fields, 'retryAfterMs')) || isWait((0, errorField_js_1.errorField)(fields, 'retryAfterSeconds'));
96
99
  if (status === 429 || declaresRetryAfter)
97
100
  return 'rate-limited';
98
101
  if (status !== undefined && status >= 500 && status <= 599)
@@ -101,11 +104,12 @@ function categoryOf(error) {
101
104
  return 'auth';
102
105
  if (status !== undefined && status >= 400 && status <= 499)
103
106
  return 'permanent';
104
- if (fields.retryable === false)
107
+ if ((0, errorField_js_1.errorField)(fields, 'retryable') === false)
105
108
  return 'permanent';
106
109
  if (error instanceof errors_js_1.InputValidationError)
107
110
  return 'permanent';
108
- const name = typeof fields.name === 'string' ? fields.name : undefined;
111
+ const declaredName = (0, errorField_js_1.errorField)(fields, 'name');
112
+ const name = typeof declaredName === 'string' ? declaredName : undefined;
109
113
  if (name !== undefined && VALIDATION_NAMES.has(name))
110
114
  return 'permanent';
111
115
  if (status === undefined && isTransportFailure(fields, name))
@@ -113,24 +117,27 @@ function categoryOf(error) {
113
117
  return 'unknown';
114
118
  }
115
119
  function isTransportFailure(fields, name) {
116
- if (hasNetworkCode(fields.code))
120
+ if (hasNetworkCode((0, errorField_js_1.errorField)(fields, 'code')))
117
121
  return true;
118
- const cause = fields.cause;
119
- if (cause !== null && typeof cause === 'object' && hasNetworkCode(cause.code)) {
122
+ const cause = (0, errorField_js_1.errorField)(fields, 'cause');
123
+ if (cause !== null && typeof cause === 'object' && hasNetworkCode((0, errorField_js_1.errorField)(cause, 'code'))) {
120
124
  return true;
121
125
  }
122
126
  if (name !== undefined && TRANSPORT_ABORT_NAMES.has(name))
123
127
  return true;
124
- return fields instanceof TypeError && typeof fields.message === 'string' && FETCH_FAILURE.test(fields.message);
128
+ if (!(fields instanceof TypeError))
129
+ return false;
130
+ const message = (0, errorField_js_1.errorField)(fields, 'message');
131
+ return typeof message === 'string' && FETCH_FAILURE.test(message);
125
132
  }
126
133
  function hasNetworkCode(code) {
127
134
  return typeof code === 'string' && NETWORK_CODES.has(code);
128
135
  }
129
136
  function numberField(fields, key) {
130
- const value = fields[key];
137
+ const value = (0, errorField_js_1.errorField)(fields, key);
131
138
  return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
132
139
  }
133
140
  function isWait(value) {
134
141
  return typeof value === 'number' && Number.isFinite(value) && value >= 0;
135
142
  }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2F0dGVtcHQvY2F0ZWdvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7OztBQUVILG1EQUEyRDtBQUMzRCwyQ0FBc0U7QUFHdEUsNkVBQTZFO0FBQzdFLE1BQU0sYUFBYSxHQUF3QixJQUFJLEdBQUcsQ0FBQztJQUNqRCxZQUFZO0lBQ1osY0FBYztJQUNkLFdBQVc7SUFDWCxXQUFXO0lBQ1gsV0FBVztJQUNYLE9BQU87Q0FDUixDQUFDLENBQUM7QUFFSCw0R0FBNEc7QUFDNUcsTUFBTSxhQUFhLEdBQUcsaUdBQWlHLENBQUM7QUFFeEgseUZBQXlGO0FBQ3pGLE1BQU0sZ0JBQWdCLEdBQXdCLElBQUksR0FBRyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLHNCQUFzQixDQUFDLENBQUMsQ0FBQztBQUUvRyxzSEFBc0g7QUFDdEgsTUFBTSxxQkFBcUIsR0FBd0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUUzRjs7O0dBR0c7QUFDSCxTQUFnQixhQUFhLENBQUMsS0FBYyxFQUFFLFVBQTBCLFFBQVE7SUFDOUUsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzVDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM1QyxJQUFJLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFSRCxzQ0FRQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFjLEVBQUUsS0FBdUI7SUFDdEUsSUFBSSxDQUFDO1FBQ0gsSUFBSSxL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QUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxjQUFjLENBQUUsS0FBaUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzNHLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDdkUsT0FBTyxNQUFNLFlBQVksU0FBUyxJQUFJLE9BQU8sTUFBTSxDQUFDLE9BQU8sS0FBSyxRQUFRLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakgsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLElBQWE7SUFDbkMsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsTUFBK0IsRUFBRSxHQUE0QjtJQUNoRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDakYsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLEtBQWM7SUFDNUIsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQzNFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGF0dGVtcHQvY2F0ZWdvcnkudHMg4oCUIGBlcnJvckNhdGVnb3J5YCwgdGhlIE9ORSBmYWlsdXJlIGNsYXNzaWZpZXIgKGRlc2lnbiDCpzMuOSkuXG4gKlxuICogU2V2ZW4gZml4ZWQgdmFsdWVzLCBzbyBldmVyeSByZWNvcmRlciDigJQgdGhlIG5hcnJhdGl2ZSwgdGhlIG1ldHJpYyBsYXllciwgYW4gYWdlbnQncyBvd24g4oCUIGJyZWFrcyBmYWlsdXJlcyBkb3duXG4gKiB0aGUgc2FtZSB3YXk7IGEgcmVjb3JkZXIgbmV2ZXIgaW52ZW50cyBhIGNhdGVnb3J5IG9mIGl0cyBvd24uIEJvcnJvd2VkIGZyb20gYWdlbnRmb290cHJpbnQnc1xuICogYGNsYXNzaWZ5UmV0cnlSZWFzb25gIGFuZCB3aWRlbmVkLCBzbyBpdHMgZGVjb3JhdG9ycyBhZG9wdCB0aGlzIG9uZSByYXRoZXIgdGhhbiBrZWVwIHRoZWlycy5cbiAqXG4gKiBDYXRlZ29yeSBpcyBFVklERU5DRSwgbmV2ZXIgcG9saWN5OiB0aGUgZGVmYXVsdCBgcmV0cnlPbmAgcmV0cmllcyBldmVyeSBjYXRlZ29yeS4gQSBjaGFydCB0aGF0IHdhbnRzIFwibmV2ZXJcbiAqIHJldHJ5IGEgcGVybWFuZW50IGZhaWx1cmVcIiBzYXlzIHNvOiBgcmV0cnlPbjogKGUpID0+IGVycm9yQ2F0ZWdvcnkoZSkgIT09ICdwZXJtYW5lbnQnYC5cbiAqXG4gKiBQcmVjZWRlbmNlIOKAlCB3aGF0IHRoZSBmYWlsdXJlIExPT0tFRCBsaWtlIHdpbnMgb3ZlciB3aGF0IGl0IGRlY2xhcmVzOlxuICogICAxLiB0aGUgYXR0ZW1wdCdzIG93biB0aW1lciAob3V0Y29tZSBgJ3RpbWVvdXQnYCwgb3Igb3VyIGBBdHRlbXB0VGltZW91dEVycm9yYCkgIOKGkiB0aW1lb3V0XG4gKiAgIDIuIHRoZSBydW4ncyBzaWduYWwgZW5kZWQgaXQgKG91dGNvbWUgYCdhYm9ydGVkJ2ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHVua25vd25cbiAqICAgMy4gc3RhdHVzIDQyOSwgb3IgYSBkZWNsYXJlZCBgcmV0cnlBZnRlck1zYCAvIGByZXRyeUFmdGVyU2Vjb25kc2AgICAgICAgICAgICAgICDihpIgcmF0ZS1saW1pdGVkXG4gKiAgIDQuIHN0YXR1cyA1eHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHNlcnZlclxuICogICA1LiBzdGF0dXMgNDAxIC8gNDAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBhdXRoXG4gKiAgIDYuIGFueSBvdGhlciA0eHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHBlcm1hbmVudFxuICogICA3LiBgcmV0cnlhYmxlOiBmYWxzZWAsIG9yIGEgdmFsaWRhdGlvbiBlcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBwZXJtYW5lbnRcbiAqICAgOC4gYSB0cmFuc3BvcnQgZmFpbHVyZSAoYSBzb2NrZXQgY29kZSBvbiB0aGUgZXJyb3Igb3IgaXRzIGNhdXNlLCBhIGZldGNoXG4gKiAgICAgIGBUeXBlRXJyb3JgLCBhbiBgQWJvcnRFcnJvcmAgLyBgVGltZW91dEVycm9yYCB0aGF0IHdhcyBub3QgdGhlIHJ1bidzKSAgICAgICAg4oaSIG5ldHdvcmtcbiAqICAgOS4gYW55dGhpbmcgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgdW5rbm93blxuICpcbiAqIEEgc3RhdHVzIGlzIGEgTlVNQkVSIChgc3RhdHVzYCBvciBgc3RhdHVzQ29kZWApOyBhIG51bWVyaWMgc3RyaW5nIGlzIG5vdCByZWFkIGFzIG9uZS4gVG90YWw6IGEgdmFsdWUgd2hvc2VcbiAqIHJlYWRzIHRocm93IChhIGhvc3RpbGUgUHJveHkpIGlzIGAndW5rbm93bidgLCBuZXZlciBhIHNlY29uZCB0aHJvdyBmcm9tIGFuIGVycm9yIHBhdGguXG4gKi9cblxuaW1wb3J0IHsgSW5wdXRWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi9zY2hlbWEvZXJyb3JzLmpzJztcbmltcG9ydCB7IEF0dGVtcHRUaW1lb3V0RXJyb3IsIFVua25vd25FZmZlY3RFcnJvciB9IGZyb20gJy4vZXJyb3JzLmpzJztcbmltcG9ydCB0eXBlIHsgQXR0ZW1wdENhdGVnb3J5LCBBdHRlbXB0T3V0Y29tZSB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG4vKiogU29ja2V0LWxldmVsIGNvZGVzIGEgdHJhbnNwb3J0IGZhaWx1cmUgY2FycmllcyAoTm9kZSdzIGBlcnJub2AgbmFtZXMpLiAqL1xuY29uc3QgTkVUV09SS19DT0RFUzogUmVhZG9ubHlTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xuICAnRUNPTk5SRVNFVCcsXG4gICdFQ09OTlJFRlVTRUQnLFxuICAnRU5PVEZPVU5EJyxcbiAgJ0VUSU1FRE9VVCcsXG4gICdFQUlfQUdBSU4nLFxuICAnRVBJUEUnLFxuXSk7XG5cbi8qKiBUaGUgbWVzc2FnZXMgcnVudGltZXMgZ2l2ZSBhIGBmZXRjaGAgdGhhdCBuZXZlciByZWFjaGVkIHRoZSBzZXJ2ZXIgKE5vZGUsIENocm9taXVtLCBGaXJlZm94LCBTYWZhcmkpLiAqL1xuY29uc3QgRkVUQ0hfRkFJTFVSRSA9IC9eKGZldGNoIGZhaWxlZHxmYWlsZWQgdG8gZmV0Y2h8bmV0d29ya2Vycm9yIHdoZW4gYXR0ZW1wdGluZyB0byBmZXRjaCByZXNvdXJjZVxcLj98bG9hZCBmYWlsZWQpJC9pO1xuXG4vKiogRXJyb3IgbmFtZXMgdGhhdCBzYXkgYSB2YWxpZGF0aW9uIGZhaWxlZCDigJQgcmV0cnlpbmcgdGhlIHNhbWUgaW5wdXQgY2Fubm90IHN1Y2NlZWQuICovXG5jb25zdCBWQUxJREFUSU9OX05BTUVTOiBSZWFkb25seVNldDxzdHJpbmc+ID0gbmV3IFNldChbJ1ZhbGlkYXRpb25FcnJvcicsICdab2RFcnJvcicsICdJbnB1dFZhbGlkYXRpb25FcnJvciddKTtcblxuLyoqIEVycm9yIG5hbWVzIG9mIGFuIGFib3J0IG9yIGEgdGltZW91dCB0aGF0IHNvbWUgT1RIRVIgc2lnbmFsIHJhaXNlZCAodGhlIHJ1bidzIG93biBlbmRzIGFzIG91dGNvbWUgYCdhYm9ydGVkJ2ApLiAqL1xuY29uc3QgVFJBTlNQT1JUX0FCT1JUX05BTUVTOiBSZWFkb25seVNldDxzdHJpbmc+ID0gbmV3IFNldChbJ0Fib3J0RXJyb3InLCAnVGltZW91dEVycm9yJ10pO1xuXG4vKipcbiAqIFRoZSBjYXRlZ29yeSBvZiBhbiBhdHRlbXB0J3MgZmFpbHVyZS4gYG91dGNvbWVgIGlzIGhvdyB0aGUgYXR0ZW1wdCBlbmRlZCAoZGVmYXVsdCBgJ2ZhaWxlZCdgKTogaXQgZGVjaWRlc1xuICogYCd0aW1lb3V0J2AgKHRoZSBhdHRlbXB0J3Mgb3duIHRpbWVyKSBhbmQgYCd1bmtub3duJ2AgKHRoZSBydW4ncyBzaWduYWwpIGJlZm9yZSB0aGUgZXJyb3IgaXMgcmVhZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9yQ2F0ZWdvcnkoZXJyb3I6IHVua25vd24sIG91dGNvbWU6IEF0dGVtcHRPdXRjb21lID0gJ2ZhaWxlZCcpOiBBdHRlbXB0Q2F0ZWdvcnkge1xuICBpZiAob3V0Y29tZSA9PT0gJ3RpbWVvdXQnKSByZXR1cm4gJ3RpbWVvdXQnO1xuICBpZiAob3V0Y29tZSA9PT0gJ2Fib3J0ZWQnKSByZXR1cm4gJ3Vua25vd24nO1xuICB0cnkge1xuICAgIHJldHVybiBjYXRlZ29yeU9mKGVycm9yKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuICd1bmtub3duJztcbiAgfVxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUZXJtaW5hbCBvd25lcnNoaXAgcHJlc2VydmVzIGEgcHJvZHVjZXIncyBrbm93biBjYXRlZ29yeS4gQW5cbiAqIHVucmVzb2x2ZWQgZWZmZWN0IGlzIHVua25vd24sIG5ldmVyIHRoZSBjYXRlZ29yeSBvZiBpdHMgcGh5c2ljYWwgY2F1c2UuXG4gKiBUaGlzIGRvZXMgbm90IHJld3JpdGUgaGlzdG9yaWNhbCBhdHRlbXB0IGNhdGVnb3JpZXMgb3IgcmUtcmVhZCBhIGtub3duIG9uZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlcm1pbmFsQ2F0ZWdvcnkoZXJyb3I6IHVua25vd24sIGtub3duPzogQXR0ZW1wdENhdGVnb3J5KTogQXR0ZW1wdENhdGVnb3J5IHtcbiAgdHJ5IHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBVbmtub3duRWZmZWN0RXJyb3IpIHJldHVybiAndW5rbm93bic7XG4gICAgLy8gQ0pTIGFuZCBFU00gaGF2ZSBkaXN0aW5jdCBjb25zdHJ1Y3RvcnMuIEEgZGVjbGFyZWQgb3duIERBVEEgbmFtZSBtYXlcbiAgICAvLyBvbmx5IHJlZHVjZSBjZXJ0YWludHkgdG8gdW5rbm93bjsgbmV2ZXIgZXhlY3V0ZSBhbiBlcnJvcidzIG5hbWUgZ2V0dGVyXG4gICAgLy8gb3IgcHJvbW90ZSBpdHMgcGh5c2ljYWwgY2F1c2UgdG8gYSBrbm93biBvdXRjb21lIGFjcm9zcyBtb2R1bGUgY29waWVzLlxuICAgIGlmIChlcnJvciAhPT0gbnVsbCAmJiAodHlwZW9mIGVycm9yID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgZXJyb3IgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICBjb25zdCBuYW1lID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlcnJvciwgJ25hbWUnKTtcbiAgICAgIGlmIChuYW1lICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuYW1lLCAndmFsdWUnKSAmJiBuYW1lLnZhbHVlID09PSAnVW5rbm93bkVmZmVjdEVycm9yJykge1xuICAgICAgICByZXR1cm4gJ3Vua25vd24nO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGtub3duID8/ICd1bmtub3duJztcbiAgfVxuICByZXR1cm4ga25vd24gPz8gZXJyb3JDYXRlZ29yeShlcnJvcik7XG59XG5cbmZ1bmN0aW9uIGNhdGVnb3J5T2YoZXJyb3I6IHVua25vd24pOiBBdHRlbXB0Q2F0ZWdvcnkge1xuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBdHRlbXB0VGltZW91dEVycm9yKSByZXR1cm4gJ3RpbWVvdXQnO1xuICBpZiAoZXJyb3IgPT09IG51bGwgfHwgKHR5cGVvZiBlcnJvciAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIGVycm9yICE9PSAnZnVuY3Rpb24nKSkgcmV0dXJuICd1bmtub3duJztcbiAgY29uc3QgZmllbGRzID0gZXJyb3IgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgY29uc3Qgc3RhdHVzID0gbnVtYmVyRmllbGQoZmllbGRzLCAnc3RhdHVzJykgPz8gbnVtYmVyRmllbGQoZmllbGRzLCAnc3RhdHVzQ29kZScpO1xuICBjb25zdCBkZWNsYXJlc1JldHJ5QWZ0ZXIgPSBpc1dhaXQoZmllbGRzLnJldHJ5QWZ0ZXJNcykgfHwgaXNXYWl0KGZpZWxkcy5yZXRyeUFmdGVyU2Vjb25kcyk7XG4gIGlmIChzdGF0dXMgPT09IDQyOSB8fCBkZWNsYXJlc1JldHJ5QWZ0ZXIpIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgaWYgKHN0YXR1cyAhPT0gdW5kZWZpbmVkICYmIHN0YXR1cyA+PSA1MDAgJiYgc3RhdHVzIDw9IDU5OSkgcmV0dXJuICdzZXJ2ZXInO1xuICBpZiAoc3RhdHVzID09PSA0MDEgfHwgc3RhdHVzID09PSA0MDMpIHJldHVybiAnYXV0aCc7XG4gIGlmIChzdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBzdGF0dXMgPj0gNDAwICYmIHN0YXR1cyA8PSA0OTkpIHJldHVybiAncGVybWFuZW50JztcblxuICBpZiAoZmllbGRzLnJldHJ5YWJsZSA9PT0gZmFsc2UpIHJldHVybiAncGVybWFuZW50JztcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgSW5wdXRWYWxpZGF0aW9uRXJyb3IpIHJldHVybiAncGVybWFuZW50JztcbiAgY29uc3QgbmFtZSA9IHR5cGVvZiBmaWVsZHMubmFtZSA9PT0gJ3N0cmluZycgPyBmaWVsZHMubmFtZSA6IHVuZGVmaW5lZDtcbiAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCAmJiBWQUxJREFUSU9OX05BTUVTLmhhcyhuYW1lKSkgcmV0dXJuICdwZXJtYW5lbnQnO1xuXG4gIGlmIChzdGF0dXMgPT09IHVuZGVmaW5lZCAmJiBpc1RyYW5zcG9ydEZhaWx1cmUoZmllbGRzLCBuYW1lKSkgcmV0dXJuICduZXR3b3JrJztcbiAgcmV0dXJuICd1bmtub3duJztcbn1cblxuZnVuY3Rpb24gaXNUcmFuc3BvcnRGYWlsdXJlKGZpZWxkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICBpZiAoaGFzTmV0d29ya0NvZGUoZmllbGRzLmNvZGUpKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3QgY2F1c2UgPSBmaWVsZHMuY2F1c2U7XG4gIGlmIChjYXVzZSAhPT0gbnVsbCAmJiB0eXBlb2YgY2F1c2UgPT09ICdvYmplY3QnICYmIGhhc05ldHdvcmtDb2RlKChjYXVzZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikuY29kZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAobmFtZSAhPT0gdW5kZWZpbmVkICYmIFRSQU5TUE9SVF9BQk9SVF9OQU1FUy5oYXMobmFtZSkpIHJldHVybiB0cnVlO1xuICByZXR1cm4gZmllbGRzIGluc3RhbmNlb2YgVHlwZUVycm9yICYmIHR5cGVvZiBmaWVsZHMubWVzc2FnZSA9PT0gJ3N0cmluZycgJiYgRkVUQ0hfRkFJTFVSRS50ZXN0KGZpZWxkcy5tZXNzYWdlKTtcbn1cblxuZnVuY3Rpb24gaGFzTmV0d29ya0NvZGUoY29kZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZW9mIGNvZGUgPT09ICdzdHJpbmcnICYmIE5FVFdPUktfQ09ERVMuaGFzKGNvZGUpO1xufVxuXG5mdW5jdGlvbiBudW1iZXJGaWVsZChmaWVsZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6ICdzdGF0dXMnIHwgJ3N0YXR1c0NvZGUnKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdmFsdWUgPSBmaWVsZHNba2V5XTtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc1dhaXQodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlKSAmJiB2YWx1ZSA+PSAwO1xufVxuIl19
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2F0dGVtcHQvY2F0ZWdvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRzs7O0FBRUgsbURBQTJEO0FBQzNELG1EQUE2QztBQUM3QywyQ0FBc0U7QUFHdEUsNkVBQTZFO0FBQzdFLE1BQU0sYUFBYSxHQUF3QixJQUFJLEdBQUcsQ0FBQztJQUNqRCxZQUFZO0lBQ1osY0FBYztJQUNkLFdBQVc7SUFDWCxXQUFXO0lBQ1gsV0FBVztJQUNYLE9BQU87Q0FDUixDQUFDLENBQUM7QUFFSCw0R0FBNEc7QUFDNUcsTUFBTSxhQUFhLEdBQUcsaUdBQWlHLENBQUM7QUFFeEgseUZBQXlGO0FBQ3pGLE1BQU0sZ0JBQWdCLEdBQXdCLElBQUksR0FBRyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLHNCQUFzQixDQUFDLENBQUMsQ0FBQztBQUUvRyxzSEFBc0g7QUFDdEgsTUFBTSxxQkFBcUIsR0FBd0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUUzRjs7O0dBR0c7QUFDSCxTQUFnQixhQUFhLENBQUMsS0FBYyxFQUFFLFVBQTBCLFFBQVE7SUFDOUUsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzVDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM1QyxJQUFJLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFSRCxzQ0FRQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFjLEVBQUUsS0FBdUI7SUFDdEUsSUFBSSxD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akYsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLEtBQWM7SUFDNUIsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQzNFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGF0dGVtcHQvY2F0ZWdvcnkudHMg4oCUIGBlcnJvckNhdGVnb3J5YCwgdGhlIE9ORSBmYWlsdXJlIGNsYXNzaWZpZXIgKGRlc2lnbiDCpzMuOSkuXG4gKlxuICogU2V2ZW4gZml4ZWQgdmFsdWVzLCBzbyBldmVyeSByZWNvcmRlciDigJQgdGhlIG5hcnJhdGl2ZSwgdGhlIG1ldHJpYyBsYXllciwgYW4gYWdlbnQncyBvd24g4oCUIGJyZWFrcyBmYWlsdXJlcyBkb3duXG4gKiB0aGUgc2FtZSB3YXk7IGEgcmVjb3JkZXIgbmV2ZXIgaW52ZW50cyBhIGNhdGVnb3J5IG9mIGl0cyBvd24uIEJvcnJvd2VkIGZyb20gYWdlbnRmb290cHJpbnQnc1xuICogYGNsYXNzaWZ5UmV0cnlSZWFzb25gIGFuZCB3aWRlbmVkLCBzbyBpdHMgZGVjb3JhdG9ycyBhZG9wdCB0aGlzIG9uZSByYXRoZXIgdGhhbiBrZWVwIHRoZWlycy5cbiAqXG4gKiBDYXRlZ29yeSBpcyBFVklERU5DRSwgbmV2ZXIgcG9saWN5OiB0aGUgZGVmYXVsdCBgcmV0cnlPbmAgcmV0cmllcyBldmVyeSBjYXRlZ29yeS4gQSBjaGFydCB0aGF0IHdhbnRzIFwibmV2ZXJcbiAqIHJldHJ5IGEgcGVybWFuZW50IGZhaWx1cmVcIiBzYXlzIHNvOiBgcmV0cnlPbjogKGUpID0+IGVycm9yQ2F0ZWdvcnkoZSkgIT09ICdwZXJtYW5lbnQnYC5cbiAqXG4gKiBQcmVjZWRlbmNlIOKAlCB3aGF0IHRoZSBmYWlsdXJlIExPT0tFRCBsaWtlIHdpbnMgb3ZlciB3aGF0IGl0IGRlY2xhcmVzOlxuICogICAxLiB0aGUgYXR0ZW1wdCdzIG93biB0aW1lciAob3V0Y29tZSBgJ3RpbWVvdXQnYCwgb3Igb3VyIGBBdHRlbXB0VGltZW91dEVycm9yYCkgIOKGkiB0aW1lb3V0XG4gKiAgIDIuIHRoZSBydW4ncyBzaWduYWwgZW5kZWQgaXQgKG91dGNvbWUgYCdhYm9ydGVkJ2ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHVua25vd25cbiAqICAgMy4gc3RhdHVzIDQyOSwgb3IgYSBkZWNsYXJlZCBgcmV0cnlBZnRlck1zYCAvIGByZXRyeUFmdGVyU2Vjb25kc2AgICAgICAgICAgICAgICDihpIgcmF0ZS1saW1pdGVkXG4gKiAgIDQuIHN0YXR1cyA1eHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHNlcnZlclxuICogICA1LiBzdGF0dXMgNDAxIC8gNDAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBhdXRoXG4gKiAgIDYuIGFueSBvdGhlciA0eHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHBlcm1hbmVudFxuICogICA3LiBgcmV0cnlhYmxlOiBmYWxzZWAsIG9yIGEgdmFsaWRhdGlvbiBlcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBwZXJtYW5lbnRcbiAqICAgOC4gYSB0cmFuc3BvcnQgZmFpbHVyZSAoYSBzb2NrZXQgY29kZSBvbiB0aGUgZXJyb3Igb3IgaXRzIGNhdXNlLCBhIGZldGNoXG4gKiAgICAgIGBUeXBlRXJyb3JgLCBhbiBgQWJvcnRFcnJvcmAgLyBgVGltZW91dEVycm9yYCB0aGF0IHdhcyBub3QgdGhlIHJ1bidzKSAgICAgICAg4oaSIG5ldHdvcmtcbiAqICAgOS4gYW55dGhpbmcgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgdW5rbm93blxuICpcbiAqIEEgc3RhdHVzIGlzIGEgTlVNQkVSIChgc3RhdHVzYCBvciBgc3RhdHVzQ29kZWApOyBhIG51bWVyaWMgc3RyaW5nIGlzIG5vdCByZWFkIGFzIG9uZS4gTWV0YWRhdGEgdXNlcyBvbmx5XG4gKiBvd24vaW5oZXJpdGVkIGRhdGEgd2l0aGluIDMyIHByb3RvdHlwZSBvYmplY3RzOyBhIGNhbGxlciBhY2Nlc3NvciBzaGFkb3dzIGZhcnRoZXIgZGF0YSB3aXRob3V0IGV4ZWN1dGluZy5cbiAqIFRoZSBjYXB0dXJlZCBwbGF0Zm9ybSBET01FeGNlcHRpb24gbmFtZSBnZXR0ZXIgaXMgdGhlIHNvbGUgYWNjZXNzb3IgZXhjZXB0aW9uIGFuZCBicmFuZC1jaGVja3MgaXRzIHJlY2VpdmVyLlxuICogSW5zcGVjdGlvbiBmYWlsdXJlcyAoYSBob3N0aWxlIFByb3h5KSBhcmUgYCd1bmtub3duJ2AsIG5ldmVyIGEgc2Vjb25kIHRocm93IGZyb20gYW4gZXJyb3IgcGF0aC5cbiAqL1xuXG5pbXBvcnQgeyBJbnB1dFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4uL3NjaGVtYS9lcnJvcnMuanMnO1xuaW1wb3J0IHsgZXJyb3JGaWVsZCB9IGZyb20gJy4vZXJyb3JGaWVsZC5qcyc7XG5pbXBvcnQgeyBBdHRlbXB0VGltZW91dEVycm9yLCBVbmtub3duRWZmZWN0RXJyb3IgfSBmcm9tICcuL2Vycm9ycy5qcyc7XG5pbXBvcnQgdHlwZSB7IEF0dGVtcHRDYXRlZ29yeSwgQXR0ZW1wdE91dGNvbWUgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqIFNvY2tldC1sZXZlbCBjb2RlcyBhIHRyYW5zcG9ydCBmYWlsdXJlIGNhcnJpZXMgKE5vZGUncyBgZXJybm9gIG5hbWVzKS4gKi9cbmNvbnN0IE5FVFdPUktfQ09ERVM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ0VDT05OUkVTRVQnLFxuICAnRUNPTk5SRUZVU0VEJyxcbiAgJ0VOT1RGT1VORCcsXG4gICdFVElNRURPVVQnLFxuICAnRUFJX0FHQUlOJyxcbiAgJ0VQSVBFJyxcbl0pO1xuXG4vKiogVGhlIG1lc3NhZ2VzIHJ1bnRpbWVzIGdpdmUgYSBgZmV0Y2hgIHRoYXQgbmV2ZXIgcmVhY2hlZCB0aGUgc2VydmVyIChOb2RlLCBDaHJvbWl1bSwgRmlyZWZveCwgU2FmYXJpKS4gKi9cbmNvbnN0IEZFVENIX0ZBSUxVUkUgPSAvXihmZXRjaCBmYWlsZWR8ZmFpbGVkIHRvIGZldGNofG5ldHdvcmtlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gZmV0Y2ggcmVzb3VyY2VcXC4/fGxvYWQgZmFpbGVkKSQvaTtcblxuLyoqIEVycm9yIG5hbWVzIHRoYXQgc2F5IGEgdmFsaWRhdGlvbiBmYWlsZWQg4oCUIHJldHJ5aW5nIHRoZSBzYW1lIGlucHV0IGNhbm5vdCBzdWNjZWVkLiAqL1xuY29uc3QgVkFMSURBVElPTl9OQU1FUzogUmVhZG9ubHlTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoWydWYWxpZGF0aW9uRXJyb3InLCAnWm9kRXJyb3InLCAnSW5wdXRWYWxpZGF0aW9uRXJyb3InXSk7XG5cbi8qKiBFcnJvciBuYW1lcyBvZiBhbiBhYm9ydCBvciBhIHRpbWVvdXQgdGhhdCBzb21lIE9USEVSIHNpZ25hbCByYWlzZWQgKHRoZSBydW4ncyBvd24gZW5kcyBhcyBvdXRjb21lIGAnYWJvcnRlZCdgKS4gKi9cbmNvbnN0IFRSQU5TUE9SVF9BQk9SVF9OQU1FUzogUmVhZG9ubHlTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoWydBYm9ydEVycm9yJywgJ1RpbWVvdXRFcnJvciddKTtcblxuLyoqXG4gKiBUaGUgY2F0ZWdvcnkgb2YgYW4gYXR0ZW1wdCdzIGZhaWx1cmUuIGBvdXRjb21lYCBpcyBob3cgdGhlIGF0dGVtcHQgZW5kZWQgKGRlZmF1bHQgYCdmYWlsZWQnYCk6IGl0IGRlY2lkZXNcbiAqIGAndGltZW91dCdgICh0aGUgYXR0ZW1wdCdzIG93biB0aW1lcikgYW5kIGAndW5rbm93bidgICh0aGUgcnVuJ3Mgc2lnbmFsKSBiZWZvcmUgdGhlIGVycm9yIGlzIHJlYWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlcnJvckNhdGVnb3J5KGVycm9yOiB1bmtub3duLCBvdXRjb21lOiBBdHRlbXB0T3V0Y29tZSA9ICdmYWlsZWQnKTogQXR0ZW1wdENhdGVnb3J5IHtcbiAgaWYgKG91dGNvbWUgPT09ICd0aW1lb3V0JykgcmV0dXJuICd0aW1lb3V0JztcbiAgaWYgKG91dGNvbWUgPT09ICdhYm9ydGVkJykgcmV0dXJuICd1bmtub3duJztcbiAgdHJ5IHtcbiAgICByZXR1cm4gY2F0ZWdvcnlPZihlcnJvcik7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAndW5rbm93bic7XG4gIH1cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGVybWluYWwgb3duZXJzaGlwIHByZXNlcnZlcyBhIHByb2R1Y2VyJ3Mga25vd24gY2F0ZWdvcnkuIEFuXG4gKiB1bnJlc29sdmVkIGVmZmVjdCBpcyB1bmtub3duLCBuZXZlciB0aGUgY2F0ZWdvcnkgb2YgaXRzIHBoeXNpY2FsIGNhdXNlLlxuICogVGhpcyBkb2VzIG5vdCByZXdyaXRlIGhpc3RvcmljYWwgYXR0ZW1wdCBjYXRlZ29yaWVzIG9yIHJlLXJlYWQgYSBrbm93biBvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtaW5hbENhdGVnb3J5KGVycm9yOiB1bmtub3duLCBrbm93bj86IEF0dGVtcHRDYXRlZ29yeSk6IEF0dGVtcHRDYXRlZ29yeSB7XG4gIHRyeSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgVW5rbm93bkVmZmVjdEVycm9yKSByZXR1cm4gJ3Vua25vd24nO1xuICAgIC8vIENKUyBhbmQgRVNNIGhhdmUgZGlzdGluY3QgY29uc3RydWN0b3JzLiBBIGRlY2xhcmVkIG93biBEQVRBIG5hbWUgbWF5XG4gICAgLy8gb25seSByZWR1Y2UgY2VydGFpbnR5IHRvIHVua25vd247IG5ldmVyIGV4ZWN1dGUgYW4gZXJyb3IncyBuYW1lIGdldHRlclxuICAgIC8vIG9yIHByb21vdGUgaXRzIHBoeXNpY2FsIGNhdXNlIHRvIGEga25vd24gb3V0Y29tZSBhY3Jvc3MgbW9kdWxlIGNvcGllcy5cbiAgICBpZiAoZXJyb3IgIT09IG51bGwgJiYgKHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGVycm9yID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgY29uc3QgbmFtZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXJyb3IsICduYW1lJyk7XG4gICAgICBpZiAobmFtZSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobmFtZSwgJ3ZhbHVlJykgJiYgbmFtZS52YWx1ZSA9PT0gJ1Vua25vd25FZmZlY3RFcnJvcicpIHtcbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBrbm93biA/PyAndW5rbm93bic7XG4gIH1cbiAgcmV0dXJuIGtub3duID8/IGVycm9yQ2F0ZWdvcnkoZXJyb3IpO1xufVxuXG5mdW5jdGlvbiBjYXRlZ29yeU9mKGVycm9yOiB1bmtub3duKTogQXR0ZW1wdENhdGVnb3J5IHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXR0ZW1wdFRpbWVvdXRFcnJvcikgcmV0dXJuICd0aW1lb3V0JztcbiAgaWYgKGVycm9yID09PSBudWxsIHx8ICh0eXBlb2YgZXJyb3IgIT09ICdvYmplY3QnICYmIHR5cGVvZiBlcnJvciAhPT0gJ2Z1bmN0aW9uJykpIHJldHVybiAndW5rbm93bic7XG4gIGNvbnN0IGZpZWxkcyA9IGVycm9yIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIGNvbnN0IHN0YXR1cyA9IG51bWJlckZpZWxkKGZpZWxkcywgJ3N0YXR1cycpID8/IG51bWJlckZpZWxkKGZpZWxkcywgJ3N0YXR1c0NvZGUnKTtcbiAgY29uc3QgZGVjbGFyZXNSZXRyeUFmdGVyID1cbiAgICBpc1dhaXQoZXJyb3JGaWVsZChmaWVsZHMsICdyZXRyeUFmdGVyTXMnKSkgfHwgaXNXYWl0KGVycm9yRmllbGQoZmllbGRzLCAncmV0cnlBZnRlclNlY29uZHMnKSk7XG4gIGlmIChzdGF0dXMgPT09IDQyOSB8fCBkZWNsYXJlc1JldHJ5QWZ0ZXIpIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgaWYgKHN0YXR1cyAhPT0gdW5kZWZpbmVkICYmIHN0YXR1cyA+PSA1MDAgJiYgc3RhdHVzIDw9IDU5OSkgcmV0dXJuICdzZXJ2ZXInO1xuICBpZiAoc3RhdHVzID09PSA0MDEgfHwgc3RhdHVzID09PSA0MDMpIHJldHVybiAnYXV0aCc7XG4gIGlmIChzdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBzdGF0dXMgPj0gNDAwICYmIHN0YXR1cyA8PSA0OTkpIHJldHVybiAncGVybWFuZW50JztcblxuICBpZiAoZXJyb3JGaWVsZChmaWVsZHMsICdyZXRyeWFibGUnKSA9PT0gZmFsc2UpIHJldHVybiAncGVybWFuZW50JztcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgSW5wdXRWYWxpZGF0aW9uRXJyb3IpIHJldHVybiAncGVybWFuZW50JztcbiAgY29uc3QgZGVjbGFyZWROYW1lID0gZXJyb3JGaWVsZChmaWVsZHMsICduYW1lJyk7XG4gIGNvbnN0IG5hbWUgPSB0eXBlb2YgZGVjbGFyZWROYW1lID09PSAnc3RyaW5nJyA/IGRlY2xhcmVkTmFtZSA6IHVuZGVmaW5lZDtcbiAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCAmJiBWQUxJREFUSU9OX05BTUVTLmhhcyhuYW1lKSkgcmV0dXJuICdwZXJtYW5lbnQnO1xuXG4gIGlmIChzdGF0dXMgPT09IHVuZGVmaW5lZCAmJiBpc1RyYW5zcG9ydEZhaWx1cmUoZmllbGRzLCBuYW1lKSkgcmV0dXJuICduZXR3b3JrJztcbiAgcmV0dXJuICd1bmtub3duJztcbn1cblxuZnVuY3Rpb24gaXNUcmFuc3BvcnRGYWlsdXJlKGZpZWxkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICBpZiAoaGFzTmV0d29ya0NvZGUoZXJyb3JGaWVsZChmaWVsZHMsICdjb2RlJykpKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3QgY2F1c2UgPSBlcnJvckZpZWxkKGZpZWxkcywgJ2NhdXNlJyk7XG4gIGlmIChjYXVzZSAhPT0gbnVsbCAmJiB0eXBlb2YgY2F1c2UgPT09ICdvYmplY3QnICYmIGhhc05ldHdvcmtDb2RlKGVycm9yRmllbGQoY2F1c2UsICdjb2RlJykpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCAmJiBUUkFOU1BPUlRfQUJPUlRfTkFNRVMuaGFzKG5hbWUpKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKCEoZmllbGRzIGluc3RhbmNlb2YgVHlwZUVycm9yKSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBtZXNzYWdlID0gZXJyb3JGaWVsZChmaWVsZHMsICdtZXNzYWdlJyk7XG4gIHJldHVybiB0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycgJiYgRkVUQ0hfRkFJTFVSRS50ZXN0KG1lc3NhZ2UpO1xufVxuXG5mdW5jdGlvbiBoYXNOZXR3b3JrQ29kZShjb2RlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgY29kZSA9PT0gJ3N0cmluZycgJiYgTkVUV09SS19DT0RFUy5oYXMoY29kZSk7XG59XG5cbmZ1bmN0aW9uIG51bWJlckZpZWxkKGZpZWxkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleTogJ3N0YXR1cycgfCAnc3RhdHVzQ29kZScpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCB2YWx1ZSA9IGVycm9yRmllbGQoZmllbGRzLCBrZXkpO1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzV2FpdCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpICYmIHZhbHVlID49IDA7XG59XG4iXX0=
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.errorField = void 0;
4
+ /** A finite inheritance allowance for ordinary Error subclasses and metadata. */
5
+ const MAX_ERROR_FIELD_DEPTH = 32;
6
+ // Capture the platform intrinsic once; never call a later caller replacement.
7
+ const DOM_EXCEPTION_PROTOTYPE = typeof DOMException === 'function' ? DOMException.prototype : undefined;
8
+ const DOM_EXCEPTION_NAME = DOM_EXCEPTION_PROTOTYPE
9
+ ? Object.getOwnPropertyDescriptor(DOM_EXCEPTION_PROTOTYPE, 'name')?.get
10
+ : undefined;
11
+ const APPLY_INTRINSIC = Reflect.apply;
12
+ /** Caller accessors shadow farther data. Only the captured platform name getter may run. */
13
+ function errorField(value, key) {
14
+ if (value === null || (typeof value !== 'object' && typeof value !== 'function'))
15
+ return undefined;
16
+ let current = value;
17
+ for (let depth = 0; current !== null && depth < MAX_ERROR_FIELD_DEPTH; depth++) {
18
+ const property = Object.getOwnPropertyDescriptor(current, key);
19
+ if (property) {
20
+ if (Object.prototype.hasOwnProperty.call(property, 'value'))
21
+ return property.value;
22
+ if (key === 'name' &&
23
+ current === DOM_EXCEPTION_PROTOTYPE &&
24
+ DOM_EXCEPTION_NAME &&
25
+ property.get === DOM_EXCEPTION_NAME) {
26
+ // The intrinsic brand-checks its receiver, refusing forged prototypes and proxies.
27
+ return APPLY_INTRINSIC(DOM_EXCEPTION_NAME, value, []);
28
+ }
29
+ return undefined;
30
+ }
31
+ current = Object.getPrototypeOf(current);
32
+ }
33
+ return undefined;
34
+ }
35
+ exports.errorField = errorField;
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JGaWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYXR0ZW1wdC9lcnJvckZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlGQUFpRjtBQUNqRixNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztBQUVqQyw4RUFBOEU7QUFDOUUsTUFBTSx1QkFBdUIsR0FBRyxPQUFPLFlBQVksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN4RyxNQUFNLGtCQUFrQixHQUFHLHVCQUF1QjtJQUNoRCxDQUFDLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixFQUFFLE1BQU0sQ0FBQyxFQUFFLEdBQUc7SUFDdkUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNkLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFFdEMsNEZBQTRGO0FBQzVGLFNBQWdCLFVBQVUsQ0FBQyxLQUFjLEVBQUUsR0FBVztJQUNwRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDbkcsSUFBSSxPQUFPLEdBQWtCLEtBQUssQ0FBQztJQUNuQyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxPQUFPLEtBQUssSUFBSSxJQUFJLEtBQUssR0FBRyxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQy9FLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0QsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUM7Z0JBQUUsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ25GLElBQ0UsR0FBRyxLQUFLLE1BQU07Z0JBQ2QsT0FBTyxLQUFLLHVCQUF1QjtnQkFDbkMsa0JBQWtCO2dCQUNsQixRQUFRLENBQUMsR0FBRyxLQUFLLGtCQUFrQixFQUNuQyxDQUFDO2dCQUNELG1GQUFtRjtnQkFDbkYsT0FBTyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFDRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFyQkQsZ0NBcUJDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEEgZmluaXRlIGluaGVyaXRhbmNlIGFsbG93YW5jZSBmb3Igb3JkaW5hcnkgRXJyb3Igc3ViY2xhc3NlcyBhbmQgbWV0YWRhdGEuICovXG5jb25zdCBNQVhfRVJST1JfRklFTERfREVQVEggPSAzMjtcblxuLy8gQ2FwdHVyZSB0aGUgcGxhdGZvcm0gaW50cmluc2ljIG9uY2U7IG5ldmVyIGNhbGwgYSBsYXRlciBjYWxsZXIgcmVwbGFjZW1lbnQuXG5jb25zdCBET01fRVhDRVBUSU9OX1BST1RPVFlQRSA9IHR5cGVvZiBET01FeGNlcHRpb24gPT09ICdmdW5jdGlvbicgPyBET01FeGNlcHRpb24ucHJvdG90eXBlIDogdW5kZWZpbmVkO1xuY29uc3QgRE9NX0VYQ0VQVElPTl9OQU1FID0gRE9NX0VYQ0VQVElPTl9QUk9UT1RZUEVcbiAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKERPTV9FWENFUFRJT05fUFJPVE9UWVBFLCAnbmFtZScpPy5nZXRcbiAgOiB1bmRlZmluZWQ7XG5jb25zdCBBUFBMWV9JTlRSSU5TSUMgPSBSZWZsZWN0LmFwcGx5O1xuXG4vKiogQ2FsbGVyIGFjY2Vzc29ycyBzaGFkb3cgZmFydGhlciBkYXRhLiBPbmx5IHRoZSBjYXB0dXJlZCBwbGF0Zm9ybSBuYW1lIGdldHRlciBtYXkgcnVuLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9yRmllbGQodmFsdWU6IHVua25vd24sIGtleTogc3RyaW5nKTogdW5rbm93biB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBsZXQgY3VycmVudDogb2JqZWN0IHwgbnVsbCA9IHZhbHVlO1xuICBmb3IgKGxldCBkZXB0aCA9IDA7IGN1cnJlbnQgIT09IG51bGwgJiYgZGVwdGggPCBNQVhfRVJST1JfRklFTERfREVQVEg7IGRlcHRoKyspIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY3VycmVudCwga2V5KTtcbiAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocHJvcGVydHksICd2YWx1ZScpKSByZXR1cm4gcHJvcGVydHkudmFsdWU7XG4gICAgICBpZiAoXG4gICAgICAgIGtleSA9PT0gJ25hbWUnICYmXG4gICAgICAgIGN1cnJlbnQgPT09IERPTV9FWENFUFRJT05fUFJPVE9UWVBFICYmXG4gICAgICAgIERPTV9FWENFUFRJT05fTkFNRSAmJlxuICAgICAgICBwcm9wZXJ0eS5nZXQgPT09IERPTV9FWENFUFRJT05fTkFNRVxuICAgICAgKSB7XG4gICAgICAgIC8vIFRoZSBpbnRyaW5zaWMgYnJhbmQtY2hlY2tzIGl0cyByZWNlaXZlciwgcmVmdXNpbmcgZm9yZ2VkIHByb3RvdHlwZXMgYW5kIHByb3hpZXMuXG4gICAgICAgIHJldHVybiBBUFBMWV9JTlRSSU5TSUMoRE9NX0VYQ0VQVElPTl9OQU1FLCB2YWx1ZSwgW10pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY3VycmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihjdXJyZW50KTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.copyCaptureAcknowledgement = exports.NativeCapture = void 0;
4
+ /** @internal Bounded facts collected at native funnels; no values, key names, recorder discovery or tree walk. */
5
+ class NativeCapture {
6
+ runId;
7
+ logAddress;
8
+ from;
9
+ gaps = new Set([
10
+ 'tracked-state-only',
11
+ 'final-attempt-views',
12
+ 'read-sources-not-collected',
13
+ 'child-scopes-not-attested',
14
+ 'storage-not-attested',
15
+ ]);
16
+ boundary = { status: 'running' };
17
+ modes;
18
+ constructor(runId, logAddress, from, modes) {
19
+ this.runId = runId;
20
+ this.logAddress = logAddress;
21
+ this.from = from;
22
+ const retention = (value) => value === 'full' || value === 'summary' || value === 'off' ? value : 'unknown';
23
+ this.modes = {
24
+ readTracking: retention(modes.readTracking),
25
+ writeTracking: retention(modes.writeTracking),
26
+ commitValues: modes.commitValues === 'full' || modes.commitValues === 'delta' ? modes.commitValues : 'unknown',
27
+ writeProvenance: modes.writeProvenance === 'off' || modes.writeProvenance === 'reads-prefix' ? modes.writeProvenance : 'unknown',
28
+ };
29
+ if (Object.values(this.modes).includes('unknown'))
30
+ this.limit('modes-unavailable');
31
+ }
32
+ limit(gap) {
33
+ this.gaps.add(gap);
34
+ }
35
+ end(status, failure) {
36
+ if (this.boundary.status !== 'running')
37
+ return;
38
+ if (failure?.stage && failure.stage.runtimeStageId.length > 1024) {
39
+ this.limit('identity-omitted');
40
+ failure = Object.freeze({ category: failure.category });
41
+ }
42
+ this.boundary = { status, ...(failure && { failure }) };
43
+ }
44
+ snapshot(to, control = 'unknown', redacted = false) {
45
+ const gaps = new Set(this.gaps);
46
+ if (redacted)
47
+ gaps.add('redacted-export');
48
+ const failed = gaps.has('commit-retention-failed');
49
+ const custom = gaps.has('custom-scope') || gaps.has('modes-unavailable');
50
+ return Object.freeze({
51
+ version: 1,
52
+ runId: this.runId,
53
+ scope: 'root-log',
54
+ logAddress: Object.freeze({
55
+ logRunId: this.logAddress.logRunId,
56
+ drillPath: Object.freeze([...this.logAddress.drillPath]),
57
+ }),
58
+ commits: Object.freeze({ from: this.from, to }),
59
+ boundary: Object.freeze({ ...this.boundary }),
60
+ modes: Object.freeze({
61
+ readTracking: this.modes.readTracking,
62
+ writeTracking: this.modes.writeTracking,
63
+ commitValues: this.modes.commitValues,
64
+ writeProvenance: this.modes.writeProvenance,
65
+ }),
66
+ channels: Object.freeze({
67
+ reads: this.modes.readTracking === 'off'
68
+ ? 'disabled'
69
+ : gaps.has('read-retention-failed')
70
+ ? 'failed'
71
+ : custom
72
+ ? 'unknown'
73
+ : 'captured',
74
+ writes: this.modes.writeTracking === 'off' ? 'disabled' : failed ? 'failed' : custom ? 'unknown' : 'captured',
75
+ attention: failed || gaps.has('attention-omitted') ? 'partial' : custom ? 'unknown' : 'captured',
76
+ control: gaps.has('recorder-snapshot-failed') ? 'failed' : control,
77
+ readSources: 'not-collected',
78
+ }),
79
+ persistence: 'memory-only',
80
+ limitations: Object.freeze([...gaps]),
81
+ });
82
+ }
83
+ }
84
+ exports.NativeCapture = NativeCapture;
85
+ /** Stored/recorder metadata is untrusted. Read data properties only, never getters or arbitrary strings. */
86
+ function copyCaptureAcknowledgement(value) {
87
+ try {
88
+ if (!value || typeof value !== 'object' || Object.getPrototypeOf(value) !== Object.prototype)
89
+ return undefined;
90
+ const data = (key) => Object.getOwnPropertyDescriptor(value, key)?.value;
91
+ const version = data('version');
92
+ const runId = data('runId');
93
+ const control = data('control');
94
+ if (version !== 1 ||
95
+ typeof runId !== 'string' ||
96
+ runId.length === 0 ||
97
+ runId.length > 2048 ||
98
+ !['captured', 'partial', 'unknown'].includes(control))
99
+ return undefined;
100
+ return Object.freeze({ version, runId, control });
101
+ }
102
+ catch {
103
+ return undefined;
104
+ }
105
+ }
106
+ exports.copyCaptureAcknowledgement = copyCaptureAcknowledgement;
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlQ292ZXJhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NhcHR1cmUvbmF0aXZlQ292ZXJhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMkRBLGtIQUFrSDtBQUNsSCxNQUFhLGFBQWE7SUFhYjtJQUNBO0lBQ0E7SUFkTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQW9CO1FBQ2pELG9CQUFvQjtRQUNwQixxQkFBcUI7UUFDckIsNEJBQTRCO1FBQzVCLDJCQUEyQjtRQUMzQixzQkFBc0I7S0FDdkIsQ0FBQyxDQUFDO0lBRUssUUFBUSxHQUFrQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUN2RCxLQUFLLENBQTZCO0lBRW5ELFlBQ1csS0FBYSxFQUNiLFVBQXNCLEVBQ3RCLElBQVksRUFDckIsS0FBaUM7UUFIeEIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUdyQixNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQ25DLEtBQUssS0FBSyxNQUFNLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNqRixJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1gsWUFBWSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQzNDLGFBQWEsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztZQUM3QyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDOUcsZUFBZSxFQUNiLEtBQUssQ0FBQyxlQUFl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VyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUNqRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxJQUNFLE9BQU8sS0FBSyxDQUFDO1lBQ2IsT0FBTyxLQUFLLEtBQUssUUFBUTtZQUN6QixLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDbEIsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJO1lBQ25CLENBQUMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFFckQsT0FBTyxTQUFTLENBQUM7UUFDbkIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQW5CRCxnRUFtQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExvZ0FkZHJlc3MgfSBmcm9tICdmb290dHJhY2UnO1xuXG5pbXBvcnQgdHlwZSB7IFRlcm1pbmFsRmFpbHVyZUNvbnRleHQgfSBmcm9tICcuLi9lcnJvcnMvdGVybWluYWxGYWlsdXJlLmpzJztcblxuZXhwb3J0IHR5cGUgQ2FwdHVyZUNoYW5uZWxTdGF0dXMgPSAnY2FwdHVyZWQnIHwgJ2Rpc2FibGVkJyB8ICdwYXJ0aWFsJyB8ICdmYWlsZWQnIHwgJ3Vua25vd24nO1xuZXhwb3J0IHR5cGUgQ2FwdHVyZUxpbWl0YXRpb24gPVxuICB8ICd0cmFja2VkLXN0YXRlLW9ubHknXG4gIHwgJ2ZpbmFsLWF0dGVtcHQtdmlld3MnXG4gIHwgJ3JlYWQtc291cmNlcy1ub3QtY29sbGVjdGVkJ1xuICB8ICdjaGlsZC1zY29wZXMtbm90LWF0dGVzdGVkJ1xuICB8ICdzdG9yYWdlLW5vdC1hdHRlc3RlZCdcbiAgfCAncmVzdW1lZC1zZWdtZW50J1xuICB8ICdyZWRhY3RlZC1leHBvcnQnXG4gIHwgJ3JlZGFjdGlvbi1hY3RpdmUnXG4gIHwgJ2N1c3RvbS1zY29wZSdcbiAgfCAncmVhZC1yZXRlbnRpb24tZmFpbGVkJ1xuICB8ICdjb21taXQtcmV0ZW50aW9uLWZhaWxlZCdcbiAgfCAnYXR0ZW50aW9uLW9taXR0ZWQnXG4gIHwgJ3JlY29yZGVyLXNuYXBzaG90LWZhaWxlZCdcbiAgfCAnaWRlbnRpdHktb21pdHRlZCdcbiAgfCAnZXhlY3V0aW9uLWJyb2tlbidcbiAgfCAnbW9kZXMtdW5hdmFpbGFibGUnO1xuXG4vKiogQSBwcm9kdWNlciBhY2tub3dsZWRnZW1lbnQsIG5vdCBlbmdpbmUgaW5zcGVjdGlvbiBvZiBhIHJlY29yZGVyJ3MgaW1wbGVtZW50YXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIFJlY29yZGVyQ2FwdHVyZUFja25vd2xlZGdlbWVudCB7XG4gIHJlYWRvbmx5IHZlcnNpb246IDE7XG4gIHJlYWRvbmx5IHJ1bklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbnRyb2w6ICdjYXB0dXJlZCcgfCAncGFydGlhbCcgfCAndW5rbm93bic7XG59XG5cbi8qKiBFbmdpbmUgb2JzZXJ2YXRpb24gb2YgT05FIHJvb3QtbG9nIHNlZ21lbnQuIE5ldmVyIGEgZHVyYWJsZSBvciB3aG9sZS13b3JrZmxvdyBjb21wbGV0ZW5lc3MgY2xhaW0uICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdGl2ZUNhcHR1cmVOb3RlIHtcbiAgcmVhZG9ubHkgdmVyc2lvbjogMTtcbiAgcmVhZG9ubHkgcnVuSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc2NvcGU6ICdyb290LWxvZyc7XG4gIHJlYWRvbmx5IGxvZ0FkZHJlc3M6IExvZ0FkZHJlc3M7XG4gIC8qKiBIYWxmLW9wZW4gb2Zmc2V0cyBpbiB0aGlzIGxvZy4gQSBzYW1lLWV4ZWN1dG9yIHJlc3VtZSBzdGFydHMgYXQgdGhlIHByZXZpb3VzIGVuZC4gKi9cbiAgcmVhZG9ubHkgY29tbWl0czogeyByZWFkb25seSBmcm9tOiBudW1iZXI7IHJlYWRvbmx5IHRvOiBudW1iZXIgfTtcbiAgcmVhZG9ubHkgYm91bmRhcnk6IHtcbiAgICByZWFkb25seSBzdGF0dXM6ICdydW5uaW5nJyB8ICdjb21wbGV0ZWQnIHwgJ3BhdXNlZCcgfCAnZmFpbGVkJyB8ICdjYW5jZWxsZWQnO1xuICAgIHJlYWRvbmx5IGZhaWx1cmU/OiBUZXJtaW5hbEZhaWx1cmVDb250ZXh0O1xuICB9O1xuICByZWFkb25seSBtb2Rlczoge1xuICAgIHJlYWRvbmx5IHJlYWRUcmFja2luZzogJ2Z1bGwnIHwgJ3N1bW1hcnknIHwgJ29mZicgfCAndW5rbm93bic7XG4gICAgcmVhZG9ubHkgd3JpdGVUcmFja2luZzogJ2Z1bGwnIHwgJ3N1bW1hcnknIHwgJ29mZicgfCAndW5rbm93bic7XG4gICAgcmVhZG9ubHkgY29tbWl0VmFsdWVzOiAnZnVsbCcgfCAnZGVsdGEnIHwgJ3Vua25vd24nO1xuICAgIHJlYWRvbmx5IHdyaXRlUHJvdmVuYW5jZTogJ29mZicgfCAncmVhZHMtcHJlZml4JyB8ICd1bmtub3duJztcbiAgfTtcbiAgcmVhZG9ubHkgY2hhbm5lbHM6IHtcbiAgICByZWFkb25seSByZWFkczogQ2FwdHVyZUNoYW5uZWxTdGF0dXM7XG4gICAgcmVhZG9ubHkgd3JpdGVzOiBDYXB0dXJlQ2hhbm5lbFN0YXR1cztcbiAgICByZWFkb25seSBhdHRlbnRpb246IENhcHR1cmVDaGFubmVsU3RhdHVzO1xuICAgIHJlYWRvbmx5IGNvbnRyb2w6IENhcHR1cmVDaGFubmVsU3RhdHVzO1xuICAgIHJlYWRvbmx5IHJlYWRTb3VyY2VzOiAnbm90LWNvbGxlY3RlZCc7XG4gIH07XG4gIHJlYWRvbmx5IHBlcnNpc3RlbmNlOiAnbWVtb3J5LW9ubHknO1xuICByZWFkb25seSBsaW1pdGF0aW9uczogcmVhZG9ubHkgQ2FwdHVyZUxpbWl0YXRpb25bXTtcbn1cblxuLyoqIEBpbnRlcm5hbCBCb3VuZGVkIGZhY3RzIGNvbGxlY3RlZCBhdCBuYXRpdmUgZnVubmVsczsgbm8gdmFsdWVzLCBrZXkgbmFtZXMsIHJlY29yZGVyIGRpc2NvdmVyeSBvciB0cmVlIHdhbGsuICovXG5leHBvcnQgY2xhc3MgTmF0aXZlQ2FwdHVyZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ2FwcyA9IG5ldyBTZXQ8Q2FwdHVyZUxpbWl0YXRpb24+KFtcbiAgICAndHJhY2tlZC1zdGF0ZS1vbmx5JyxcbiAgICAnZmluYWwtYXR0ZW1wdC12aWV3cycsXG4gICAgJ3JlYWQtc291cmNlcy1ub3QtY29sbGVjdGVkJyxcbiAgICAnY2hpbGQtc2NvcGVzLW5vdC1hdHRlc3RlZCcsXG4gICAgJ3N0b3JhZ2Utbm90LWF0dGVzdGVkJyxcbiAgXSk7XG5cbiAgcHJpdmF0ZSBib3VuZGFyeTogTmF0aXZlQ2FwdHVyZU5vdGVbJ2JvdW5kYXJ5J10gPSB7IHN0YXR1czogJ3J1bm5pbmcnIH07XG4gIHByaXZhdGUgcmVhZG9ubHkgbW9kZXM6IE5hdGl2ZUNhcHR1cmVOb3RlWydtb2RlcyddO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IHJ1bklkOiBzdHJpbmcsXG4gICAgcmVhZG9ubHkgbG9nQWRkcmVzczogTG9nQWRkcmVzcyxcbiAgICByZWFkb25seSBmcm9tOiBudW1iZXIsXG4gICAgbW9kZXM6IE5hdGl2ZUNhcHR1cmVOb3RlWydtb2RlcyddLFxuICApIHtcbiAgICBjb25zdCByZXRlbnRpb24gPSAodmFsdWU6IHVua25vd24pID0+XG4gICAgICB2YWx1ZSA9PT0gJ2Z1bGwnIHx8IHZhbHVlID09PSAnc3VtbWFyeScgfHwgdmFsdWUgPT09ICdvZmYnID8gdmFsdWUgOiAndW5rbm93bic7XG4gICAgdGhpcy5tb2RlcyA9IHtcbiAgICAgIHJlYWRUcmFja2luZzogcmV0ZW50aW9uKG1vZGVzLnJlYWRUcmFja2luZyksXG4gICAgICB3cml0ZVRyYWNraW5nOiByZXRlbnRpb24obW9kZXMud3JpdGVUcmFja2luZyksXG4gICAgICBjb21taXRWYWx1ZXM6IG1vZGVzLmNvbW1pdFZhbHVlcyA9PT0gJ2Z1bGwnIHx8IG1vZGVzLmNvbW1pdFZhbHVlcyA9PT0gJ2RlbHRhJyA/IG1vZGVzLmNvbW1pdFZhbHVlcyA6ICd1bmtub3duJyxcbiAgICAgIHdyaXRlUHJvdmVuYW5jZTpcbiAgICAgICAgbW9kZXMud3JpdGVQcm92ZW5hbmNlID09PSAnb2ZmJyB8fCBtb2Rlcy53cml0ZVByb3ZlbmFuY2UgPT09ICdyZWFkcy1wcmVmaXgnID8gbW9kZXMud3JpdGVQcm92ZW5hbmNlIDogJ3Vua25vd24nLFxuICAgIH07XG4gICAgaWYgKE9iamVjdC52YWx1ZXModGhpcy5tb2RlcykuaW5jbHVkZXMoJ3Vua25vd24nKSkgdGhpcy5saW1pdCgnbW9kZXMtdW5hdmFpbGFibGUnKTtcbiAgfVxuXG4gIGxpbWl0KGdhcDogQ2FwdHVyZUxpbWl0YXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmdhcHMuYWRkKGdhcCk7XG4gIH1cblxuICBlbmQoc3RhdHVzOiBOYXRpdmVDYXB0dXJlTm90ZVsnYm91bmRhcnknXVsnc3RhdHVzJ10sIGZhaWx1cmU/OiBUZXJtaW5hbEZhaWx1cmVDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYm91bmRhcnkuc3RhdHVzICE9PSAncnVubmluZycpIHJldHVybjtcbiAgICBpZiAoZmFpbHVyZT8uc3RhZ2UgJiYgZmFpbHVyZS5zdGFnZS5ydW50aW1lU3RhZ2VJZC5sZW5ndGggPiAxMDI0KSB7XG4gICAgICB0aGlzLmxpbWl0KCdpZGVudGl0eS1vbWl0dGVkJyk7XG4gICAgICBmYWlsdXJlID0gT2JqZWN0LmZyZWV6ZSh7IGNhdGVnb3J5OiBmYWlsdXJlLmNhdGVnb3J5IH0pO1xuICAgIH1cbiAgICB0aGlzLmJvdW5kYXJ5ID0geyBzdGF0dXMsIC4uLihmYWlsdXJlICYmIHsgZmFpbHVyZSB9KSB9O1xuICB9XG5cbiAgc25hcHNob3QodG86IG51bWJlciwgY29udHJvbDogQ2FwdHVyZUNoYW5uZWxTdGF0dXMgPSAndW5rbm93bicsIHJlZGFjdGVkID0gZmFsc2UpOiBOYXRpdmVDYXB0dXJlTm90ZSB7XG4gICAgY29uc3QgZ2FwcyA9IG5ldyBTZXQodGhpcy5nYXBzKTtcbiAgICBpZiAocmVkYWN0ZWQpIGdhcHMuYWRkKCdyZWRhY3RlZC1leHBvcnQnKTtcbiAgICBjb25zdCBmYWlsZWQgPSBnYXBzLmhhcygnY29tbWl0LXJldGVudGlvbi1mYWlsZWQnKTtcbiAgICBjb25zdCBjdXN0b20gPSBnYXBzLmhhcygnY3VzdG9tLXNjb3BlJykgfHwgZ2Fwcy5oYXMoJ21vZGVzLXVuYXZhaWxhYmxlJyk7XG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUoe1xuICAgICAgdmVyc2lvbjogMSxcbiAgICAgIHJ1bklkOiB0aGlzLnJ1bklkLFxuICAgICAgc2NvcGU6ICdyb290LWxvZycsXG4gICAgICBsb2dBZGRyZXNzOiBPYmplY3QuZnJlZXplKHtcbiAgICAgICAgbG9nUnVuSWQ6IHRoaXMubG9nQWRkcmVzcy5sb2dSdW5JZCxcbiAgICAgICAgZHJpbGxQYXRoOiBPYmplY3QuZnJlZXplKFsuLi50aGlzLmxvZ0FkZHJlc3MuZHJpbGxQYXRoXSksXG4gICAgICB9KSxcbiAgICAgIGNvbW1pdHM6IE9iamVjdC5mcmVlemUoeyBmcm9tOiB0aGlzLmZyb20sIHRvIH0pLFxuICAgICAgYm91bmRhcnk6IE9iamVjdC5mcmVlemUoeyAuLi50aGlzLmJvdW5kYXJ5IH0pLFxuICAgICAgbW9kZXM6IE9iamVjdC5mcmVlemUoe1xuICAgICAgICByZWFkVHJhY2tpbmc6IHRoaXMubW9kZXMucmVhZFRyYWNraW5nLFxuICAgICAgICB3cml0ZVRyYWNraW5nOiB0aGlzLm1vZGVzLndyaXRlVHJhY2tpbmcsXG4gICAgICAgIGNvbW1pdFZhbHVlczogdGhpcy5tb2Rlcy5jb21taXRWYWx1ZXMsXG4gICAgICAgIHdyaXRlUHJvdmVuYW5jZTogdGhpcy5tb2Rlcy53cml0ZVByb3ZlbmFuY2UsXG4gICAgICB9KSxcbiAgICAgIGNoYW5uZWxzOiBPYmplY3QuZnJlZXplKHtcbiAgICAgICAgcmVhZHM6XG4gICAgICAgICAgdGhpcy5tb2Rlcy5yZWFkVHJhY2tpbmcgPT09ICdvZmYnXG4gICAgICAgICAgICA/ICdkaXNhYmxlZCdcbiAgICAgICAgICAgIDogZ2Fwcy5oYXMoJ3JlYWQtcmV0ZW50aW9uLWZhaWxlZCcpXG4gICAgICAgICAgICA/ICdmYWlsZWQnXG4gICAgICAgICAgICA6IGN1c3RvbVxuICAgICAgICAgICAgPyAndW5rbm93bidcbiAgICAgICAgICAgIDogJ2NhcHR1cmVkJyxcbiAgICAgICAgd3JpdGVzOiB0aGlzLm1vZGVzLndyaXRlVHJhY2tpbmcgPT09ICdvZmYnID8gJ2Rpc2FibGVkJyA6IGZhaWxlZCA/ICdmYWlsZWQnIDogY3VzdG9tID8gJ3Vua25vd24nIDogJ2NhcHR1cmVkJyxcbiAgICAgICAgYXR0ZW50aW9uOiBmYWlsZWQgfHwgZ2Fwcy5oYXMoJ2F0dGVudGlvbi1vbWl0dGVkJykgPyAncGFydGlhbCcgOiBjdXN0b20gPyAndW5rbm93bicgOiAnY2FwdHVyZWQnLFxuICAgICAgICBjb250cm9sOiBnYXBzLmhhcygncmVjb3JkZXItc25hcHNob3QtZmFpbGVkJykgPyAnZmFpbGVkJyA6IGNvbnRyb2wsXG4gICAgICAgIHJlYWRTb3VyY2VzOiAnbm90LWNvbGxlY3RlZCcsXG4gICAgICB9KSxcbiAgICAgIHBlcnNpc3RlbmNlOiAnbWVtb3J5LW9ubHknLFxuICAgICAgbGltaXRhdGlvbnM6IE9iamVjdC5mcmVlemUoWy4uLmdhcHNdKSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKiogU3RvcmVkL3JlY29yZGVyIG1ldGFkYXRhIGlzIHVudHJ1c3RlZC4gUmVhZCBkYXRhIHByb3BlcnRpZXMgb25seSwgbmV2ZXIgZ2V0dGVycyBvciBhcmJpdHJhcnkgc3RyaW5ncy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3B5Q2FwdHVyZUFja25vd2xlZGdlbWVudCh2YWx1ZTogdW5rbm93bik6IFJlY29yZGVyQ2FwdHVyZUFja25vd2xlZGdlbWVudCB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkgIT09IE9iamVjdC5wcm90b3R5cGUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZGF0YSA9IChrZXk6IHN0cmluZykgPT4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih2YWx1ZSwga2V5KT8udmFsdWU7XG4gICAgY29uc3QgdmVyc2lvbiA9IGRhdGEoJ3ZlcnNpb24nKTtcbiAgICBjb25zdCBydW5JZCA9IGRhdGEoJ3J1bklkJyk7XG4gICAgY29uc3QgY29udHJvbCA9IGRhdGEoJ2NvbnRyb2wnKTtcbiAgICBpZiAoXG4gICAgICB2ZXJzaW9uICE9PSAxIHx8XG4gICAgICB0eXBlb2YgcnVuSWQgIT09ICdzdHJpbmcnIHx8XG4gICAgICBydW5JZC5sZW5ndGggPT09IDAgfHxcbiAgICAgIHJ1bklkLmxlbmd0aCA+IDIwNDggfHxcbiAgICAgICFbJ2NhcHR1cmVkJywgJ3BhcnRpYWwnLCAndW5rbm93biddLmluY2x1ZGVzKGNvbnRyb2wpXG4gICAgKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZSh7IHZlcnNpb24sIHJ1bklkLCBjb250cm9sIH0pO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=