@copilotkitnext/angular 1.51.4-next.7 → 1.51.4-next.8

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 (44) hide show
  1. package/README.md +43 -39
  2. package/dist/README.md +43 -39
  3. package/dist/esm2022/lib/agent-context.mjs +2 -2
  4. package/dist/esm2022/lib/agent.mjs +1 -1
  5. package/dist/esm2022/lib/chat-config.mjs +1 -1
  6. package/dist/esm2022/lib/chat-state.mjs +1 -1
  7. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-buttons.mjs +1 -1
  8. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-renderer.mjs +1 -1
  9. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-toolbar.mjs +1 -1
  10. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message.mjs +1 -1
  11. package/dist/esm2022/lib/components/chat/copilot-chat-audio-recorder.mjs +1 -1
  12. package/dist/esm2022/lib/components/chat/copilot-chat-buttons.mjs +1 -1
  13. package/dist/esm2022/lib/components/chat/copilot-chat-input.mjs +1 -1
  14. package/dist/esm2022/lib/components/chat/copilot-chat-message-view-cursor.mjs +1 -1
  15. package/dist/esm2022/lib/components/chat/copilot-chat-message-view.mjs +1 -1
  16. package/dist/esm2022/lib/components/chat/copilot-chat-textarea.mjs +1 -1
  17. package/dist/esm2022/lib/components/chat/copilot-chat-tools-menu.mjs +1 -1
  18. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-branch-navigation.mjs +26 -6
  19. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-buttons.mjs +1 -1
  20. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-renderer.mjs +1 -1
  21. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-toolbar.mjs +1 -1
  22. package/dist/esm2022/lib/components/chat/copilot-chat-user-message.mjs +29 -9
  23. package/dist/esm2022/lib/components/chat/copilot-chat-user-message.types.mjs +1 -1
  24. package/dist/esm2022/lib/components/chat/copilot-chat-view-disclaimer.mjs +1 -1
  25. package/dist/esm2022/lib/components/chat/copilot-chat-view-feather.mjs +1 -1
  26. package/dist/esm2022/lib/components/chat/copilot-chat-view-input-container.mjs +1 -1
  27. package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.mjs +1 -1
  28. package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-view.mjs +1 -1
  29. package/dist/esm2022/lib/components/chat/copilot-chat-view.mjs +1 -1
  30. package/dist/esm2022/lib/components/chat/copilot-chat.mjs +20 -23
  31. package/dist/esm2022/lib/config.mjs +1 -1
  32. package/dist/esm2022/lib/copilotkit.mjs +18 -8
  33. package/dist/esm2022/lib/directives/stick-to-bottom.mjs +1 -1
  34. package/dist/esm2022/lib/human-in-the-loop.mjs +1 -1
  35. package/dist/esm2022/lib/render-tool-calls.mjs +40 -11
  36. package/dist/esm2022/lib/resize-observer.mjs +1 -1
  37. package/dist/esm2022/lib/scroll-position.mjs +2 -3
  38. package/dist/esm2022/lib/slots/copilot-slot.mjs +1 -1
  39. package/dist/esm2022/lib/slots/slot.utils.mjs +1 -1
  40. package/dist/esm2022/lib/tools.mjs +3 -3
  41. package/dist/fesm2022/copilotkitnext-angular.mjs +128 -54
  42. package/dist/fesm2022/copilotkitnext-angular.mjs.map +1 -1
  43. package/dist/lib/components/chat/copilot-chat.d.ts +1 -0
  44. package/package.json +5 -6
@@ -28,8 +28,7 @@ export class ScrollPosition {
28
28
  monitorScrollPosition(element, threshold = 10) {
29
29
  const el = element instanceof ElementRef ? element.nativeElement : element;
30
30
  // Create scroll observable
31
- const scroll$ = merge(fromEvent(el, "scroll"), this.viewportRuler.change(150) // Monitor viewport changes
32
- ).pipe(startWith(null), // Emit initial state
31
+ const scroll$ = merge(fromEvent(el, "scroll"), this.viewportRuler.change(150)).pipe(startWith(null), // Emit initial state
33
32
  throttleTime(16, animationFrameScheduler, { trailing: true }), // ~60fps
34
33
  map(() => this.getScrollState(el, threshold)), distinctUntilChanged((a, b) => a.isAtBottom === b.isAtBottom &&
35
34
  a.scrollTop === b.scrollTop &&
@@ -121,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
121
120
  providedIn: "root",
122
121
  }]
123
122
  }], ctorParameters: () => [{ type: i1.ScrollDispatcher }, { type: i1.ViewportRuler }, { type: i0.NgZone }] });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXBvc2l0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zY3JvbGwtcG9zaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFFTCxPQUFPLEVBQ1AsZUFBZSxFQUNmLFNBQVMsRUFDVCxLQUFLLEVBQ0wsdUJBQXVCLEdBQ3hCLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7OztBQVl4QixNQUFNLE9BQU8sY0FBYztJQVlmO0lBQ0E7SUFDQTtJQWJGLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQy9CLGtCQUFrQixHQUFHLElBQUksZUFBZSxDQUFjO1FBQzVELFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFNBQVMsRUFBRSxDQUFDO1FBQ1osWUFBWSxFQUFFLENBQUM7UUFDZixZQUFZLEVBQUUsQ0FBQztLQUNoQixDQUFDLENBQUM7SUFFSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTdELFlBQ1UsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLE1BQWM7UUFGZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQztJQUVKOzs7O09BSUc7SUFDSCxxQkFBcUIsQ0FDbkIsT0FBOEMsRUFDOUMsWUFBb0IsRUFBRTtRQUV0QixNQUFNLEVBQUUsR0FBRyxPQUFPLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFF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OlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgRWxlbWVudFJlZiwgTmdab25lLCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU2Nyb2xsRGlzcGF0Y2hlciwgVmlld3BvcnRSdWxlciB9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBCZWhhdmlvclN1YmplY3QsXG4gIGZyb21FdmVudCxcbiAgbWVyZ2UsXG4gIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLFxufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtcbiAgdGFrZVVudGlsLFxuICBkZWJvdW5jZVRpbWUsXG4gIHRocm90dGxlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIG1hcCxcbiAgc3RhcnRXaXRoLFxufSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JvbGxTdGF0ZSB7XG4gIGlzQXRCb3R0b206IGJvb2xlYW47XG4gIHNjcm9sbFRvcDogbnVtYmVyO1xuICBzY3JvbGxIZWlnaHQ6IG51bWJlcjtcbiAgY2xpZW50SGVpZ2h0OiBudW1iZXI7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbFBvc2l0aW9uIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgc2Nyb2xsU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY3JvbGxTdGF0ZT4oe1xuICAgIGlzQXRCb3R0b206IHRydWUsXG4gICAgc2Nyb2xsVG9wOiAwLFxuICAgIHNjcm9sbEhlaWdodDogMCxcbiAgICBjbGllbnRIZWlnaHQ6IDAsXG4gIH0pO1xuXG4gIHB1YmxpYyBzY3JvbGxTdGF0ZSQgPSB0aGlzLnNjcm9sbFN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNjcm9sbERpc3BhdGNoZXI6IFNjcm9sbERpc3BhdGNoZXIsXG4gICAgcHJpdmF0ZSB2aWV3cG9ydFJ1bGVyOiBWaWV3cG9ydFJ1bGVyLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBNb25pdG9yIHNjcm9sbCBwb3NpdGlvbiBvZiBhbiBlbGVtZW50XG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIG1vbml0b3JcbiAgICogQHBhcmFtIHRocmVzaG9sZCBQaXhlbHMgZnJvbSBib3R0b20gdG8gY29uc2lkZXIgXCJhdCBib3R0b21cIiAoZGVmYXVsdCAxMClcbiAgICovXG4gIG1vbml0b3JTY3JvbGxQb3NpdGlvbihcbiAgICBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IEhUTUxFbGVtZW50LFxuICAgIHRocmVzaG9sZDogbnVtYmVyID0gMTBcbiAgKTogT2JzZXJ2YWJsZTxTY3JvbGxTdGF0ZT4ge1xuICAgIGNvbnN0IGVsID0gZWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnRSZWYgPyBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQgOiBlbGVtZW50O1xuXG4gICAgLy8gQ3JlYXRlIHNjcm9sbCBvYnNlcnZhYmxlXG4gICAgY29uc3Qgc2Nyb2xsJCA9IG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KGVsLCBcInNjcm9sbFwiKSxcbiAgICAgIHRoaXMudmlld3BvcnRSdWxlci5jaGFuZ2UoMTUwKSAvLyBNb25pdG9yIHZpZXdwb3J0IGNoYW5nZXNcbiAgICApLnBpcGUoXG4gICAgICBzdGFydFdpdGgobnVsbCksIC8vIEVtaXQgaW5pdGlhbCBzdGF0ZVxuICAgICAgdGhyb3R0bGVUaW1lKDE2LCBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgeyB0cmFpbGluZzogdHJ1ZSB9KSwgLy8gfjYwZnBzXG4gICAgICBtYXAoKCkgPT4gdGhpcy5nZXRTY3JvbGxTdGF0ZShlbCwgdGhyZXNob2xkKSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgKGEsIGIpID0+XG4gICAgICAgICAgYS5pc0F0Qm90dG9tID09PSBiLmlzQXRCb3R0b20gJiZcbiAgICAgICAgICBhLnNjcm9sbFRvcCA9PT0gYi5zY3JvbGxUb3AgJiZcbiAgICAgICAgICBhLnNjcm9sbEhlaWdodCA9PT0gYi5zY3JvbGxIZWlnaHRcbiAgICAgICksXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICApO1xuXG4gICAgLy8gU3Vic2NyaWJlIGFuZCB1cGRhdGUgc3ViamVjdFxuICAgIHNjcm9sbCQuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgdGhpcy5zY3JvbGxTdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2Nyb2xsJDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTY3JvbGwgZWxlbWVudCB0byBib3R0b20gd2l0aCBzbW9vdGggYW5pbWF0aW9uXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIHNjcm9sbFxuICAgKiBAcGFyYW0gc21vb3RoIFdoZXRoZXIgdG8gdXNlIHNtb290aCBzY3JvbGxpbmdcbiAgICovXG4gIHNjcm9sbFRvQm90dG9tKFxuICAgIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgSFRNTEVsZW1lbnQsXG4gICAgc21vb3RoOiBib29sZWFuID0gdHJ1ZVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50UmVmID8gZWxlbWVudC5uYXRpdmVFbGVtZW50IDogZWxlbWVudDtcblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmIChzbW9vdGggJiYgXCJzY3JvbGxCZWhhdmlvclwiIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSkge1xuICAgICAgICBlbC5zY3JvbGxUbyh7XG4gICAgICAgICAgdG9wOiBlbC5zY3JvbGxIZWlnaHQsXG4gICAgICAgICAgYmVoYXZpb3I6IFwic21vb3RoXCIsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWwuc2Nyb2xsVG9wID0gZWwuc2Nyb2xsSGVpZ2h0O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGVsZW1lbnQgaXMgYXQgYm90dG9tXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIGNoZWNrXG4gICAqIEBwYXJhbSB0aHJlc2hvbGQgUGl4ZWxzIGZyb20gYm90dG9tIHRvIGNvbnNpZGVyIFwiYXQgYm90dG9tXCJcbiAgICovXG4gIGlzQXRCb3R0b20oXG4gICAgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudCxcbiAgICB0aHJlc2hvbGQ6IG51bWJlciA9IDEwXG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVsID0gZWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnRSZWYgPyBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQgOiBlbGVtZW50O1xuICAgIHJldHVybiB0aGlzLmdldFNjcm9sbFN0YXRlKGVsLCB0aHJlc2hvbGQpLmlzQXRCb3R0b207XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgc2Nyb2xsIHN0YXRlIG9mIGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBnZXRTY3JvbGxTdGF0ZShlbGVtZW50OiBIVE1MRWxlbWVudCwgdGhyZXNob2xkOiBudW1iZXIpOiBTY3JvbGxTdGF0ZSB7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gZWxlbWVudC5zY3JvbGxUb3A7XG4gICAgY29uc3Qgc2Nyb2xsSGVpZ2h0ID0gZWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgY29uc3QgY2xpZW50SGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0O1xuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBkaXN0YW5jZUZyb21Cb3R0b20gPD0gdGhyZXNob2xkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlzQXRCb3R0b20sXG4gICAgICBzY3JvbGxUb3AsXG4gICAgICBzY3JvbGxIZWlnaHQsXG4gICAgICBjbGllbnRIZWlnaHQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBSZXNpemVPYnNlcnZlciBmb3IgZWxlbWVudCBzaXplIGNoYW5nZXNcbiAgICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gb2JzZXJ2ZVxuICAgKiBAcGFyYW0gZGVib3VuY2VNcyBEZWJvdW5jZSB0aW1lIGluIG1pbGxpc2Vjb25kc1xuICAgKi9cbiAgb2JzZXJ2ZVJlc2l6ZShcbiAgICBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IEhUTUxFbGVtZW50LFxuICAgIGRlYm91bmNlTXM6IG51bWJlciA9IDI1MFxuICApOiBPYnNlcnZhYmxlPFJlc2l6ZU9ic2VydmVyRW50cnk+IHtcbiAgICBjb25zdCBlbCA9IGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50UmVmID8gZWxlbWVudC5uYXRpdmVFbGVtZW50IDogZWxlbWVudDtcbiAgICBjb25zdCByZXNpemUkID0gbmV3IFN1YmplY3Q8UmVzaXplT2JzZXJ2ZXJFbnRyeT4oKTtcblxuICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICByZXNpemUkLm5leHQoZW50cnkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWwpO1xuXG4gICAgLy8gQ2xlYW51cCBvbiBkZXN0cm95XG4gICAgdGhpcy5kZXN0cm95JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc2l6ZSQucGlwZShkZWJvdW5jZVRpbWUoZGVib3VuY2VNcyksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5zY3JvbGxTdGF0ZVN1YmplY3QuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXBvc2l0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zY3JvbGwtcG9zaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFFTCxPQUFPLEVBQ1AsZUFBZSxFQUNmLFNBQVMsRUFDVCxLQUFLLEVBQ0wsdUJBQXVCLEdBQ3hCLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7OztBQVl4QixNQUFNLE9BQU8sY0FBYztJQVlmO0lBQ0E7SUFDQTtJQWJGLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQy9CLGtCQUFrQixHQUFHLElBQUksZUFBZSxDQUFjO1FBQzVELFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFNBQVMsRUFBRSxDQUFDO1FBQ1osWUFBWSxFQUFFLENBQUM7UUFDZixZQUFZLEVBQUUsQ0FBQztLQUNoQixDQUFDLENBQUM7SUFFSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTdELFlBQ1UsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLE1BQWM7UUFGZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQztJQUVKOzs7O09BSUc7SUFDSCxxQkFBcUIsQ0FDbkIsT0FBOEMsRUFDOUMsWUFBb0IsRUFBRTtRQUV0QixNQUFNLEVBQUUsR0FBRyxPQUFPLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFF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SW5qZWN0YWJsZSwgRWxlbWVudFJlZiwgTmdab25lLCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU2Nyb2xsRGlzcGF0Y2hlciwgVmlld3BvcnRSdWxlciB9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBCZWhhdmlvclN1YmplY3QsXG4gIGZyb21FdmVudCxcbiAgbWVyZ2UsXG4gIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLFxufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtcbiAgdGFrZVVudGlsLFxuICBkZWJvdW5jZVRpbWUsXG4gIHRocm90dGxlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIG1hcCxcbiAgc3RhcnRXaXRoLFxufSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JvbGxTdGF0ZSB7XG4gIGlzQXRCb3R0b206IGJvb2xlYW47XG4gIHNjcm9sbFRvcDogbnVtYmVyO1xuICBzY3JvbGxIZWlnaHQ6IG51bWJlcjtcbiAgY2xpZW50SGVpZ2h0OiBudW1iZXI7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbFBvc2l0aW9uIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgc2Nyb2xsU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY3JvbGxTdGF0ZT4oe1xuICAgIGlzQXRCb3R0b206IHRydWUsXG4gICAgc2Nyb2xsVG9wOiAwLFxuICAgIHNjcm9sbEhlaWdodDogMCxcbiAgICBjbGllbnRIZWlnaHQ6IDAsXG4gIH0pO1xuXG4gIHB1YmxpYyBzY3JvbGxTdGF0ZSQgPSB0aGlzLnNjcm9sbFN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNjcm9sbERpc3BhdGNoZXI6IFNjcm9sbERpc3BhdGNoZXIsXG4gICAgcHJpdmF0ZSB2aWV3cG9ydFJ1bGVyOiBWaWV3cG9ydFJ1bGVyLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICkge31cblxuICAvKipcbiAgICogTW9uaXRvciBzY3JvbGwgcG9zaXRpb24gb2YgYW4gZWxlbWVudFxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBtb25pdG9yXG4gICAqIEBwYXJhbSB0aHJlc2hvbGQgUGl4ZWxzIGZyb20gYm90dG9tIHRvIGNvbnNpZGVyIFwiYXQgYm90dG9tXCIgKGRlZmF1bHQgMTApXG4gICAqL1xuICBtb25pdG9yU2Nyb2xsUG9zaXRpb24oXG4gICAgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudCxcbiAgICB0aHJlc2hvbGQ6IG51bWJlciA9IDEwLFxuICApOiBPYnNlcnZhYmxlPFNjcm9sbFN0YXRlPiB7XG4gICAgY29uc3QgZWwgPSBlbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudFJlZiA/IGVsZW1lbnQubmF0aXZlRWxlbWVudCA6IGVsZW1lbnQ7XG5cbiAgICAvLyBDcmVhdGUgc2Nyb2xsIG9ic2VydmFibGVcbiAgICBjb25zdCBzY3JvbGwkID0gbWVyZ2UoXG4gICAgICBmcm9tRXZlbnQoZWwsIFwic2Nyb2xsXCIpLFxuICAgICAgdGhpcy52aWV3cG9ydFJ1bGVyLmNoYW5nZSgxNTApLCAvLyBNb25pdG9yIHZpZXdwb3J0IGNoYW5nZXNcbiAgICApLnBpcGUoXG4gICAgICBzdGFydFdpdGgobnVsbCksIC8vIEVtaXQgaW5pdGlhbCBzdGF0ZVxuICAgICAgdGhyb3R0bGVUaW1lKDE2LCBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgeyB0cmFpbGluZzogdHJ1ZSB9KSwgLy8gfjYwZnBzXG4gICAgICBtYXAoKCkgPT4gdGhpcy5nZXRTY3JvbGxTdGF0ZShlbCwgdGhyZXNob2xkKSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgKGEsIGIpID0+XG4gICAgICAgICAgYS5pc0F0Qm90dG9tID09PSBiLmlzQXRCb3R0b20gJiZcbiAgICAgICAgICBhLnNjcm9sbFRvcCA9PT0gYi5zY3JvbGxUb3AgJiZcbiAgICAgICAgICBhLnNjcm9sbEhlaWdodCA9PT0gYi5zY3JvbGxIZWlnaHQsXG4gICAgICApLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICk7XG5cbiAgICAvLyBTdWJzY3JpYmUgYW5kIHVwZGF0ZSBzdWJqZWN0XG4gICAgc2Nyb2xsJC5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbFN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzY3JvbGwkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjcm9sbCBlbGVtZW50IHRvIGJvdHRvbSB3aXRoIHNtb290aCBhbmltYXRpb25cbiAgICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gc2Nyb2xsXG4gICAqIEBwYXJhbSBzbW9vdGggV2hldGhlciB0byB1c2Ugc21vb3RoIHNjcm9sbGluZ1xuICAgKi9cbiAgc2Nyb2xsVG9Cb3R0b20oXG4gICAgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudCxcbiAgICBzbW9vdGg6IGJvb2xlYW4gPSB0cnVlLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50UmVmID8gZWxlbWVudC5uYXRpdmVFbGVtZW50IDogZWxlbWVudDtcblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmIChzbW9vdGggJiYgXCJzY3JvbGxCZWhhdmlvclwiIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSkge1xuICAgICAgICBlbC5zY3JvbGxUbyh7XG4gICAgICAgICAgdG9wOiBlbC5zY3JvbGxIZWlnaHQsXG4gICAgICAgICAgYmVoYXZpb3I6IFwic21vb3RoXCIsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWwuc2Nyb2xsVG9wID0gZWwuc2Nyb2xsSGVpZ2h0O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGVsZW1lbnQgaXMgYXQgYm90dG9tXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIGNoZWNrXG4gICAqIEBwYXJhbSB0aHJlc2hvbGQgUGl4ZWxzIGZyb20gYm90dG9tIHRvIGNvbnNpZGVyIFwiYXQgYm90dG9tXCJcbiAgICovXG4gIGlzQXRCb3R0b20oXG4gICAgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudCxcbiAgICB0aHJlc2hvbGQ6IG51bWJlciA9IDEwLFxuICApOiBib29sZWFuIHtcbiAgICBjb25zdCBlbCA9IGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50UmVmID8gZWxlbWVudC5uYXRpdmVFbGVtZW50IDogZWxlbWVudDtcbiAgICByZXR1cm4gdGhpcy5nZXRTY3JvbGxTdGF0ZShlbCwgdGhyZXNob2xkKS5pc0F0Qm90dG9tO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IHNjcm9sbCBzdGF0ZSBvZiBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgZ2V0U2Nyb2xsU3RhdGUoZWxlbWVudDogSFRNTEVsZW1lbnQsIHRocmVzaG9sZDogbnVtYmVyKTogU2Nyb2xsU3RhdGUge1xuICAgIGNvbnN0IHNjcm9sbFRvcCA9IGVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgIGNvbnN0IHNjcm9sbEhlaWdodCA9IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgIGNvbnN0IGNsaWVudEhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodDtcbiAgICBjb25zdCBpc0F0Qm90dG9tID0gZGlzdGFuY2VGcm9tQm90dG9tIDw9IHRocmVzaG9sZDtcblxuICAgIHJldHVybiB7XG4gICAgICBpc0F0Qm90dG9tLFxuICAgICAgc2Nyb2xsVG9wLFxuICAgICAgc2Nyb2xsSGVpZ2h0LFxuICAgICAgY2xpZW50SGVpZ2h0LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgUmVzaXplT2JzZXJ2ZXIgZm9yIGVsZW1lbnQgc2l6ZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIG9ic2VydmVcbiAgICogQHBhcmFtIGRlYm91bmNlTXMgRGVib3VuY2UgdGltZSBpbiBtaWxsaXNlY29uZHNcbiAgICovXG4gIG9ic2VydmVSZXNpemUoXG4gICAgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBIVE1MRWxlbWVudCxcbiAgICBkZWJvdW5jZU1zOiBudW1iZXIgPSAyNTAsXG4gICk6IE9ic2VydmFibGU8UmVzaXplT2JzZXJ2ZXJFbnRyeT4ge1xuICAgIGNvbnN0IGVsID0gZWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnRSZWYgPyBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQgOiBlbGVtZW50O1xuICAgIGNvbnN0IHJlc2l6ZSQgPSBuZXcgU3ViamVjdDxSZXNpemVPYnNlcnZlckVudHJ5PigpO1xuXG4gICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1swXTtcbiAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHJlc2l6ZSQubmV4dChlbnRyeSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShlbCk7XG5cbiAgICAvLyBDbGVhbnVwIG9uIGRlc3Ryb3lcbiAgICB0aGlzLmRlc3Ryb3kkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICByZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzaXplJC5waXBlKGRlYm91bmNlVGltZShkZWJvdW5jZU1zKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB0aGlzLnNjcm9sbFN0YXRlU3ViamVjdC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
