@hivegpt/hiveai-angular 0.0.401 → 0.0.403

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.
@@ -15,6 +15,7 @@ export class VoiceAgentModalComponent {
15
15
  this.domainAuthority = 'prod-lite';
16
16
  this.agentName = 'AI Assistant';
17
17
  this.agentRole = 'AI Agent Specialist';
18
+ this.agentAvatar = 'https://www.jotform.com/uploads/mehmetkarakasli/form_files/1564593667676a8e85f23758.86945537_icon.png';
18
19
  this.injectedConfig = null;
19
20
  this.onCloseCallback = null;
20
21
  this.callState = 'idle';
@@ -28,7 +29,7 @@ export class VoiceAgentModalComponent {
28
29
  this.isConnecting = false;
29
30
  }
30
31
  ngOnInit() {
31
- var _a, _b, _c, _d, _e, _f;
32
+ var _a, _b, _c, _d, _e, _f, _g;
32
33
  // When opened via Overlay, config is provided by injection
33
34
  this.injectedConfig = this.injector.get(VOICE_MODAL_CONFIG, null);
34
35
  this.onCloseCallback = this.injector.get(VOICE_MODAL_CLOSE_CALLBACK, null);
@@ -43,7 +44,7 @@ export class VoiceAgentModalComponent {
43
44
  this.domainAuthority = (_d = this.injectedConfig.domainAuthority) !== null && _d !== void 0 ? _d : 'prod-lite';
44
45
  this.agentName = (_e = this.injectedConfig.agentName) !== null && _e !== void 0 ? _e : this.agentName;
45
46
  this.agentRole = (_f = this.injectedConfig.agentRole) !== null && _f !== void 0 ? _f : this.agentRole;
46
- this.agentAvatar = this.injectedConfig.agentAvatar;
47
+ this.agentAvatar = (_g = this.injectedConfig.agentAvatar) !== null && _g !== void 0 ? _g : this.agentAvatar;
47
48
  }
48
49
  // Subscribe to observables
49
50
  this.subscriptions.push(this.voiceAgentService.callState$.subscribe(state => {
@@ -106,8 +107,8 @@ export class VoiceAgentModalComponent {
106
107
  VoiceAgentModalComponent.decorators = [
107
108
  { type: Component, args: [{
108
109
  selector: 'hivegpt-voice-agent-modal',
109
- template: "<div class=\"voice-agent-modal-overlay\" (click)=\"endCall()\">\n <div class=\"voice-agent-modal\" (click)=\"$event.stopPropagation()\">\n <!-- Header -->\n <div class=\"modal-header\">\n <div class=\"header-left\">\n <div class=\"voice-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 1C8.13 1 5 4.13 5 8V14C5 17.87 8.13 21 12 21C15.87 21 19 17.87 19 14V8C19 4.13 15.87 1 12 1Z\" fill=\"currentColor\"/>\n <path d=\"M12 23C10.34 23 9 21.66 9 20H15C15 21.66 13.66 23 12 23Z\" fill=\"currentColor\"/>\n </svg>\n </div>\n <span class=\"voice-label\">Voice</span>\n </div>\n <button class=\"close-button\" (click)=\"endCall()\" type=\"button\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M18 6L6 18M6 6L18 18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n </button>\n </div>\n\n <!-- Agent Avatar -->\n <div class=\"agent-avatar-container\">\n <div class=\"agent-avatar\" [class.speaking]=\"isSpeaking\">\n <img *ngIf=\"agentAvatar\" [src]=\"agentAvatar\" [alt]=\"agentName\" />\n <div *ngIf=\"!agentAvatar\" class=\"avatar-placeholder\">\n {{ agentName.charAt(0) }}\n </div>\n </div>\n </div>\n\n <!-- Agent Info -->\n <div class=\"agent-info\">\n <div class=\"agent-name-row\">\n <h2 class=\"agent-name\">{{ agentName }}</h2>\n <span class=\"ai-badge\">AI</span>\n </div>\n <!-- <p class=\"agent-role\">{{ agentRole }}</p> -->\n </div>\n\n <!-- Start Call / Retry (when idle or ended) -->\n <div *ngIf=\"callState === 'idle' || callState === 'ended'\" class=\"start-call-section\">\n <p *ngIf=\"statusText === 'Connection failed'\" class=\"error-message\">{{ statusText }}</p>\n <button\n class=\"start-call-button\"\n type=\"button\"\n [disabled]=\"isConnecting\"\n (click)=\"startCall()\"\n >\n <span *ngIf=\"isConnecting\">Connecting...</span>\n <span *ngIf=\"!isConnecting && statusText === 'Connection failed'\">Retry</span>\n <span *ngIf=\"!isConnecting && statusText !== 'Connection failed'\">Start Call</span>\n </button>\n </div>\n\n <!-- Status (when connecting or connected) -->\n <div class=\"status-section\" *ngIf=\"callState !== 'idle' && callState !== 'ended'\">\n <div *ngIf=\"callState === 'connecting'\" class=\"connecting-spinner\">\n <svg class=\"spinner\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-dasharray=\"31.416\" stroke-dashoffset=\"31.416\">\n <animate attributeName=\"stroke-dasharray\" dur=\"2s\" values=\"0 31.416;15.708 15.708;0 31.416;0 31.416\" repeatCount=\"indefinite\"/>\n <animate attributeName=\"stroke-dashoffset\" dur=\"2s\" values=\"0;-15.708;-31.416;-31.416\" repeatCount=\"indefinite\"/>\n </circle>\n </svg>\n <span class=\"status-text\">{{ statusText }}</span>\n </div>\n <div *ngIf=\"callState !== 'connecting'\" class=\"status-connected\">\n <span class=\"status-text\">{{ statusText || 'Connected' }}</span>\n <span class=\"duration\">{{ duration }}</span>\n </div>\n </div>\n\n <!-- Waveform Visualization -->\n <div *ngIf=\"callState === 'connected' || callState === 'listening' || callState === 'talking'\" class=\"waveform-container\">\n <div class=\"waveform-bars\">\n <div\n *ngFor=\"let level of audioLevels; let i = index\"\n class=\"waveform-bar\"\n [style.height.%]=\"level || 10\"\n [style.animation-delay.ms]=\"i * 20\"\n ></div>\n </div>\n </div>\n\n <!-- Call Controls (only when connected) -->\n <div class=\"call-controls\" *ngIf=\"callState === 'connected' || callState === 'listening' || callState === 'talking'\">\n <button\n class=\"control-button mute-button\"\n [class.muted]=\"isMicMuted\"\n (click)=\"toggleMic()\"\n type=\"button\"\n [title]=\"isMicMuted ? 'Unmute' : 'Mute'\"\n >\n <svg *ngIf=\"!isMicMuted\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 1C8.13 1 5 4.13 5 8V14C5 17.87 8.13 21 12 21C15.87 21 19 17.87 19 14V8C19 4.13 15.87 1 12 1Z\" fill=\"currentColor\"/>\n <path d=\"M12 23C10.34 23 9 21.66 9 20H15C15 21.66 13.66 23 12 23Z\" fill=\"currentColor\"/>\n </svg>\n <svg *ngIf=\"isMicMuted\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 1C8.13 1 5 4.13 5 8V14C5 17.87 8.13 21 12 21C15.87 21 19 17.87 19 14V8C19 4.13 15.87 1 12 1Z\" fill=\"currentColor\"/>\n <path d=\"M12 23C10.34 23 9 21.66 9 20H15C15 21.66 13.66 23 12 23Z\" fill=\"currentColor\"/>\n <path d=\"M3 3L21 21M9 9L15 15\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n <span class=\"control-label\">Mute</span>\n </button>\n\n <button\n class=\"control-button end-call-button\"\n (click)=\"endCall()\"\n type=\"button\"\n title=\"End Call\"\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M18 6L6 18M6 6L18 18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n <span class=\"control-label\">End Call</span>\n </button>\n </div>\n </div>\n</div>\n",
110
- styles: [":host{display:block}.voice-agent-modal-overlay{align-items:flex-end;backdrop-filter:blur(4px);background:rgba(0,0,0,.5);bottom:0;display:flex;justify-content:flex-end;left:0;padding:24px;position:fixed;right:0;top:0;z-index:99999999999!important}.voice-agent-modal{animation:modalEnter .3s ease-out;background:#fff;border-radius:24px;box-shadow:0 20px 60px rgba(0,0,0,.3);max-height:calc(100vh - 48px);max-width:480px;overflow-y:auto;padding:32px;width:90%}@keyframes modalEnter{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-header{justify-content:space-between;margin-bottom:24px}.header-left,.modal-header{align-items:center;display:flex}.header-left{gap:8px}.voice-icon{align-items:center;color:#17235b;display:flex;height:32px;justify-content:center;width:32px}.voice-label{color:#333;font-size:16px;font-weight:600}.close-button{align-items:center;background:none;border:none;color:#666;cursor:pointer;display:flex;justify-content:center;padding:8px;transition:color .2s}.close-button:hover{color:#000}.agent-avatar-container{display:flex;justify-content:center;margin-bottom:24px}.agent-avatar{border:3px solid #e0f2fe;border-radius:50%;height:120px;overflow:hidden;position:relative;transition:all .3s ease;width:120px}.agent-avatar.speaking{animation:speakingGlow 1.5s ease-in-out infinite;border-color:#0ea5e9;box-shadow:0 0 20px rgba(14,165,233,.4)}.agent-avatar img{-o-object-fit:cover;height:100%;object-fit:cover;width:100%}.avatar-placeholder{align-items:center;background:linear-gradient(135deg,#0ea5e9,#06b6d4);color:#fff;display:flex;font-size:48px;font-weight:600;height:100%;justify-content:center;width:100%}@keyframes speakingGlow{0%,to{box-shadow:0 0 20px rgba(14,165,233,.4)}50%{box-shadow:0 0 30px rgba(14,165,233,.6)}}.agent-info{margin-bottom:24px;text-align:center}.agent-name-row{align-items:center;display:flex;gap:12px;justify-content:center;margin-bottom:8px}.agent-name{color:#1f2937;font-size:28px;font-weight:700;margin:0}.ai-badge{background:#0ea5e9;border-radius:12px;color:#fff;font-size:12px;font-weight:600;padding:4px 12px}.agent-role{color:#6b7280;font-size:14px;margin:0}.start-call-section{align-items:center;display:flex;flex-direction:column;gap:16px;margin-bottom:24px}.error-message{color:#dc2626;font-size:14px;margin:0}.start-call-button{background:#0ea5e9;border:none;border-radius:12px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;padding:14px 32px;transition:background .2s}.start-call-button:hover:not(:disabled){background:#0284c7}.start-call-button:disabled{cursor:not-allowed;opacity:.7}.status-section{flex-direction:column;margin-bottom:24px}.connecting-spinner,.status-section{align-items:center;display:flex;gap:12px}.spinner{animation:spin 1s linear infinite;color:#0ea5e9}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.status-connected{align-items:center;display:flex;flex-direction:column;gap:8px}.status-text{color:#4b5563;font-size:16px;font-weight:500}.duration{color:#9ca3af;font-family:monospace;font-size:14px}.waveform-container{margin-bottom:32px;width:100%}.waveform-bars{align-items:center;display:flex;gap:4px;height:60px;justify-content:center}.waveform-bar{animation:waveformPulse 1s ease-in-out infinite;background:linear-gradient(0deg,#0ea5e9,#06b6d4);border-radius:2px;min-height:10%;transition:height .1s ease;width:4px}@keyframes waveformPulse{0%,to{opacity:.6}50%{opacity:1}}.call-controls{gap:24px}.call-controls,.control-button{display:flex;justify-content:center}.control-button{align-items:center;border:none;border-radius:50%;cursor:pointer;flex-direction:column;gap:8px;height:80px;padding:16px;transition:all .2s;width:80px}.mute-button{background:#f3f4f6;color:#4b5563}.mute-button:hover{background:#e5e7eb}.mute-button.muted{background:#fee2e2;color:#dc2626}.end-call-button{background:#ef4444;color:#fff}.end-call-button:hover{background:#dc2626}.control-label{font-size:12px;font-weight:500;margin-top:4px}"]
110
+ template: "<div class=\"voice-agent-modal-overlay\" (click)=\"endCall()\">\n <div class=\"voice-container\" (click)=\"$event.stopPropagation()\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"header-icon\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 1C8.13 1 5 4.13 5 8V14C5 17.87 8.13 21 12 21C15.87 21 19 17.87 19 14V8C19 4.13 15.87 1 12 1Z\" fill=\"currentColor\"/>\n <path d=\"M12 23C10.34 23 9 21.66 9 20H15C15 21.66 13.66 23 12 23Z\" fill=\"currentColor\"/>\n </svg>\n </div>\n <span class=\"header-title\">Voice</span>\n <button class=\"close-button\" (click)=\"endCall()\" type=\"button\" aria-label=\"Close\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M18 6L6 18M6 6L18 18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n </button>\n </div>\n\n <!-- Avatar Section with Glow and Particles -->\n <div class=\"avatar-section\">\n <div class=\"avatar-glow\"></div>\n <div class=\"particles-container\">\n <span *ngFor=\"let i of [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]\" class=\"particle\"></span>\n </div>\n <div class=\"avatar-wrapper\" [class.speaking]=\"isSpeaking\">\n <img *ngIf=\"agentAvatar\" [src]=\"agentAvatar\" alt=\"Nia\" class=\"avatar-image\" />\n <div *ngIf=\"!agentAvatar\" class=\"avatar-placeholder\">N</div>\n </div>\n </div>\n\n <!-- Agent Info -->\n <div class=\"agent-info\">\n <div class=\"agent-name\">\n Nia\n <span class=\"ai-badge\">AI</span>\n </div>\n <p class=\"agent-role\">Collaboration Manager AI Agent Specialist</p>\n </div>\n\n <!-- Start Call / Retry (when idle or ended) -->\n <div *ngIf=\"callState === 'idle' || callState === 'ended'\" class=\"start-call-section\">\n <p *ngIf=\"statusText === 'Connection failed'\" class=\"error-message\">{{ statusText }}</p>\n <button\n class=\"start-call-button\"\n type=\"button\"\n [disabled]=\"isConnecting\"\n (click)=\"startCall()\"\n >\n <span *ngIf=\"isConnecting\">Connecting...</span>\n <span *ngIf=\"!isConnecting && statusText === 'Connection failed'\">Retry</span>\n <span *ngIf=\"!isConnecting && statusText !== 'Connection failed'\">Start Call</span>\n </button>\n </div>\n\n <!-- Status (when connecting or connected) -->\n <div class=\"status-indicator\" *ngIf=\"callState !== 'idle' && callState !== 'ended'\">\n <div *ngIf=\"callState === 'connecting'\" class=\"status-connecting\">\n <svg class=\"spinner\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-dasharray=\"31.416\" stroke-dashoffset=\"31.416\">\n <animate attributeName=\"stroke-dasharray\" dur=\"2s\" values=\"0 31.416;15.708 15.708;0 31.416;0 31.416\" repeatCount=\"indefinite\"/>\n <animate attributeName=\"stroke-dashoffset\" dur=\"2s\" values=\"0;-15.708;-31.416;-31.416\" repeatCount=\"indefinite\"/>\n </circle>\n </svg>\n <span class=\"status-text\">{{ statusText }}</span>\n </div>\n <div *ngIf=\"callState !== 'connecting'\" class=\"status-connected\">\n <span class=\"status-text\">{{ statusText || 'Connected' }}</span>\n <span class=\"status-timer\">{{ duration }}</span>\n </div>\n </div>\n\n <!-- Waveform Visualization -->\n <div *ngIf=\"callState === 'connected' || callState === 'listening' || callState === 'talking'\" class=\"waveform-container\">\n <div class=\"waveform-bars\">\n <div\n *ngFor=\"let level of audioLevels; let i = index\"\n class=\"waveform-bar\"\n [style.height.px]=\"(level || 3) * 2\"\n ></div>\n </div>\n </div>\n\n <!-- Call Controls (when connected) -->\n <div class=\"controls\" *ngIf=\"callState === 'connected' || callState === 'listening' || callState === 'talking'\">\n <button\n class=\"control-btn mic-btn\"\n [class.muted]=\"isMicMuted\"\n (click)=\"toggleMic()\"\n type=\"button\"\n [title]=\"isMicMuted ? 'Unmute' : 'Mute'\"\n >\n <svg *ngIf=\"!isMicMuted\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12 1C8.13 1 5 4.13 5 8V14C5 17.87 8.13 21 12 21C15.87 21 19 17.87 19 14V8C19 4.13 15.87 1 12 1Z\"/>\n <path d=\"M12 23C10.34 23 9 21.66 9 20H15C15 21.66 13.66 23 12 23Z\"/>\n </svg>\n <svg *ngIf=\"isMicMuted\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12 1C8.13 1 5 4.13 5 8V14C5 17.87 8.13 21 12 21C15.87 21 19 17.87 19 14V8C19 4.13 15.87 1 12 1Z\"/>\n <path d=\"M12 23C10.34 23 9 21.66 9 20H15C15 21.66 13.66 23 12 23Z\"/>\n <path d=\"M3 3L21 21M9 9L15 15\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n <span class=\"control-label\">Mute</span>\n </button>\n\n <button\n class=\"control-btn end-call-btn\"\n (click)=\"endCall()\"\n type=\"button\"\n title=\"End Call\"\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <path d=\"M18 6L6 18M6 6L18 18\"/>\n </svg>\n <span class=\"control-label\">End Call</span>\n </button>\n </div>\n </div>\n</div>\n",
111
+ styles: [":host{display:block;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.voice-agent-modal-overlay{align-items:center;backdrop-filter:blur(4px);background:rgba(0,0,0,.5);bottom:0;display:flex;justify-content:center;left:0;padding:24px;position:fixed;right:0;top:0;z-index:99999}.voice-container{align-items:center;animation:modalEnter .3s ease-out;background:#fff;border-radius:30px;box-shadow:0 10px 40px rgba(0,0,0,.1);display:flex;flex-direction:column;max-width:440px;min-height:600px;padding:30px;position:relative;text-align:center;width:100%}@keyframes modalEnter{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.header{justify-content:space-between;margin-bottom:5px;width:100%}.header,.header-icon{align-items:center;display:flex}.header-icon{background:#0f172a;border-radius:50%;color:#fff;height:28px;justify-content:center;width:28px}.header-title{color:#0f172a;font-size:18px;font-weight:500}.close-button{align-items:center;background:none;border:none;color:#0f172a;cursor:pointer;display:flex;justify-content:center;padding:8px;transition:color .2s}.close-button:hover{color:#475569}.avatar-section{margin-bottom:24px;position:relative}.avatar-wrapper{align-items:center;background:#0ea5a4;background:linear-gradient(135deg,#ccfbf1,#0ea5a4);border-radius:50%;display:flex;height:180px;justify-content:center;padding:6px;position:relative;width:180px}.avatar-image{-o-object-fit:cover;object-fit:cover}.avatar-image,.avatar-placeholder{border:4px solid #fff;border-radius:50%;height:100%;width:100%}.avatar-placeholder{align-items:center;background:linear-gradient(135deg,#ccfbf1,#0ea5a4);color:#fff;display:flex;font-size:72px;font-weight:700;justify-content:center}.avatar-glow{background:radial-gradient(circle,rgba(14,165,164,.2) 0,transparent 70%);height:240px;width:240px;z-index:-1}.avatar-glow,.particles-container{left:50%;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%)}.particles-container{height:260px;width:260px;z-index:1}.particle{animation:particleMove var(--duration,2s) ease-in-out infinite;animation-delay:var(--delay,0s);background:radial-gradient(circle,#14b8a6,#0ea5a4);border-radius:50%;box-shadow:0 0 8px rgba(14,165,164,.6);height:6px;left:50%;opacity:0;position:absolute;top:50%;width:6px}.particle:nth-child(3n+1){height:4px;width:4px}.particle:nth-child(3n+2){height:6px;width:6px}.particle:nth-child(3n){height:8px;width:8px}@keyframes particleMove{0%{opacity:0;transform:translate(calc(var(--x)*0.8),calc(var(--y)*0.8)) scale(.5)}20%{opacity:.8;transform:translate(calc(var(--x)*1.1),calc(var(--y)*0.9)) scale(1)}50%{opacity:.9;transform:translate(calc(var(--x)*1),calc(var(--y)*1.1)) scale(1.05)}80%{opacity:.8;transform:translate(calc(var(--x)*0.9),calc(var(--y)*1)) scale(1)}to{opacity:0;transform:translate(calc(var(--x)*0.8),calc(var(--y)*0.8)) scale(.5)}}.particle:first-child{--duration:2.1s;--x:80px;--y:-20px}.particle:nth-child(2){--duration:2.3s;--x:-60px;--y:40px}.particle:nth-child(3){--duration:1.9s;--x:30px;--y:70px}.particle:nth-child(4){--duration:2.2s;--x:-80px;--y:-30px}.particle:nth-child(5){--duration:2s;--x:60px;--y:50px}.particle:nth-child(6){--duration:2.4s;--x:-40px;--y:-60px}.particle:nth-child(7){--duration:1.8s;--x:90px;--y:10px}.particle:nth-child(8){--duration:2.1s;--x:-70px;--y:60px}.particle:nth-child(9){--duration:2.3s;--x:20px;--y:-80px}.particle:nth-child(10){--duration:1.9s;--x:-90px;--y:20px}.particle:nth-child(11){--duration:2.2s;--x:70px;--y:-50px}.particle:nth-child(12){--duration:2s;--x:-30px;--y:80px}.particle:nth-child(13){--duration:2.1s;--x:50px;--y:-40px}.particle:nth-child(14){--duration:2.3s;--x:-85px;--y:-10px}.particle:nth-child(15){--duration:1.9s;--x:40px;--y:60px}.particle:nth-child(16){--duration:2.2s;--x:-50px;--y:-70px}.particle:nth-child(17){--duration:2s;--x:85px;--y:30px}.particle:nth-child(18){--duration:2.4s;--x:-20px;--y:75px}.particle:nth-child(19){--duration:1.8s;--x:65px;--y:-60px}.particle:nth-child(20){--duration:2.1s;--x:-75px;--y:35px}.particle:nth-child(21){--duration:2.3s;--x:25px;--y:-75px}.particle:nth-child(22){--duration:1.9s;--x:-65px;--y:-45px}.particle:nth-child(23){--duration:2.2s;--x:75px;--y:45px}.particle:nth-child(24){--duration:2s;--x:-35px;--y:-85px}.avatar-wrapper.speaking{animation:avatarPulse 2s ease-in-out infinite}@keyframes avatarPulse{0%,to{box-shadow:0 0 0 0 rgba(14,165,164,.4)}50%{box-shadow:0 0 0 15px rgba(14,165,164,0)}}.agent-info{margin-bottom:40px}.agent-name{align-items:center;color:#0f172a;display:flex;flex-wrap:wrap;font-size:24px;font-weight:700;gap:8px;justify-content:center;margin-bottom:8px}.ai-badge{background:#0ea5a4;border-radius:6px;color:#fff;font-size:10px;font-weight:700;padding:2px 6px}.agent-role{color:#0f172a;font-size:16px;font-weight:500;margin:0}.start-call-section{align-items:center;display:flex;flex-direction:column;gap:16px;margin-bottom:24px}.error-message{color:#dc2626;font-size:14px;font-weight:400;margin:0}.start-call-button{background:#0ea5a4;border:none;border-radius:24px;color:#fff;cursor:pointer;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:14px;font-weight:500;padding:12px 24px;transition:all .2s ease}.start-call-button:hover:not(:disabled){background:#0d9488;transform:scale(1.02)}.start-call-button:disabled{cursor:not-allowed;opacity:.7}.status-indicator{justify-content:center;margin-bottom:10px}.status-connecting,.status-indicator{align-items:center;display:flex;gap:12px}.spinner{animation:spin 1s linear infinite;color:#0ea5a4}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.status-text{font-weight:400}.status-text,.status-timer{color:#0f172a;font-size:16px}.status-timer{font-weight:500}.status-connected{align-items:center;display:flex;flex-direction:column;gap:4px}.waveform-container{margin-bottom:10px;padding:0 20px}.waveform-bars,.waveform-container{align-items:center;display:flex;gap:3px;height:60px;justify-content:center}.waveform-bar{background:linear-gradient(180deg,#94a3b8,#64748b);border-radius:2px;box-shadow:0 0 3px rgba(100,116,139,.2);max-height:20px;min-height:3px;transition:height .15s ease-in-out;width:3px}.waveform-bar:nth-child(2n){background:linear-gradient(180deg,#cbd5e1,#94a3b8)}.waveform-bar:nth-child(3n){background:linear-gradient(180deg,#64748b,#475569)}.controls{gap:24px;margin-top:auto;width:100%}.control-btn,.controls{align-items:center;display:flex;justify-content:center}.control-btn{border:none;border-radius:50%;cursor:pointer;flex-direction:column;height:60px;padding:0;transition:transform .2s ease;width:60px}.control-btn:hover{transform:scale(1.05)}.control-btn:active{transform:scale(.95)}.mic-btn{background:#e2e8f0;color:#475569}.mic-btn.muted{background:#fecaca;color:#dc2626}.end-call-btn{background:#ef4444;color:#fff}.control-label{color:#0f172a;font-size:12px;font-weight:500;margin-top:4px}"]
111
112
  },] }
112
113
  ];
113
114
  VoiceAgentModalComponent.ctorParameters = () => [
@@ -129,4 +130,4 @@ VoiceAgentModalComponent.propDecorators = {
129
130
  agentRole: [{ type: Input }],
130
131
  agentAvatar: [{ type: Input }]
131
132
  };
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtYWdlbnQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9yb2hpdHRoYWt1ci9oaXZlLWdwdC9IaXZlQUktUGFja2FnZXMvQW5ndWxhci9wcm9qZWN0cy9oaXZlZ3B0L2V2ZW50c2dwdC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3ZvaWNlLWFnZW50L2NvbXBvbmVudHMvdm9pY2UtYWdlbnQtbW9kYWwvdm9pY2UtYWdlbnQtbW9kYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEcsT0FBTyxFQUFFLGlCQUFpQixFQUFhLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLDBCQUEwQixFQUFvQixNQUFNLDBCQUEwQixDQUFDO0FBTzVHLE1BQU0sT0FBTyx3QkFBd0I7SUFpQm5DLFlBQ1MsaUJBQW9DLEVBQ3BDLGFBQW1DLEVBQ2xDLFFBQWtCO1FBRm5CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFuQmxCLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBS2xDLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLG9CQUFlLEdBQVcsV0FBVyxDQUFDO1FBQ3RDLGNBQVMsR0FBVyxjQUFjLENBQUM7UUFDbkMsY0FBUyxHQUFXLHFCQUFxQixDQUFDO1FBRzNDLG1CQUFjLEdBQTRCLElBQUksQ0FBQztRQUMvQyxvQkFB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QWMsRUFDbkIsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLGVBQWUsQ0FDckIsQ0FBQzthQUNIO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUN4RDtvQkFBUztnQkFDUixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQzthQUMzQjtRQUNILENBQUM7S0FBQTtJQUVLLFVBQVU7O1lBQ2QsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDNUMsQ0FBQztLQUFBO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTzs7UUFDTCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsTUFBQSxJQUFJLENBQUMsZUFBZSwrQ0FBcEIsSUFBSSxDQUFvQixDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7O1lBMUlGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsMkJBQTJCO2dCQUNyQywweUxBQWlEOzthQUVsRDs7O1lBUlEsaUJBQWlCO1lBQ2pCLG9CQUFvQjtZQUh1QyxRQUFROzs7b0JBWXpFLE1BQU07cUJBQ04sS0FBSztvQkFDTCxLQUFLO29CQUNMLEtBQUs7NkJBQ0wsS0FBSztxQkFDTCxLQUFLO3lCQUNMLEtBQUs7dUJBQ0wsS0FBSzs4QkFDTCxLQUFLO3dCQUNMLEtBQUs7d0JBQ0wsS0FBSzswQkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3ksIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBWb2ljZUFnZW50U2VydmljZSwgQ2FsbFN0YXRlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdm9pY2UtYWdlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBdWRpb0FuYWx5emVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1ZGlvLWFuYWx5emVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVk9JQ0VfTU9EQUxfQ09ORklHLCBWT0lDRV9NT0RBTF9DTE9TRV9DQUxMQkFDSywgVm9pY2VNb2RhbENvbmZpZyB9IGZyb20gJy4uLy4uL3ZvaWNlLW1vZGFsLXRva2Vucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hpdmVncHQtdm9pY2UtYWdlbnQtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vdm9pY2UtYWdlbnQtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92b2ljZS1hZ2VudC1tb2RhbC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFZvaWNlQWdlbnRNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBASW5wdXQoKSBhcGlVcmwhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRva2VuITogc3RyaW5nO1xuICBASW5wdXQoKSBib3RJZCE6IHN0cmluZztcbiAgQElucHV0KCkgY29udmVyc2F0aW9uSWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFwaUtleTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGV2ZW50VG9rZW46IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBldmVudFVybDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGRvbWFpbkF1dGhvcml0eTogc3RyaW5nID0gJ3Byb2QtbGl0ZSc7XG4gIEBJbnB1dCgpIGFnZW50TmFtZTogc3RyaW5nID0gJ0FJIEFzc2lzdGFudCc7XG4gIEBJbnB1dCgpIGFnZW50Um9sZTogc3RyaW5nID0gJ0FJIEFnZW50IFNwZWNpYWxpc3QnO1xuICBASW5wdXQoKSBhZ2VudEF2YXRhcj86IHN0cmluZztcblxuICBwcml2YXRlIGluamVjdGVkQ29uZmlnOiBWb2ljZU1vZGFsQ29uZmlnIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgb25DbG9zZUNhbGxiYWNrOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdm9pY2VBZ2VudFNlcnZpY2U6IFZvaWNlQWdlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBhdWRpb0FuYWx5emVyOiBBdWRpb0FuYWx5emVyU2VydmljZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxuICApIHt9XG5cbiAgY2FsbFN0YXRlOiBDYWxsU3RhdGUgPSAnaWRsZSc7XG4gIHN0YXR1c1RleHQ6IHN0cmluZyA9ICcnO1xuICBkdXJhdGlvbjogc3RyaW5nID0gJzAwOjAwJztcbiAgaXNNaWNNdXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1VzZXJTcGVha2luZzogYm9vbGVhbiA9IGZhbHNlO1xuICBhdWRpb0xldmVsczogbnVtYmVyW10gPSBbXTtcbiAgaXNTcGVha2luZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBXaGVuIG9wZW5lZCB2aWEgT3ZlcmxheSwgY29uZmlnIGlzIHByb3ZpZGVkIGJ5IGluamVjdGlvblxuICAgIHRoaXMuaW5qZWN0ZWRDb25maWcgPSB0aGlzLmluamVjdG9yLmdldChWT0lDRV9NT0RBTF9DT05GSUcsIG51bGwpO1xuICAgIHRoaXMub25DbG9zZUNhbGxiYWNrID0gdGhpcy5pbmplY3Rvci5nZXQoVk9JQ0VfTU9EQUxfQ0xPU0VfQ0FMTEJBQ0ssIG51bGwpO1xuICAgIGlmICh0aGlzLmluamVjdGVkQ29uZmlnKSB7XG4gICAgICB0aGlzLmFwaVVybCA9IHRoaXMuaW5qZWN0ZWRDb25maWcuYXBpVXJsO1xuICAgICAgdGhpcy50b2tlbiA9IHRoaXMuaW5qZWN0ZWRDb25maWcudG9rZW47XG4gICAgICB0aGlzLmJvdElkID0gdGhpcy5pbmplY3RlZENvbmZpZy5ib3RJZDtcbiAgICAgIHRoaXMuY29udmVyc2F0aW9uSWQgPSB0aGlzLmluamVjdGVkQ29uZmlnLmNvbnZlcnNhdGlvbklkO1xuICAgICAgdGhpcy5hcGlLZXkgPSB0aGlzLmluamVjdGVkQ29uZmlnLmFwaUtleSA/PyAnJztcbiAgICAgIHRoaXMuZXZlbnRUb2tlbiA9IHRoaXMuaW5qZWN0ZWRDb25maWcuZXZlbnRUb2tlbiA/PyAnJztcbiAgICAgIHRoaXMuZXZlbnRVcmwgPSB0aGlzLmluamVjdGVkQ29uZmlnLmV2ZW50VXJsID8/ICcnO1xuICAgICAgdGhpcy5kb21haW5BdXRob3JpdHkgPSB0aGlzLmluamVjdGVkQ29uZmlnLmRvbWFpbkF1dGhvcml0eSA/PyAncHJvZC1saXRlJztcbiAgICAgIHRoaXMuYWdlbnROYW1lID0gdGhpcy5pbmplY3RlZENvbmZpZy5hZ2VudE5hbWUgPz8gdGhpcy5hZ2VudE5hbWU7XG4gICAgICB0aGlzLmFnZW50Um9sZSA9IHRoaXMuaW5qZWN0ZWRDb25maWcuYWdlbnRSb2xlID8/IHRoaXMuYWdlbnRSb2xlO1xuICAgICAgdGhpcy5hZ2VudEF2YXRhciA9IHRoaXMuaW5qZWN0ZWRDb25maWcuYWdlbnRBdmF0YXI7XG4gICAgfVxuXG4gICAgLy8gU3Vic2NyaWJlIHRvIG9ic2VydmFibGVzXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnZvaWNlQWdlbnRTZXJ2aWNlLmNhbGxTdGF0ZSQuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgdGhpcy5jYWxsU3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgdGhpcy5pc1NwZWFraW5nID0gc3RhdGUgPT09ICd0YWxraW5nJztcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy52b2ljZUFnZW50U2VydmljZS5zdGF0dXNUZXh0JC5zdWJzY3JpYmUodGV4dCA9PiB7XG4gICAgICAgIHRoaXMuc3RhdHVzVGV4dCA9IHRleHQ7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMudm9pY2VBZ2VudFNlcnZpY2UuZHVyYXRpb24kLnN1YnNjcmliZShkdXJhdGlvbiA9PiB7XG4gICAgICAgIHRoaXMuZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy52b2ljZUFnZW50U2VydmljZS5pc01pY011dGVkJC5zdWJzY3JpYmUobXV0ZWQgPT4ge1xuICAgICAgICB0aGlzLmlzTWljTXV0ZWQgPSBtdXRlZDtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy52b2ljZUFnZW50U2VydmljZS5pc1VzZXJTcGVha2luZyQuc3Vic2NyaWJlKHNwZWFraW5nID0+IHtcbiAgICAgICAgdGhpcy5pc1VzZXJTcGVha2luZyA9IHNwZWFraW5nO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnZvaWNlQWdlbnRTZXJ2aWNlLmF1ZGlvTGV2ZWxzJC5zdWJzY3JpYmUobGV2ZWxzID0+IHtcbiAgICAgICAgdGhpcy5hdWRpb0xldmVscyA9IGxldmVscztcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIE1vZGFsIG9wZW5zIGluIGlkbGUgc3RhdGU7IHVzZXIgY2xpY2tzIFwiU3RhcnQgQ2FsbFwiIHRvIGNvbm5lY3QgKG5vIGF1dG8tY29ubmVjdCkuXG4gICAgdGhpcy52b2ljZUFnZW50U2VydmljZS5yZXNldFRvSWRsZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIGlzQ29ubmVjdGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGFzeW5jIHN0YXJ0Q2FsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc0Nvbm5lY3RpbmcgfHwgKHRoaXMuY2FsbFN0YXRlICE9PSAnaWRsZScgJiYgdGhpcy5jYWxsU3RhdGUgIT09ICdlbmRlZCcpKSByZXR1cm47XG4gICAgdGhpcy5pc0Nvbm5lY3RpbmcgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnZvaWNlQWdlbnRTZXJ2aWNlLmNvbm5lY3QoXG4gICAgICAgIHRoaXMuYXBpVXJsLFxuICAgICAgICB0aGlzLnRva2VuLFxuICAgICAgICB0aGlzLmJvdElkLFxuICAgICAgICB0aGlzLmNvbnZlcnNhdGlvbklkLFxuICAgICAgICB0aGlzLmFwaUtleSxcbiAgICAgICAgdGhpcy5ldmVudFRva2VuLFxuICAgICAgICB0aGlzLmV2ZW50VXJsLFxuICAgICAgICB0aGlzLmRvbWFpbkF1dGhvcml0eVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGNvbm5lY3Qgdm9pY2UgYWdlbnQ6JywgZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzQ29ubmVjdGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRpc2Nvbm5lY3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy52b2ljZUFnZW50U2VydmljZS5kaXNjb25uZWN0KCk7XG4gIH1cblxuICB0b2dnbGVNaWMoKTogdm9pZCB7XG4gICAgdGhpcy52b2ljZUFnZW50U2VydmljZS50b2dnbGVNaWMoKTtcbiAgfVxuXG4gIGVuZENhbGwoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5vbkNsb3NlQ2FsbGJhY2s/LigpO1xuICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xuICB9XG59XG4iXX0=
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtYWdlbnQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9yb2hpdHRoYWt1ci9oaXZlLWdwdC9IaXZlQUktUGFja2FnZXMvQW5ndWxhci9wcm9qZWN0cy9oaXZlZ3B0L2V2ZW50c2dwdC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3ZvaWNlLWFnZW50L2NvbXBvbmVudHMvdm9pY2UtYWdlbnQtbW9kYWwvdm9pY2UtYWdlbnQtbW9kYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEcsT0FBTyxFQUFFLGlCQUFpQixFQUFhLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLDBCQUEwQixFQUFvQixNQUFNLDBCQUEwQixDQUFDO0FBTzVHLE1BQU0sT0FBTyx3QkFBd0I7SUFpQm5DLFlBQ1MsaUJBQW9DLEVBQ3BDLGFBQW1DLEVBQ2xDLFFBQWtCO1FBRm5CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFuQmxCLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBS2xDLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLG9CQUFlLEdBQVcsV0FBVyxDQUFDO1FBQ3RDLGNBQVMsR0FBVyxjQUFjLENBQUM7UUFDbkMsY0FBUyxHQUFXLHFCQUFxQixDQUFDO1FBQzFDLGdCQUFXLEdBQVcsdUdBQXVHLENBQUM7UUFFL0gsbUJB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Q1gsSUFBSSxDQUFDLEtBQUssRUFDVixJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7YUFDSDtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDeEQ7b0JBQVM7Z0JBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7YUFDM0I7UUFDSCxDQUFDO0tBQUE7SUFFSyxVQUFVOztZQUNkLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzVDLENBQUM7S0FBQTtJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELE9BQU87O1FBQ0wsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLE1BQUEsSUFBSSxDQUFDLGVBQWUsK0NBQXBCLElBQUksQ0FBb0IsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BCLENBQUM7OztZQTFJRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsK3JMQUFpRDs7YUFFbEQ7OztZQVJRLGlCQUFpQjtZQUNqQixvQkFBb0I7WUFIdUMsUUFBUTs7O29CQVl6RSxNQUFNO3FCQUNOLEtBQUs7b0JBQ0wsS0FBSztvQkFDTCxLQUFLOzZCQUNMLEtBQUs7cUJBQ0wsS0FBSzt5QkFDTCxLQUFLO3VCQUNMLEtBQUs7OEJBQ0wsS0FBSzt3QkFDTCxLQUFLO3dCQUNMLEtBQUs7MEJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVm9pY2VBZ2VudFNlcnZpY2UsIENhbGxTdGF0ZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZvaWNlLWFnZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXVkaW9BbmFseXplclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdWRpby1hbmFseXplci5zZXJ2aWNlJztcbmltcG9ydCB7IFZPSUNFX01PREFMX0NPTkZJRywgVk9JQ0VfTU9EQUxfQ0xPU0VfQ0FMTEJBQ0ssIFZvaWNlTW9kYWxDb25maWcgfSBmcm9tICcuLi8uLi92b2ljZS1tb2RhbC10b2tlbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoaXZlZ3B0LXZvaWNlLWFnZW50LW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZvaWNlLWFnZW50LW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdm9pY2UtYWdlbnQtbW9kYWwuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBWb2ljZUFnZW50TW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQElucHV0KCkgYXBpVXJsITogc3RyaW5nO1xuICBASW5wdXQoKSB0b2tlbiE6IHN0cmluZztcbiAgQElucHV0KCkgYm90SWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvbnZlcnNhdGlvbklkITogc3RyaW5nO1xuICBASW5wdXQoKSBhcGlLZXk6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBldmVudFRva2VuOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZXZlbnRVcmw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkb21haW5BdXRob3JpdHk6IHN0cmluZyA9ICdwcm9kLWxpdGUnO1xuICBASW5wdXQoKSBhZ2VudE5hbWU6IHN0cmluZyA9ICdBSSBBc3Npc3RhbnQnO1xuICBASW5wdXQoKSBhZ2VudFJvbGU6IHN0cmluZyA9ICdBSSBBZ2VudCBTcGVjaWFsaXN0JztcbiAgQElucHV0KCkgYWdlbnRBdmF0YXI6IHN0cmluZyA9ICdodHRwczovL3d3dy5qb3Rmb3JtLmNvbS91cGxvYWRzL21laG1ldGthcmFrYXNsaS9mb3JtX2ZpbGVzLzE1NjQ1OTM2Njc2NzZhOGU4NWYyMzc1OC44Njk0NTUzN19pY29uLnBuZyc7XG5cbiAgcHJpdmF0ZSBpbmplY3RlZENvbmZpZzogVm9pY2VNb2RhbENvbmZpZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIG9uQ2xvc2VDYWxsYmFjazogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHZvaWNlQWdlbnRTZXJ2aWNlOiBWb2ljZUFnZW50U2VydmljZSxcbiAgICBwdWJsaWMgYXVkaW9BbmFseXplcjogQXVkaW9BbmFseXplclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7fVxuXG4gIGNhbGxTdGF0ZTogQ2FsbFN0YXRlID0gJ2lkbGUnO1xuICBzdGF0dXNUZXh0OiBzdHJpbmcgPSAnJztcbiAgZHVyYXRpb246IHN0cmluZyA9ICcwMDowMCc7XG4gIGlzTWljTXV0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNVc2VyU3BlYWtpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYXVkaW9MZXZlbHM6IG51bWJlcltdID0gW107XG4gIGlzU3BlYWtpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gV2hlbiBvcGVuZWQgdmlhIE92ZXJsYXksIGNvbmZpZyBpcyBwcm92aWRlZCBieSBpbmplY3Rpb25cbiAgICB0aGlzLmluamVjdGVkQ29uZmlnID0gdGhpcy5pbmplY3Rvci5nZXQoVk9JQ0VfTU9EQUxfQ09ORklHLCBudWxsKTtcbiAgICB0aGlzLm9uQ2xvc2VDYWxsYmFjayA9IHRoaXMuaW5qZWN0b3IuZ2V0KFZPSUNFX01PREFMX0NMT1NFX0NBTExCQUNLLCBudWxsKTtcbiAgICBpZiAodGhpcy5pbmplY3RlZENvbmZpZykge1xuICAgICAgdGhpcy5hcGlVcmwgPSB0aGlzLmluamVjdGVkQ29uZmlnLmFwaVVybDtcbiAgICAgIHRoaXMudG9rZW4gPSB0aGlzLmluamVjdGVkQ29uZmlnLnRva2VuO1xuICAgICAgdGhpcy5ib3RJZCA9IHRoaXMuaW5qZWN0ZWRDb25maWcuYm90SWQ7XG4gICAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gdGhpcy5pbmplY3RlZENvbmZpZy5jb252ZXJzYXRpb25JZDtcbiAgICAgIHRoaXMuYXBpS2V5ID0gdGhpcy5pbmplY3RlZENvbmZpZy5hcGlLZXkgPz8gJyc7XG4gICAgICB0aGlzLmV2ZW50VG9rZW4gPSB0aGlzLmluamVjdGVkQ29uZmlnLmV2ZW50VG9rZW4gPz8gJyc7XG4gICAgICB0aGlzLmV2ZW50VXJsID0gdGhpcy5pbmplY3RlZENvbmZpZy5ldmVudFVybCA/PyAnJztcbiAgICAgIHRoaXMuZG9tYWluQXV0aG9yaXR5ID0gdGhpcy5pbmplY3RlZENvbmZpZy5kb21haW5BdXRob3JpdHkgPz8gJ3Byb2QtbGl0ZSc7XG4gICAgICB0aGlzLmFnZW50TmFtZSA9IHRoaXMuaW5qZWN0ZWRDb25maWcuYWdlbnROYW1lID8/IHRoaXMuYWdlbnROYW1lO1xuICAgICAgdGhpcy5hZ2VudFJvbGUgPSB0aGlzLmluamVjdGVkQ29uZmlnLmFnZW50Um9sZSA/PyB0aGlzLmFnZW50Um9sZTtcbiAgICAgIHRoaXMuYWdlbnRBdmF0YXIgPSB0aGlzLmluamVjdGVkQ29uZmlnLmFnZW50QXZhdGFyID8/IHRoaXMuYWdlbnRBdmF0YXI7XG4gICAgfVxuXG4gICAgLy8gU3Vic2NyaWJlIHRvIG9ic2VydmFibGVzXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnZvaWNlQWdlbnRTZXJ2aWNlLmNhbGxTdGF0ZSQuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgdGhpcy5jYWxsU3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgdGhpcy5pc1NwZWFraW5nID0gc3RhdGUgPT09ICd0YWxraW5nJztcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy52b2ljZUFnZW50U2VydmljZS5zdGF0dXNUZXh0JC5zdWJzY3JpYmUodGV4dCA9PiB7XG4gICAgICAgIHRoaXMuc3RhdHVzVGV4dCA9IHRleHQ7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMudm9pY2VBZ2VudFNlcnZpY2UuZHVyYXRpb24kLnN1YnNjcmliZShkdXJhdGlvbiA9PiB7XG4gICAgICAgIHRoaXMuZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy52b2ljZUFnZW50U2VydmljZS5pc01pY011dGVkJC5zdWJzY3JpYmUobXV0ZWQgPT4ge1xuICAgICAgICB0aGlzLmlzTWljTXV0ZWQgPSBtdXRlZDtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy52b2ljZUFnZW50U2VydmljZS5pc1VzZXJTcGVha2luZyQuc3Vic2NyaWJlKHNwZWFraW5nID0+IHtcbiAgICAgICAgdGhpcy5pc1VzZXJTcGVha2luZyA9IHNwZWFraW5nO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnZvaWNlQWdlbnRTZXJ2aWNlLmF1ZGlvTGV2ZWxzJC5zdWJzY3JpYmUobGV2ZWxzID0+IHtcbiAgICAgICAgdGhpcy5hdWRpb0xldmVscyA9IGxldmVscztcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIE1vZGFsIG9wZW5zIGluIGlkbGUgc3RhdGU7IHVzZXIgY2xpY2tzIFwiU3RhcnQgQ2FsbFwiIHRvIGNvbm5lY3QgKG5vIGF1dG8tY29ubmVjdCkuXG4gICAgdGhpcy52b2ljZUFnZW50U2VydmljZS5yZXNldFRvSWRsZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIGlzQ29ubmVjdGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGFzeW5jIHN0YXJ0Q2FsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc0Nvbm5lY3RpbmcgfHwgKHRoaXMuY2FsbFN0YXRlICE9PSAnaWRsZScgJiYgdGhpcy5jYWxsU3RhdGUgIT09ICdlbmRlZCcpKSByZXR1cm47XG4gICAgdGhpcy5pc0Nvbm5lY3RpbmcgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnZvaWNlQWdlbnRTZXJ2aWNlLmNvbm5lY3QoXG4gICAgICAgIHRoaXMuYXBpVXJsLFxuICAgICAgICB0aGlzLnRva2VuLFxuICAgICAgICB0aGlzLmJvdElkLFxuICAgICAgICB0aGlzLmNvbnZlcnNhdGlvbklkLFxuICAgICAgICB0aGlzLmFwaUtleSxcbiAgICAgICAgdGhpcy5ldmVudFRva2VuLFxuICAgICAgICB0aGlzLmV2ZW50VXJsLFxuICAgICAgICB0aGlzLmRvbWFpbkF1dGhvcml0eVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGNvbm5lY3Qgdm9pY2UgYWdlbnQ6JywgZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzQ29ubmVjdGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRpc2Nvbm5lY3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy52b2ljZUFnZW50U2VydmljZS5kaXNjb25uZWN0KCk7XG4gIH1cblxuICB0b2dnbGVNaWMoKTogdm9pZCB7XG4gICAgdGhpcy52b2ljZUFnZW50U2VydmljZS50b2dnbGVNaWMoKTtcbiAgfVxuXG4gIGVuZENhbGwoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5vbkNsb3NlQ2FsbGJhY2s/LigpO1xuICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xuICB9XG59XG4iXX0=
@@ -82,7 +82,7 @@ export class VoiceAgentService {
82
82
  const connectUrl = `${baseUrl}/ai/ask-voice`;
83
83
  const headers = new Headers();
84
84
  headers.set('Authorization', `Bearer ${token}`);
85
- headers.set('Content-Type', 'application/json');
85
+ // Do not set Content-Type here — the Pipecat client already sets "application/json" once; adding it again produces "application/json, application/json"
86
86
  headers.set('domain-authority', domainAuthority);
87
87
  headers.set('eventtoken', eventToken);
88
88
  headers.set('eventurl', eventUrl);
@@ -224,4 +224,4 @@ VoiceAgentService.decorators = [
224
224
  VoiceAgentService.ctorParameters = () => [
225
225
  { type: AudioAnalyzerService }
226
226
  ];
227
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtYWdlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvcm9oaXR0aGFrdXIvaGl2ZS1ncHQvSGl2ZUFJLVBhY2thZ2VzL0FuZ3VsYXIvcHJvamVjdHMvaGl2ZWdwdC9ldmVudHNncHQtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy92b2ljZS1hZ2VudC9zZXJ2aWNlcy92b2ljZS1hZ2VudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFDTCxhQUFhLEVBQ2IsU0FBUyxHQUVWLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQVloRSxNQUFNLE9BQU8saUJBQWlCO0lBbUQ1QixZQUFvQixhQUFtQztRQUFuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFsRC9DLFdBQU0sR0FBeUIsSUFBSSxDQUFDO1FBQ3BDLGNBQVMsR0FBbUQsSUFBSSxDQUFDO1FBQ2pFLG9CQUFlLEdBQXVCLElBQUksQ0FBQztRQUMzQyxvQkFBZSxHQUE0QixJQUFJLENBQUM7UUFFaEQscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVksTUFBTSxDQUFDLENBQUM7UUFDMUQsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDcEQsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBUyxPQUFPLENBQUMsQ0FBQztRQUN2RCxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN4RCwwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMs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R0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDekMsTUFBTSxPQUFPLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQ3ZCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FDMUUsQ0FBQzthQUNIO1FBQ0gsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7OztZQWxQRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVhRLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgUGlwZWNhdENsaWVudCxcbiAgUlRWSUV2ZW50LFxuICBBUElSZXF1ZXN0LFxufSBmcm9tICdAcGlwZWNhdC1haS9jbGllbnQtanMnO1xuaW1wb3J0IHsgV2ViU29ja2V0VHJhbnNwb3J0IH0gZnJvbSAnQHBpcGVjYXQtYWkvd2Vic29ja2V0LXRyYW5zcG9ydCc7XG5pbXBvcnQgeyBBdWRpb0FuYWx5emVyU2VydmljZSB9IGZyb20gJy4vYXVkaW8tYW5hbHl6ZXIuc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIENhbGxTdGF0ZSA9ICdpZGxlJyB8ICdjb25uZWN0aW5nJyB8ICdjb25uZWN0ZWQnIHwgJ3RhbGtpbmcnIHwgJ2xpc3RlbmluZycgfCAnZW5kZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zY3JpcHREYXRhIHtcbiAgdGV4dDogc3RyaW5nO1xuICBmaW5hbDogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVm9pY2VBZ2VudFNlcnZpY2Uge1xuICBwcml2YXRlIGNsaWVudDogUGlwZWNhdENsaWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHRyYW5zcG9ydDogSW5zdGFuY2VUeXBlPHR5cGVvZiBXZWJTb2NrZXRUcmFuc3BvcnQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdXNlck1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGJvdEF1ZGlvRWxlbWVudDogSFRNTEF1ZGlvRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgY2FsbFN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2FsbFN0YXRlPignaWRsZScpO1xuICBwcml2YXRlIHN0YXR1c1RleHRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBkdXJhdGlvblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJzAwOjAwJyk7XG4gIHByaXZhdGUgaXNNaWNNdXRlZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBpc1VzZXJTcGVha2luZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBhdWRpb0xldmVsc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcltdPihbXSk7XG4gIHByaXZhdGUgdXNlclRyYW5zY3JpcHRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8VHJhbnNjcmlwdERhdGE+KCk7XG4gIHByaXZhdGUgYm90VHJhbnNjcmlwdFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSBjYWxsU3RhcnRUaW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIGR1cmF0aW9uSW50ZXJ2YWw6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IG51bGwgPSBudWxsO1xuXG4gIGNhbGxTdGF0ZSQ6IE9ic2VydmFibGU8Q2FsbFN0YXRlPiA9IHRoaXMuY2FsbFN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgc3RhdHVzVGV4dCQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuc3RhdHVzVGV4dFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIGR1cmF0aW9uJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5kdXJhdGlvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIGlzTWljTXV0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5pc01pY011dGVkU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgaXNVc2VyU3BlYWtpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5pc1VzZXJTcGVha2luZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIGF1ZGlvTGV2ZWxzJDogT2JzZXJ2YWJsZTxudW1iZXJbXT4gPSB0aGlzLmF1ZGlvTGV2ZWxzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgdXNlclRyYW5zY3JpcHQkOiBPYnNlcnZhYmxlPFRyYW5zY3JpcHREYXRhPiA9IHRoaXMudXNlclRyYW5zY3JpcHRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBib3RUcmFuc2NyaXB0JDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5ib3RUcmFuc2NyaXB0U3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAvKiogUmVzZXQgdG8gaWRsZSBzdGF0ZSAoZS5nLiB3aGVuIG1vZGFsIG9wZW5zIHNvIHVzZXIgY2FuIGNsaWNrIFN0YXJ0IENhbGwpLiAqL1xuICByZXNldFRvSWRsZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYWxsU3RhdGVTdWJqZWN0LnZhbHVlID09PSAnaWRsZScpIHJldHVybjtcbiAgICBpZiAodGhpcy5kdXJhdGlvbkludGVydmFsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuZHVyYXRpb25JbnRlcnZhbCk7XG4gICAgICB0aGlzLmR1cmF0aW9uSW50ZXJ2YWwgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmF1ZGlvQW5hbHl6ZXIuc3RvcCgpO1xuICAgIHRoaXMuY2xpZW50ID0gbnVsbDtcbiAgICB0aGlzLnRyYW5zcG9ydCA9IG51bGw7XG4gICAgaWYgKHRoaXMudXNlck1lZGlhU3RyZWFtKSB7XG4gICAgICB0aGlzLnVzZXJNZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgICB0aGlzLnVzZXJNZWRpYVN0cmVhbSA9IG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLmJvdEF1ZGlvRWxlbWVudCkge1xuICAgICAgdGhpcy5ib3RBdWRpb0VsZW1lbnQucGF1c2UoKTtcbiAgICAgIHRoaXMuYm90QXVkaW9FbGVtZW50LnNyY09iamVjdCA9IG51bGw7XG4gICAgICB0aGlzLmJvdEF1ZGlvRWxlbWVudCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KCdpZGxlJyk7XG4gICAgdGhpcy5zdGF0dXNUZXh0U3ViamVjdC5uZXh0KCcnKTtcbiAgICB0aGlzLmR1cmF0aW9uU3ViamVjdC5uZXh0KCcwMDowMCcpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdWRpb0FuYWx5emVyOiBBdWRpb0FuYWx5emVyU2VydmljZSkge1xuICAgIHRoaXMuYXVkaW9BbmFseXplci5hdWRpb0xldmVscyQuc3Vic2NyaWJlKGxldmVscyA9PiB7XG4gICAgICB0aGlzLmF1ZGlvTGV2ZWxzU3ViamVjdC5uZXh0KGxldmVscyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmF1ZGlvQW5hbHl6ZXIuaXNVc2VyU3BlYWtpbmckLnN1YnNjcmliZShpc1NwZWFraW5nID0+IHtcbiAgICAgIHRoaXMuaXNVc2VyU3BlYWtpbmdTdWJqZWN0Lm5leHQoaXNTcGVha2luZyk7XG4gICAgICBpZiAoaXNTcGVha2luZyAmJiB0aGlzLmNhbGxTdGF0ZVN1YmplY3QudmFsdWUgPT09ICdjb25uZWN0ZWQnKSB7XG4gICAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KCdsaXN0ZW5pbmcnKTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzU3BlYWtpbmcgJiYgdGhpcy5jYWxsU3RhdGVTdWJqZWN0LnZhbHVlID09PSAnbGlzdGVuaW5nJykge1xuICAgICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dCgnY29ubmVjdGVkJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjb25uZWN0KFxuICAgIGFwaVVybDogc3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgYm90SWQ6IHN0cmluZyxcbiAgICBjb252ZXJzYXRpb25JZDogc3RyaW5nLFxuICAgIGFwaUtleTogc3RyaW5nLFxuICAgIGV2ZW50VG9rZW46IHN0cmluZyxcbiAgICBldmVudFVybDogc3RyaW5nLFxuICAgIGRvbWFpbkF1dGhvcml0eTogc3RyaW5nXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmNhbGxTdGF0ZVN1YmplY3QudmFsdWUgIT09ICdpZGxlJykge1xuICAgICAgY29uc29sZS53YXJuKCdDYWxsIGFscmVhZHkgaW4gcHJvZ3Jlc3MnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoJ2Nvbm5lY3RpbmcnKTtcbiAgICAgIHRoaXMuc3RhdHVzVGV4dFN1YmplY3QubmV4dCgnQ29ubmVjdGluZy4uLicpO1xuXG4gICAgICBjb25zdCBiYXNlVXJsID0gYXBpVXJsLnJlcGxhY2UoL1xcLyQvLCAnJyk7XG4gICAgICBjb25zdCBjb25uZWN0VXJsID0gYCR7YmFzZVVybH0vYWkvYXNrLXZvaWNlYDtcblxuICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKCk7XG4gICAgICBoZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsIGBCZWFyZXIgJHt0b2tlbn1gKTtcbiAgICAgIGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgICAgaGVhZGVycy5zZXQoJ2RvbWFpbi1hdXRob3JpdHknLCBkb21haW5BdXRob3JpdHkpO1xuICAgICAgaGVhZGVycy5zZXQoJ2V2ZW50dG9rZW4nLCBldmVudFRva2VuKTtcbiAgICAgIGhlYWRlcnMuc2V0KCdldmVudHVybCcsIGV2ZW50VXJsKTtcbiAgICAgIGhlYWRlcnMuc2V0KCdoaXZlLWJvdC1pZCcsIGJvdElkKTtcbiAgICAgIGhlYWRlcnMuc2V0KCd4LWFwaS1rZXknLCBhcGlLZXkpO1xuXG4gICAgICBjb25zdCBzdGFydEJvdFBhcmFtczogQVBJUmVxdWVzdCA9IHtcbiAgICAgICAgZW5kcG9pbnQ6IGNvbm5lY3RVcmwsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIHJlcXVlc3REYXRhOiB7XG4gICAgICAgICAgYm90X2lkOiBib3RJZCxcbiAgICAgICAgICBjb252ZXJzYXRpb25faWQ6IGNvbnZlcnNhdGlvbklkLFxuICAgICAgICAgIHZvaWNlOiAnYWxsb3knLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgdGhpcy50cmFuc3BvcnQgPSBuZXcgV2ViU29ja2V0VHJhbnNwb3J0KCk7XG4gICAgICB0aGlzLmNsaWVudCA9IG5ldyBQaXBlY2F0Q2xpZW50KHtcbiAgICAgICAgdHJhbnNwb3J0OiB0aGlzLnRyYW5zcG9ydCxcbiAgICAgICAgZW5hYmxlTWljOiB0cnVlLFxuICAgICAgICBlbmFibGVDYW06IGZhbHNlLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuc2V0dXBFdmVudEhhbmRsZXJzKCk7XG5cbiAgICAgIHRoaXMuYm90QXVkaW9FbGVtZW50ID0gbmV3IEF1ZGlvKCk7XG4gICAgICB0aGlzLmJvdEF1ZGlvRWxlbWVudC5hdXRvcGxheSA9IHRydWU7XG5cbiAgICAgIGF3YWl0IHRoaXMuY2xpZW50LnN0YXJ0Qm90QW5kQ29ubmVjdChzdGFydEJvdFBhcmFtcyk7XG5cbiAgICAgIGNvbnN0IHRyYWNrcyA9IHRoaXMuY2xpZW50LnRyYWNrcygpO1xuICAgICAgaWYgKHRyYWNrcz8ubG9jYWw/LmF1ZGlvKSB7XG4gICAgICAgIHRoaXMudXNlck1lZGlhU3RyZWFtID0gbmV3IE1lZGlhU3RyZWFtKFt0cmFja3MubG9jYWwuYXVkaW9dKTtcbiAgICAgICAgdGhpcy5hdWRpb0FuYWx5emVyLnN0YXJ0KHRoaXMudXNlck1lZGlhU3RyZWFtKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pc01pY011dGVkU3ViamVjdC5uZXh0KCF0aGlzLmNsaWVudC5pc01pY0VuYWJsZWQpO1xuICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoJ2Nvbm5lY3RlZCcpO1xuICAgICAgdGhpcy5zdGF0dXNUZXh0U3ViamVjdC5uZXh0KCdDb25uZWN0ZWQnKTtcbiAgICAgIHRoaXMuY2FsbFN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICB0aGlzLnN0YXJ0RHVyYXRpb25UaW1lcigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBjb25uZWN0aW5nIHZvaWNlIGFnZW50OicsIGVycm9yKTtcbiAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KCdlbmRlZCcpO1xuICAgICAgYXdhaXQgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgICB0aGlzLnN0YXR1c1RleHRTdWJqZWN0Lm5leHQoJ0Nvbm5lY3Rpb24gZmFpbGVkJyk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkaXNjb25uZWN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5kdXJhdGlvbkludGVydmFsKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5kdXJhdGlvbkludGVydmFsKTtcbiAgICAgICAgdGhpcy5kdXJhdGlvbkludGVydmFsID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hdWRpb0FuYWx5emVyLnN0b3AoKTtcblxuICAgICAgaWYgKHRoaXMuY2xpZW50KSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY2xpZW50LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgdGhpcy5jbGllbnQgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRyYW5zcG9ydCA9IG51bGw7XG5cbiAgICAgIGlmICh0aGlzLnVzZXJNZWRpYVN0cmVhbSkge1xuICAgICAgICB0aGlzLnVzZXJNZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgICAgIHRoaXMudXNlck1lZGlhU3RyZWFtID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYm90QXVkaW9FbGVtZW50KSB7XG4gICAgICAgIHRoaXMuYm90QXVkaW9FbGVtZW50LnBhdXNlKCk7XG4gICAgICAgIHRoaXMuYm90QXVkaW9FbGVtZW50LnNyY09iamVjdCA9IG51bGw7XG4gICAgICAgIHRoaXMuYm90QXVkaW9FbGVtZW50ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoJ2VuZGVkJyk7XG4gICAgICB0aGlzLnN0YXR1c1RleHRTdWJqZWN0Lm5leHQoJ0NhbGwgZW5kZWQnKTtcbiAgICAgIHRoaXMuZHVyYXRpb25TdWJqZWN0Lm5leHQoJzAwOjAwJyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGRpc2Nvbm5lY3Rpbmcgdm9pY2UgYWdlbnQ6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZU1pYygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2xpZW50KSByZXR1cm47XG4gICAgY29uc3QgbmV3U3RhdGUgPSAhdGhpcy5jbGllbnQuaXNNaWNFbmFibGVkO1xuICAgIHRoaXMuY2xpZW50LmVuYWJsZU1pYyhuZXdTdGF0ZSk7XG4gICAgdGhpcy5pc01pY011dGVkU3ViamVjdC5uZXh0KCFuZXdTdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwRXZlbnRIYW5kbGVycygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2xpZW50KSByZXR1cm47XG5cbiAgICB0aGlzLmNsaWVudC5vbihSVFZJRXZlbnQuQm90U3RhcnRlZFNwZWFraW5nLCAoKSA9PiB7XG4gICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dCgndGFsa2luZycpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jbGllbnQub24oUlRWSUV2ZW50LkJvdFN0b3BwZWRTcGVha2luZywgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY2FsbFN0YXRlU3ViamVjdC52YWx1ZSA9PT0gJ3RhbGtpbmcnKSB7XG4gICAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KCdjb25uZWN0ZWQnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2xpZW50Lm9uKFJUVklFdmVudC5UcmFja1N0YXJ0ZWQsICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgcGFydGljaXBhbnQ/OiB7IGxvY2FsPzogYm9vbGVhbiB9KSA9PiB7XG4gICAgICBpZiAodGhpcy5ib3RBdWRpb0VsZW1lbnQgJiYgcGFydGljaXBhbnQgJiYgIXBhcnRpY2lwYW50LmxvY2FsICYmIHRyYWNrLmtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgY29uc3Qgc3RyZWFtID0gbmV3IE1lZGlhU3RyZWFtKFt0cmFja10pO1xuICAgICAgICB0aGlzLmJvdEF1ZGlvRWxlbWVudC5zcmNPYmplY3QgPSBzdHJlYW07XG4gICAgICAgIHRoaXMuYm90QXVkaW9FbGVtZW50LnBsYXkoKS5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2xpZW50Lm9uKFJUVklFdmVudC5Vc2VyVHJhbnNjcmlwdCwgKGRhdGE6IHsgdGV4dDogc3RyaW5nOyBmaW5hbD86IGJvb2xlYW4gfSkgPT4ge1xuICAgICAgdGhpcy51c2VyVHJhbnNjcmlwdFN1YmplY3QubmV4dCh7XG4gICAgICAgIHRleHQ6IGRhdGEudGV4dCxcbiAgICAgICAgZmluYWw6IGRhdGEuZmluYWwgPz8gZmFsc2UsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2xpZW50Lm9uKFJUVklFdmVudC5Cb3RUcmFuc2NyaXB0LCAoZGF0YTogeyB0ZXh0Pzogc3RyaW5nIH0pID0+IHtcbiAgICAgIGlmIChkYXRhPy50ZXh0KSB7XG4gICAgICAgIHRoaXMuYm90VHJhbnNjcmlwdFN1YmplY3QubmV4dChkYXRhLnRleHQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5jbGllbnQub24oUlRWSUV2ZW50LkVycm9yLCAoKSA9PiB7XG4gICAgICB0aGlzLnN0YXR1c1RleHRTdWJqZWN0Lm5leHQoJ0Vycm9yIG9jY3VycmVkJyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNsaWVudC5vbihSVFZJRXZlbnQuRGlzY29ubmVjdGVkLCAoKSA9PiB7XG4gICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dCgnZW5kZWQnKTtcbiAgICAgIHRoaXMuc3RhdHVzVGV4dFN1YmplY3QubmV4dCgnRGlzY29ubmVjdGVkJyk7XG4gICAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnREdXJhdGlvblRpbWVyKCk6IHZvaWQge1xuICAgIHRoaXMuZHVyYXRpb25JbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNhbGxTdGFydFRpbWUgPiAwKSB7XG4gICAgICAgIGNvbnN0IGVsYXBzZWQgPSBNYXRoLmZsb29yKChEYXRlLm5vdygpIC0gdGhpcy5jYWxsU3RhcnRUaW1lKSAvIDEwMDApO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihlbGFwc2VkIC8gNjApO1xuICAgICAgICBjb25zdCBzZWNvbmRzID0gZWxhcHNlZCAlIDYwO1xuICAgICAgICB0aGlzLmR1cmF0aW9uU3ViamVjdC5uZXh0KFxuICAgICAgICAgIGAke1N0cmluZyhtaW51dGVzKS5wYWRTdGFydCgyLCAnMCcpfToke1N0cmluZyhzZWNvbmRzKS5wYWRTdGFydCgyLCAnMCcpfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LCAxMDAwKTtcbiAgfVxufVxuIl19
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtYWdlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvcm9oaXR0aGFrdXIvaGl2ZS1ncHQvSGl2ZUFJLVBhY2thZ2VzL0FuZ3VsYXIvcHJvamVjdHMvaGl2ZWdwdC9ldmVudHNncHQtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy92b2ljZS1hZ2VudC9zZXJ2aWNlcy92b2ljZS1hZ2VudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFDTCxhQUFhLEVBQ2IsU0FBUyxHQUVWLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQVloRSxNQUFNLE9BQU8saUJBQWlCO0lBbUQ1QixZQUFvQixhQUFtQztRQUFuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFsRC9DLFdBQU0sR0FBeUIsSUFBSSxDQUFDO1FBQ3BDLGNBQVMsR0FBbUQsSUFBSSxDQUFDO1FBQ2pFLG9CQUFlLEdBQXVCLElBQUksQ0FBQztRQUMzQyxvQkFBZSxHQUE0QixJQUFJLENBQUM7UUFFaEQscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVksTUFBTSxDQUFDLENBQUM7UUFDMUQsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDcEQsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBUyxPQUFPLENBQUMsQ0FBQztRQUN2RCxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN4RCwwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMs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RyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FDdkIsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUMxRSxDQUFDO2FBQ0g7UUFDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDOzs7O1lBbFBGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBWFEsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBQaXBlY2F0Q2xpZW50LFxuICBSVFZJRXZlbnQsXG4gIEFQSVJlcXVlc3QsXG59IGZyb20gJ0BwaXBlY2F0LWFpL2NsaWVudC1qcyc7XG5pbXBvcnQgeyBXZWJTb2NrZXRUcmFuc3BvcnQgfSBmcm9tICdAcGlwZWNhdC1haS93ZWJzb2NrZXQtdHJhbnNwb3J0JztcbmltcG9ydCB7IEF1ZGlvQW5hbHl6ZXJTZXJ2aWNlIH0gZnJvbSAnLi9hdWRpby1hbmFseXplci5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgQ2FsbFN0YXRlID0gJ2lkbGUnIHwgJ2Nvbm5lY3RpbmcnIHwgJ2Nvbm5lY3RlZCcgfCAndGFsa2luZycgfCAnbGlzdGVuaW5nJyB8ICdlbmRlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNjcmlwdERhdGEge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGZpbmFsOiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBWb2ljZUFnZW50U2VydmljZSB7XG4gIHByaXZhdGUgY2xpZW50OiBQaXBlY2F0Q2xpZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdHJhbnNwb3J0OiBJbnN0YW5jZVR5cGU8dHlwZW9mIFdlYlNvY2tldFRyYW5zcG9ydD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB1c2VyTWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgYm90QXVkaW9FbGVtZW50OiBIVE1MQXVkaW9FbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBjYWxsU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDYWxsU3RhdGU+KCdpZGxlJyk7XG4gIHByaXZhdGUgc3RhdHVzVGV4dFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIGR1cmF0aW9uU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignMDA6MDAnKTtcbiAgcHJpdmF0ZSBpc01pY011dGVkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIGlzVXNlclNwZWFraW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIGF1ZGlvTGV2ZWxzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyW10+KFtdKTtcbiAgcHJpdmF0ZSB1c2VyVHJhbnNjcmlwdFN1YmplY3QgPSBuZXcgU3ViamVjdDxUcmFuc2NyaXB0RGF0YT4oKTtcbiAgcHJpdmF0ZSBib3RUcmFuc2NyaXB0U3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICBwcml2YXRlIGNhbGxTdGFydFRpbWU6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgZHVyYXRpb25JbnRlcnZhbDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+IHwgbnVsbCA9IG51bGw7XG5cbiAgY2FsbFN0YXRlJDogT2JzZXJ2YWJsZTxDYWxsU3RhdGU+ID0gdGhpcy5jYWxsU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBzdGF0dXNUZXh0JDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5zdGF0dXNUZXh0U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgZHVyYXRpb24kOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLmR1cmF0aW9uU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgaXNNaWNNdXRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmlzTWljTXV0ZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBpc1VzZXJTcGVha2luZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmlzVXNlclNwZWFraW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgYXVkaW9MZXZlbHMkOiBPYnNlcnZhYmxlPG51bWJlcltdPiA9IHRoaXMuYXVkaW9MZXZlbHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB1c2VyVHJhbnNjcmlwdCQ6IE9ic2VydmFibGU8VHJhbnNjcmlwdERhdGE+ID0gdGhpcy51c2VyVHJhbnNjcmlwdFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIGJvdFRyYW5zY3JpcHQkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLmJvdFRyYW5zY3JpcHRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8qKiBSZXNldCB0byBpZGxlIHN0YXRlIChlLmcuIHdoZW4gbW9kYWwgb3BlbnMgc28gdXNlciBjYW4gY2xpY2sgU3RhcnQgQ2FsbCkuICovXG4gIHJlc2V0VG9JZGxlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbGxTdGF0ZVN1YmplY3QudmFsdWUgPT09ICdpZGxlJykgcmV0dXJuO1xuICAgIGlmICh0aGlzLmR1cmF0aW9uSW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5kdXJhdGlvbkludGVydmFsKTtcbiAgICAgIHRoaXMuZHVyYXRpb25JbnRlcnZhbCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuYXVkaW9BbmFseXplci5zdG9wKCk7XG4gICAgdGhpcy5jbGllbnQgPSBudWxsO1xuICAgIHRoaXMudHJhbnNwb3J0ID0gbnVsbDtcbiAgICBpZiAodGhpcy51c2VyTWVkaWFTdHJlYW0pIHtcbiAgICAgIHRoaXMudXNlck1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKTtcbiAgICAgIHRoaXMudXNlck1lZGlhU3RyZWFtID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRoaXMuYm90QXVkaW9FbGVtZW50KSB7XG4gICAgICB0aGlzLmJvdEF1ZGlvRWxlbWVudC5wYXVzZSgpO1xuICAgICAgdGhpcy5ib3RBdWRpb0VsZW1lbnQuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgIHRoaXMuYm90QXVkaW9FbGVtZW50ID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoJ2lkbGUnKTtcbiAgICB0aGlzLnN0YXR1c1RleHRTdWJqZWN0Lm5leHQoJycpO1xuICAgIHRoaXMuZHVyYXRpb25TdWJqZWN0Lm5leHQoJzAwOjAwJyk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1ZGlvQW5hbHl6ZXI6IEF1ZGlvQW5hbHl6ZXJTZXJ2aWNlKSB7XG4gICAgdGhpcy5hdWRpb0FuYWx5emVyLmF1ZGlvTGV2ZWxzJC5zdWJzY3JpYmUobGV2ZWxzID0+IHtcbiAgICAgIHRoaXMuYXVkaW9MZXZlbHNTdWJqZWN0Lm5leHQobGV2ZWxzKTtcbiAgICB9KTtcblxuICAgIHRoaXMuYXVkaW9BbmFseXplci5pc1VzZXJTcGVha2luZyQuc3Vic2NyaWJlKGlzU3BlYWtpbmcgPT4ge1xuICAgICAgdGhpcy5pc1VzZXJTcGVha2luZ1N1YmplY3QubmV4dChpc1NwZWFraW5nKTtcbiAgICAgIGlmIChpc1NwZWFraW5nICYmIHRoaXMuY2FsbFN0YXRlU3ViamVjdC52YWx1ZSA9PT0gJ2Nvbm5lY3RlZCcpIHtcbiAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoJ2xpc3RlbmluZycpO1xuICAgICAgfSBlbHNlIGlmICghaXNTcGVha2luZyAmJiB0aGlzLmNhbGxTdGF0ZVN1YmplY3QudmFsdWUgPT09ICdsaXN0ZW5pbmcnKSB7XG4gICAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KCdjb25uZWN0ZWQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGNvbm5lY3QoXG4gICAgYXBpVXJsOiBzdHJpbmcsXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBib3RJZDogc3RyaW5nLFxuICAgIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcsXG4gICAgYXBpS2V5OiBzdHJpbmcsXG4gICAgZXZlbnRUb2tlbjogc3RyaW5nLFxuICAgIGV2ZW50VXJsOiBzdHJpbmcsXG4gICAgZG9tYWluQXV0aG9yaXR5OiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuY2FsbFN0YXRlU3ViamVjdC52YWx1ZSAhPT0gJ2lkbGUnKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0NhbGwgYWxyZWFkeSBpbiBwcm9ncmVzcycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dCgnY29ubmVjdGluZycpO1xuICAgICAgdGhpcy5zdGF0dXNUZXh0U3ViamVjdC5uZXh0KCdDb25uZWN0aW5nLi4uJyk7XG5cbiAgICAgIGNvbnN0IGJhc2VVcmwgPSBhcGlVcmwucmVwbGFjZSgvXFwvJC8sICcnKTtcbiAgICAgIGNvbnN0IGNvbm5lY3RVcmwgPSBgJHtiYXNlVXJsfS9haS9hc2stdm9pY2VgO1xuXG4gICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKTtcbiAgICAgIGhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgYEJlYXJlciAke3Rva2VufWApO1xuICAgICAgLy8gRG8gbm90IHNldCBDb250ZW50LVR5cGUgaGVyZSDigJQgdGhlIFBpcGVjYXQgY2xpZW50IGFscmVhZHkgc2V0cyBcImFwcGxpY2F0aW9uL2pzb25cIiBvbmNlOyBhZGRpbmcgaXQgYWdhaW4gcHJvZHVjZXMgXCJhcHBsaWNhdGlvbi9qc29uLCBhcHBsaWNhdGlvbi9qc29uXCJcbiAgICAgIGhlYWRlcnMuc2V0KCdkb21haW4tYXV0aG9yaXR5JywgZG9tYWluQXV0aG9yaXR5KTtcbiAgICAgIGhlYWRlcnMuc2V0KCdldmVudHRva2VuJywgZXZlbnRUb2tlbik7XG4gICAgICBoZWFkZXJzLnNldCgnZXZlbnR1cmwnLCBldmVudFVybCk7XG4gICAgICBoZWFkZXJzLnNldCgnaGl2ZS1ib3QtaWQnLCBib3RJZCk7XG4gICAgICBoZWFkZXJzLnNldCgneC1hcGkta2V5JywgYXBpS2V5KTtcblxuICAgICAgY29uc3Qgc3RhcnRCb3RQYXJhbXM6IEFQSVJlcXVlc3QgPSB7XG4gICAgICAgIGVuZHBvaW50OiBjb25uZWN0VXJsLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgICByZXF1ZXN0RGF0YToge1xuICAgICAgICAgIGJvdF9pZDogYm90SWQsXG4gICAgICAgICAgY29udmVyc2F0aW9uX2lkOiBjb252ZXJzYXRpb25JZCxcbiAgICAgICAgICB2b2ljZTogJ2FsbG95JyxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMudHJhbnNwb3J0ID0gbmV3IFdlYlNvY2tldFRyYW5zcG9ydCgpO1xuICAgICAgdGhpcy5jbGllbnQgPSBuZXcgUGlwZWNhdENsaWVudCh7XG4gICAgICAgIHRyYW5zcG9ydDogdGhpcy50cmFuc3BvcnQsXG4gICAgICAgIGVuYWJsZU1pYzogdHJ1ZSxcbiAgICAgICAgZW5hYmxlQ2FtOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnNldHVwRXZlbnRIYW5kbGVycygpO1xuXG4gICAgICB0aGlzLmJvdEF1ZGlvRWxlbWVudCA9IG5ldyBBdWRpbygpO1xuICAgICAgdGhpcy5ib3RBdWRpb0VsZW1lbnQuYXV0b3BsYXkgPSB0cnVlO1xuXG4gICAgICBhd2FpdCB0aGlzLmNsaWVudC5zdGFydEJvdEFuZENvbm5lY3Qoc3RhcnRCb3RQYXJhbXMpO1xuXG4gICAgICBjb25zdCB0cmFja3MgPSB0aGlzLmNsaWVudC50cmFja3MoKTtcbiAgICAgIGlmICh0cmFja3M/LmxvY2FsPy5hdWRpbykge1xuICAgICAgICB0aGlzLnVzZXJNZWRpYVN0cmVhbSA9IG5ldyBNZWRpYVN0cmVhbShbdHJhY2tzLmxvY2FsLmF1ZGlvXSk7XG4gICAgICAgIHRoaXMuYXVkaW9BbmFseXplci5zdGFydCh0aGlzLnVzZXJNZWRpYVN0cmVhbSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaXNNaWNNdXRlZFN1YmplY3QubmV4dCghdGhpcy5jbGllbnQuaXNNaWNFbmFibGVkKTtcbiAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KCdjb25uZWN0ZWQnKTtcbiAgICAgIHRoaXMuc3RhdHVzVGV4dFN1YmplY3QubmV4dCgnQ29ubmVjdGVkJyk7XG4gICAgICB0aGlzLmNhbGxTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgdGhpcy5zdGFydER1cmF0aW9uVGltZXIoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY29ubmVjdGluZyB2b2ljZSBhZ2VudDonLCBlcnJvcik7XG4gICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dCgnZW5kZWQnKTtcbiAgICAgIGF3YWl0IHRoaXMuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5zdGF0dXNUZXh0U3ViamVjdC5uZXh0KCdDb25uZWN0aW9uIGZhaWxlZCcpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGlzY29ubmVjdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuZHVyYXRpb25JbnRlcnZhbCkge1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuZHVyYXRpb25JbnRlcnZhbCk7XG4gICAgICAgIHRoaXMuZHVyYXRpb25JbnRlcnZhbCA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYXVkaW9BbmFseXplci5zdG9wKCk7XG5cbiAgICAgIGlmICh0aGlzLmNsaWVudCkge1xuICAgICAgICBhd2FpdCB0aGlzLmNsaWVudC5kaXNjb25uZWN0KCk7XG4gICAgICAgIHRoaXMuY2xpZW50ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy50cmFuc3BvcnQgPSBudWxsO1xuXG4gICAgICBpZiAodGhpcy51c2VyTWVkaWFTdHJlYW0pIHtcbiAgICAgICAgdGhpcy51c2VyTWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgICB0aGlzLnVzZXJNZWRpYVN0cmVhbSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmJvdEF1ZGlvRWxlbWVudCkge1xuICAgICAgICB0aGlzLmJvdEF1ZGlvRWxlbWVudC5wYXVzZSgpO1xuICAgICAgICB0aGlzLmJvdEF1ZGlvRWxlbWVudC5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICB0aGlzLmJvdEF1ZGlvRWxlbWVudCA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KCdlbmRlZCcpO1xuICAgICAgdGhpcy5zdGF0dXNUZXh0U3ViamVjdC5uZXh0KCdDYWxsIGVuZGVkJyk7XG4gICAgICB0aGlzLmR1cmF0aW9uU3ViamVjdC5uZXh0KCcwMDowMCcpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkaXNjb25uZWN0aW5nIHZvaWNlIGFnZW50OicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVNaWMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNsaWVudCkgcmV0dXJuO1xuICAgIGNvbnN0IG5ld1N0YXRlID0gIXRoaXMuY2xpZW50LmlzTWljRW5hYmxlZDtcbiAgICB0aGlzLmNsaWVudC5lbmFibGVNaWMobmV3U3RhdGUpO1xuICAgIHRoaXMuaXNNaWNNdXRlZFN1YmplY3QubmV4dCghbmV3U3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEV2ZW50SGFuZGxlcnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNsaWVudCkgcmV0dXJuO1xuXG4gICAgdGhpcy5jbGllbnQub24oUlRWSUV2ZW50LkJvdFN0YXJ0ZWRTcGVha2luZywgKCkgPT4ge1xuICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoJ3RhbGtpbmcnKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2xpZW50Lm9uKFJUVklFdmVudC5Cb3RTdG9wcGVkU3BlYWtpbmcsICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNhbGxTdGF0ZVN1YmplY3QudmFsdWUgPT09ICd0YWxraW5nJykge1xuICAgICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dCgnY29ubmVjdGVkJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmNsaWVudC5vbihSVFZJRXZlbnQuVHJhY2tTdGFydGVkLCAodHJhY2s6IE1lZGlhU3RyZWFtVHJhY2ssIHBhcnRpY2lwYW50PzogeyBsb2NhbD86IGJvb2xlYW4gfSkgPT4ge1xuICAgICAgaWYgKHRoaXMuYm90QXVkaW9FbGVtZW50ICYmIHBhcnRpY2lwYW50ICYmICFwYXJ0aWNpcGFudC5sb2NhbCAmJiB0cmFjay5raW5kID09PSAnYXVkaW8nKSB7XG4gICAgICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBNZWRpYVN0cmVhbShbdHJhY2tdKTtcbiAgICAgICAgdGhpcy5ib3RBdWRpb0VsZW1lbnQuc3JjT2JqZWN0ID0gc3RyZWFtO1xuICAgICAgICB0aGlzLmJvdEF1ZGlvRWxlbWVudC5wbGF5KCkuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmNsaWVudC5vbihSVFZJRXZlbnQuVXNlclRyYW5zY3JpcHQsIChkYXRhOiB7IHRleHQ6IHN0cmluZzsgZmluYWw/OiBib29sZWFuIH0pID0+IHtcbiAgICAgIHRoaXMudXNlclRyYW5zY3JpcHRTdWJqZWN0Lm5leHQoe1xuICAgICAgICB0ZXh0OiBkYXRhLnRleHQsXG4gICAgICAgIGZpbmFsOiBkYXRhLmZpbmFsID8/IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNsaWVudC5vbihSVFZJRXZlbnQuQm90VHJhbnNjcmlwdCwgKGRhdGE6IHsgdGV4dD86IHN0cmluZyB9KSA9PiB7XG4gICAgICBpZiAoZGF0YT8udGV4dCkge1xuICAgICAgICB0aGlzLmJvdFRyYW5zY3JpcHRTdWJqZWN0Lm5leHQoZGF0YS50ZXh0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2xpZW50Lm9uKFJUVklFdmVudC5FcnJvciwgKCkgPT4ge1xuICAgICAgdGhpcy5zdGF0dXNUZXh0U3ViamVjdC5uZXh0KCdFcnJvciBvY2N1cnJlZCcpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jbGllbnQub24oUlRWSUV2ZW50LkRpc2Nvbm5lY3RlZCwgKCkgPT4ge1xuICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoJ2VuZGVkJyk7XG4gICAgICB0aGlzLnN0YXR1c1RleHRTdWJqZWN0Lm5leHQoJ0Rpc2Nvbm5lY3RlZCcpO1xuICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0RHVyYXRpb25UaW1lcigpOiB2b2lkIHtcbiAgICB0aGlzLmR1cmF0aW9uSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jYWxsU3RhcnRUaW1lID4gMCkge1xuICAgICAgICBjb25zdCBlbGFwc2VkID0gTWF0aC5mbG9vcigoRGF0ZS5ub3coKSAtIHRoaXMuY2FsbFN0YXJ0VGltZSkgLyAxMDAwKTtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoZWxhcHNlZCAvIDYwKTtcbiAgICAgICAgY29uc3Qgc2Vjb25kcyA9IGVsYXBzZWQgJSA2MDtcbiAgICAgICAgdGhpcy5kdXJhdGlvblN1YmplY3QubmV4dChcbiAgICAgICAgICBgJHtTdHJpbmcobWludXRlcykucGFkU3RhcnQoMiwgJzAnKX06JHtTdHJpbmcoc2Vjb25kcykucGFkU3RhcnQoMiwgJzAnKX1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSwgMTAwMCk7XG4gIH1cbn1cbiJdfQ==