@@ -153,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
153
153
  type: ViewChild,
154
154
  args: ["slotContainer", { read: ViewContainerRef, static: true }]
155
155
  }] } });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1zbG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zbG90cy9jb3BpbG90LXNsb3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsZ0JBQWdCLEVBSWhCLE1BQU0sRUFDTix1QkFBdUIsRUFFdkIsS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7O0FBRzFDOzs7Ozs7Ozs7Ozs7R0FZRztBQXlCSCxNQUFNLE9BQU8sV0FBVztJQVljO0lBQzFCO0lBWlYsSUFBSSxHQUFHLEtBQUssQ0FBMkMsU0FBUyxDQUFDLENBQUM7SUFDbEUsT0FBTyxHQUFHLEtBQUssQ0FBa0IsU0FBUyxDQUFDLENBQUM7SUFDNUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUF3QixTQUFTLENBQUMsQ0FBQztJQUMzRCxPQUFPLEdBQUcsS0FBSyxDQUFtRCxTQUFTLENBQUMsQ0FBQztJQUdyRSxhQUFhLENBQW9CO0lBRWpDLFlBQVksQ0FBTztJQUUzQixZQUNvQyxhQUErQixFQUN6RCxHQUFzQjtRQURJLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUN6RCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUM3QixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDcEIsNkNBQTZDO1lBQzdDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxD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QyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO3dHQTlGVSxXQUFXLGtCQVlaLGdCQUFnQjs0RkFaZixXQUFXLHlyQkFNYyxnQkFBZ0IsZ0VBMUIxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQsMkRBbEJTLFlBQVk7OzRGQXFCWCxXQUFXO2tCQXhCdkIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQWFJLE1BQU07MkJBQUMsZ0JBQWdCO3lFQUxsQixhQUFhO3NCQURwQixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEluamVjdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBpbnB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgcmVuZGVyU2xvdCB9IGZyb20gXCIuL3Nsb3QudXRpbHNcIjtcbmltcG9ydCB7IFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG4vKipcbiAqIEBpbnRlcm5hbCAtIFRoaXMgY29tcG9uZW50IGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seS5cbiAqIFNpbXBsZSBzbG90IGNvbXBvbmVudCBmb3IgcmVuZGVyaW5nIGN1c3RvbSBjb250ZW50IG9yIGRlZmF1bHRzLlxuICogU3VwcG9ydHMgdGVtcGxhdGVzIGFuZCBjb21wb25lbnRzIG9ubHkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDwhLS0gV2l0aCB0ZW1wbGF0ZSAtLT5cbiAqIDxjb3BpbG90LXNsb3QgW3Nsb3RdPVwic2VuZEJ1dHRvblRlbXBsYXRlXCIgW2NvbnRleHRdPVwiYnV0dG9uQ29udGV4dFwiPlxuICogICA8YnV0dG9uIGNsYXNzPVwiZGVmYXVsdC1idG5cIj5EZWZhdWx0PC9idXR0b24+XG4gKiA8L2NvcGlsb3Qtc2xvdD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6IFwiY29waWxvdC1zbG90XCIsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDwhLS0gSWYgc2xvdCB0ZW1wbGF0ZSBwcm92aWRlZCwgcmVuZGVyIGl0IC0tPlxuICAgIEBpZiAoc2xvdCgpICYmIGlzVGVtcGxhdGUoc2xvdCkpIHtcbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2xvdFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJjb250ZXh0IHx8IHt9XCJcbiAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS0gSWYgbm90IGEgdGVtcGxhdGUsIHdlJ2xsIGhhbmRsZSBpbiBjb2RlIC0tPlxuICAgIDxuZy1jb250YWluZXIgI3Nsb3RDb250YWluZXI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIERlZmF1bHQgY29udGVudCAob25seSBzaG93biBpZiBubyBzbG90KSAtLT5cbiAgICBAaWYgKCFzbG90ICYmICFkZWZhdWx0Q29tcG9uZW50KSB7XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgfVxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdFNsb3QgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIHNsb3QgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgVHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb250ZXh0ID0gaW5wdXQ8YW55IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBkZWZhdWx0Q29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBvdXRwdXRzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgKGV2ZW50OiBhbnkpID0+IHZvaWQ+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIEBWaWV3Q2hpbGQoXCJzbG90Q29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgc2xvdENvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY/OiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChWaWV3Q29udGFpbmVyUmVmKSBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlclNsb3QoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1tcInNsb3RcIl0pIHtcbiAgICAgIC8vIFNsb3QgY2hhbmdlZCwgbmVlZCB0byByZS1yZW5kZXIgY29tcGxldGVseVxuICAgICAgdGhpcy5yZW5kZXJTbG90KCk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2VzW1wiY29udGV4dFwiXSAmJiB0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgLy8gSnVzdCBjb250ZXh0IGNoYW5nZWQsIHVwZGF0ZSBleGlzdGluZyBjb21wb25lbnRcbiAgICAgIHRoaXMudXBkYXRlQ29tcG9uZW50UHJvcHMoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZXNbXCJjb250ZXh0XCJdKSB7XG4gICAgICAvLyBObyBjb21wb25lbnQgcmVmIHlldCwgcmVuZGVyIHRoZSBzbG90XG4gICAgICB0aGlzLnJlbmRlclNsb3QoKTtcbiAgICB9XG4gIH1cblxuICBpc1RlbXBsYXRlKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyU2xvdCgpOiB2b2lkIHtcbiAgICAvLyBTa2lwIGlmIGl0J3MgYSB0ZW1wbGF0ZSAoaGFuZGxlZCBieSBuZ1RlbXBsYXRlT3V0bGV0KVxuICAgIGlmICh0aGlzLnNsb3QoKSAmJiB0aGlzLmlzVGVtcGxhdGUodGhpcy5zbG90KCkpKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2xlYXIgcHJldmlvdXMgY29udGVudFxuICAgIHRoaXMuc2xvdENvbnRhaW5lci5jbGVhcigpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmID0gbnVsbDtcblxuICAgIC8vIFNraXAgaWYgbm8gc2xvdCBhbmQgbm8gZGVmYXVsdCBjb21wb25lbnRcbiAgICBpZiAoIXRoaXMuc2xvdCgpICYmICF0aGlzLmRlZmF1bHRDb21wb25lbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFVzZSB0aGUgdXRpbGl0eSB0byByZW5kZXIgb3RoZXIgc2xvdCB0eXBlc1xuICAgIGlmICh0aGlzLnNsb3QoKSB8fCB0aGlzLmRlZmF1bHRDb21wb25lbnQoKSkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSByZW5kZXJTbG90KHRoaXMuc2xvdENvbnRhaW5lciwge1xuICAgICAgICBzbG90OiB0aGlzLnNsb3QoKSxcbiAgICAgICAgZGVmYXVsdENvbXBvbmVudDogdGhpcy5kZWZhdWx0Q29tcG9uZW50KCkhLFxuICAgICAgICBwcm9wczogdGhpcy5jb250ZXh0KCksXG4gICAgICAgIG91dHB1dHM6IHRoaXMub3V0cHV0cygpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb21wb25lbnRQcm9wcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmIHx8ICF0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BzID0gdGhpcy5jb250ZXh0KCk7XG5cbiAgICAvLyBVcGRhdGUgcHJvcHMgdXNpbmcgc2V0SW5wdXQsIG9ubHkgZm9yIGRlY2xhcmVkIGlucHV0c1xuICAgIGlmIChwcm9wcykge1xuICAgICAgY29uc3QgY3RvciA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmNvbnN0cnVjdG9yIGFzIGFueTtcbiAgICAgIGNvbnN0IGNtcERlZjogYW55ID0gY3Rvcj8uybVjbXA7XG4gICAgICBjb25zdCBkZWNsYXJlZElucHV0cyA9IG5ldyBTZXQ8c3RyaW5nPihPYmplY3Qua2V5cyhjbXBEZWY/LmlucHV0cyA/PyB7fSkpO1xuXG4gICAgICBpZiAoZGVjbGFyZWRJbnB1dHMuaGFzKFwicHJvcHNcIikpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoXCJwcm9wc1wiLCBwcm9wcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wcykge1xuICAgICAgICAgIGlmIChkZWNsYXJlZElucHV0cy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9wc1trZXldO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1zbG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zbG90cy9jb3BpbG90LXNsb3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsZ0JBQWdCLEVBSWhCLE1BQU0sRUFDTix1QkFBdUIsRUFFdkIsS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7O0FBRzFDOzs7Ozs7Ozs7Ozs7R0FZRztBQXlCSCxNQUFNLE9BQU8sV0FBVztJQVljO0lBQzFCO0lBWlYsSUFBSSxHQUFHLEtBQUssQ0FBMkMsU0FBUyxDQUFDLENBQUM7SUFDbEUsT0FBTyxHQUFHLEtBQUssQ0FBa0IsU0FBUyxDQUFDLENBQUM7SUFDNUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUF3QixTQUFTLENBQUMsQ0FBQztJQUMzRCxPQUFPLEdBQUcsS0FBSyxDQUFtRCxTQUFTLENBQUMsQ0FBQztJQUdyRSxhQUFhLENBQW9CO0lBRWpDLFlBQVksQ0FBTztJQUUzQixZQUNvQyxhQUErQixFQUN6RCxHQUFzQjtRQURJLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUN6RCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUM3QixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDcEIsNkNBQTZDO1lBQzdDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxD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QyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO3dHQTlGVSxXQUFXLGtCQVlaLGdCQUFnQjs0RkFaZixXQUFXLHlyQkFNYyxnQkFBZ0IsZ0VBMUIxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQsMkRBbEJTLFlBQVk7OzRGQXFCWCxXQUFXO2tCQXhCdkIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQWFJLE1BQU07MkJBQUMsZ0JBQWdCO3lFQUxsQixhQUFhO3NCQURwQixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEluamVjdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBpbnB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgcmVuZGVyU2xvdCB9IGZyb20gXCIuL3Nsb3QudXRpbHNcIjtcbmltcG9ydCB7IFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG4vKipcbiAqIEBpbnRlcm5hbCAtIFRoaXMgY29tcG9uZW50IGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seS5cbiAqIFNpbXBsZSBzbG90IGNvbXBvbmVudCBmb3IgcmVuZGVyaW5nIGN1c3RvbSBjb250ZW50IG9yIGRlZmF1bHRzLlxuICogU3VwcG9ydHMgdGVtcGxhdGVzIGFuZCBjb21wb25lbnRzIG9ubHkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDwhLS0gV2l0aCB0ZW1wbGF0ZSAtLT5cbiAqIDxjb3BpbG90LXNsb3QgW3Nsb3RdPVwic2VuZEJ1dHRvblRlbXBsYXRlXCIgW2NvbnRleHRdPVwiYnV0dG9uQ29udGV4dFwiPlxuICogICA8YnV0dG9uIGNsYXNzPVwiZGVmYXVsdC1idG5cIj5EZWZhdWx0PC9idXR0b24+XG4gKiA8L2NvcGlsb3Qtc2xvdD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6IFwiY29waWxvdC1zbG90XCIsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDwhLS0gSWYgc2xvdCB0ZW1wbGF0ZSBwcm92aWRlZCwgcmVuZGVyIGl0IC0tPlxuICAgIEBpZiAoc2xvdCgpICYmIGlzVGVtcGxhdGUoc2xvdCkpIHtcbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2xvdFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJjb250ZXh0IHx8IHt9XCJcbiAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDwhLS0gSWYgbm90IGEgdGVtcGxhdGUsIHdlJ2xsIGhhbmRsZSBpbiBjb2RlIC0tPlxuICAgIDxuZy1jb250YWluZXIgI3Nsb3RDb250YWluZXI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIERlZmF1bHQgY29udGVudCAob25seSBzaG93biBpZiBubyBzbG90KSAtLT5cbiAgICBAaWYgKCFzbG90ICYmICFkZWZhdWx0Q29tcG9uZW50KSB7XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgfVxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdFNsb3QgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIHNsb3QgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgVHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb250ZXh0ID0gaW5wdXQ8YW55IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBkZWZhdWx0Q29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBvdXRwdXRzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgKGV2ZW50OiBhbnkpID0+IHZvaWQ+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIEBWaWV3Q2hpbGQoXCJzbG90Q29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgc2xvdENvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY/OiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChWaWV3Q29udGFpbmVyUmVmKSBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJTbG90KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbXCJzbG90XCJdKSB7XG4gICAgICAvLyBTbG90IGNoYW5nZWQsIG5lZWQgdG8gcmUtcmVuZGVyIGNvbXBsZXRlbHlcbiAgICAgIHRoaXMucmVuZGVyU2xvdCgpO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlc1tcImNvbnRleHRcIl0gJiYgdGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIC8vIEp1c3QgY29udGV4dCBjaGFuZ2VkLCB1cGRhdGUgZXhpc3RpbmcgY29tcG9uZW50XG4gICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudFByb3BzKCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2VzW1wiY29udGV4dFwiXSkge1xuICAgICAgLy8gTm8gY29tcG9uZW50IHJlZiB5ZXQsIHJlbmRlciB0aGUgc2xvdFxuICAgICAgdGhpcy5yZW5kZXJTbG90KCk7XG4gICAgfVxuICB9XG5cbiAgaXNUZW1wbGF0ZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclNsb3QoKTogdm9pZCB7XG4gICAgLy8gU2tpcCBpZiBpdCdzIGEgdGVtcGxhdGUgKGhhbmRsZWQgYnkgbmdUZW1wbGF0ZU91dGxldClcbiAgICBpZiAodGhpcy5zbG90KCkgJiYgdGhpcy5pc1RlbXBsYXRlKHRoaXMuc2xvdCgpKSkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENsZWFyIHByZXZpb3VzIGNvbnRlbnRcbiAgICB0aGlzLnNsb3RDb250YWluZXIuY2xlYXIoKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZiA9IG51bGw7XG5cbiAgICAvLyBTa2lwIGlmIG5vIHNsb3QgYW5kIG5vIGRlZmF1bHQgY29tcG9uZW50XG4gICAgaWYgKCF0aGlzLnNsb3QoKSAmJiAhdGhpcy5kZWZhdWx0Q29tcG9uZW50KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBVc2UgdGhlIHV0aWxpdHkgdG8gcmVuZGVyIG90aGVyIHNsb3QgdHlwZXNcbiAgICBpZiAodGhpcy5zbG90KCkgfHwgdGhpcy5kZWZhdWx0Q29tcG9uZW50KCkpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gcmVuZGVyU2xvdCh0aGlzLnNsb3RDb250YWluZXIsIHtcbiAgICAgICAgc2xvdDogdGhpcy5zbG90KCksXG4gICAgICAgIGRlZmF1bHRDb21wb25lbnQ6IHRoaXMuZGVmYXVsdENvbXBvbmVudCgpISxcbiAgICAgICAgcHJvcHM6IHRoaXMuY29udGV4dCgpLFxuICAgICAgICBvdXRwdXRzOiB0aGlzLm91dHB1dHMoKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29tcG9uZW50UHJvcHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZiB8fCAhdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9wcyA9IHRoaXMuY29udGV4dCgpO1xuXG4gICAgLy8gVXBkYXRlIHByb3BzIHVzaW5nIHNldElucHV0LCBvbmx5IGZvciBkZWNsYXJlZCBpbnB1dHNcbiAgICBpZiAocHJvcHMpIHtcbiAgICAgIGNvbnN0IGN0b3IgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb25zdHJ1Y3RvciBhcyBhbnk7XG4gICAgICBjb25zdCBjbXBEZWY6IGFueSA9IGN0b3I/Lsm1Y21wO1xuICAgICAgY29uc3QgZGVjbGFyZWRJbnB1dHMgPSBuZXcgU2V0PHN0cmluZz4oT2JqZWN0LmtleXMoY21wRGVmPy5pbnB1dHMgPz8ge30pKTtcblxuICAgICAgaWYgKGRlY2xhcmVkSW5wdXRzLmhhcyhcInByb3BzXCIpKSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KFwicHJvcHNcIiwgcHJvcHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHMpIHtcbiAgICAgICAgICBpZiAoZGVjbGFyZWRJbnB1dHMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcHJvcHNba2V5XTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KGtleSwgdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -232,4 +232,4 @@ export function createSlotRenderer(defaultComponent, slotName) {
232
232
  });
233
233
  };
234
234
  }
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvdC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2xvdHMvc2xvdC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsV0FBVyxFQUtYLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBSUwsV0FBVyxHQUNaLE1BQU0sY0FBYyxDQUFDO0FBRXRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQ3hCLGFBQStCLEVBQy9CLE9BQTZCO0lBRTdCLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFckUsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRXRCLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxnQkFBZ0IsQ0FBQztJQUMvQyxNQUFNLGlCQUFpQixHQUFHLFFBQVEsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDO0lBRTdELElBQUksYUFBYSxZQUFZLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLCtCQUErQjtRQUMvQixPQUFPLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUU7WUFDckQsU0FBUyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3RCLEtBQUssRUFBRSxLQUFLLElBQUksRUFBRTtTQUNaLENBQUMsQ0FBQztJQUNaLENBQUM7U0FBTSxJQUFJLGVBQWUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzFDLGdEQUFnRDtRQUNoRCxJQUFJLENBQUM7WUFDSCxPQUFPLGVBQWUsQ0FDcEIsYUFBYSxFQUNiLGFBQXdCLEVBQ3hCLEtBQUssRUFDTCxpQkFBaUIsRUFDakIsT0FBTyxDQUNSLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkJB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QUk7WUFDSixnQkFBZ0I7WUFDaEIsS0FBSztZQUNMLE9BQU87U0FDUixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVHlwZSxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBJbmplY3RvcixcbiAgaW5qZWN0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgU2xvdFZhbHVlLFxuICBSZW5kZXJTbG90T3B0aW9ucyxcbiAgU2xvdFJlZ2lzdHJ5RW50cnksXG4gIFNMT1RfQ09ORklHLFxufSBmcm9tIFwiLi9zbG90LnR5cGVzXCI7XG5cbi8qKlxuICogUmVuZGVycyBhIHNsb3QgdmFsdWUgaW50byBhIFZpZXdDb250YWluZXJSZWYuXG4gKiBUaGlzIGlzIHRoZSBjb3JlIHV0aWxpdHkgZm9yIHNsb3QgcmVuZGVyaW5nLlxuICpcbiAqIEBwYXJhbSB2aWV3Q29udGFpbmVyIC0gVGhlIFZpZXdDb250YWluZXJSZWYgdG8gcmVuZGVyIGludG9cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgcmVuZGVyaW5nIHRoZSBzbG90XG4gKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBjb21wb25lbnQgb3IgZW1iZWRkZWQgdmlldyByZWZlcmVuY2VcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGNvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XG4gKlxuICogICByZW5kZXJCdXR0b24oKSB7XG4gKiAgICAgcmVuZGVyU2xvdCh0aGlzLmNvbnRhaW5lciwge1xuICogICAgICAgc2xvdDogdGhpcy5idXR0b25PdmVycmlkZSxcbiAqICAgICAgIGRlZmF1bHRDb21wb25lbnQ6IERlZmF1bHRCdXR0b24sXG4gKiAgICAgICBwcm9wczogeyB0ZXh0OiAnQ2xpY2sgbWUnIH0sXG4gKiAgICAgICBvdXRwdXRzOiB7IGNsaWNrOiAoZXZlbnQpID0+IHRoaXMuaGFuZGxlQ2xpY2soZXZlbnQpIH1cbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJTbG90PFQgPSBhbnk+KFxuICB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICBvcHRpb25zOiBSZW5kZXJTbG90T3B0aW9uczxUPlxuKTogQ29tcG9uZW50UmVmPFQ+IHwgRW1iZWRkZWRWaWV3UmVmPFQ+IHwgbnVsbCB7XG4gIGNvbnN0IHsgc2xvdCwgZGVmYXVsdENvbXBvbmVudCwgcHJvcHMsIGluamVjdG9yLCBvdXRwdXRzIH0gPSBvcHRpb25zO1xuXG4gIHZpZXdDb250YWluZXIuY2xlYXIoKTtcblxuICBjb25zdCBlZmZlY3RpdmVTbG90ID0gc2xvdCA/PyBkZWZhdWx0Q29tcG9uZW50O1xuICBjb25zdCBlZmZlY3RpdmVJbmplY3RvciA9IGluamVjdG9yID8/IHZpZXdDb250YWluZXIuaW5qZWN0b3I7XG5cbiAgaWYgKGVmZmVjdGl2ZVNsb3QgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgIC8vIFRlbXBsYXRlUmVmOiByZW5kZXIgdGVtcGxhdGVcbiAgICByZXR1cm4gdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoZWZmZWN0aXZlU2xvdCwge1xuICAgICAgJGltcGxpY2l0OiBwcm9wcyA/PyB7fSxcbiAgICAgIHByb3BzOiBwcm9wcyA/PyB7fSxcbiAgICB9IGFzIGFueSk7XG4gIH0gZWxzZSBpZiAoaXNDb21wb25lbnRUeXBlKGVmZmVjdGl2ZVNsb3QpKSB7XG4gICAgLy8gQ29tcG9uZW50IHR5cGUgLSB3cmFwIGluIHRyeS9jYXRjaCBmb3Igc2FmZXR5XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoXG4gICAgICAgIHZpZXdDb250YWluZXIsXG4gICAgICAgIGVmZmVjdGl2ZVNsb3QgYXMgVHlwZTxUPixcbiAgICAgICAgcHJvcHMsXG4gICAgICAgIGVmZmVjdGl2ZUluamVjdG9yLFxuICAgICAgICBvdXRwdXRzXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJGYWlsZWQgdG8gY3JlYXRlIGNvbXBvbmVudDpcIiwgZWZmZWN0aXZlU2xvdCwgZXJyb3IpO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIGRlZmF1bHQgY29tcG9uZW50XG4gICAgfVxuICB9XG5cbiAgLy8gRGVmYXVsdDogcmVuZGVyIGRlZmF1bHQgY29tcG9uZW50IGlmIHByb3ZpZGVkXG4gIHJldHVybiBkZWZhdWx0Q29tcG9uZW50XG4gICAgPyBjcmVhdGVDb21wb25lbnQoXG4gICAgICAgIHZpZXdDb250YWluZXIsXG4gICAgICAgIGRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgIHByb3BzLFxuICAgICAgICBlZmZlY3RpdmVJbmplY3RvcixcbiAgICAgICAgb3V0cHV0c1xuICAgICAgKVxuICAgIDogbnVsbDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgY29tcG9uZW50IGFuZCBhcHBsaWVzIHByb3BlcnRpZXMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudDxUPihcbiAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgY29tcG9uZW50OiBUeXBlPFQ+LFxuICBwcm9wcz86IFBhcnRpYWw8VD4sXG4gIGluamVjdG9yPzogSW5qZWN0b3IsXG4gIG91dHB1dHM/OiBSZWNvcmQ8c3RyaW5nLCAoZXZlbnQ6IGFueSkgPT4gdm9pZD5cbik6IENvbXBvbmVudFJlZjxUPiB7XG4gIGNvbnN0IGNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCwge1xuICAgIGluamVjdG9yLFxuICB9KTtcblxuICBpZiAocHJvcHMpIHtcbiAgICAvLyBBcHBseSBwcm9wcyB1c2luZyBzZXRJbnB1dCwgYnV0IG9ubHkgZm9yIGRlY2xhcmVkIGlucHV0c1xuICAgIGNvbnN0IGNtcERlZjogYW55ID0gKGNvbXBvbmVudCBhcyBhbnkpLsm1Y21wO1xuICAgIGNvbnN0IGRlY2xhcmVkSW5wdXRzID0gbmV3IFNldDxzdHJpbmc+KE9iamVjdC5rZXlzKGNtcERlZj8uaW5wdXRzID8/IHt9KSk7XG5cbiAgICBpZiAoZGVjbGFyZWRJbnB1dHMuaGFzKFwicHJvcHNcIikpIHtcbiAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dChcInByb3BzXCIsIHByb3BzIGFzIGFueSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BzKSB7XG4gICAgICAgIGlmIChkZWNsYXJlZElucHV0cy5oYXMoa2V5KSkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gKHByb3BzIGFzIGFueSlba2V5XTtcbiAgICAgICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAob3V0cHV0cykge1xuICAgIC8vIFdpcmUgdXAgb3V0cHV0IGV2ZW50IGhhbmRsZXJzIHdpdGggcHJvcGVyIGNsZWFudXBcbiAgICBjb25zdCBpbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBhbnk7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uczogYW55W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgW2V2ZW50TmFtZSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXMob3V0cHV0cykpIHtcbiAgICAgIGlmIChpbnN0YW5jZVtldmVudE5hbWVdPy5zdWJzY3JpYmUpIHtcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gaW5zdGFuY2VbZXZlbnROYW1lXS5zdWJzY3JpYmUoaGFuZGxlcik7XG4gICAgICAgIHN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlZ2lzdGVyIGNsZWFudXAgb24gY29tcG9uZW50IGRlc3Ryb3lcbiAgICBjb21wb25lbnRSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgIHN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cbiAgY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICByZXR1cm4gY29tcG9uZW50UmVmO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGEgY29tcG9uZW50IHR5cGUuXG4gKiBTaW1wbGlmaWVkIGNoZWNrIC0gcmVseSBvbiB0cnkvY2F0Y2ggZm9yIGFjdHVhbCB2YWxpZGF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb21wb25lbnRUeXBlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgLy8gQXJyb3cgZnVuY3Rpb25zIGFuZCByZWd1bGFyIGZ1bmN0aW9ucyB3aXRob3V0IGEgcHJvdG90eXBlIGFyZSBub3QgY29tcG9uZW50c1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIgJiYgISF2YWx1ZS5wcm90b3R5cGU7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgdmFsdWUgaXMgYSB2YWxpZCBzbG90IHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTbG90VmFsdWUodmFsdWU6IGFueSk6IHZhbHVlIGlzIFNsb3RWYWx1ZSB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmIHx8IGlzQ29tcG9uZW50VHlwZSh2YWx1ZSk7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHNsb3QgdmFsdWUgdG8gYSBjb25zaXN0ZW50IGZvcm1hdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVNsb3RWYWx1ZTxUID0gYW55PihcbiAgdmFsdWU6IFNsb3RWYWx1ZTxUPiB8IHVuZGVmaW5lZCxcbiAgZGVmYXVsdENvbXBvbmVudDogVHlwZTxUPiB8IHVuZGVmaW5lZFxuKTogU2xvdFJlZ2lzdHJ5RW50cnk8VD4ge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHsgY29tcG9uZW50OiBkZWZhdWx0Q29tcG9uZW50IH07XG4gIH1cblxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgIHJldHVybiB7IHRlbXBsYXRlOiB2YWx1ZSB9O1xuICB9XG5cbiAgaWYgKGlzQ29tcG9uZW50VHlwZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4geyBjb21wb25lbnQ6IHZhbHVlIGFzIFR5cGU8VD4gfTtcbiAgfVxuXG4gIHJldHVybiB7IGNvbXBvbmVudDogZGVmYXVsdENvbXBvbmVudCB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzbG90IGNvbmZpZ3VyYXRpb24gbWFwIGZvciBhIGNvbXBvbmVudC5cbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNsb3RzID0gY3JlYXRlU2xvdENvbmZpZyh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiogICBzZW5kQnV0dG9uOiBDdXN0b21TZW5kQnV0dG9uLFxuICogICB0b29sYmFyOiAnY3VzdG9tLXRvb2xiYXItY2xhc3MnLFxuICogICBmb290ZXI6IGZvb3RlclRlbXBsYXRlXG4gKiB9LCB7XG4gKiAgIHNlbmRCdXR0b246IERlZmF1bHRTZW5kQnV0dG9uLFxuICogICB0b29sYmFyOiBEZWZhdWx0VG9vbGJhcixcbiAqICAgZm9vdGVyOiBEZWZhdWx0Rm9vdGVyXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2xvdENvbmZpZzxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgVHlwZTxhbnk+Pj4oXG4gIG92ZXJyaWRlczogUGFydGlhbDxSZWNvcmQ8a2V5b2YgVCwgU2xvdFZhbHVlPj4sXG4gIGRlZmF1bHRzOiBUXG4pOiBNYXA8a2V5b2YgVCwgU2xvdFJlZ2lzdHJ5RW50cnk+IHtcbiAgY29uc3QgY29uZmlnID0gbmV3IE1hcDxrZXlvZiBULCBTbG90UmVnaXN0cnlFbnRyeT4oKTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBkZWZhdWx0cykge1xuICAgIGNvbnN0IG92ZXJyaWRlID0gb3ZlcnJpZGVzW2tleV07XG4gICAgY29uc3QgZGVmYXVsdENvbXBvbmVudCA9IGRlZmF1bHRzW2tleV07XG4gICAgY29uZmlnLnNldChrZXksIG5vcm1hbGl6ZVNsb3RWYWx1ZShvdmVycmlkZSwgZGVmYXVsdENvbXBvbmVudCkpO1xuICB9XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBzbG90IGNvbmZpZ3VyYXRpb24gdG8gY2hpbGQgY29tcG9uZW50cyB2aWEgREkuXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlU2xvdHMoe1xuICogICAgICAgc2VuZEJ1dHRvbjogQ3VzdG9tU2VuZEJ1dHRvbixcbiAqICAgICAgIHRvb2xiYXI6IEN1c3RvbVRvb2xiYXJcbiAqICAgICB9KVxuICogICBdXG4gKiB9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlU2xvdHMoc2xvdHM6IFJlY29yZDxzdHJpbmcsIFR5cGU8YW55Pj4pIHtcbiAgY29uc3Qgc2xvdE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBTbG90UmVnaXN0cnlFbnRyeT4oKTtcblxuICAvLyBPbmx5IGFjY2VwdCBjb21wb25lbnQgdHlwZXMgaW4gREkgKHRlbXBsYXRlcyBsYWNrIHZpZXcgY29udGV4dClcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoc2xvdHMpKSB7XG4gICAgaWYgKGlzQ29tcG9uZW50VHlwZSh2YWx1ZSkpIHtcbiAgICAgIHNsb3RNYXAuc2V0KGtleSwgeyBjb21wb25lbnQ6IHZhbHVlIGFzIFR5cGU8YW55PiB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IFNMT1RfQ09ORklHLFxuICAgIHVzZVZhbHVlOiBzbG90TWFwLFxuICB9O1xufVxuXG4vKipcbiAqIEdldHMgc2xvdCBjb25maWd1cmF0aW9uIGZyb20gREkuXG4gKiBNdXN0IGJlIGNhbGxlZCB3aXRoaW4gYW4gaW5qZWN0aW9uIGNvbnRleHQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIHNsb3RzID0gZ2V0U2xvdENvbmZpZygpO1xuICpcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgY29uc3Qgc2VuZEJ1dHRvbiA9IHRoaXMuc2xvdHM/LmdldCgnc2VuZEJ1dHRvbicpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNsb3RDb25maWcoKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBTbG90UmVnaXN0cnlFbnRyeT4gfCBudWxsIHtcbiAgcmV0dXJuIGluamVjdChTTE9UX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVuZGVyIGZ1bmN0aW9uIGZvciBhIHNwZWNpZmljIHNsb3QuXG4gKiBVc2VmdWwgZm9yIGNyZWF0aW5nIHJldXNhYmxlIHNsb3QgcmVuZGVyZXJzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZW5kZXJTZW5kQnV0dG9uID0gY3JlYXRlU2xvdFJlbmRlcmVyKFxuICogICBEZWZhdWx0U2VuZEJ1dHRvbixcbiAqICAgJ3NlbmRCdXR0b24nXG4gKiApO1xuICpcbiAqIC8vIExhdGVyIGluIHRlbXBsYXRlXG4gKiByZW5kZXJTZW5kQnV0dG9uKHRoaXMudmlld0NvbnRhaW5lciwgdGhpcy5zZW5kQnV0dG9uT3ZlcnJpZGUpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTbG90UmVuZGVyZXI8VD4oXG4gIGRlZmF1bHRDb21wb25lbnQ6IFR5cGU8VD4sXG4gIHNsb3ROYW1lPzogc3RyaW5nXG4pIHtcbiAgLy8gR2V0IGNvbmZpZyBpbiB0aGUgaW5qZWN0aW9uIGNvbnRleHQgd2hlbiB0aGUgcmVuZGVyZXIgaXMgY3JlYXRlZFxuICBjb25zdCBjb25maWcgPSBzbG90TmFtZSA/IGdldFNsb3RDb25maWcoKSA6IG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHNsb3Q/OiBTbG90VmFsdWU8VD4sXG4gICAgcHJvcHM/OiBQYXJ0aWFsPFQ+LFxuICAgIG91dHB1dHM/OiBSZWNvcmQ8c3RyaW5nLCAoZXZlbnQ6IGFueSkgPT4gdm9pZD5cbiAgKSA9PiB7XG4gICAgLy8gQ2hlY2sgREkgZm9yIG92ZXJyaWRlcyBpZiBzbG90IG5hbWUgcHJvdmlkZWRcbiAgICBpZiAoc2xvdE5hbWUgJiYgIXNsb3QgJiYgY29uZmlnKSB7XG4gICAgICBjb25zdCBlbnRyeSA9IGNvbmZpZy5nZXQoc2xvdE5hbWUpO1xuICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgIGlmIChlbnRyeS5jb21wb25lbnQpIHNsb3QgPSBlbnRyeS5jb21wb25lbnQ7XG4gICAgICAgIGVsc2UgaWYgKGVudHJ5LnRlbXBsYXRlKSBzbG90ID0gZW50cnkudGVtcGxhdGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbmRlclNsb3Qodmlld0NvbnRhaW5lciwge1xuICAgICAgc2xvdCxcbiAgICAgIGRlZmF1bHRDb21wb25lbnQsXG4gICAgICBwcm9wcyxcbiAgICAgIG91dHB1dHMsXG4gICAgfSk7XG4gIH07XG59XG4iXX0=
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvdC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2xvdHMvc2xvdC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsV0FBVyxFQUtYLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBSUwsV0FBVyxHQUNaLE1BQU0sY0FBYyxDQUFDO0FBRXRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQ3hCLGFBQStCLEVBQy9CLE9BQTZCO0lBRTdCLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFckUsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRXRCLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxnQkFBZ0IsQ0FBQztJQUMvQyxNQUFNLGlCQUFpQixHQUFHLFFBQVEsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDO0lBRTdELElBQUksYUFBYSxZQUFZLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLCtCQUErQjtRQUMvQixPQUFPLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUU7WUFDckQsU0FBUyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3RCLEtBQUssRUFBRSxLQUFLLElBQUksRUFBRTtTQUNaLENBQUMsQ0FBQztJQUNaLENBQUM7U0FBTSxJQUFJLGVBQWUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzFDLGdEQUFnRDtRQUNoRCxJQUFJLENBQUM7WUFDSCxPQUFPLGVBQWUsQ0FDcEIsYUFBYSxFQUNiLGFBQXdCLEVBQ3hCLEtBQUssRUFDTCxpQkFBaUIsRUFDakIsT0FBTyxDQUNSLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkJB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QUk7WUFDSixnQkFBZ0I7WUFDaEIsS0FBSztZQUNMLE9BQU87U0FDUixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVHlwZSxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBJbmplY3RvcixcbiAgaW5qZWN0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgU2xvdFZhbHVlLFxuICBSZW5kZXJTbG90T3B0aW9ucyxcbiAgU2xvdFJlZ2lzdHJ5RW50cnksXG4gIFNMT1RfQ09ORklHLFxufSBmcm9tIFwiLi9zbG90LnR5cGVzXCI7XG5cbi8qKlxuICogUmVuZGVycyBhIHNsb3QgdmFsdWUgaW50byBhIFZpZXdDb250YWluZXJSZWYuXG4gKiBUaGlzIGlzIHRoZSBjb3JlIHV0aWxpdHkgZm9yIHNsb3QgcmVuZGVyaW5nLlxuICpcbiAqIEBwYXJhbSB2aWV3Q29udGFpbmVyIC0gVGhlIFZpZXdDb250YWluZXJSZWYgdG8gcmVuZGVyIGludG9cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgcmVuZGVyaW5nIHRoZSBzbG90XG4gKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBjb21wb25lbnQgb3IgZW1iZWRkZWQgdmlldyByZWZlcmVuY2VcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGNvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XG4gKlxuICogICByZW5kZXJCdXR0b24oKSB7XG4gKiAgICAgcmVuZGVyU2xvdCh0aGlzLmNvbnRhaW5lciwge1xuICogICAgICAgc2xvdDogdGhpcy5idXR0b25PdmVycmlkZSxcbiAqICAgICAgIGRlZmF1bHRDb21wb25lbnQ6IERlZmF1bHRCdXR0b24sXG4gKiAgICAgICBwcm9wczogeyB0ZXh0OiAnQ2xpY2sgbWUnIH0sXG4gKiAgICAgICBvdXRwdXRzOiB7IGNsaWNrOiAoZXZlbnQpID0+IHRoaXMuaGFuZGxlQ2xpY2soZXZlbnQpIH1cbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJTbG90PFQgPSBhbnk+KFxuICB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICBvcHRpb25zOiBSZW5kZXJTbG90T3B0aW9uczxUPixcbik6IENvbXBvbmVudFJlZjxUPiB8IEVtYmVkZGVkVmlld1JlZjxUPiB8IG51bGwge1xuICBjb25zdCB7IHNsb3QsIGRlZmF1bHRDb21wb25lbnQsIHByb3BzLCBpbmplY3Rvciwgb3V0cHV0cyB9ID0gb3B0aW9ucztcblxuICB2aWV3Q29udGFpbmVyLmNsZWFyKCk7XG5cbiAgY29uc3QgZWZmZWN0aXZlU2xvdCA9IHNsb3QgPz8gZGVmYXVsdENvbXBvbmVudDtcbiAgY29uc3QgZWZmZWN0aXZlSW5qZWN0b3IgPSBpbmplY3RvciA/PyB2aWV3Q29udGFpbmVyLmluamVjdG9yO1xuXG4gIGlmIChlZmZlY3RpdmVTbG90IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAvLyBUZW1wbGF0ZVJlZjogcmVuZGVyIHRlbXBsYXRlXG4gICAgcmV0dXJuIHZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGVmZmVjdGl2ZVNsb3QsIHtcbiAgICAgICRpbXBsaWNpdDogcHJvcHMgPz8ge30sXG4gICAgICBwcm9wczogcHJvcHMgPz8ge30sXG4gICAgfSBhcyBhbnkpO1xuICB9IGVsc2UgaWYgKGlzQ29tcG9uZW50VHlwZShlZmZlY3RpdmVTbG90KSkge1xuICAgIC8vIENvbXBvbmVudCB0eXBlIC0gd3JhcCBpbiB0cnkvY2F0Y2ggZm9yIHNhZmV0eVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFxuICAgICAgICB2aWV3Q29udGFpbmVyLFxuICAgICAgICBlZmZlY3RpdmVTbG90IGFzIFR5cGU8VD4sXG4gICAgICAgIHByb3BzLFxuICAgICAgICBlZmZlY3RpdmVJbmplY3RvcixcbiAgICAgICAgb3V0cHV0cyxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIkZhaWxlZCB0byBjcmVhdGUgY29tcG9uZW50OlwiLCBlZmZlY3RpdmVTbG90LCBlcnJvcik7XG4gICAgICAvLyBGYWxsIHRocm91Z2ggdG8gZGVmYXVsdCBjb21wb25lbnRcbiAgICB9XG4gIH1cblxuICAvLyBEZWZhdWx0OiByZW5kZXIgZGVmYXVsdCBjb21wb25lbnQgaWYgcHJvdmlkZWRcbiAgcmV0dXJuIGRlZmF1bHRDb21wb25lbnRcbiAgICA/IGNyZWF0ZUNvbXBvbmVudChcbiAgICAgICAgdmlld0NvbnRhaW5lcixcbiAgICAgICAgZGVmYXVsdENvbXBvbmVudCxcbiAgICAgICAgcHJvcHMsXG4gICAgICAgIGVmZmVjdGl2ZUluamVjdG9yLFxuICAgICAgICBvdXRwdXRzLFxuICAgICAgKVxuICAgIDogbnVsbDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgY29tcG9uZW50IGFuZCBhcHBsaWVzIHByb3BlcnRpZXMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudDxUPihcbiAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgY29tcG9uZW50OiBUeXBlPFQ+LFxuICBwcm9wcz86IFBhcnRpYWw8VD4sXG4gIGluamVjdG9yPzogSW5qZWN0b3IsXG4gIG91dHB1dHM/OiBSZWNvcmQ8c3RyaW5nLCAoZXZlbnQ6IGFueSkgPT4gdm9pZD4sXG4pOiBDb21wb25lbnRSZWY8VD4ge1xuICBjb25zdCBjb21wb25lbnRSZWYgPSB2aWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIHtcbiAgICBpbmplY3RvcixcbiAgfSk7XG5cbiAgaWYgKHByb3BzKSB7XG4gICAgLy8gQXBwbHkgcHJvcHMgdXNpbmcgc2V0SW5wdXQsIGJ1dCBvbmx5IGZvciBkZWNsYXJlZCBpbnB1dHNcbiAgICBjb25zdCBjbXBEZWY6IGFueSA9IChjb21wb25lbnQgYXMgYW55KS7JtWNtcDtcbiAgICBjb25zdCBkZWNsYXJlZElucHV0cyA9IG5ldyBTZXQ8c3RyaW5nPihPYmplY3Qua2V5cyhjbXBEZWY/LmlucHV0cyA/PyB7fSkpO1xuXG4gICAgaWYgKGRlY2xhcmVkSW5wdXRzLmhhcyhcInByb3BzXCIpKSB7XG4gICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoXCJwcm9wc1wiLCBwcm9wcyBhcyBhbnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wcykge1xuICAgICAgICBpZiAoZGVjbGFyZWRJbnB1dHMuaGFzKGtleSkpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IChwcm9wcyBhcyBhbnkpW2tleV07XG4gICAgICAgICAgY29tcG9uZW50UmVmLnNldElucHV0KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKG91dHB1dHMpIHtcbiAgICAvLyBXaXJlIHVwIG91dHB1dCBldmVudCBoYW5kbGVycyB3aXRoIHByb3BlciBjbGVhbnVwXG4gICAgY29uc3QgaW5zdGFuY2UgPSBjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgYW55O1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbnM6IGFueVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IFtldmVudE5hbWUsIGhhbmRsZXJdIG9mIE9iamVjdC5lbnRyaWVzKG91dHB1dHMpKSB7XG4gICAgICBpZiAoaW5zdGFuY2VbZXZlbnROYW1lXT8uc3Vic2NyaWJlKSB7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGluc3RhbmNlW2V2ZW50TmFtZV0uc3Vic2NyaWJlKGhhbmRsZXIpO1xuICAgICAgICBzdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZWdpc3RlciBjbGVhbnVwIG9uIGNvbXBvbmVudCBkZXN0cm95XG4gICAgY29tcG9uZW50UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICBzdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uXG4gIGNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSB2YWx1ZSBpcyBhIGNvbXBvbmVudCB0eXBlLlxuICogU2ltcGxpZmllZCBjaGVjayAtIHJlbHkgb24gdHJ5L2NhdGNoIGZvciBhY3R1YWwgdmFsaWRhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tcG9uZW50VHlwZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIC8vIEFycm93IGZ1bmN0aW9ucyBhbmQgcmVndWxhciBmdW5jdGlvbnMgd2l0aG91dCBhIHByb3RvdHlwZSBhcmUgbm90IGNvbXBvbmVudHNcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiICYmICEhdmFsdWUucHJvdG90eXBlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGEgdmFsaWQgc2xvdCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2xvdFZhbHVlKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBTbG90VmFsdWUge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZiB8fCBpc0NvbXBvbmVudFR5cGUodmFsdWUpO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBzbG90IHZhbHVlIHRvIGEgY29uc2lzdGVudCBmb3JtYXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTbG90VmFsdWU8VCA9IGFueT4oXG4gIHZhbHVlOiBTbG90VmFsdWU8VD4gfCB1bmRlZmluZWQsXG4gIGRlZmF1bHRDb21wb25lbnQ6IFR5cGU8VD4gfCB1bmRlZmluZWQsXG4pOiBTbG90UmVnaXN0cnlFbnRyeTxUPiB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4geyBjb21wb25lbnQ6IGRlZmF1bHRDb21wb25lbnQgfTtcbiAgfVxuXG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgcmV0dXJuIHsgdGVtcGxhdGU6IHZhbHVlIH07XG4gIH1cblxuICBpZiAoaXNDb21wb25lbnRUeXBlKHZhbHVlKSkge1xuICAgIHJldHVybiB7IGNvbXBvbmVudDogdmFsdWUgYXMgVHlwZTxUPiB9O1xuICB9XG5cbiAgcmV0dXJuIHsgY29tcG9uZW50OiBkZWZhdWx0Q29tcG9uZW50IH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNsb3QgY29uZmlndXJhdGlvbiBtYXAgZm9yIGEgY29tcG9uZW50LlxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgc2xvdHMgPSBjcmVhdGVTbG90Q29uZmlnKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuKiAgIHNlbmRCdXR0b246IEN1c3RvbVNlbmRCdXR0b24sXG4gKiAgIHRvb2xiYXI6ICdjdXN0b20tdG9vbGJhci1jbGFzcycsXG4gKiAgIGZvb3RlcjogZm9vdGVyVGVtcGxhdGVcbiAqIH0sIHtcbiAqICAgc2VuZEJ1dHRvbjogRGVmYXVsdFNlbmRCdXR0b24sXG4gKiAgIHRvb2xiYXI6IERlZmF1bHRUb29sYmFyLFxuICogICBmb290ZXI6IERlZmF1bHRGb290ZXJcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTbG90Q29uZmlnPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBUeXBlPGFueT4+PihcbiAgb3ZlcnJpZGVzOiBQYXJ0aWFsPFJlY29yZDxrZXlvZiBULCBTbG90VmFsdWU+PixcbiAgZGVmYXVsdHM6IFQsXG4pOiBNYXA8a2V5b2YgVCwgU2xvdFJlZ2lzdHJ5RW50cnk+IHtcbiAgY29uc3QgY29uZmlnID0gbmV3IE1hcDxrZXlvZiBULCBTbG90UmVnaXN0cnlFbnRyeT4oKTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBkZWZhdWx0cykge1xuICAgIGNvbnN0IG92ZXJyaWRlID0gb3ZlcnJpZGVzW2tleV07XG4gICAgY29uc3QgZGVmYXVsdENvbXBvbmVudCA9IGRlZmF1bHRzW2tleV07XG4gICAgY29uZmlnLnNldChrZXksIG5vcm1hbGl6ZVNsb3RWYWx1ZShvdmVycmlkZSwgZGVmYXVsdENvbXBvbmVudCkpO1xuICB9XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBzbG90IGNvbmZpZ3VyYXRpb24gdG8gY2hpbGQgY29tcG9uZW50cyB2aWEgREkuXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlU2xvdHMoe1xuICogICAgICAgc2VuZEJ1dHRvbjogQ3VzdG9tU2VuZEJ1dHRvbixcbiAqICAgICAgIHRvb2xiYXI6IEN1c3RvbVRvb2xiYXJcbiAqICAgICB9KVxuICogICBdXG4gKiB9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlU2xvdHMoc2xvdHM6IFJlY29yZDxzdHJpbmcsIFR5cGU8YW55Pj4pIHtcbiAgY29uc3Qgc2xvdE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBTbG90UmVnaXN0cnlFbnRyeT4oKTtcblxuICAvLyBPbmx5IGFjY2VwdCBjb21wb25lbnQgdHlwZXMgaW4gREkgKHRlbXBsYXRlcyBsYWNrIHZpZXcgY29udGV4dClcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoc2xvdHMpKSB7XG4gICAgaWYgKGlzQ29tcG9uZW50VHlwZSh2YWx1ZSkpIHtcbiAgICAgIHNsb3RNYXAuc2V0KGtleSwgeyBjb21wb25lbnQ6IHZhbHVlIGFzIFR5cGU8YW55PiB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IFNMT1RfQ09ORklHLFxuICAgIHVzZVZhbHVlOiBzbG90TWFwLFxuICB9O1xufVxuXG4vKipcbiAqIEdldHMgc2xvdCBjb25maWd1cmF0aW9uIGZyb20gREkuXG4gKiBNdXN0IGJlIGNhbGxlZCB3aXRoaW4gYW4gaW5qZWN0aW9uIGNvbnRleHQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIHNsb3RzID0gZ2V0U2xvdENvbmZpZygpO1xuICpcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgY29uc3Qgc2VuZEJ1dHRvbiA9IHRoaXMuc2xvdHM/LmdldCgnc2VuZEJ1dHRvbicpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNsb3RDb25maWcoKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBTbG90UmVnaXN0cnlFbnRyeT4gfCBudWxsIHtcbiAgcmV0dXJuIGluamVjdChTTE9UX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVuZGVyIGZ1bmN0aW9uIGZvciBhIHNwZWNpZmljIHNsb3QuXG4gKiBVc2VmdWwgZm9yIGNyZWF0aW5nIHJldXNhYmxlIHNsb3QgcmVuZGVyZXJzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZW5kZXJTZW5kQnV0dG9uID0gY3JlYXRlU2xvdFJlbmRlcmVyKFxuICogICBEZWZhdWx0U2VuZEJ1dHRvbixcbiAqICAgJ3NlbmRCdXR0b24nXG4gKiApO1xuICpcbiAqIC8vIExhdGVyIGluIHRlbXBsYXRlXG4gKiByZW5kZXJTZW5kQnV0dG9uKHRoaXMudmlld0NvbnRhaW5lciwgdGhpcy5zZW5kQnV0dG9uT3ZlcnJpZGUpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTbG90UmVuZGVyZXI8VD4oXG4gIGRlZmF1bHRDb21wb25lbnQ6IFR5cGU8VD4sXG4gIHNsb3ROYW1lPzogc3RyaW5nLFxuKSB7XG4gIC8vIEdldCBjb25maWcgaW4gdGhlIGluamVjdGlvbiBjb250ZXh0IHdoZW4gdGhlIHJlbmRlcmVyIGlzIGNyZWF0ZWRcbiAgY29uc3QgY29uZmlnID0gc2xvdE5hbWUgPyBnZXRTbG90Q29uZmlnKCkgOiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBzbG90PzogU2xvdFZhbHVlPFQ+LFxuICAgIHByb3BzPzogUGFydGlhbDxUPixcbiAgICBvdXRwdXRzPzogUmVjb3JkPHN0cmluZywgKGV2ZW50OiBhbnkpID0+IHZvaWQ+LFxuICApID0+IHtcbiAgICAvLyBDaGVjayBESSBmb3Igb3ZlcnJpZGVzIGlmIHNsb3QgbmFtZSBwcm92aWRlZFxuICAgIGlmIChzbG90TmFtZSAmJiAhc2xvdCAmJiBjb25maWcpIHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gY29uZmlnLmdldChzbG90TmFtZSk7XG4gICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgaWYgKGVudHJ5LmNvbXBvbmVudCkgc2xvdCA9IGVudHJ5LmNvbXBvbmVudDtcbiAgICAgICAgZWxzZSBpZiAoZW50cnkudGVtcGxhdGUpIHNsb3QgPSBlbnRyeS50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVuZGVyU2xvdCh2aWV3Q29udGFpbmVyLCB7XG4gICAgICBzbG90LFxuICAgICAgZGVmYXVsdENvbXBvbmVudCxcbiAgICAgIHByb3BzLFxuICAgICAgb3V0cHV0cyxcbiAgICB9KTtcbiAgfTtcbn1cbiJdfQ==
@@ -17,7 +17,7 @@ export function registerFrontendTool(frontendTool) {
17
17
  injector,
18
18
  });
19
19
  destroyRef.onDestroy(() => {
20
- copilotKit.removeTool(frontendTool.name);
20
+ copilotKit.removeTool(frontendTool.name, frontendTool.agentId);
21
21
  });
22
22
  }
23
23
  export function registerHumanInTheLoop(humanInTheLoop) {
@@ -25,7 +25,7 @@ export function registerHumanInTheLoop(humanInTheLoop) {
25
25
  const copilotKit = inject(CopilotKit);
26
26
  copilotKit.addHumanInTheLoop(humanInTheLoop);
27
27
  destroyRef.onDestroy(() => {
28
- copilotKit.removeTool(humanInTheLoop.name);
28
+ copilotKit.removeTool(humanInTheLoop.name, humanInTheLoop.agentId);
29
29
  });
30
30
  }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFnQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQThFMUMsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxjQUEwQztJQUUxQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUU3QyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUN4QixVQUFVLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsWUFBc0M7SUFFdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdEMsVUFBVSxDQUFDLGVBQWUsQ0FBQztRQUN6QixHQUFJLFlBQW1DO1FBQ3ZDLFFBQVE7S0FDVCxDQUFDLENBQUM7SUFFSCxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUN4QixVQUFVLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLGNBQTBDO0lBRTFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdEMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRTdDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ3hCLFVBQVUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIEluamVjdG9yLCBTaWduYWwsIFR5cGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGcm9udGVuZFRvb2wsIEZyb250ZW5kVG9vbEhhbmRsZXJDb250ZXh0IH0gZnJvbSBcIkBjb3BpbG90a2l0bmV4dC9jb3JlXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgQ29waWxvdEtpdCB9IGZyb20gXCIuL2NvcGlsb3RraXRcIjtcblxuZXhwb3J0IHR5cGUgQW5ndWxhclRvb2xDYWxsPEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9XG4gIHwge1xuICAgICAgYXJnczogUGFydGlhbDxBcmdzPjtcbiAgICAgIHN0YXR1czogXCJpbi1wcm9ncmVzc1wiO1xuICAgICAgcmVzdWx0OiB1bmRlZmluZWQ7XG4gICAgfVxuICB8IHtcbiAgICAgIGFyZ3M6IEFyZ3M7XG4gICAgICBzdGF0dXM6IFwiZXhlY3V0aW5nXCI7XG4gICAgICByZXN1bHQ6IHVuZGVmaW5lZDtcbiAgICB9XG4gIHwge1xuICAgICAgYXJnczogQXJncztcbiAgICAgIHN0YXR1czogXCJjb21wbGV0ZVwiO1xuICAgICAgcmVzdWx0OiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgSHVtYW5JblRoZUxvb3BUb29sQ2FsbDxBcmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPVxuICB8IHtcbiAgICAgIGFyZ3M6IFBhcnRpYWw8QXJncz47XG4gICAgICBzdGF0dXM6IFwiaW4tcHJvZ3Jlc3NcIjtcbiAgICAgIHJlc3VsdDogdW5kZWZpbmVkO1xuICAgICAgcmVzcG9uZDogKHJlc3VsdDogdW5rbm93bikgPT4gdm9pZDtcbiAgICB9XG4gIHwge1xuICAgICAgYXJnczogQXJncztcbiAgICAgIHN0YXR1czogXCJleGVjdXRpbmdcIjtcbiAgICAgIHJlc3VsdDogdW5kZWZpbmVkO1xuICAgICAgcmVzcG9uZDogKHJlc3VsdDogdW5rbm93bikgPT4gdm9pZDtcbiAgICB9XG4gIHwge1xuICAgICAgYXJnczogQXJncztcbiAgICAgIHN0YXR1czogXCJjb21wbGV0ZVwiO1xuICAgICAgcmVzdWx0OiBzdHJpbmc7XG4gICAgICByZXNwb25kOiAocmVzdWx0OiB1bmtub3duKSA9PiB2b2lkO1xuICAgIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbFJlbmRlcmVyPEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIHRvb2xDYWxsOiBTaWduYWw8QW5ndWxhclRvb2xDYWxsPEFyZ3M+Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIdW1hbkluVGhlTG9vcFRvb2xSZW5kZXJlcjxBcmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICB0b29sQ2FsbDogU2lnbmFsPEh1bWFuSW5UaGVMb29wVG9vbENhbGw8QXJncz4+O1xufVxuXG5leHBvcnQgdHlwZSBDbGllbnRUb29sPEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IE9taXQ8XG4gIEZyb250ZW5kVG9vbDxBcmdzPixcbiAgXCJoYW5kbGVyXCJcbj4gJiB7XG4gIHJlbmRlcmVyPzogVHlwZTxUb29sUmVuZGVyZXI8QXJncz4+O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJUb29sQ2FsbENvbmZpZzxBcmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFyZ3M6IHouWm9kVHlwZTxBcmdzPjtcbiAgY29tcG9uZW50OiBUeXBlPFRvb2xSZW5kZXJlcjxBcmdzPj47XG4gIGFnZW50SWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnJvbnRlbmRUb29sQ29uZmlnPEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcGFyYW1ldGVyczogei5ab2RUeXBlPEFyZ3M+O1xuICBjb21wb25lbnQ/OiBUeXBlPFRvb2xSZW5kZXJlcjxBcmdzPj47XG4gIGhhbmRsZXI6IChhcmdzOiBBcmdzLCBjb250ZXh0OiBGcm9udGVuZFRvb2xIYW5kbGVyQ29udGV4dCkgPT4gUHJvbWlzZTx1bmtub3duPjtcbiAgYWdlbnRJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIdW1hbkluVGhlTG9vcENvbmZpZzxBcmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHBhcmFtZXRlcnM6IHouWm9kVHlwZTxBcmdzPjtcbiAgY29tcG9uZW50OiBUeXBlPEh1bWFuSW5UaGVMb29wVG9vbFJlbmRlcmVyPEFyZ3M+PjtcbiAgYWdlbnRJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyUmVuZGVyVG9vbENhbGw8QXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICByZW5kZXJUb29sQ2FsbDogUmVuZGVyVG9vbENhbGxDb25maWc8QXJncz4sXG4pOiB2b2lkIHtcbiAgY29uc3QgY29waWxvdEtpdCA9IGluamVjdChDb3BpbG90S2l0KTtcbiAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBjb3BpbG90S2l0LmFkZFJlbmRlclRvb2xDYWxsKHJlbmRlclRvb2xDYWxsKTtcblxuICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgY29waWxvdEtpdC5yZW1vdmVUb29sKHJlbmRlclRvb2xDYWxsLm5hbWUsIHJlbmRlclRvb2xDYWxsLmFnZW50SWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRnJvbnRlbmRUb29sPEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgZnJvbnRlbmRUb29sOiBGcm9udGVuZFRvb2xDb25maWc8QXJncz4sXG4pOiB2b2lkIHtcbiAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBjb25zdCBjb3BpbG90S2l0ID0gaW5qZWN0KENvcGlsb3RLaXQpO1xuXG4gIGNvcGlsb3RLaXQuYWRkRnJvbnRlbmRUb29sKHtcbiAgICAuLi4oZnJvbnRlbmRUb29sIGFzIEZyb250ZW5kVG9vbENvbmZpZyksXG4gICAgaW5qZWN0b3IsXG4gIH0pO1xuXG4gIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICBjb3BpbG90S2l0LnJlbW92ZVRvb2woZnJvbnRlbmRUb29sLm5hbWUpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVySHVtYW5JblRoZUxvb3A8QXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICBodW1hbkluVGhlTG9vcDogSHVtYW5JblRoZUxvb3BDb25maWc8QXJncz4sXG4pOiB2b2lkIHtcbiAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgY29uc3QgY29waWxvdEtpdCA9IGluamVjdChDb3BpbG90S2l0KTtcblxuICBjb3BpbG90S2l0LmFkZEh1bWFuSW5UaGVMb29wKGh1bWFuSW5UaGVMb29wKTtcblxuICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgY29waWxvdEtpdC5yZW1vdmVUb29sKGh1bWFuSW5UaGVMb29wLm5hbWUpO1xuICB9KTtcbn1cbiJdfQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFnQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQThGMUMsTUFBTSxVQUFVLHNCQUFzQixDQUVwQyxjQUEwQztJQUMxQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUU3QyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUN4QixVQUFVLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FFbEMsWUFBc0M7SUFDdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdEMsVUFBVSxDQUFDLGVBQWUsQ0FBQztRQUN6QixHQUFJLFlBQW1DO1FBQ3ZDLFFBQVE7S0FDVCxDQUFDLENBQUM7SUFFSCxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUN4QixVQUFVLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FFcEMsY0FBMEM7SUFDMUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV0QyxVQUFVLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFN0MsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDeEIsVUFBVSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBJbmplY3RvciwgU2lnbmFsLCBUeXBlLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRnJvbnRlbmRUb29sLCBGcm9udGVuZFRvb2xIYW5kbGVyQ29udGV4dCB9IGZyb20gXCJAY29waWxvdGtpdG5leHQvY29yZVwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IENvcGlsb3RLaXQgfSBmcm9tIFwiLi9jb3BpbG90a2l0XCI7XG5cbmV4cG9ydCB0eXBlIEFuZ3VsYXJUb29sQ2FsbDxcbiAgQXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4+ID1cbiAgfCB7XG4gICAgICBhcmdzOiBQYXJ0aWFsPEFyZ3M+O1xuICAgICAgc3RhdHVzOiBcImluLXByb2dyZXNzXCI7XG4gICAgICByZXN1bHQ6IHVuZGVmaW5lZDtcbiAgICB9XG4gIHwge1xuICAgICAgYXJnczogQXJncztcbiAgICAgIHN0YXR1czogXCJleGVjdXRpbmdcIjtcbiAgICAgIHJlc3VsdDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfCB7XG4gICAgICBhcmdzOiBBcmdzO1xuICAgICAgc3RhdHVzOiBcImNvbXBsZXRlXCI7XG4gICAgICByZXN1bHQ6IHN0cmluZztcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBIdW1hbkluVGhlTG9vcFRvb2xDYWxsPFxuICBBcmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4gPVxuICB8IHtcbiAgICAgIGFyZ3M6IFBhcnRpYWw8QXJncz47XG4gICAgICBzdGF0dXM6IFwiaW4tcHJvZ3Jlc3NcIjtcbiAgICAgIHJlc3VsdDogdW5kZWZpbmVkO1xuICAgICAgcmVzcG9uZDogKHJlc3VsdDogdW5rbm93bikgPT4gdm9pZDtcbiAgICB9XG4gIHwge1xuICAgICAgYXJnczogQXJncztcbiAgICAgIHN0YXR1czogXCJleGVjdXRpbmdcIjtcbiAgICAgIHJlc3VsdDogdW5kZWZpbmVkO1xuICAgICAgcmVzcG9uZDogKHJlc3VsdDogdW5rbm93bikgPT4gdm9pZDtcbiAgICB9XG4gIHwge1xuICAgICAgYXJnczogQXJncztcbiAgICAgIHN0YXR1czogXCJjb21wbGV0ZVwiO1xuICAgICAgcmVzdWx0OiBzdHJpbmc7XG4gICAgICByZXNwb25kOiAocmVzdWx0OiB1bmtub3duKSA9PiB2b2lkO1xuICAgIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbFJlbmRlcmVyPFxuICBBcmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4ge1xuICB0b29sQ2FsbDogU2lnbmFsPEFuZ3VsYXJUb29sQ2FsbDxBcmdzPj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSHVtYW5JblRoZUxvb3BUb29sUmVuZGVyZXI8XG4gIEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPiB7XG4gIHRvb2xDYWxsOiBTaWduYWw8SHVtYW5JblRoZUxvb3BUb29sQ2FsbDxBcmdzPj47XG59XG5cbmV4cG9ydCB0eXBlIENsaWVudFRvb2w8XG4gIEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPiA9IE9taXQ8RnJvbnRlbmRUb29sPEFyZ3M+LCBcImhhbmRsZXJcIj4gJiB7XG4gIHJlbmRlcmVyPzogVHlwZTxUb29sUmVuZGVyZXI8QXJncz4+O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJUb29sQ2FsbENvbmZpZzxcbiAgQXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4+IHtcbiAgbmFtZTogc3RyaW5nO1xuICBhcmdzOiB6LlpvZFR5cGU8QXJncz47XG4gIGNvbXBvbmVudDogVHlwZTxUb29sUmVuZGVyZXI8QXJncz4+O1xuICBhZ2VudElkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZyb250ZW5kVG9vbENvbmZpZzxcbiAgQXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4+IHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiB6LlpvZFR5cGU8QXJncz47XG4gIGNvbXBvbmVudD86IFR5cGU8VG9vbFJlbmRlcmVyPEFyZ3M+PjtcbiAgaGFuZGxlcjogKFxuICAgIGFyZ3M6IEFyZ3MsXG4gICAgY29udGV4dDogRnJvbnRlbmRUb29sSGFuZGxlckNvbnRleHQsXG4gICkgPT4gUHJvbWlzZTx1bmtub3duPjtcbiAgYWdlbnRJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIdW1hbkluVGhlTG9vcENvbmZpZzxcbiAgQXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4+IHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiB6LlpvZFR5cGU8QXJncz47XG4gIGNvbXBvbmVudDogVHlwZTxIdW1hbkluVGhlTG9vcFRvb2xSZW5kZXJlcjxBcmdzPj47XG4gIGFnZW50SWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclJlbmRlclRvb2xDYWxsPFxuICBBcmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4ocmVuZGVyVG9vbENhbGw6IFJlbmRlclRvb2xDYWxsQ29uZmlnPEFyZ3M+KTogdm9pZCB7XG4gIGNvbnN0IGNvcGlsb3RLaXQgPSBpbmplY3QoQ29waWxvdEtpdCk7XG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgY29waWxvdEtpdC5hZGRSZW5kZXJUb29sQ2FsbChyZW5kZXJUb29sQ2FsbCk7XG5cbiAgZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgIGNvcGlsb3RLaXQucmVtb3ZlVG9vbChyZW5kZXJUb29sQ2FsbC5uYW1lLCByZW5kZXJUb29sQ2FsbC5hZ2VudElkKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckZyb250ZW5kVG9vbDxcbiAgQXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4+KGZyb250ZW5kVG9vbDogRnJvbnRlbmRUb29sQ29uZmlnPEFyZ3M+KTogdm9pZCB7XG4gIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgY29uc3QgY29waWxvdEtpdCA9IGluamVjdChDb3BpbG90S2l0KTtcblxuICBjb3BpbG90S2l0LmFkZEZyb250ZW5kVG9vbCh7XG4gICAgLi4uKGZyb250ZW5kVG9vbCBhcyBGcm9udGVuZFRvb2xDb25maWcpLFxuICAgIGluamVjdG9yLFxuICB9KTtcblxuICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgY29waWxvdEtpdC5yZW1vdmVUb29sKGZyb250ZW5kVG9vbC5uYW1lLCBmcm9udGVuZFRvb2wuYWdlbnRJZCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJIdW1hbkluVGhlTG9vcDxcbiAgQXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4+KGh1bWFuSW5UaGVMb29wOiBIdW1hbkluVGhlTG9vcENvbmZpZzxBcmdzPik6IHZvaWQge1xuICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBjb25zdCBjb3BpbG90S2l0ID0gaW5qZWN0KENvcGlsb3RLaXQpO1xuXG4gIGNvcGlsb3RLaXQuYWRkSHVtYW5JblRoZUxvb3AoaHVtYW5JblRoZUxvb3ApO1xuXG4gIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICBjb3BpbG90S2l0LnJlbW92ZVRvb2woaHVtYW5JblRoZUxvb3AubmFtZSwgaHVtYW5JblRoZUxvb3AuYWdlbnRJZCk7XG4gIH0pO1xufVxuIl19
@@ -19,6 +19,7 @@ import * as i2 from 'lucide-angular';
19
19
  import { LucideAngularModule, Copy, Check, ThumbsUp, ThumbsDown, Volume2, RefreshCw, Edit, ChevronLeft, ChevronRight, ChevronDown, ArrowUp, Mic, X, Plus, Settings2 } from 'lucide-angular';
20
20
  import * as i1$2 from '@angular/cdk/menu';
21
21
  import { CdkMenuModule } from '@angular/cdk/menu';
22
+ import { AGUIConnectNotImplementedError } from '@ag-ui/client';
22
23
 
23
24
  const COPILOT_KIT_CONFIG = new InjectionToken("COPILOT_KIT_CONFIG");
24
25
  function injectCopilotKitConfig() {
@@ -99,7 +100,10 @@ class CopilotKit {
99
100
  addFrontendTool(clientToolWithInjector) {
100
101
  const tool = this.#bindClientTool(clientToolWithInjector);
101
102
  this.core.addTool(tool);
102
- this.#clientToolCallRenderConfigs.update((current) => [...current, clientToolWithInjector]);
103
+ this.#clientToolCallRenderConfigs.update((current) => [
104
+ ...current,
105
+ clientToolWithInjector,
106
+ ]);
103
107
  }
104
108
  addRenderToolCall(renderConfig) {
105
109
  this.#toolCallRenderConfigs.update((current) => [...current, renderConfig]);
@@ -113,7 +117,10 @@ class CopilotKit {
113
117
  };
114
118
  }
115
119
  addHumanInTheLoop(humanInTheLoopTool) {
116
- this.#humanInTheLoopToolRenderConfigs.update((current) => [...current, humanInTheLoopTool]);
120
+ this.#humanInTheLoopToolRenderConfigs.update((current) => [
121
+ ...current,
122
+ humanInTheLoopTool,
123
+ ]);
117
124
  const tool = this.#bindHumanInTheLoopTool(humanInTheLoopTool);
118
125
  this.core.addTool(tool);
119
126
  }
@@ -124,10 +131,14 @@ class CopilotKit {
124
131
  return true;
125
132
  }
126
133
  removeTool(toolName, agentId) {
127
- this.core.removeTool(toolName);
128
- this.#clientToolCallRenderConfigs.update((current) => current.filter((renderConfig) => renderConfig.name !== toolName && this.#isSameAgentId(renderConfig, agentId)));
129
- this.#humanInTheLoopToolRenderConfigs.update((current) => current.filter((renderConfig) => renderConfig.name !== toolName && this.#isSameAgentId(renderConfig, agentId)));
130
- this.#toolCallRenderConfigs.update((current) => current.filter((renderConfig) => renderConfig.name !== toolName && this.#isSameAgentId(renderConfig, agentId)));
134
+ this.core.removeTool(toolName, agentId);
135
+ const keep = (config) => config.name !== toolName ||
136
+ (agentId === undefined
137
+ ? !!config.agentId
138
+ : !this.#isSameAgentId(config, agentId));
139
+ this.#clientToolCallRenderConfigs.update((current) => current.filter(keep));
140
+ this.#humanInTheLoopToolRenderConfigs.update((current) => current.filter(keep));
141
+ this.#toolCallRenderConfigs.update((current) => current.filter(keep));
131
142
  }
132
143
  getAgent(agentId) {
133
144
  return this.core.getAgent(agentId);
@@ -171,7 +182,7 @@ function registerFrontendTool(frontendTool) {
171
182
  injector,
172
183
  });
173
184
  destroyRef.onDestroy(() => {
174
- copilotKit.removeTool(frontendTool.name);
185
+ copilotKit.removeTool(frontendTool.name, frontendTool.agentId);
175
186
  });
176
187
  }
177
188
  function registerHumanInTheLoop(humanInTheLoop) {
@@ -179,7 +190,7 @@ function registerHumanInTheLoop(humanInTheLoop) {
179
190
  const copilotKit = inject(CopilotKit);
180
191
  copilotKit.addHumanInTheLoop(humanInTheLoop);
181
192
  destroyRef.onDestroy(() => {
182
- copilotKit.removeTool(humanInTheLoop.name);
193
+ copilotKit.removeTool(humanInTheLoop.name, humanInTheLoop.agentId);
183
194
  });
184
195
  }
185
196
 
@@ -190,17 +201,24 @@ class RenderToolCalls {
190
201
  messages = input.required();
191
202
  isLoading = input(false);
192
203
  pickRenderer(name) {
193
- const messageAgentId = this.message().agentId;
204
+ const messageAgentId = this.message()
205
+ .agentId;
194
206
  const renderers = this.#copilotKit.toolCallRenderConfigs();
195
207
  const clientTools = this.#copilotKit.clientToolCallRenderConfigs();
196
208
  const humanInTheLoopTools = this.#copilotKit.humanInTheLoopToolRenderConfigs();
197
- const renderer = renderers.find((candidate) => candidate.name === name && (candidate.agentId === undefined || candidate.agentId === messageAgentId));
209
+ const renderer = renderers.find((candidate) => candidate.name === name &&
210
+ (candidate.agentId === undefined ||
211
+ candidate.agentId === messageAgentId));
198
212
  if (renderer)
199
213
  return { type: "renderer", config: renderer };
200
- const clientTool = clientTools.find((candidate) => candidate.name === name && (candidate.agentId === undefined || candidate.agentId === messageAgentId));
214
+ const clientTool = clientTools.find((candidate) => candidate.name === name &&
215
+ (candidate.agentId === undefined ||
216
+ candidate.agentId === messageAgentId));
201
217
  if (clientTool)
202
218
  return { type: "clientTool", config: clientTool };
203
- const humanInTheLoopTool = humanInTheLoopTools.find((candidate) => candidate.name === name && (candidate.agentId === undefined || candidate.agentId === messageAgentId));
219
+ const humanInTheLoopTool = humanInTheLoopTools.find((candidate) => candidate.name === name &&
220
+ (candidate.agentId === undefined ||
221
+ candidate.agentId === messageAgentId));
204
222
  if (humanInTheLoopTool)
205
223
  return { type: "humanInTheLoopTool", config: humanInTheLoopTool };
206
224
  const starRenderer = renderers.find((candidate) => candidate.name === "*");
@@ -272,12 +290,23 @@ class RenderToolCalls {
272
290
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RenderToolCalls, isStandalone: true, selector: "copilot-render-tool-calls", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: true, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
273
291
  @for (toolCall of message().toolCalls ?? []; track toolCall.id) {
274
292
  @let renderConfig = pickRenderer(toolCall.function.name);
275
- @if (renderConfig && renderConfig.type !== "humanInTheLoopTool" && renderConfig.config.component) {
293
+ @if (
294
+ renderConfig &&
295
+ renderConfig.type !== "humanInTheLoopTool" &&
296
+ renderConfig.config.component
297
+ ) {
276
298
  <ng-container
277
- *ngComponentOutlet="renderConfig.config.component; inputs: { toolCall: buildToolCall(toolCall) }"
299
+ *ngComponentOutlet="
300
+ renderConfig.config.component;
301
+ inputs: { toolCall: buildToolCall(toolCall) }
302
+ "
278
303
  />
279
304
  }
280
- @if (renderConfig && renderConfig.type === "humanInTheLoopTool" && renderConfig.config.component) {
305
+ @if (
306
+ renderConfig &&
307
+ renderConfig.type === "humanInTheLoopTool" &&
308
+ renderConfig.config.component
309
+ ) {
281
310
  <ng-container
282
311
  *ngComponentOutlet="
283
312
  renderConfig.config.component;
@@ -297,12 +326,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
297
326
  template: `
298
327
  @for (toolCall of message().toolCalls ?? []; track toolCall.id) {
299
328
  @let renderConfig = pickRenderer(toolCall.function.name);
300
- @if (renderConfig && renderConfig.type !== "humanInTheLoopTool" && renderConfig.config.component) {
329
+ @if (
330
+ renderConfig &&
331
+ renderConfig.type !== "humanInTheLoopTool" &&
332
+ renderConfig.config.component
333
+ ) {
301
334
  <ng-container
302
- *ngComponentOutlet="renderConfig.config.component; inputs: { toolCall: buildToolCall(toolCall) }"
335
+ *ngComponentOutlet="
336
+ renderConfig.config.component;
337
+ inputs: { toolCall: buildToolCall(toolCall) }
338
+ "
303
339
  />
304
340
  }
305
- @if (renderConfig && renderConfig.type === "humanInTheLoopTool" && renderConfig.config.component) {
341
+ @if (
342
+ renderConfig &&
343
+ renderConfig.type === "humanInTheLoopTool" &&
344
+ renderConfig.config.component
345
+ ) {
306
346
  <ng-container
307
347
  *ngComponentOutlet="
308
348
  renderConfig.config.component;
@@ -459,8 +499,7 @@ class ScrollPosition {
459
499
  monitorScrollPosition(element, threshold = 10) {
460
500
  const el = element instanceof ElementRef ? element.nativeElement : element;
461
501
  // Create scroll observable
462
- const scroll$ = merge(fromEvent(el, "scroll"), this.viewportRuler.change(150) // Monitor viewport changes
463
- ).pipe(startWith(null), // Emit initial state
502
+ const scroll$ = merge(fromEvent(el, "scroll"), this.viewportRuler.change(150)).pipe(startWith(null), // Emit initial state
464
503
  throttleTime(16, animationFrameScheduler, { trailing: true }), // ~60fps
465
504
  map(() => this.getScrollState(el, threshold)), distinctUntilChanged((a, b) => a.isAtBottom === b.isAtBottom &&
466
505
  a.scrollTop === b.scrollTop &&
@@ -2951,13 +2990,23 @@ class CopilotChatUserMessageBranchNavigation {
2951
2990
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatUserMessageBranchNavigation, isStandalone: true, selector: "copilot-chat-user-message-branch-navigation", inputs: { currentBranch: { classPropertyName: "currentBranch", publicName: "currentBranch", isSignal: true, isRequired: false, transformFunction: null }, numberOfBranches: { classPropertyName: "numberOfBranches", publicName: "numberOfBranches", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { switchToBranch: "switchToBranch" }, ngImport: i0, template: `
2952
2991
  @if (showNavigation()) {
2953
2992
  <div [class]="computedClass()">
2954
- <button type="button" [class]="buttonClass" [disabled]="!canGoPrev()" (click)="handlePrevious()">
2993
+ <button
2994
+ type="button"
2995
+ [class]="buttonClass"
2996
+ [disabled]="!canGoPrev()"
2997
+ (click)="handlePrevious()"
2998
+ >
2955
2999
  <lucide-angular [img]="ChevronLeftIcon" [size]="20"></lucide-angular>
2956
3000
  </button>
2957
3001
  <span class="text-sm text-muted-foreground px-0 font-medium">
2958
3002
  {{ currentBranch() + 1 }}/{{ numberOfBranches() }}
2959
3003
  </span>
2960
- <button type="button" [class]="buttonClass" [disabled]="!canGoNext()" (click)="handleNext()">
3004
+ <button
3005
+ type="button"
3006
+ [class]="buttonClass"
3007
+ [disabled]="!canGoNext()"
3008
+ (click)="handleNext()"
3009
+ >
2961
3010
  <lucide-angular [img]="ChevronRightIcon" [size]="20"></lucide-angular>
2962
3011
  </button>
2963
3012
  </div>
@@ -2975,13 +3024,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2975
3024
  template: `
2976
3025
  @if (showNavigation()) {
2977
3026
  <div [class]="computedClass()">
2978
- <button type="button" [class]="buttonClass" [disabled]="!canGoPrev()" (click)="handlePrevious()">
3027
+ <button
3028
+ type="button"
3029
+ [class]="buttonClass"
3030
+ [disabled]="!canGoPrev()"
3031
+ (click)="handlePrevious()"
3032
+ >
2979
3033
  <lucide-angular [img]="ChevronLeftIcon" [size]="20"></lucide-angular>
2980
3034
  </button>
2981
3035
  <span class="text-sm text-muted-foreground px-0 font-medium">
2982
3036
  {{ currentBranch() + 1 }}/{{ numberOfBranches() }}
2983
3037
  </span>
2984
- <button type="button" [class]="buttonClass" [disabled]="!canGoNext()" (click)="handleNext()">
3038
+ <button
3039
+ type="button"
3040
+ [class]="buttonClass"
3041
+ [disabled]="!canGoNext()"
3042
+ (click)="handleNext()"
3043
+ >
2985
3044
  <lucide-angular [img]="ChevronRightIcon" [size]="20"></lucide-angular>
2986
3045
  </button>
2987
3046
  </div>
@@ -3091,7 +3150,10 @@ class CopilotChatUserMessage {
3091
3150
  >
3092
3151
  </copilot-slot>
3093
3152
  } @else {
3094
- <copilot-chat-user-message-renderer [content]="flattenedContent()" [inputClass]="messageRendererClass()">
3153
+ <copilot-chat-user-message-renderer
3154
+ [content]="flattenedContent()"
3155
+ [inputClass]="messageRendererClass()"
3156
+ >
3095
3157
  </copilot-chat-user-message-renderer>
3096
3158
  }
3097
3159
 
@@ -3108,7 +3170,9 @@ class CopilotChatUserMessage {
3108
3170
  <div class="flex items-center gap-1 justify-end">
3109
3171
  <!-- Additional toolbar items -->
3110
3172
  @if (additionalToolbarItems()) {
3111
- <ng-container [ngTemplateOutlet]="additionalToolbarItems() || null"></ng-container>
3173
+ <ng-container
3174
+ [ngTemplateOutlet]="additionalToolbarItems() || null"
3175
+ ></ng-container>
3112
3176
  }
3113
3177
 
3114
3178
  <!-- Copy button -->
@@ -3140,7 +3204,10 @@ class CopilotChatUserMessage {
3140
3204
  >
3141
3205
  </copilot-slot>
3142
3206
  } @else {
3143
- <copilot-chat-user-message-edit-button [inputClass]="editButtonClass()" (clicked)="handleEdit()">
3207
+ <copilot-chat-user-message-edit-button
3208
+ [inputClass]="editButtonClass()"
3209
+ (clicked)="handleEdit()"
3210
+ >
3144
3211
  </copilot-chat-user-message-edit-button>
3145
3212
  }
3146
3213
  }
@@ -3149,7 +3216,9 @@ class CopilotChatUserMessage {
3149
3216
  @if (showBranchNavigation()) {
3150
3217
  @if (branchNavigationTemplate || branchNavigationComponent()) {
3151
3218
  <copilot-slot
3152
- [slot]="branchNavigationTemplate || branchNavigationComponent()"
3219
+ [slot]="
3220
+ branchNavigationTemplate || branchNavigationComponent()
3221
+ "
3153
3222
  [context]="branchNavigationContext()"
3154
3223
  [defaultComponent]="CopilotChatUserMessageBranchNavigation"
3155
3224
  >
@@ -3192,7 +3261,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
3192
3261
  >
3193
3262
  </copilot-slot>
3194
3263
  } @else {
3195
- <copilot-chat-user-message-renderer [content]="flattenedContent()" [inputClass]="messageRendererClass()">
3264
+ <copilot-chat-user-message-renderer
3265
+ [content]="flattenedContent()"
3266
+ [inputClass]="messageRendererClass()"
3267
+ >
3196
3268
  </copilot-chat-user-message-renderer>
3197
3269
  }
3198
3270
 
@@ -3209,7 +3281,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
3209
3281
  <div class="flex items-center gap-1 justify-end">
3210
3282
  <!-- Additional toolbar items -->
3211
3283
  @if (additionalToolbarItems()) {
3212
- <ng-container [ngTemplateOutlet]="additionalToolbarItems() || null"></ng-container>
3284
+ <ng-container
3285
+ [ngTemplateOutlet]="additionalToolbarItems() || null"
3286
+ ></ng-container>
3213
3287
  }
3214
3288
 
3215
3289
  <!-- Copy button -->
@@ -3241,7 +3315,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
3241
3315
  >
3242
3316
  </copilot-slot>
3243
3317
  } @else {
3244
- <copilot-chat-user-message-edit-button [inputClass]="editButtonClass()" (clicked)="handleEdit()">
3318
+ <copilot-chat-user-message-edit-button
3319
+ [inputClass]="editButtonClass()"
3320
+ (clicked)="handleEdit()"
3321
+ >
3245
3322
  </copilot-chat-user-message-edit-button>
3246
3323
  }
3247
3324
  }
@@ -3250,7 +3327,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
3250
3327
  @if (showBranchNavigation()) {
3251
3328
  @if (branchNavigationTemplate || branchNavigationComponent()) {
3252
3329
  <copilot-slot
3253
- [slot]="branchNavigationTemplate || branchNavigationComponent()"
3330
+ [slot]="
3331
+ branchNavigationTemplate || branchNavigationComponent()
3332
+ "
3254
3333
  [context]="branchNavigationContext()"
3255
3334
  [defaultComponent]="CopilotChatUserMessageBranchNavigation"
3256
3335
  >
@@ -6124,6 +6203,7 @@ class CopilotChat {
6124
6203
  inputComponent = input();
6125
6204
  resolvedAgentId = computed(() => this.agentId() ?? DEFAULT_AGENT_ID);
6126
6205
  agentStore = injectAgentStore(this.resolvedAgentId);
6206
+ copilotKit = inject(CopilotKit);
6127
6207
  // readonly chatConfig = injectChatConfig();
6128
6208
  cdr = inject(ChangeDetectorRef);
6129
6209
  injector = inject(Injector);
@@ -6158,6 +6238,13 @@ class CopilotChat {
6158
6238
  a.threadId = this.threadId() || this.generatedThreadId;
6159
6239
  }
6160
6240
  });
6241
+ // Hide cursor when agent starts (runAgent via core does not pass subscriber callbacks)
6242
+ effect(() => {
6243
+ if (this.isRunning()) {
6244
+ this.showCursor.set(false);
6245
+ this.cdr.markForCheck();
6246
+ }
6247
+ }, { allowSignalWrites: true });
6161
6248
  }
6162
6249
  async connectToAgent(agent) {
6163
6250
  if (!agent)
@@ -6165,21 +6252,17 @@ class CopilotChat {
6165
6252
  this.showCursor.set(true);
6166
6253
  this.cdr.markForCheck();
6167
6254
  try {
6168
- await agent.runAgent({ forwardedProps: { __copilotkitConnect: true } }, {
6169
- onTextMessageStartEvent: () => {
6170
- this.showCursor.set(false);
6171
- this.cdr.detectChanges();
6172
- },
6173
- onToolCallStartEvent: () => {
6174
- this.showCursor.set(false);
6175
- this.cdr.detectChanges();
6176
- },
6177
- });
6255
+ await this.copilotKit.core.connectAgent({ agent });
6178
6256
  this.showCursor.set(false);
6179
6257
  this.cdr.markForCheck();
6180
6258
  }
6181
6259
  catch (error) {
6182
- console.error("Failed to connect to agent:", error);
6260
+ if (error instanceof AGUIConnectNotImplementedError) {
6261
+ // Connect not implemented (e.g. agent only supports run), ignore
6262
+ }
6263
+ else {
6264
+ console.error("Failed to connect to agent:", error);
6265
+ }
6183
6266
  this.showCursor.set(false);
6184
6267
  this.cdr.markForCheck();
6185
6268
  }
@@ -6200,18 +6283,9 @@ class CopilotChat {
6200
6283
  // Show cursor while processing
6201
6284
  this.showCursor.set(true);
6202
6285
  this.cdr.markForCheck();
6203
- // Run the agent with named subscriber callbacks
6286
+ // Run the agent via core so tools (and context, forwardedProps) are included
6204
6287
  try {
6205
- await agent.runAgent({}, {
6206
- onTextMessageStartEvent: () => {
6207
- this.showCursor.set(false);
6208
- this.cdr.detectChanges();
6209
- },
6210
- onToolCallStartEvent: () => {
6211
- this.showCursor.set(false);
6212
- this.cdr.detectChanges();
6213
- },
6214
- });
6288
+ await this.copilotKit.core.runAgent({ agent });
6215
6289
  }
6216
6290
  catch (error) {
6217
6291
  console.error("Agent run error:", error);