From f803b3e631f89daada457377da3aaa13ecde9566 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Sun, 2 Aug 2026 21:19:49 -0700 Subject: [PATCH 01/32] agent-simulation: reshape JobMetrics for the measured metric set The simulation worker's metrics were reworked; this brings the wire format in line with what it can actually measure. Added: - conciseness, conversation_progression and its four issue flags (unnecessary_tool_calls, information_loss, redundant_statements, poor_question_quality), judged over the authored dialog. The flags are first-class, and reach experience_score only through the derived progression rating, so they are never double-counted. - entity_recognition + its pooling pair on both STT and TTS: key entities are LLM-extracted from the dialog and scored by occurrence survival over the WER alignment, in both directions (did the agent hear ours, did the caller hear the agent's). - response_latency_samples, so the percentile pool size is visible - cut-ins are excluded from the percentiles and counted separately. - Turn.conciseness, and conciseness/conversation_progression means on RunMetrics. Removed (reserved by number and name): - keyterm_* on STT, replaced by the entity_* methodology. - speech_rate_wpm and its pooling stats: a real speaking rate needs a prosody model, and the word-count proxy was misleading. - silence_total_ms, derivable from the turn edges. - false_interruption_unrecovered_count: recovery is no longer tracked. - LLM.conciseness_score: conciseness is a dialog judgment, not an LLM-node timing, and now lives on JobMetrics/Turn. Renamed unanswered_persona_turns to unanswered_turns, keeping field 12; the worker emits both names during the transition so the bump is a no-op. --- protobufs/livekit_agent_simulation.proto | 67 ++++++++++++++++++------ 1 file changed, 50 insertions(+), 17 deletions(-) diff --git a/protobufs/livekit_agent_simulation.proto b/protobufs/livekit_agent_simulation.proto index fdd57806b..4e75c9e5e 100644 --- a/protobufs/livekit_agent_simulation.proto +++ b/protobufs/livekit_agent_simulation.proto @@ -84,8 +84,9 @@ message SimulationRun { message JobMetrics { // Headline scores, 0-1, computed by the worker as weighted means over the // members that ran (a missing member renormalizes the rest): - // accuracy = task_completion x3 + stt.keyterm_recall + (1 - stt.wer) + tts.enunciation_score - // experience = conversation.turn_taking_score x2 + tts.naturalness_score + llm.conciseness_score + // accuracy = task_completion x3 + (1 - stt.wer) + stt.entity_recognition + // experience = conversation.turn_taking_score x2 + conciseness + conversation_progression + // + (1 - conversation.false_interruption_count / agent turns, penalty-only) optional float accuracy_score = 1; // absent when the simulator spoiled the call optional float experience_score = 2; // absent when the simulator spoiled the call // The accuracy anchor: the scenario verdict as 1/0, or the fraction of the declared target state the call reached. @@ -105,6 +106,17 @@ message SimulationRun { bool has_remote_session = 12; // false = waveform-only capture (e.g. SIP) google.protobuf.Timestamp t0 = 13; // audio only; call start (first speech edge); turn times relative to it + // Judged over the authored dialog (text and audio); needs the text judge. + optional float conciseness = 14; // judged {0, 0.5, 1} per agent turn: brief enough for voice; job = mean + // Whole-call issue flags (true = issue; absent = not judged), each first-class: + optional bool unnecessary_tool_calls = 15; // tool churn the dialog did not require + optional bool information_loss = 16; // agent dropped or forgot stated facts + optional bool redundant_statements = 17; // agent repeated itself without cause + optional bool poor_question_quality = 18; // vague, stacked, or already-answered questions + // Derived from the flags by fixed formula (0 flags = 1.0, 1 = 0.5, 2+ = 0.0); + // the flags reach experience_score only through this, never directly. + optional float conversation_progression = 19; + // The agent's perception of the caller. Audio only. message STT { optional float wer = 1; // needs the RemoteSession; word error rate, pooled: word_errors / words @@ -113,17 +125,25 @@ message SimulationRun { optional float cer = 4; // needs the RemoteSession; character error rate, pooled optional uint32 chars = 9; // needs the RemoteSession optional uint32 char_errors = 10; // needs the RemoteSession - optional float keyterm_recall = 5; // needs the RemoteSession; recall of uttered key entities (names, IDs, amounts) - optional uint32 keyterms_uttered = 6; // needs the RemoteSession - optional uint32 keyterms_recognized = 7; // needs the RemoteSession optional uint32 transcription_latency_ms = 8; // needs the RemoteSession; agent-reported STT/endpointing delay, mean + + // Key entities (names, IDs, amounts) LLM-extracted from the authored dialog, + // scored by occurrence survival over the WER alignment. Needs the text judge. + optional float entity_recognition = 11; // recognized / uttered; feeds accuracy_score + optional uint32 entities_uttered = 12; // pooling stats + optional uint32 entities_recognized = 13; + + reserved 5, 6, 7; // was keyterm_recall, keyterms_uttered, keyterms_recognized (methodology replaced by entity_*) + reserved "keyterm_recall", "keyterms_uttered", "keyterms_recognized"; } message LLM { optional uint32 ttft_ms = 1; // needs the RemoteSession; time to first token, mean (per-turn in turns) optional uint32 ttfs_ms = 2; // needs the RemoteSession; time to first sentence (the smallest speakable unit) optional float tokens_per_second = 3; // needs the RemoteSession; decode rate, mean (per-turn in turns.llm) - optional float conciseness_score = 4; // audio only; needs the audio judge; judged 0-1: brief enough for voice + + reserved 4; // was conciseness_score; conciseness is a dialog judgment, moved to JobMetrics/Turn + reserved "conciseness_score"; } // The agent's voice. audio only. @@ -136,11 +156,17 @@ message SimulationRun { optional float cer = 9; // needs the RemoteSession; character error rate, pooled optional uint32 chars = 10; // needs the RemoteSession optional uint32 char_errors = 11; // needs the RemoteSession - optional float speech_rate_wpm = 4; // speaking rate; conversational English ~110-150 - optional uint32 heard_words = 12; // pooling stats for speech_rate_wpm: raw heard words (not WER tokens) - optional uint32 speech_ms = 13; // agent voiced time, sum of raw VAD segments optional float naturalness_score = 5; // needs the audio judge; judged 0-1: prosody / expressiveness optional float enunciation_score = 6; // needs the audio judge; judged 0-1: key entities audibly intact + + // Did the simulator hear the agent's key entities intact? Same + // methodology as STT.entity_*, opposite direction. Needs the text judge. + optional float entity_recognition = 14; + optional uint32 entities_uttered = 15; // pooling stats + optional uint32 entities_recognized = 16; + + reserved 4, 12, 13; // was speech_rate_wpm + its pooling stats (heard_words, speech_ms); real speaking rate needs a prosody model + reserved "speech_rate_wpm", "heard_words", "speech_ms"; } // Audio only. @@ -150,17 +176,19 @@ message SimulationRun { optional int32 response_latency_p95_ms = 3; optional int32 response_latency_p99_ms = 4; optional int32 response_latency_ms = 16; // one turn's floor-transfer offset, cut-in if negative; job/run serve the percentiles + optional uint32 response_latency_samples = 17; // clean handoffs behind the percentiles; cut-ins are excluded and counted below optional uint32 agent_yield_latency_ms = 5; // agent audio continuing past a barge-in — per turn: on the barging persona row (presence = barge-in); job: mean - optional uint32 eot_misprediction_count = 6; // agent started before the caller's turn ended; 0/1 per turn - optional float overlap_ratio = 7; // overlapping speech / total speech + optional uint32 eot_misprediction_count = 6; // agent cut in >= 200ms before the caller's turn ended; 0/1 per turn + optional float overlap_ratio = 7; // competitive overlap (backchannels excluded) / voiced union optional uint32 overlap_speech_ms = 8; // pooling stats for overlap_ratio optional uint32 total_speech_ms = 9; - optional uint32 silence_total_ms = 10; // dead air within the conversation optional uint32 awkward_silence_count = 11; // gaps past the natural-pause threshold; 0/1 per turn - optional uint32 unanswered_persona_turns = 12; // the simulated party spoke, the agent never responded; 0/1 per turn - optional uint32 false_interruption_count = 13; // needs the RemoteSession; agent paused for a non-interruption - optional uint32 false_interruption_unrecovered_count = 14; // needs the RemoteSession; of those, never resumed - optional uint32 agent_reported_e2e_latency_ms = 15; // needs the RemoteSession; the agent's own claim, mean + optional uint32 unanswered_turns = 12; // the simulated party spoke, the agent never responded; 0/1 per turn + optional uint32 false_interruption_count = 13; // needs the RemoteSession; agent paused for a non-interruption + optional uint32 agent_reported_e2e_latency_ms = 15; // needs the RemoteSession; the agent's own claim, mean + + reserved 10, 14; // was silence_total_ms (derivable from turn edges), false_interruption_unrecovered_count (recovery no longer tracked) + reserved "silence_total_ms", "false_interruption_unrecovered_count"; } // Was the call spoiled by the simulator, not the agent? Diagnostic only — @@ -180,9 +208,11 @@ message SimulationRun { // Job groups hold means/pools of these; a field with no per-turn measurement stays unset here. STT stt = 5; // transcription_latency_ms - LLM llm = 6; // ttft_ms, ttfs_ms, tokens_per_second, conciseness_score + LLM llm = 6; // ttft_ms, ttfs_ms, tokens_per_second TTS tts = 7; // ttfa_ms, ttfb_ms, naturalness_score, enunciation_score Conversation conversation = 8; // response_latency_ms, agent_yield_latency_ms, agent_reported_e2e_latency_ms, 0/1 counts + + optional float conciseness = 9; // judged {0, 0.5, 1}: this reply was brief enough for voice } } @@ -200,6 +230,9 @@ message SimulationRun { uint32 jobs_total = 9; uint32 jobs_measured = 10; // composites cover jobs_measured - jobs_simulator_fault uint32 jobs_simulator_fault = 11; // spoiled by the simulator: flagged, not scored + + optional float conciseness = 12; // mean over judged jobs + optional float conversation_progression = 13; // mean over judged jobs } message Create { From 3ee3bc1d475b980baf4c9bbeab23f0ab9eef84bd Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 04:21:41 +0000 Subject: [PATCH 02/32] generated protobuf --- livekit/livekit_agent_simulation.pb.go | 411 +++++++++++--------- livekit/livekit_agent_simulation.twirp.go | 436 +++++++++++----------- 2 files changed, 469 insertions(+), 378 deletions(-) diff --git a/livekit/livekit_agent_simulation.pb.go b/livekit/livekit_agent_simulation.pb.go index 50a2d5807..ddaa02b4f 100644 --- a/livekit/livekit_agent_simulation.pb.go +++ b/livekit/livekit_agent_simulation.pb.go @@ -893,8 +893,9 @@ type SimulationRun_JobMetrics struct { // Headline scores, 0-1, computed by the worker as weighted means over the // members that ran (a missing member renormalizes the rest): // - // accuracy = task_completion x3 + stt.keyterm_recall + (1 - stt.wer) + tts.enunciation_score - // experience = conversation.turn_taking_score x2 + tts.naturalness_score + llm.conciseness_score + // accuracy = task_completion x3 + (1 - stt.wer) + stt.entity_recognition + // experience = conversation.turn_taking_score x2 + conciseness + conversation_progression + // + (1 - conversation.false_interruption_count / agent turns, penalty-only) AccuracyScore *float32 `protobuf:"fixed32,1,opt,name=accuracy_score,json=accuracyScore,proto3,oneof" json:"accuracy_score,omitempty"` // absent when the simulator spoiled the call ExperienceScore *float32 `protobuf:"fixed32,2,opt,name=experience_score,json=experienceScore,proto3,oneof" json:"experience_score,omitempty"` // absent when the simulator spoiled the call // The accuracy anchor: the scenario verdict as 1/0, or the fraction of the declared target state the call reached. @@ -910,8 +911,18 @@ type SimulationRun_JobMetrics struct { AudioJudgeModel string `protobuf:"bytes,11,opt,name=audio_judge_model,json=audioJudgeModel,proto3" json:"audio_judge_model,omitempty"` // audio (LALM) judge; "" if none ran HasRemoteSession bool `protobuf:"varint,12,opt,name=has_remote_session,json=hasRemoteSession,proto3" json:"has_remote_session,omitempty"` // false = waveform-only capture (e.g. SIP) T0 *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=t0,proto3" json:"t0,omitempty"` // audio only; call start (first speech edge); turn times relative to it - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Judged over the authored dialog (text and audio); needs the text judge. + Conciseness *float32 `protobuf:"fixed32,14,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` // judged {0, 0.5, 1} per agent turn: brief enough for voice; job = mean + // Whole-call issue flags (true = issue; absent = not judged), each first-class: + UnnecessaryToolCalls *bool `protobuf:"varint,15,opt,name=unnecessary_tool_calls,json=unnecessaryToolCalls,proto3,oneof" json:"unnecessary_tool_calls,omitempty"` // tool churn the dialog did not require + InformationLoss *bool `protobuf:"varint,16,opt,name=information_loss,json=informationLoss,proto3,oneof" json:"information_loss,omitempty"` // agent dropped or forgot stated facts + RedundantStatements *bool `protobuf:"varint,17,opt,name=redundant_statements,json=redundantStatements,proto3,oneof" json:"redundant_statements,omitempty"` // agent repeated itself without cause + PoorQuestionQuality *bool `protobuf:"varint,18,opt,name=poor_question_quality,json=poorQuestionQuality,proto3,oneof" json:"poor_question_quality,omitempty"` // vague, stacked, or already-answered questions + // Derived from the flags by fixed formula (0 flags = 1.0, 1 = 0.5, 2+ = 0.0); + // the flags reach experience_score only through this, never directly. + ConversationProgression *float32 `protobuf:"fixed32,19,opt,name=conversation_progression,json=conversationProgression,proto3,oneof" json:"conversation_progression,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimulationRun_JobMetrics) Reset() { @@ -1035,21 +1046,65 @@ func (x *SimulationRun_JobMetrics) GetT0() *timestamppb.Timestamp { return nil } +func (x *SimulationRun_JobMetrics) GetConciseness() float32 { + if x != nil && x.Conciseness != nil { + return *x.Conciseness + } + return 0 +} + +func (x *SimulationRun_JobMetrics) GetUnnecessaryToolCalls() bool { + if x != nil && x.UnnecessaryToolCalls != nil { + return *x.UnnecessaryToolCalls + } + return false +} + +func (x *SimulationRun_JobMetrics) GetInformationLoss() bool { + if x != nil && x.InformationLoss != nil { + return *x.InformationLoss + } + return false +} + +func (x *SimulationRun_JobMetrics) GetRedundantStatements() bool { + if x != nil && x.RedundantStatements != nil { + return *x.RedundantStatements + } + return false +} + +func (x *SimulationRun_JobMetrics) GetPoorQuestionQuality() bool { + if x != nil && x.PoorQuestionQuality != nil { + return *x.PoorQuestionQuality + } + return false +} + +func (x *SimulationRun_JobMetrics) GetConversationProgression() float32 { + if x != nil && x.ConversationProgression != nil { + return *x.ConversationProgression + } + return 0 +} + // Aggregates over this run's jobs. Reuses the JobMetrics group shapes. type SimulationRun_RunMetrics struct { - state protoimpl.MessageState `protogen:"open.v1"` - AccuracyScore *float32 `protobuf:"fixed32,1,opt,name=accuracy_score,json=accuracyScore,proto3,oneof" json:"accuracy_score,omitempty"` // mean over scored jobs - ExperienceScore *float32 `protobuf:"fixed32,2,opt,name=experience_score,json=experienceScore,proto3,oneof" json:"experience_score,omitempty"` - ScenarioPassRate *float32 `protobuf:"fixed32,3,opt,name=scenario_pass_rate,json=scenarioPassRate,proto3,oneof" json:"scenario_pass_rate,omitempty"` // share of jobs whose scenario verdict passed - Stt *SimulationRun_JobMetrics_STT `protobuf:"bytes,4,opt,name=stt,proto3" json:"stt,omitempty"` - Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,5,opt,name=llm,proto3" json:"llm,omitempty"` - Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,6,opt,name=tts,proto3" json:"tts,omitempty"` - Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,7,opt,name=conversation,proto3" json:"conversation,omitempty"` - JobsTotal uint32 `protobuf:"varint,9,opt,name=jobs_total,json=jobsTotal,proto3" json:"jobs_total,omitempty"` - JobsMeasured uint32 `protobuf:"varint,10,opt,name=jobs_measured,json=jobsMeasured,proto3" json:"jobs_measured,omitempty"` // composites cover jobs_measured - jobs_simulator_fault - JobsSimulatorFault uint32 `protobuf:"varint,11,opt,name=jobs_simulator_fault,json=jobsSimulatorFault,proto3" json:"jobs_simulator_fault,omitempty"` // spoiled by the simulator: flagged, not scored - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + AccuracyScore *float32 `protobuf:"fixed32,1,opt,name=accuracy_score,json=accuracyScore,proto3,oneof" json:"accuracy_score,omitempty"` // mean over scored jobs + ExperienceScore *float32 `protobuf:"fixed32,2,opt,name=experience_score,json=experienceScore,proto3,oneof" json:"experience_score,omitempty"` + ScenarioPassRate *float32 `protobuf:"fixed32,3,opt,name=scenario_pass_rate,json=scenarioPassRate,proto3,oneof" json:"scenario_pass_rate,omitempty"` // share of jobs whose scenario verdict passed + Stt *SimulationRun_JobMetrics_STT `protobuf:"bytes,4,opt,name=stt,proto3" json:"stt,omitempty"` + Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,5,opt,name=llm,proto3" json:"llm,omitempty"` + Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,6,opt,name=tts,proto3" json:"tts,omitempty"` + Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,7,opt,name=conversation,proto3" json:"conversation,omitempty"` + JobsTotal uint32 `protobuf:"varint,9,opt,name=jobs_total,json=jobsTotal,proto3" json:"jobs_total,omitempty"` + JobsMeasured uint32 `protobuf:"varint,10,opt,name=jobs_measured,json=jobsMeasured,proto3" json:"jobs_measured,omitempty"` // composites cover jobs_measured - jobs_simulator_fault + JobsSimulatorFault uint32 `protobuf:"varint,11,opt,name=jobs_simulator_fault,json=jobsSimulatorFault,proto3" json:"jobs_simulator_fault,omitempty"` // spoiled by the simulator: flagged, not scored + Conciseness *float32 `protobuf:"fixed32,12,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` // mean over judged jobs + ConversationProgression *float32 `protobuf:"fixed32,13,opt,name=conversation_progression,json=conversationProgression,proto3,oneof" json:"conversation_progression,omitempty"` // mean over judged jobs + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimulationRun_RunMetrics) Reset() { @@ -1152,6 +1207,20 @@ func (x *SimulationRun_RunMetrics) GetJobsSimulatorFault() uint32 { return 0 } +func (x *SimulationRun_RunMetrics) GetConciseness() float32 { + if x != nil && x.Conciseness != nil { + return *x.Conciseness + } + return 0 +} + +func (x *SimulationRun_RunMetrics) GetConversationProgression() float32 { + if x != nil && x.ConversationProgression != nil { + return *x.ConversationProgression + } + return 0 +} + type SimulationRun_Create struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -1445,12 +1514,14 @@ type SimulationRun_JobMetrics_STT struct { Cer *float32 `protobuf:"fixed32,4,opt,name=cer,proto3,oneof" json:"cer,omitempty"` // needs the RemoteSession; character error rate, pooled Chars *uint32 `protobuf:"varint,9,opt,name=chars,proto3,oneof" json:"chars,omitempty"` // needs the RemoteSession CharErrors *uint32 `protobuf:"varint,10,opt,name=char_errors,json=charErrors,proto3,oneof" json:"char_errors,omitempty"` // needs the RemoteSession - KeytermRecall *float32 `protobuf:"fixed32,5,opt,name=keyterm_recall,json=keytermRecall,proto3,oneof" json:"keyterm_recall,omitempty"` // needs the RemoteSession; recall of uttered key entities (names, IDs, amounts) - KeytermsUttered *uint32 `protobuf:"varint,6,opt,name=keyterms_uttered,json=keytermsUttered,proto3,oneof" json:"keyterms_uttered,omitempty"` // needs the RemoteSession - KeytermsRecognized *uint32 `protobuf:"varint,7,opt,name=keyterms_recognized,json=keytermsRecognized,proto3,oneof" json:"keyterms_recognized,omitempty"` // needs the RemoteSession TranscriptionLatencyMs *uint32 `protobuf:"varint,8,opt,name=transcription_latency_ms,json=transcriptionLatencyMs,proto3,oneof" json:"transcription_latency_ms,omitempty"` // needs the RemoteSession; agent-reported STT/endpointing delay, mean - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Key entities (names, IDs, amounts) LLM-extracted from the authored dialog, + // scored by occurrence survival over the WER alignment. Needs the text judge. + EntityRecognition *float32 `protobuf:"fixed32,11,opt,name=entity_recognition,json=entityRecognition,proto3,oneof" json:"entity_recognition,omitempty"` // recognized / uttered; feeds accuracy_score + EntitiesUttered *uint32 `protobuf:"varint,12,opt,name=entities_uttered,json=entitiesUttered,proto3,oneof" json:"entities_uttered,omitempty"` // pooling stats + EntitiesRecognized *uint32 `protobuf:"varint,13,opt,name=entities_recognized,json=entitiesRecognized,proto3,oneof" json:"entities_recognized,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimulationRun_JobMetrics_STT) Reset() { @@ -1525,42 +1596,41 @@ func (x *SimulationRun_JobMetrics_STT) GetCharErrors() uint32 { return 0 } -func (x *SimulationRun_JobMetrics_STT) GetKeytermRecall() float32 { - if x != nil && x.KeytermRecall != nil { - return *x.KeytermRecall +func (x *SimulationRun_JobMetrics_STT) GetTranscriptionLatencyMs() uint32 { + if x != nil && x.TranscriptionLatencyMs != nil { + return *x.TranscriptionLatencyMs } return 0 } -func (x *SimulationRun_JobMetrics_STT) GetKeytermsUttered() uint32 { - if x != nil && x.KeytermsUttered != nil { - return *x.KeytermsUttered +func (x *SimulationRun_JobMetrics_STT) GetEntityRecognition() float32 { + if x != nil && x.EntityRecognition != nil { + return *x.EntityRecognition } return 0 } -func (x *SimulationRun_JobMetrics_STT) GetKeytermsRecognized() uint32 { - if x != nil && x.KeytermsRecognized != nil { - return *x.KeytermsRecognized +func (x *SimulationRun_JobMetrics_STT) GetEntitiesUttered() uint32 { + if x != nil && x.EntitiesUttered != nil { + return *x.EntitiesUttered } return 0 } -func (x *SimulationRun_JobMetrics_STT) GetTranscriptionLatencyMs() uint32 { - if x != nil && x.TranscriptionLatencyMs != nil { - return *x.TranscriptionLatencyMs +func (x *SimulationRun_JobMetrics_STT) GetEntitiesRecognized() uint32 { + if x != nil && x.EntitiesRecognized != nil { + return *x.EntitiesRecognized } return 0 } type SimulationRun_JobMetrics_LLM struct { - state protoimpl.MessageState `protogen:"open.v1"` - TtftMs *uint32 `protobuf:"varint,1,opt,name=ttft_ms,json=ttftMs,proto3,oneof" json:"ttft_ms,omitempty"` // needs the RemoteSession; time to first token, mean (per-turn in turns) - TtfsMs *uint32 `protobuf:"varint,2,opt,name=ttfs_ms,json=ttfsMs,proto3,oneof" json:"ttfs_ms,omitempty"` // needs the RemoteSession; time to first sentence (the smallest speakable unit) - TokensPerSecond *float32 `protobuf:"fixed32,3,opt,name=tokens_per_second,json=tokensPerSecond,proto3,oneof" json:"tokens_per_second,omitempty"` // needs the RemoteSession; decode rate, mean (per-turn in turns.llm) - ConcisenessScore *float32 `protobuf:"fixed32,4,opt,name=conciseness_score,json=concisenessScore,proto3,oneof" json:"conciseness_score,omitempty"` // audio only; needs the audio judge; judged 0-1: brief enough for voice - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TtftMs *uint32 `protobuf:"varint,1,opt,name=ttft_ms,json=ttftMs,proto3,oneof" json:"ttft_ms,omitempty"` // needs the RemoteSession; time to first token, mean (per-turn in turns) + TtfsMs *uint32 `protobuf:"varint,2,opt,name=ttfs_ms,json=ttfsMs,proto3,oneof" json:"ttfs_ms,omitempty"` // needs the RemoteSession; time to first sentence (the smallest speakable unit) + TokensPerSecond *float32 `protobuf:"fixed32,3,opt,name=tokens_per_second,json=tokensPerSecond,proto3,oneof" json:"tokens_per_second,omitempty"` // needs the RemoteSession; decode rate, mean (per-turn in turns.llm) + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimulationRun_JobMetrics_LLM) Reset() { @@ -1614,13 +1684,6 @@ func (x *SimulationRun_JobMetrics_LLM) GetTokensPerSecond() float32 { return 0 } -func (x *SimulationRun_JobMetrics_LLM) GetConcisenessScore() float32 { - if x != nil && x.ConcisenessScore != nil { - return *x.ConcisenessScore - } - return 0 -} - // The agent's voice. audio only. type SimulationRun_JobMetrics_TTS struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -1632,13 +1695,15 @@ type SimulationRun_JobMetrics_TTS struct { Cer *float32 `protobuf:"fixed32,9,opt,name=cer,proto3,oneof" json:"cer,omitempty"` // needs the RemoteSession; character error rate, pooled Chars *uint32 `protobuf:"varint,10,opt,name=chars,proto3,oneof" json:"chars,omitempty"` // needs the RemoteSession CharErrors *uint32 `protobuf:"varint,11,opt,name=char_errors,json=charErrors,proto3,oneof" json:"char_errors,omitempty"` // needs the RemoteSession - SpeechRateWpm *float32 `protobuf:"fixed32,4,opt,name=speech_rate_wpm,json=speechRateWpm,proto3,oneof" json:"speech_rate_wpm,omitempty"` // speaking rate; conversational English ~110-150 - HeardWords *uint32 `protobuf:"varint,12,opt,name=heard_words,json=heardWords,proto3,oneof" json:"heard_words,omitempty"` // pooling stats for speech_rate_wpm: raw heard words (not WER tokens) - SpeechMs *uint32 `protobuf:"varint,13,opt,name=speech_ms,json=speechMs,proto3,oneof" json:"speech_ms,omitempty"` // agent voiced time, sum of raw VAD segments NaturalnessScore *float32 `protobuf:"fixed32,5,opt,name=naturalness_score,json=naturalnessScore,proto3,oneof" json:"naturalness_score,omitempty"` // needs the audio judge; judged 0-1: prosody / expressiveness EnunciationScore *float32 `protobuf:"fixed32,6,opt,name=enunciation_score,json=enunciationScore,proto3,oneof" json:"enunciation_score,omitempty"` // needs the audio judge; judged 0-1: key entities audibly intact - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Did the simulator hear the agent's key entities intact? Same + // methodology as STT.entity_*, opposite direction. Needs the text judge. + EntityRecognition *float32 `protobuf:"fixed32,14,opt,name=entity_recognition,json=entityRecognition,proto3,oneof" json:"entity_recognition,omitempty"` + EntitiesUttered *uint32 `protobuf:"varint,15,opt,name=entities_uttered,json=entitiesUttered,proto3,oneof" json:"entities_uttered,omitempty"` // pooling stats + EntitiesRecognized *uint32 `protobuf:"varint,16,opt,name=entities_recognized,json=entitiesRecognized,proto3,oneof" json:"entities_recognized,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimulationRun_JobMetrics_TTS) Reset() { @@ -1727,62 +1792,61 @@ func (x *SimulationRun_JobMetrics_TTS) GetCharErrors() uint32 { return 0 } -func (x *SimulationRun_JobMetrics_TTS) GetSpeechRateWpm() float32 { - if x != nil && x.SpeechRateWpm != nil { - return *x.SpeechRateWpm +func (x *SimulationRun_JobMetrics_TTS) GetNaturalnessScore() float32 { + if x != nil && x.NaturalnessScore != nil { + return *x.NaturalnessScore } return 0 } -func (x *SimulationRun_JobMetrics_TTS) GetHeardWords() uint32 { - if x != nil && x.HeardWords != nil { - return *x.HeardWords +func (x *SimulationRun_JobMetrics_TTS) GetEnunciationScore() float32 { + if x != nil && x.EnunciationScore != nil { + return *x.EnunciationScore } return 0 } -func (x *SimulationRun_JobMetrics_TTS) GetSpeechMs() uint32 { - if x != nil && x.SpeechMs != nil { - return *x.SpeechMs +func (x *SimulationRun_JobMetrics_TTS) GetEntityRecognition() float32 { + if x != nil && x.EntityRecognition != nil { + return *x.EntityRecognition } return 0 } -func (x *SimulationRun_JobMetrics_TTS) GetNaturalnessScore() float32 { - if x != nil && x.NaturalnessScore != nil { - return *x.NaturalnessScore +func (x *SimulationRun_JobMetrics_TTS) GetEntitiesUttered() uint32 { + if x != nil && x.EntitiesUttered != nil { + return *x.EntitiesUttered } return 0 } -func (x *SimulationRun_JobMetrics_TTS) GetEnunciationScore() float32 { - if x != nil && x.EnunciationScore != nil { - return *x.EnunciationScore +func (x *SimulationRun_JobMetrics_TTS) GetEntitiesRecognized() uint32 { + if x != nil && x.EntitiesRecognized != nil { + return *x.EntitiesRecognized } return 0 } // Audio only. type SimulationRun_JobMetrics_Conversation struct { - state protoimpl.MessageState `protogen:"open.v1"` - TurnTakingScore *float32 `protobuf:"fixed32,1,opt,name=turn_taking_score,json=turnTakingScore,proto3,oneof" json:"turn_taking_score,omitempty"` // 0-1: latency curve + cut-in/barge-in/missed-turn penalties - ResponseLatencyP50Ms *int32 `protobuf:"varint,2,opt,name=response_latency_p50_ms,json=responseLatencyP50Ms,proto3,oneof" json:"response_latency_p50_ms,omitempty"` // floor-transfer offset; a gap is > 0, an overlap < 0 - ResponseLatencyP95Ms *int32 `protobuf:"varint,3,opt,name=response_latency_p95_ms,json=responseLatencyP95Ms,proto3,oneof" json:"response_latency_p95_ms,omitempty"` - ResponseLatencyP99Ms *int32 `protobuf:"varint,4,opt,name=response_latency_p99_ms,json=responseLatencyP99Ms,proto3,oneof" json:"response_latency_p99_ms,omitempty"` - ResponseLatencyMs *int32 `protobuf:"varint,16,opt,name=response_latency_ms,json=responseLatencyMs,proto3,oneof" json:"response_latency_ms,omitempty"` // one turn's floor-transfer offset, cut-in if negative; job/run serve the percentiles - AgentYieldLatencyMs *uint32 `protobuf:"varint,5,opt,name=agent_yield_latency_ms,json=agentYieldLatencyMs,proto3,oneof" json:"agent_yield_latency_ms,omitempty"` // agent audio continuing past a barge-in — per turn: on the barging persona row (presence = barge-in); job: mean - EotMispredictionCount *uint32 `protobuf:"varint,6,opt,name=eot_misprediction_count,json=eotMispredictionCount,proto3,oneof" json:"eot_misprediction_count,omitempty"` // agent started before the caller's turn ended; 0/1 per turn - OverlapRatio *float32 `protobuf:"fixed32,7,opt,name=overlap_ratio,json=overlapRatio,proto3,oneof" json:"overlap_ratio,omitempty"` // overlapping speech / total speech - OverlapSpeechMs *uint32 `protobuf:"varint,8,opt,name=overlap_speech_ms,json=overlapSpeechMs,proto3,oneof" json:"overlap_speech_ms,omitempty"` // pooling stats for overlap_ratio - TotalSpeechMs *uint32 `protobuf:"varint,9,opt,name=total_speech_ms,json=totalSpeechMs,proto3,oneof" json:"total_speech_ms,omitempty"` - SilenceTotalMs *uint32 `protobuf:"varint,10,opt,name=silence_total_ms,json=silenceTotalMs,proto3,oneof" json:"silence_total_ms,omitempty"` // dead air within the conversation - AwkwardSilenceCount *uint32 `protobuf:"varint,11,opt,name=awkward_silence_count,json=awkwardSilenceCount,proto3,oneof" json:"awkward_silence_count,omitempty"` // gaps past the natural-pause threshold; 0/1 per turn - UnansweredPersonaTurns *uint32 `protobuf:"varint,12,opt,name=unanswered_persona_turns,json=unansweredPersonaTurns,proto3,oneof" json:"unanswered_persona_turns,omitempty"` // the simulated party spoke, the agent never responded; 0/1 per turn - FalseInterruptionCount *uint32 `protobuf:"varint,13,opt,name=false_interruption_count,json=falseInterruptionCount,proto3,oneof" json:"false_interruption_count,omitempty"` // needs the RemoteSession; agent paused for a non-interruption - FalseInterruptionUnrecoveredCount *uint32 `protobuf:"varint,14,opt,name=false_interruption_unrecovered_count,json=falseInterruptionUnrecoveredCount,proto3,oneof" json:"false_interruption_unrecovered_count,omitempty"` // needs the RemoteSession; of those, never resumed - AgentReportedE2ELatencyMs *uint32 `protobuf:"varint,15,opt,name=agent_reported_e2e_latency_ms,json=agentReportedE2eLatencyMs,proto3,oneof" json:"agent_reported_e2e_latency_ms,omitempty"` // needs the RemoteSession; the agent's own claim, mean - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TurnTakingScore *float32 `protobuf:"fixed32,1,opt,name=turn_taking_score,json=turnTakingScore,proto3,oneof" json:"turn_taking_score,omitempty"` // 0-1: latency curve + cut-in/barge-in/missed-turn penalties + ResponseLatencyP50Ms *int32 `protobuf:"varint,2,opt,name=response_latency_p50_ms,json=responseLatencyP50Ms,proto3,oneof" json:"response_latency_p50_ms,omitempty"` // floor-transfer offset; a gap is > 0, an overlap < 0 + ResponseLatencyP95Ms *int32 `protobuf:"varint,3,opt,name=response_latency_p95_ms,json=responseLatencyP95Ms,proto3,oneof" json:"response_latency_p95_ms,omitempty"` + ResponseLatencyP99Ms *int32 `protobuf:"varint,4,opt,name=response_latency_p99_ms,json=responseLatencyP99Ms,proto3,oneof" json:"response_latency_p99_ms,omitempty"` + ResponseLatencyMs *int32 `protobuf:"varint,16,opt,name=response_latency_ms,json=responseLatencyMs,proto3,oneof" json:"response_latency_ms,omitempty"` // one turn's floor-transfer offset, cut-in if negative; job/run serve the percentiles + ResponseLatencySamples *uint32 `protobuf:"varint,17,opt,name=response_latency_samples,json=responseLatencySamples,proto3,oneof" json:"response_latency_samples,omitempty"` // clean handoffs behind the percentiles; cut-ins are excluded and counted below + AgentYieldLatencyMs *uint32 `protobuf:"varint,5,opt,name=agent_yield_latency_ms,json=agentYieldLatencyMs,proto3,oneof" json:"agent_yield_latency_ms,omitempty"` // agent audio continuing past a barge-in — per turn: on the barging persona row (presence = barge-in); job: mean + EotMispredictionCount *uint32 `protobuf:"varint,6,opt,name=eot_misprediction_count,json=eotMispredictionCount,proto3,oneof" json:"eot_misprediction_count,omitempty"` // agent cut in >= 200ms before the caller's turn ended; 0/1 per turn + OverlapRatio *float32 `protobuf:"fixed32,7,opt,name=overlap_ratio,json=overlapRatio,proto3,oneof" json:"overlap_ratio,omitempty"` // competitive overlap (backchannels excluded) / voiced union + OverlapSpeechMs *uint32 `protobuf:"varint,8,opt,name=overlap_speech_ms,json=overlapSpeechMs,proto3,oneof" json:"overlap_speech_ms,omitempty"` // pooling stats for overlap_ratio + TotalSpeechMs *uint32 `protobuf:"varint,9,opt,name=total_speech_ms,json=totalSpeechMs,proto3,oneof" json:"total_speech_ms,omitempty"` + AwkwardSilenceCount *uint32 `protobuf:"varint,11,opt,name=awkward_silence_count,json=awkwardSilenceCount,proto3,oneof" json:"awkward_silence_count,omitempty"` // gaps past the natural-pause threshold; 0/1 per turn + UnansweredTurns *uint32 `protobuf:"varint,12,opt,name=unanswered_turns,json=unansweredTurns,proto3,oneof" json:"unanswered_turns,omitempty"` // the simulated party spoke, the agent never responded; 0/1 per turn + FalseInterruptionCount *uint32 `protobuf:"varint,13,opt,name=false_interruption_count,json=falseInterruptionCount,proto3,oneof" json:"false_interruption_count,omitempty"` // needs the RemoteSession; agent paused for a non-interruption + AgentReportedE2ELatencyMs *uint32 `protobuf:"varint,15,opt,name=agent_reported_e2e_latency_ms,json=agentReportedE2eLatencyMs,proto3,oneof" json:"agent_reported_e2e_latency_ms,omitempty"` // needs the RemoteSession; the agent's own claim, mean + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimulationRun_JobMetrics_Conversation) Reset() { @@ -1850,6 +1914,13 @@ func (x *SimulationRun_JobMetrics_Conversation) GetResponseLatencyMs() int32 { return 0 } +func (x *SimulationRun_JobMetrics_Conversation) GetResponseLatencySamples() uint32 { + if x != nil && x.ResponseLatencySamples != nil { + return *x.ResponseLatencySamples + } + return 0 +} + func (x *SimulationRun_JobMetrics_Conversation) GetAgentYieldLatencyMs() uint32 { if x != nil && x.AgentYieldLatencyMs != nil { return *x.AgentYieldLatencyMs @@ -1885,13 +1956,6 @@ func (x *SimulationRun_JobMetrics_Conversation) GetTotalSpeechMs() uint32 { return 0 } -func (x *SimulationRun_JobMetrics_Conversation) GetSilenceTotalMs() uint32 { - if x != nil && x.SilenceTotalMs != nil { - return *x.SilenceTotalMs - } - return 0 -} - func (x *SimulationRun_JobMetrics_Conversation) GetAwkwardSilenceCount() uint32 { if x != nil && x.AwkwardSilenceCount != nil { return *x.AwkwardSilenceCount @@ -1899,9 +1963,9 @@ func (x *SimulationRun_JobMetrics_Conversation) GetAwkwardSilenceCount() uint32 return 0 } -func (x *SimulationRun_JobMetrics_Conversation) GetUnansweredPersonaTurns() uint32 { - if x != nil && x.UnansweredPersonaTurns != nil { - return *x.UnansweredPersonaTurns +func (x *SimulationRun_JobMetrics_Conversation) GetUnansweredTurns() uint32 { + if x != nil && x.UnansweredTurns != nil { + return *x.UnansweredTurns } return 0 } @@ -1913,13 +1977,6 @@ func (x *SimulationRun_JobMetrics_Conversation) GetFalseInterruptionCount() uint return 0 } -func (x *SimulationRun_JobMetrics_Conversation) GetFalseInterruptionUnrecoveredCount() uint32 { - if x != nil && x.FalseInterruptionUnrecoveredCount != nil { - return *x.FalseInterruptionUnrecoveredCount - } - return 0 -} - func (x *SimulationRun_JobMetrics_Conversation) GetAgentReportedE2ELatencyMs() uint32 { if x != nil && x.AgentReportedE2ELatencyMs != nil { return *x.AgentReportedE2ELatencyMs @@ -1990,10 +2047,11 @@ type SimulationRun_JobMetrics_Turn struct { StartMs *uint32 `protobuf:"varint,3,opt,name=start_ms,json=startMs,proto3,oneof" json:"start_ms,omitempty"` // audio only; relative to t0; unset if the turn could not be aligned to the audio EndMs *uint32 `protobuf:"varint,4,opt,name=end_ms,json=endMs,proto3,oneof" json:"end_ms,omitempty"` // audio only // Job groups hold means/pools of these; a field with no per-turn measurement stays unset here. - Stt *SimulationRun_JobMetrics_STT `protobuf:"bytes,5,opt,name=stt,proto3" json:"stt,omitempty"` // transcription_latency_ms - Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,6,opt,name=llm,proto3" json:"llm,omitempty"` // ttft_ms, ttfs_ms, tokens_per_second, conciseness_score - Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,7,opt,name=tts,proto3" json:"tts,omitempty"` // ttfa_ms, ttfb_ms, naturalness_score, enunciation_score - Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,8,opt,name=conversation,proto3" json:"conversation,omitempty"` // response_latency_ms, agent_yield_latency_ms, agent_reported_e2e_latency_ms, 0/1 counts + Stt *SimulationRun_JobMetrics_STT `protobuf:"bytes,5,opt,name=stt,proto3" json:"stt,omitempty"` // transcription_latency_ms + Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,6,opt,name=llm,proto3" json:"llm,omitempty"` // ttft_ms, ttfs_ms, tokens_per_second + Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,7,opt,name=tts,proto3" json:"tts,omitempty"` // ttfa_ms, ttfb_ms, naturalness_score, enunciation_score + Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,8,opt,name=conversation,proto3" json:"conversation,omitempty"` // response_latency_ms, agent_yield_latency_ms, agent_reported_e2e_latency_ms, 0/1 counts + Conciseness *float32 `protobuf:"fixed32,9,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` // judged {0, 0.5, 1}: this reply was brief enough for voice unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2084,6 +2142,13 @@ func (x *SimulationRun_JobMetrics_Turn) GetConversation() *SimulationRun_JobMetr return nil } +func (x *SimulationRun_JobMetrics_Turn) GetConciseness() float32 { + if x != nil && x.Conciseness != nil { + return *x.Conciseness + } + return 0 +} + type SimulationRun_Create_Request struct { state protoimpl.MessageState `protogen:"open.v1"` ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` @@ -2787,7 +2852,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\n" + "suggestion\x18\x02 \x01(\tR\n" + "suggestion\x12\x14\n" + - "\x05label\x18\x03 \x01(\tR\x05label\"\xf5<\n" + + "\x05label\x18\x03 \x01(\tR\x05label\"\xf1B\n" + "\rSimulationRun\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + "\n" + @@ -2837,7 +2902,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x10STATUS_COMPLETED\x10\x02\x12\x11\n" + "\rSTATUS_FAILED\x10\x03\x12\x14\n" + "\x10STATUS_CANCELLED\x10\x04J\x04\b\t\x10\n" + - "\x1a\xad \n" + + "\x1a\x95%\n" + "\n" + "JobMetrics\x12*\n" + "\x0eaccuracy_score\x18\x01 \x01(\x02H\x00R\raccuracyScore\x88\x01\x01\x12.\n" + @@ -2854,7 +2919,13 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "judgeModel\x12*\n" + "\x11audio_judge_model\x18\v \x01(\tR\x0faudioJudgeModel\x12,\n" + "\x12has_remote_session\x18\f \x01(\bR\x10hasRemoteSession\x12*\n" + - "\x02t0\x18\r \x01(\v2\x1a.google.protobuf.TimestampR\x02t0\x1a\xa7\x04\n" + + "\x02t0\x18\r \x01(\v2\x1a.google.protobuf.TimestampR\x02t0\x12%\n" + + "\vconciseness\x18\x0e \x01(\x02H\x03R\vconciseness\x88\x01\x01\x129\n" + + "\x16unnecessary_tool_calls\x18\x0f \x01(\bH\x04R\x14unnecessaryToolCalls\x88\x01\x01\x12.\n" + + "\x10information_loss\x18\x10 \x01(\bH\x05R\x0finformationLoss\x88\x01\x01\x126\n" + + "\x14redundant_statements\x18\x11 \x01(\bH\x06R\x13redundantStatements\x88\x01\x01\x127\n" + + "\x15poor_question_quality\x18\x12 \x01(\bH\aR\x13poorQuestionQuality\x88\x01\x01\x12>\n" + + "\x18conversation_progression\x18\x13 \x01(\x02H\bR\x17conversationProgression\x88\x01\x01\x1a\xfc\x04\n" + "\x03STT\x12\x15\n" + "\x03wer\x18\x01 \x01(\x02H\x00R\x03wer\x88\x01\x01\x12\x19\n" + "\x05words\x18\x02 \x01(\rH\x01R\x05words\x88\x01\x01\x12$\n" + @@ -2864,32 +2935,30 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x05chars\x18\t \x01(\rH\x04R\x05chars\x88\x01\x01\x12$\n" + "\vchar_errors\x18\n" + " \x01(\rH\x05R\n" + - "charErrors\x88\x01\x01\x12*\n" + - "\x0ekeyterm_recall\x18\x05 \x01(\x02H\x06R\rkeytermRecall\x88\x01\x01\x12.\n" + - "\x10keyterms_uttered\x18\x06 \x01(\rH\aR\x0fkeytermsUttered\x88\x01\x01\x124\n" + - "\x13keyterms_recognized\x18\a \x01(\rH\bR\x12keytermsRecognized\x88\x01\x01\x12=\n" + - "\x18transcription_latency_ms\x18\b \x01(\rH\tR\x16transcriptionLatencyMs\x88\x01\x01B\x06\n" + + "charErrors\x88\x01\x01\x12=\n" + + "\x18transcription_latency_ms\x18\b \x01(\rH\x06R\x16transcriptionLatencyMs\x88\x01\x01\x122\n" + + "\x12entity_recognition\x18\v \x01(\x02H\aR\x11entityRecognition\x88\x01\x01\x12.\n" + + "\x10entities_uttered\x18\f \x01(\rH\bR\x0fentitiesUttered\x88\x01\x01\x124\n" + + "\x13entities_recognized\x18\r \x01(\rH\tR\x12entitiesRecognized\x88\x01\x01B\x06\n" + "\x04_werB\b\n" + "\x06_wordsB\x0e\n" + "\f_word_errorsB\x06\n" + "\x04_cerB\b\n" + "\x06_charsB\x0e\n" + - "\f_char_errorsB\x11\n" + - "\x0f_keyterm_recallB\x13\n" + - "\x11_keyterms_utteredB\x16\n" + - "\x14_keyterms_recognizedB\x1b\n" + - "\x19_transcription_latency_ms\x1a\xe8\x01\n" + + "\f_char_errorsB\x1b\n" + + "\x19_transcription_latency_msB\x15\n" + + "\x13_entity_recognitionB\x13\n" + + "\x11_entities_utteredB\x16\n" + + "\x14_entities_recognizedJ\x04\b\x05\x10\x06J\x04\b\x06\x10\aJ\x04\b\a\x10\bR\x0ekeyterm_recallR\x10keyterms_utteredR\x13keyterms_recognized\x1a\xb9\x01\n" + "\x03LLM\x12\x1c\n" + "\attft_ms\x18\x01 \x01(\rH\x00R\x06ttftMs\x88\x01\x01\x12\x1c\n" + "\attfs_ms\x18\x02 \x01(\rH\x01R\x06ttfsMs\x88\x01\x01\x12/\n" + - "\x11tokens_per_second\x18\x03 \x01(\x02H\x02R\x0ftokensPerSecond\x88\x01\x01\x120\n" + - "\x11conciseness_score\x18\x04 \x01(\x02H\x03R\x10concisenessScore\x88\x01\x01B\n" + + "\x11tokens_per_second\x18\x03 \x01(\x02H\x02R\x0ftokensPerSecond\x88\x01\x01B\n" + "\n" + "\b_ttft_msB\n" + "\n" + "\b_ttfs_msB\x14\n" + - "\x12_tokens_per_secondB\x14\n" + - "\x12_conciseness_score\x1a\x84\x05\n" + + "\x12_tokens_per_secondJ\x04\b\x04\x10\x05R\x11conciseness_score\x1a\xf6\x05\n" + "\x03TTS\x12\x1c\n" + "\attfa_ms\x18\x01 \x01(\rH\x00R\x06ttfaMs\x88\x01\x01\x12\x1c\n" + "\attfb_ms\x18\x02 \x01(\rH\x01R\x06ttfbMs\x88\x01\x01\x12\x15\n" + @@ -2901,14 +2970,13 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x05chars\x18\n" + " \x01(\rH\x06R\x05chars\x88\x01\x01\x12$\n" + "\vchar_errors\x18\v \x01(\rH\aR\n" + - "charErrors\x88\x01\x01\x12+\n" + - "\x0fspeech_rate_wpm\x18\x04 \x01(\x02H\bR\rspeechRateWpm\x88\x01\x01\x12$\n" + - "\vheard_words\x18\f \x01(\rH\tR\n" + - "heardWords\x88\x01\x01\x12 \n" + - "\tspeech_ms\x18\r \x01(\rH\n" + - "R\bspeechMs\x88\x01\x01\x120\n" + - "\x11naturalness_score\x18\x05 \x01(\x02H\vR\x10naturalnessScore\x88\x01\x01\x120\n" + - "\x11enunciation_score\x18\x06 \x01(\x02H\fR\x10enunciationScore\x88\x01\x01B\n" + + "charErrors\x88\x01\x01\x120\n" + + "\x11naturalness_score\x18\x05 \x01(\x02H\bR\x10naturalnessScore\x88\x01\x01\x120\n" + + "\x11enunciation_score\x18\x06 \x01(\x02H\tR\x10enunciationScore\x88\x01\x01\x122\n" + + "\x12entity_recognition\x18\x0e \x01(\x02H\n" + + "R\x11entityRecognition\x88\x01\x01\x12.\n" + + "\x10entities_uttered\x18\x0f \x01(\rH\vR\x0fentitiesUttered\x88\x01\x01\x124\n" + + "\x13entities_recognized\x18\x10 \x01(\rH\fR\x12entitiesRecognized\x88\x01\x01B\n" + "\n" + "\b_ttfa_msB\n" + "\n" + @@ -2918,54 +2986,51 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\f_word_errorsB\x06\n" + "\x04_cerB\b\n" + "\x06_charsB\x0e\n" + - "\f_char_errorsB\x12\n" + - "\x10_speech_rate_wpmB\x0e\n" + - "\f_heard_wordsB\f\n" + - "\n" + - "_speech_msB\x14\n" + + "\f_char_errorsB\x14\n" + "\x12_naturalness_scoreB\x14\n" + - "\x12_enunciation_score\x1a\xd3\n" + + "\x12_enunciation_scoreB\x15\n" + + "\x13_entity_recognitionB\x13\n" + + "\x11_entities_utteredB\x16\n" + + "\x14_entities_recognizedJ\x04\b\x04\x10\x05J\x04\b\f\x10\rJ\x04\b\r\x10\x0eR\x0fspeech_rate_wpmR\vheard_wordsR\tspeech_ms\x1a\x99\n" + "\n" + "\fConversation\x12/\n" + "\x11turn_taking_score\x18\x01 \x01(\x02H\x00R\x0fturnTakingScore\x88\x01\x01\x12:\n" + "\x17response_latency_p50_ms\x18\x02 \x01(\x05H\x01R\x14responseLatencyP50Ms\x88\x01\x01\x12:\n" + "\x17response_latency_p95_ms\x18\x03 \x01(\x05H\x02R\x14responseLatencyP95Ms\x88\x01\x01\x12:\n" + "\x17response_latency_p99_ms\x18\x04 \x01(\x05H\x03R\x14responseLatencyP99Ms\x88\x01\x01\x123\n" + - "\x13response_latency_ms\x18\x10 \x01(\x05H\x04R\x11responseLatencyMs\x88\x01\x01\x128\n" + - "\x16agent_yield_latency_ms\x18\x05 \x01(\rH\x05R\x13agentYieldLatencyMs\x88\x01\x01\x12;\n" + - "\x17eot_misprediction_count\x18\x06 \x01(\rH\x06R\x15eotMispredictionCount\x88\x01\x01\x12(\n" + - "\roverlap_ratio\x18\a \x01(\x02H\aR\foverlapRatio\x88\x01\x01\x12/\n" + - "\x11overlap_speech_ms\x18\b \x01(\rH\bR\x0foverlapSpeechMs\x88\x01\x01\x12+\n" + - "\x0ftotal_speech_ms\x18\t \x01(\rH\tR\rtotalSpeechMs\x88\x01\x01\x12-\n" + - "\x10silence_total_ms\x18\n" + - " \x01(\rH\n" + - "R\x0esilenceTotalMs\x88\x01\x01\x127\n" + - "\x15awkward_silence_count\x18\v \x01(\rH\vR\x13awkwardSilenceCount\x88\x01\x01\x12=\n" + - "\x18unanswered_persona_turns\x18\f \x01(\rH\fR\x16unansweredPersonaTurns\x88\x01\x01\x12=\n" + - "\x18false_interruption_count\x18\r \x01(\rH\rR\x16falseInterruptionCount\x88\x01\x01\x12T\n" + - "$false_interruption_unrecovered_count\x18\x0e \x01(\rH\x0eR!falseInterruptionUnrecoveredCount\x88\x01\x01\x12E\n" + - "\x1dagent_reported_e2e_latency_ms\x18\x0f \x01(\rH\x0fR\x19agentReportedE2eLatencyMs\x88\x01\x01B\x14\n" + + "\x13response_latency_ms\x18\x10 \x01(\x05H\x04R\x11responseLatencyMs\x88\x01\x01\x12=\n" + + "\x18response_latency_samples\x18\x11 \x01(\rH\x05R\x16responseLatencySamples\x88\x01\x01\x128\n" + + "\x16agent_yield_latency_ms\x18\x05 \x01(\rH\x06R\x13agentYieldLatencyMs\x88\x01\x01\x12;\n" + + "\x17eot_misprediction_count\x18\x06 \x01(\rH\aR\x15eotMispredictionCount\x88\x01\x01\x12(\n" + + "\roverlap_ratio\x18\a \x01(\x02H\bR\foverlapRatio\x88\x01\x01\x12/\n" + + "\x11overlap_speech_ms\x18\b \x01(\rH\tR\x0foverlapSpeechMs\x88\x01\x01\x12+\n" + + "\x0ftotal_speech_ms\x18\t \x01(\rH\n" + + "R\rtotalSpeechMs\x88\x01\x01\x127\n" + + "\x15awkward_silence_count\x18\v \x01(\rH\vR\x13awkwardSilenceCount\x88\x01\x01\x12.\n" + + "\x10unanswered_turns\x18\f \x01(\rH\fR\x0funansweredTurns\x88\x01\x01\x12=\n" + + "\x18false_interruption_count\x18\r \x01(\rH\rR\x16falseInterruptionCount\x88\x01\x01\x12E\n" + + "\x1dagent_reported_e2e_latency_ms\x18\x0f \x01(\rH\x0eR\x19agentReportedE2eLatencyMs\x88\x01\x01B\x14\n" + "\x12_turn_taking_scoreB\x1a\n" + "\x18_response_latency_p50_msB\x1a\n" + "\x18_response_latency_p95_msB\x1a\n" + "\x18_response_latency_p99_msB\x16\n" + - "\x14_response_latency_msB\x19\n" + + "\x14_response_latency_msB\x1b\n" + + "\x19_response_latency_samplesB\x19\n" + "\x17_agent_yield_latency_msB\x1a\n" + "\x18_eot_misprediction_countB\x10\n" + "\x0e_overlap_ratioB\x14\n" + "\x12_overlap_speech_msB\x12\n" + - "\x10_total_speech_msB\x13\n" + - "\x11_silence_total_msB\x18\n" + - "\x16_awkward_silence_countB\x1b\n" + - "\x19_unanswered_persona_turnsB\x1b\n" + - "\x19_false_interruption_countB'\n" + - "%_false_interruption_unrecovered_countB \n" + - "\x1e_agent_reported_e2e_latency_ms\x1a\x98\x01\n" + + "\x10_total_speech_msB\x18\n" + + "\x16_awkward_silence_countB\x13\n" + + "\x11_unanswered_turnsB\x1b\n" + + "\x19_false_interruption_countB \n" + + "\x1e_agent_reported_e2e_latency_msJ\x04\b\n" + + "\x10\vJ\x04\b\x0e\x10\x0fR\x10silence_total_msR$false_interruption_unrecovered_count\x1a\x98\x01\n" + "\tSimulator\x120\n" + "\x11early_termination\x18\x01 \x01(\bH\x00R\x10earlyTermination\x88\x01\x01\x12.\n" + "\x10late_termination\x18\x02 \x01(\bH\x01R\x0flateTermination\x88\x01\x01B\x14\n" + "\x12_early_terminationB\x13\n" + - "\x11_late_termination\x1a\x9c\x03\n" + + "\x11_late_termination\x1a\xd3\x03\n" + "\x04Turn\x12\x14\n" + "\x05index\x18\x01 \x01(\rR\x05index\x12+\n" + "\x04role\x18\x02 \x01(\x0e2\x17.livekit.agent.ChatRoleR\x04role\x12\x1e\n" + @@ -2974,12 +3039,20 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x03stt\x18\x05 \x01(\v2%.livekit.SimulationRun.JobMetrics.STTR\x03stt\x127\n" + "\x03llm\x18\x06 \x01(\v2%.livekit.SimulationRun.JobMetrics.LLMR\x03llm\x127\n" + "\x03tts\x18\a \x01(\v2%.livekit.SimulationRun.JobMetrics.TTSR\x03tts\x12R\n" + - "\fconversation\x18\b \x01(\v2..livekit.SimulationRun.JobMetrics.ConversationR\fconversationB\v\n" + + "\fconversation\x18\b \x01(\v2..livekit.SimulationRun.JobMetrics.ConversationR\fconversation\x12%\n" + + "\vconciseness\x18\t \x01(\x02H\x02R\vconciseness\x88\x01\x01B\v\n" + "\t_start_msB\t\n" + - "\a_end_msB\x11\n" + + "\a_end_msB\x0e\n" + + "\f_concisenessB\x11\n" + "\x0f_accuracy_scoreB\x13\n" + "\x11_experience_scoreB\x12\n" + - "\x10_task_completion\x1a\xcf\x04\n" + + "\x10_task_completionB\x0e\n" + + "\f_concisenessB\x19\n" + + "\x17_unnecessary_tool_callsB\x13\n" + + "\x11_information_lossB\x17\n" + + "\x15_redundant_statementsB\x18\n" + + "\x16_poor_question_qualityB\x1b\n" + + "\x19_conversation_progression\x1a\xe3\x05\n" + "\n" + "RunMetrics\x12*\n" + "\x0eaccuracy_score\x18\x01 \x01(\x02H\x00R\raccuracyScore\x88\x01\x01\x12.\n" + @@ -2993,10 +3066,14 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "jobs_total\x18\t \x01(\rR\tjobsTotal\x12#\n" + "\rjobs_measured\x18\n" + " \x01(\rR\fjobsMeasured\x120\n" + - "\x14jobs_simulator_fault\x18\v \x01(\rR\x12jobsSimulatorFaultB\x11\n" + + "\x14jobs_simulator_fault\x18\v \x01(\rR\x12jobsSimulatorFault\x12%\n" + + "\vconciseness\x18\f \x01(\x02H\x03R\vconciseness\x88\x01\x01\x12>\n" + + "\x18conversation_progression\x18\r \x01(\x02H\x04R\x17conversationProgression\x88\x01\x01B\x11\n" + "\x0f_accuracy_scoreB\x13\n" + "\x11_experience_scoreB\x15\n" + - "\x13_scenario_pass_rate\x1a\xf5\x03\n" + + "\x13_scenario_pass_rateB\x0e\n" + + "\f_concisenessB\x1b\n" + + "\x19_conversation_progression\x1a\xf5\x03\n" + "\x06Create\x1a\xdc\x02\n" + "\aRequest\x12\x1d\n" + "\n" + diff --git a/livekit/livekit_agent_simulation.twirp.go b/livekit/livekit_agent_simulation.twirp.go index b2d752787..e25f7efff 100644 --- a/livekit/livekit_agent_simulation.twirp.go +++ b/livekit/livekit_agent_simulation.twirp.go @@ -1912,216 +1912,230 @@ func (s *agentSimulationServer) PathPrefix() string { } var twirpFileDescriptor9 = []byte{ - // 3365 bytes of a gzipped FileDescriptorProto + // 3599 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x1b, 0x49, - 0x76, 0x37, 0x3f, 0x45, 0x3e, 0x8a, 0x1f, 0x2a, 0xc9, 0x32, 0xdd, 0xb3, 0x9e, 0x91, 0x3d, 0x33, - 0x3b, 0x86, 0x3d, 0x23, 0x2b, 0x9a, 0x75, 0x66, 0xed, 0x99, 0x01, 0x22, 0xca, 0xb4, 0x49, 0x47, - 0x92, 0x95, 0x22, 0x85, 0xc9, 0x4e, 0x10, 0x34, 0x5a, 0xdd, 0x65, 0xaa, 0x65, 0xb2, 0x8b, 0xe9, - 0xaa, 0xb6, 0xac, 0x05, 0x72, 0xcb, 0x61, 0x81, 0x9c, 0x72, 0xcb, 0x21, 0x08, 0x72, 0x59, 0x04, - 0x09, 0x90, 0x53, 0xae, 0x01, 0xf2, 0x27, 0x04, 0x41, 0x80, 0x9c, 0xf2, 0x07, 0x04, 0xb9, 0xef, - 0x3d, 0xa8, 0x57, 0xd5, 0xcd, 0xe6, 0x97, 0xac, 0x9d, 0xcd, 0xdc, 0x72, 0x63, 0xbf, 0xf7, 0x7b, - 0xaf, 0xab, 0x5e, 0xfd, 0xde, 0x7b, 0xd5, 0x55, 0x84, 0x0f, 0x87, 0xfe, 0x5b, 0xf6, 0xc6, 0x97, - 0xb6, 0x33, 0x60, 0x81, 0xb4, 0x85, 0x3f, 0x8a, 0x86, 0x8e, 0xf4, 0x79, 0xb0, 0x3d, 0x0e, 0xb9, - 0xe4, 0x64, 0xc5, 0xe8, 0xad, 0xbb, 0x08, 0x78, 0x34, 0x03, 0x67, 0x42, 0x24, 0x58, 0xeb, 0xa3, - 0x01, 0xe7, 0x83, 0x21, 0x7b, 0x84, 0x4f, 0xa7, 0xd1, 0xeb, 0x47, 0xd2, 0x1f, 0x31, 0x21, 0x9d, - 0xd1, 0xd8, 0x00, 0x6e, 0xc7, 0xd6, 0xee, 0x90, 0x47, 0x9e, 0xf6, 0x61, 0x54, 0x1b, 0xb1, 0x6a, - 0xc4, 0x3d, 0x36, 0x14, 0x5a, 0x7a, 0xef, 0xdf, 0x73, 0xb0, 0xd1, 0x4b, 0x86, 0x44, 0xa3, 0xa0, - 0x17, 0x8d, 0x46, 0x4e, 0x78, 0x49, 0x36, 0xa1, 0x38, 0x76, 0x84, 0x60, 0x5e, 0x33, 0xb3, 0x95, - 0xb9, 0x5f, 0xa0, 0xe6, 0x49, 0xc9, 0x5f, 0x3b, 0xfe, 0x90, 0x79, 0xcd, 0xac, 0x96, 0xeb, 0x27, - 0x72, 0x07, 0x60, 0xc0, 0xfd, 0x60, 0x60, 0x5f, 0xb0, 0xe1, 0xb0, 0x99, 0xdb, 0xca, 0xdc, 0x2f, - 0xd3, 0x32, 0x4a, 0xbe, 0x63, 0xc3, 0xa1, 0x52, 0x4b, 0x6e, 0xfb, 0xa3, 0x71, 0xc8, 0xdf, 0xb2, - 0x66, 0x5e, 0xab, 0x25, 0xef, 0x6a, 0x01, 0xf9, 0x1a, 0x8a, 0xbe, 0x10, 0x11, 0x13, 0xcd, 0xc2, - 0x56, 0xee, 0x7e, 0x65, 0xf7, 0xe3, 0x6d, 0x33, 0xda, 0xed, 0x45, 0x83, 0xdb, 0xee, 0x2a, 0x2c, - 0x35, 0x26, 0xe4, 0x8f, 0x60, 0xd5, 0x3d, 0x73, 0xa4, 0x7d, 0xe6, 0x0b, 0xc9, 0xc3, 0xcb, 0x66, - 0x11, 0x5d, 0x6c, 0x5f, 0xed, 0x62, 0xff, 0xcc, 0x91, 0x1d, 0x6d, 0xd0, 0x0e, 0x64, 0x78, 0x49, - 0x2b, 0xee, 0x44, 0x62, 0x7d, 0x0f, 0x8d, 0x59, 0x00, 0x69, 0x40, 0xee, 0x0d, 0xbb, 0xc4, 0x70, - 0x94, 0xa9, 0xfa, 0x49, 0x76, 0xa0, 0xf0, 0xd6, 0x19, 0x46, 0x0c, 0x43, 0x51, 0xd9, 0xb5, 0x92, - 0x37, 0xea, 0xb8, 0x2b, 0x0f, 0xfb, 0x3c, 0x90, 0xec, 0x9d, 0xa4, 0x1a, 0xf8, 0x34, 0xfb, 0xf3, - 0x8c, 0x65, 0x43, 0x01, 0xc7, 0x4f, 0xb6, 0xa0, 0xe2, 0x31, 0xe1, 0x86, 0xfe, 0x58, 0x8d, 0xcd, - 0x38, 0x4e, 0x8b, 0xc8, 0x87, 0x00, 0x22, 0x1a, 0x0c, 0x98, 0x40, 0x40, 0x16, 0x01, 0x29, 0x09, - 0xd9, 0x80, 0xc2, 0xd0, 0x39, 0x65, 0x71, 0xbc, 0xf5, 0xc3, 0xbd, 0xdf, 0x7c, 0x03, 0xd5, 0xa9, - 0x39, 0x93, 0x1a, 0x64, 0x7d, 0xcf, 0xbc, 0x20, 0xeb, 0xe3, 0x62, 0x8d, 0x43, 0x7e, 0xce, 0x5c, - 0x69, 0xfb, 0x9e, 0xf1, 0x5b, 0x36, 0x92, 0xae, 0x47, 0x1e, 0x43, 0x51, 0x48, 0x47, 0x46, 0x02, - 0xfd, 0xd6, 0x76, 0xef, 0x2c, 0x0e, 0xe5, 0x76, 0x0f, 0x41, 0xd4, 0x80, 0xc9, 0x43, 0x58, 0xd3, - 0xa4, 0x4d, 0xcf, 0x4a, 0x2f, 0x75, 0x03, 0x15, 0xcf, 0x52, 0x53, 0xdb, 0x80, 0x02, 0x0b, 0x43, - 0x1e, 0x36, 0x0b, 0x7a, 0xe8, 0xf8, 0x40, 0x9e, 0x00, 0xb8, 0x21, 0x73, 0x24, 0xf3, 0x6c, 0x47, - 0x36, 0x8b, 0x26, 0xac, 0x9a, 0xf5, 0xdb, 0x31, 0xeb, 0xb7, 0xfb, 0x31, 0xeb, 0x69, 0xd9, 0xa0, - 0xf7, 0x24, 0xd9, 0x86, 0xfc, 0x39, 0x3f, 0x15, 0xcd, 0x15, 0x5c, 0x7d, 0x6b, 0xc9, 0x90, 0x5f, - 0xf2, 0x53, 0x8a, 0x38, 0x15, 0x03, 0x3d, 0xda, 0xc0, 0x19, 0xb1, 0x66, 0x59, 0xc7, 0x00, 0x25, - 0x47, 0xce, 0x88, 0x91, 0x6f, 0xa1, 0x26, 0x5c, 0x16, 0x38, 0xa1, 0xcf, 0xed, 0x41, 0xc8, 0xa3, - 0x71, 0x13, 0x70, 0x34, 0x9b, 0x13, 0xc7, 0x46, 0xfd, 0x42, 0x69, 0x69, 0x55, 0xa4, 0x1f, 0xc9, - 0x63, 0x28, 0xb1, 0xc0, 0xd3, 0xd3, 0xa8, 0xbc, 0x77, 0x1a, 0x2b, 0x88, 0xdd, 0x93, 0xe4, 0x03, - 0x28, 0x9f, 0xf3, 0x53, 0xdb, 0xe5, 0x51, 0x20, 0x9b, 0xab, 0x98, 0x60, 0xa5, 0x73, 0x7e, 0xba, - 0xaf, 0x9e, 0xc9, 0x5d, 0x58, 0xd5, 0x49, 0x68, 0xf4, 0x55, 0xd4, 0x57, 0xb4, 0x2c, 0x81, 0xe8, - 0x7c, 0x34, 0x90, 0x9a, 0x86, 0x68, 0x99, 0x86, 0x7c, 0x06, 0xf5, 0x20, 0x1a, 0xa5, 0xea, 0x90, - 0x68, 0xd6, 0x11, 0x55, 0x0b, 0xa2, 0xd1, 0x24, 0x58, 0x82, 0xec, 0x42, 0x21, 0x12, 0xce, 0x80, - 0x35, 0x1b, 0x38, 0xfe, 0x9f, 0x2c, 0x89, 0xe8, 0x89, 0xc2, 0x50, 0x0d, 0x55, 0x94, 0x76, 0x79, - 0xe0, 0x46, 0x61, 0xc8, 0x02, 0xf7, 0xb2, 0xb9, 0xa6, 0x5f, 0x9f, 0x12, 0x91, 0x87, 0x90, 0x57, - 0x05, 0xa8, 0x49, 0x90, 0x59, 0xb7, 0x16, 0x38, 0x3d, 0xe4, 0x1e, 0xa3, 0x08, 0x22, 0x5f, 0xc3, - 0xca, 0x88, 0xc9, 0xd0, 0x77, 0x45, 0x73, 0x1d, 0x07, 0x71, 0x77, 0xc9, 0x20, 0x68, 0x14, 0x1c, - 0x6a, 0x20, 0x8d, 0x2d, 0x54, 0x2c, 0x84, 0x4e, 0x76, 0xfb, 0x97, 0x42, 0x7a, 0xcd, 0x8d, 0xad, - 0xcc, 0xfd, 0x55, 0x5a, 0x31, 0xb2, 0xef, 0x85, 0xf4, 0xac, 0xff, 0x2c, 0x40, 0xee, 0x25, 0x3f, - 0x9d, 0xcb, 0x8f, 0x27, 0x49, 0x02, 0x64, 0x71, 0x98, 0x77, 0x97, 0xb3, 0x69, 0x36, 0x09, 0xee, - 0xc1, 0xaa, 0x1f, 0x08, 0x19, 0x46, 0xae, 0x8e, 0xad, 0xce, 0xcc, 0x29, 0xd9, 0x84, 0xfb, 0xf9, - 0x34, 0xf7, 0xbf, 0x00, 0xa2, 0x09, 0xc9, 0xde, 0x8d, 0x99, 0x2b, 0xcd, 0xda, 0xe8, 0xf4, 0xd0, - 0x89, 0xd5, 0x4e, 0x29, 0x26, 0xb9, 0x5f, 0x4c, 0xe5, 0x3e, 0x21, 0x90, 0x97, 0xce, 0x40, 0x67, - 0x41, 0x99, 0xe2, 0x6f, 0x45, 0xaa, 0x90, 0xf3, 0x91, 0x26, 0x7a, 0x09, 0xd1, 0x25, 0x25, 0x40, - 0x9e, 0x3f, 0x01, 0x10, 0xd2, 0x09, 0x4d, 0xc6, 0xc1, 0xfb, 0x33, 0xce, 0xa0, 0xf7, 0xe4, 0x0f, - 0xe5, 0xf8, 0x2d, 0x58, 0xc1, 0xe1, 0xf8, 0x1e, 0x32, 0xbc, 0x4c, 0x8b, 0xea, 0xb1, 0xeb, 0x91, - 0xdf, 0x8f, 0x09, 0x57, 0x45, 0x67, 0x5b, 0x57, 0x04, 0x7d, 0x8a, 0x74, 0x29, 0x96, 0xd4, 0xae, - 0x64, 0xc9, 0x4b, 0x7e, 0x3a, 0xcb, 0x12, 0xeb, 0x4f, 0xa1, 0x80, 0xce, 0xc8, 0x7d, 0x68, 0xa8, - 0x4a, 0x6d, 0xcb, 0x28, 0x0c, 0x84, 0x49, 0x1f, 0xdd, 0xfa, 0x6a, 0x4a, 0xde, 0x57, 0x62, 0x9d, - 0x41, 0x0f, 0x60, 0xcd, 0x89, 0x3c, 0x9f, 0x4f, 0x41, 0x75, 0x37, 0xac, 0xa3, 0x62, 0x82, 0xbd, - 0xc7, 0xa1, 0xa8, 0x09, 0x42, 0x08, 0xd4, 0x7a, 0xfd, 0xbd, 0xfe, 0x49, 0xcf, 0x3e, 0x6e, 0x1f, - 0x3d, 0xeb, 0x1e, 0xbd, 0x68, 0xdc, 0x48, 0xc9, 0xe8, 0xc9, 0xd1, 0x91, 0x92, 0x65, 0xc8, 0x06, - 0x34, 0x8c, 0x6c, 0xff, 0xd5, 0xe1, 0xf1, 0x41, 0xbb, 0xdf, 0x7e, 0xd6, 0xc8, 0x92, 0x35, 0xa8, - 0x1a, 0xe9, 0xf3, 0xbd, 0xee, 0x41, 0xfb, 0x59, 0x23, 0x97, 0x06, 0xee, 0x1d, 0xed, 0xb7, 0x0f, - 0x94, 0x34, 0xff, 0x32, 0x5f, 0x2a, 0x37, 0xc0, 0xfa, 0xa7, 0x2d, 0x80, 0xc9, 0x6c, 0xc9, 0x03, - 0xa8, 0x39, 0xae, 0x1b, 0x85, 0x8e, 0x7b, 0x69, 0x0b, 0x97, 0x87, 0x0c, 0x67, 0x96, 0xed, 0xdc, - 0xa0, 0xd5, 0x58, 0xde, 0x53, 0xe2, 0x5f, 0x65, 0x32, 0x64, 0x1b, 0x1a, 0x8a, 0x80, 0xa1, 0xcf, - 0x02, 0x97, 0x19, 0x74, 0x16, 0xd1, 0x19, 0x5a, 0x9f, 0x68, 0x12, 0xfc, 0xe7, 0x50, 0x97, 0x8e, - 0x78, 0x63, 0xbb, 0x7c, 0x34, 0x1e, 0x32, 0xac, 0xf9, 0x39, 0x84, 0x67, 0x69, 0x4d, 0x29, 0xf6, - 0x13, 0xb9, 0x42, 0x7f, 0x05, 0x39, 0x21, 0x25, 0x12, 0xbf, 0xb2, 0xfb, 0xe9, 0x7b, 0xd7, 0x69, - 0xbb, 0xd7, 0xef, 0x53, 0x65, 0xa1, 0x0c, 0x87, 0xc3, 0x11, 0xa6, 0xc3, 0xb5, 0x0c, 0x0f, 0x0e, - 0x0e, 0xa9, 0xb2, 0x50, 0x86, 0x52, 0x0a, 0xd3, 0x4b, 0xae, 0x61, 0xd8, 0xef, 0xf7, 0xa8, 0xb2, - 0x20, 0x14, 0x56, 0x5d, 0x1e, 0xbc, 0x65, 0xa1, 0x40, 0x58, 0x73, 0x05, 0x3d, 0x6c, 0xbf, 0xdf, - 0xc3, 0x7e, 0xca, 0x8a, 0x4e, 0xf9, 0x20, 0x5d, 0x28, 0x9b, 0xc2, 0xcb, 0x43, 0x4c, 0xc5, 0xca, - 0xee, 0xc3, 0x6b, 0x04, 0x21, 0x36, 0xa1, 0x13, 0x6b, 0xf2, 0x0d, 0x14, 0x90, 0x7f, 0xcd, 0x32, - 0x36, 0xbc, 0x9f, 0x5e, 0x63, 0x66, 0x51, 0x18, 0x50, 0x6d, 0x44, 0x3e, 0x82, 0xca, 0x79, 0xe4, - 0x0d, 0x98, 0xde, 0x0d, 0x62, 0xde, 0x97, 0x29, 0xa0, 0x48, 0xd5, 0xdf, 0xe1, 0x84, 0xe4, 0x69, - 0x58, 0x05, 0x61, 0x9a, 0xe4, 0x2f, 0x27, 0xd8, 0xcf, 0x81, 0x9c, 0x39, 0xc2, 0x0e, 0xd9, 0x88, - 0x4b, 0x16, 0x6f, 0x59, 0x31, 0xb9, 0x4b, 0xb4, 0x71, 0xe6, 0x08, 0x8a, 0x8a, 0x9e, 0x96, 0x93, - 0x07, 0x90, 0x95, 0x3b, 0x26, 0xc7, 0xaf, 0x2a, 0x18, 0x59, 0xb9, 0x63, 0xfd, 0x7d, 0x1e, 0x72, - 0xbd, 0x7e, 0x9f, 0xdc, 0x84, 0xdc, 0x05, 0x0b, 0x13, 0xd6, 0xaa, 0x07, 0xc5, 0xa6, 0xdb, 0x50, - 0xb8, 0xe0, 0xa1, 0xa7, 0xcb, 0x74, 0xb5, 0x93, 0xa1, 0xfa, 0x51, 0xa9, 0x3e, 0x81, 0x8a, 0xfa, - 0x6d, 0x63, 0x6d, 0xd5, 0x65, 0xb8, 0xda, 0xc9, 0x52, 0x50, 0xc2, 0x36, 0xca, 0x14, 0xea, 0x26, - 0xe4, 0x5c, 0xa6, 0xeb, 0x70, 0xb6, 0x93, 0xa3, 0xea, 0xc1, 0xf8, 0x75, 0xcf, 0x9c, 0x50, 0xe0, - 0xb6, 0xa0, 0xda, 0xc9, 0x53, 0xfd, 0x68, 0xfc, 0xaa, 0xdf, 0xb1, 0x5f, 0x40, 0x40, 0x81, 0x82, - 0x12, 0x4e, 0xfc, 0x3e, 0x80, 0xda, 0x1b, 0x76, 0x29, 0x59, 0x38, 0xb2, 0x43, 0xe6, 0x3a, 0xc3, - 0x21, 0x12, 0x37, 0xdb, 0x29, 0xd2, 0xaa, 0x91, 0x53, 0x14, 0x9b, 0x84, 0x33, 0x32, 0x61, 0x47, - 0x52, 0xb2, 0x90, 0x79, 0xc8, 0xd6, 0x6a, 0x67, 0x85, 0xd6, 0x63, 0xcd, 0x89, 0x56, 0x28, 0xfc, - 0xcf, 0x60, 0x3d, 0xc1, 0x87, 0xcc, 0xe5, 0x83, 0xc0, 0xff, 0x25, 0xf3, 0x90, 0x9e, 0xd5, 0x4e, - 0x89, 0x92, 0x58, 0x49, 0x13, 0x9d, 0xb2, 0xfa, 0x16, 0x9a, 0x32, 0x74, 0x82, 0x64, 0x03, 0x66, - 0x0f, 0x1d, 0xa9, 0x1a, 0xb2, 0x3d, 0x12, 0x48, 0xc4, 0x6a, 0xa7, 0x4c, 0x37, 0xa7, 0x10, 0x07, - 0x1a, 0x70, 0xa8, 0x26, 0xd4, 0x2a, 0x42, 0xde, 0xbe, 0x60, 0x61, 0xab, 0x04, 0x45, 0x1b, 0x63, - 0xdc, 0xaa, 0xc1, 0xaa, 0x9d, 0x8a, 0x30, 0x22, 0x5c, 0x83, 0xc0, 0x68, 0x21, 0x22, 0x15, 0xab, - 0xd6, 0x1a, 0xd4, 0xed, 0xe9, 0xa8, 0xb4, 0xd6, 0x61, 0xcd, 0x9e, 0x9d, 0x7c, 0x6b, 0x13, 0x36, - 0xec, 0x05, 0x33, 0x6c, 0x7d, 0x00, 0xb7, 0xed, 0x65, 0x73, 0xb0, 0xfe, 0x3b, 0x03, 0xb9, 0x83, - 0x83, 0x43, 0xf2, 0x13, 0x58, 0x91, 0xf2, 0xb5, 0x54, 0xd3, 0xca, 0xe0, 0xb4, 0x6e, 0xd0, 0xa2, - 0x12, 0xe0, 0x34, 0x8c, 0x56, 0x28, 0x6d, 0x4c, 0x19, 0xa5, 0x15, 0x5a, 0xfb, 0x08, 0xd6, 0x24, - 0x7f, 0xc3, 0x02, 0x61, 0x8f, 0x59, 0x68, 0x0b, 0xe6, 0xf2, 0xc0, 0x4b, 0x8a, 0x59, 0x5d, 0xab, - 0x8e, 0x59, 0xd8, 0x43, 0x85, 0x32, 0xd8, 0x81, 0x35, 0xb5, 0xb7, 0xf1, 0x05, 0x0b, 0x98, 0x10, - 0xa6, 0x58, 0xc6, 0x64, 0x6a, 0xa4, 0x54, 0x71, 0xb5, 0x6c, 0x01, 0x94, 0x6c, 0x33, 0xbe, 0xf8, - 0xb7, 0x1a, 0x4d, 0x6b, 0x03, 0x88, 0x3d, 0xf7, 0x6e, 0x94, 0xce, 0xbd, 0xc0, 0xfa, 0x8b, 0x02, - 0xe4, 0xfa, 0xfd, 0x9e, 0x99, 0x8c, 0x33, 0x3b, 0x55, 0x27, 0x3d, 0xd5, 0xd3, 0xd9, 0xa9, 0x9e, - 0x1e, 0xc6, 0xc4, 0x57, 0x09, 0x15, 0x4f, 0x6e, 0x2e, 0xa1, 0x34, 0x9b, 0x72, 0xcb, 0x13, 0xaa, - 0x64, 0x32, 0x63, 0x71, 0x42, 0x95, 0xd1, 0x6f, 0x61, 0x3e, 0xa1, 0x74, 0xbe, 0x14, 0x97, 0x27, - 0x54, 0xc5, 0x30, 0x7f, 0x26, 0xa1, 0x1e, 0x42, 0x5d, 0x8c, 0x19, 0x73, 0xcf, 0xec, 0xd0, 0x91, - 0xcc, 0xbe, 0x18, 0x8f, 0x4c, 0x9c, 0x4b, 0xb4, 0xaa, 0x15, 0xd4, 0x91, 0xec, 0xbb, 0xf1, 0xc8, - 0xb8, 0x3c, 0x63, 0x4e, 0xe8, 0x69, 0xa6, 0x62, 0x21, 0x52, 0xf4, 0x06, 0x14, 0x7e, 0x17, 0x4f, - 0x68, 0x0b, 0xca, 0xc6, 0xe5, 0x48, 0x60, 0x39, 0xaa, 0x76, 0x80, 0x96, 0xb4, 0x48, 0x07, 0x69, - 0x07, 0xd6, 0x02, 0x47, 0x46, 0xa1, 0x33, 0x4c, 0x2d, 0xaf, 0x4e, 0xe4, 0x0a, 0x6d, 0xa4, 0x54, - 0x49, 0x33, 0xdc, 0x81, 0x35, 0x16, 0x44, 0x81, 0xeb, 0x63, 0xfd, 0x35, 0x16, 0x45, 0xb4, 0x58, - 0xa5, 0x8d, 0x94, 0x6a, 0x96, 0x10, 0x4e, 0x8a, 0x10, 0x6a, 0xcd, 0xfe, 0x4f, 0x12, 0x8e, 0x40, - 0xc3, 0x9e, 0x89, 0x1a, 0x62, 0x52, 0xc1, 0x69, 0xad, 0x02, 0xd8, 0x49, 0x18, 0x90, 0x70, 0x73, - 0x53, 0x46, 0xe9, 0xdc, 0xb4, 0xac, 0xff, 0x00, 0x58, 0x4d, 0xb7, 0x3a, 0x4c, 0x9f, 0x28, 0x0c, - 0x6c, 0xe9, 0xbc, 0xf1, 0x83, 0xc1, 0xcc, 0x46, 0xa3, 0xae, 0x54, 0x7d, 0xd4, 0x24, 0xd1, 0x7a, - 0x0a, 0xb7, 0x42, 0x26, 0xc6, 0x3c, 0x10, 0x2c, 0x49, 0xe5, 0xf1, 0xe3, 0x9d, 0x98, 0xb2, 0x85, - 0x4e, 0x86, 0x6e, 0xc4, 0x00, 0x53, 0x8d, 0x8e, 0x1f, 0xef, 0xe8, 0xb5, 0x59, 0x68, 0xfb, 0xe4, - 0xb1, 0xb2, 0xcd, 0xa1, 0x6d, 0x76, 0xde, 0xf6, 0xc9, 0xe3, 0xab, 0x6c, 0x9f, 0x28, 0xdb, 0x3c, - 0xda, 0xe6, 0x16, 0xd8, 0x3e, 0xd1, 0xb6, 0x5f, 0xc2, 0xfa, 0x9c, 0xed, 0x48, 0xe0, 0x37, 0x52, - 0xa1, 0x93, 0xa7, 0x6b, 0x33, 0x76, 0xda, 0xe8, 0xe7, 0xb0, 0xa9, 0xb7, 0xf6, 0x97, 0x3e, 0x1b, - 0x7a, 0x69, 0xbb, 0x82, 0xe9, 0x1f, 0xeb, 0xa8, 0xff, 0x85, 0x52, 0x4f, 0x59, 0x7e, 0x0d, 0xb7, - 0x18, 0x97, 0xf6, 0xc8, 0x17, 0xe3, 0x90, 0x79, 0x3e, 0x7e, 0x40, 0x98, 0x1d, 0x67, 0xd1, 0xa4, - 0xd2, 0x4d, 0xc6, 0xe5, 0x61, 0x5a, 0x8f, 0x3b, 0x4f, 0x65, 0x7c, 0x1f, 0xaa, 0xfc, 0x2d, 0x0b, - 0x87, 0xce, 0x58, 0xad, 0xbf, 0xcf, 0x31, 0xab, 0xb3, 0x9d, 0x15, 0xba, 0x6a, 0xc4, 0x54, 0x49, - 0x4d, 0xe5, 0x8b, 0x91, 0x93, 0x9c, 0x28, 0x99, 0x8e, 0x52, 0x37, 0xaa, 0x5e, 0x2a, 0x35, 0x1e, - 0x42, 0x5d, 0x72, 0xe9, 0x0c, 0x53, 0xf0, 0xb2, 0x49, 0xb3, 0x2a, 0x2a, 0xd2, 0xe0, 0x2f, 0xa0, - 0x21, 0xfc, 0x21, 0xee, 0x27, 0xb5, 0xd1, 0x28, 0x2e, 0x04, 0x40, 0x6b, 0x46, 0xd3, 0x57, 0x0a, - 0x0d, 0xff, 0x0a, 0x6e, 0x3a, 0x17, 0x6f, 0x2e, 0x14, 0x47, 0x63, 0x33, 0x3d, 0x63, 0x5d, 0x1b, - 0x2a, 0x74, 0xdd, 0xa8, 0x7b, 0x5a, 0x9b, 0xcc, 0xf7, 0x5b, 0x68, 0x46, 0x81, 0x13, 0x88, 0x0b, - 0xd5, 0x46, 0x54, 0x1d, 0x15, 0x3c, 0x70, 0xf4, 0x2e, 0xdd, 0x14, 0x81, 0x55, 0xba, 0x39, 0x41, - 0x1c, 0x6b, 0x00, 0xee, 0xd6, 0x8d, 0xf9, 0x6b, 0x67, 0x28, 0x98, 0xed, 0x07, 0x92, 0x85, 0x61, - 0x34, 0x4e, 0x05, 0x5b, 0xd7, 0x87, 0x2a, 0xdd, 0x44, 0x44, 0x37, 0x05, 0x48, 0xde, 0xde, 0x87, - 0x4f, 0x16, 0x98, 0x47, 0x81, 0xea, 0x60, 0x6f, 0x71, 0x44, 0x93, 0x6f, 0xf2, 0x6a, 0xa7, 0x46, - 0xef, 0xce, 0xb9, 0x3a, 0x99, 0x60, 0x13, 0xaf, 0x6d, 0xb8, 0xa3, 0xa9, 0x13, 0xb2, 0x31, 0xc7, - 0xcf, 0x34, 0xb6, 0x3b, 0xc5, 0xbc, 0x3a, 0xba, 0xab, 0xd3, 0xdb, 0x08, 0xa3, 0x06, 0xd5, 0xde, - 0x9d, 0x62, 0xa0, 0xee, 0x2f, 0xb3, 0xc9, 0xd9, 0xb2, 0xa0, 0x69, 0x2f, 0xc9, 0xc0, 0x25, 0x3a, - 0xcc, 0xb0, 0x65, 0x3a, 0x95, 0x41, 0xd8, 0xbd, 0x17, 0x64, 0x48, 0xeb, 0x36, 0xdc, 0xb2, 0x17, - 0x27, 0x01, 0xba, 0x5b, 0xc2, 0xf2, 0x56, 0x03, 0x6a, 0xf6, 0x14, 0x89, 0x71, 0x2a, 0x73, 0x64, - 0xc5, 0x5a, 0x37, 0xc3, 0x48, 0xdc, 0x5d, 0xcc, 0x12, 0xaf, 0xd5, 0x84, 0x4d, 0x7b, 0x21, 0xbd, - 0x70, 0x7f, 0xb1, 0x8c, 0x3f, 0xa8, 0x5c, 0xc6, 0x8e, 0xd6, 0x67, 0xf0, 0xa9, 0x7d, 0x9d, 0xb5, - 0x6f, 0x6d, 0xc1, 0x87, 0xf6, 0x95, 0xcb, 0x69, 0xfd, 0x75, 0x06, 0xca, 0xc9, 0x7e, 0x1f, 0xfb, - 0x89, 0x13, 0x0e, 0x2f, 0x6d, 0xb5, 0x19, 0xf2, 0x03, 0x27, 0x39, 0x28, 0x2c, 0x75, 0x6e, 0xd0, - 0x06, 0xaa, 0xfa, 0x13, 0x8d, 0xd9, 0x4d, 0x2a, 0x6f, 0x53, 0x06, 0x59, 0x34, 0xc8, 0xd0, 0xba, - 0xd2, 0x4c, 0xe3, 0x75, 0x6d, 0x9f, 0x7d, 0x05, 0x46, 0x6e, 0xd6, 0x8d, 0xf5, 0x37, 0x39, 0xc8, - 0xab, 0x64, 0x21, 0x1b, 0x50, 0xf0, 0x03, 0x8f, 0xbd, 0xd3, 0xdb, 0x0e, 0xaa, 0x1f, 0xc8, 0x43, - 0xc8, 0x87, 0x7c, 0xc8, 0xcc, 0x91, 0xc9, 0xad, 0x05, 0x87, 0xa1, 0x94, 0x0f, 0x19, 0x45, 0x10, - 0xf9, 0x10, 0x4a, 0x78, 0x90, 0x10, 0xd7, 0x6b, 0xb5, 0x79, 0x59, 0x41, 0x89, 0xae, 0x01, 0x16, - 0x14, 0x59, 0xe0, 0xc5, 0x15, 0x19, 0xb7, 0xf6, 0x2c, 0xf0, 0xe2, 0xfa, 0x80, 0xdf, 0x90, 0x85, - 0x1f, 0xfa, 0x0d, 0x59, 0xfc, 0xa1, 0xdf, 0x90, 0x2b, 0xbf, 0xf3, 0x37, 0x64, 0xe9, 0x77, 0xff, - 0x86, 0x6c, 0x55, 0xa0, 0x6c, 0xc7, 0xb1, 0x6b, 0x95, 0x61, 0xc5, 0xd6, 0x81, 0xc2, 0xed, 0xf5, - 0xf4, 0x57, 0x3e, 0x2e, 0xe3, 0xec, 0xc7, 0xbc, 0xce, 0x94, 0xe9, 0x2f, 0x76, 0xeb, 0xdf, 0xf2, - 0x00, 0x93, 0x33, 0xb4, 0x1f, 0xf5, 0xbc, 0xe0, 0xf7, 0x80, 0x24, 0x07, 0xab, 0x63, 0x47, 0x08, - 0xdc, 0x9a, 0x24, 0x1b, 0xd1, 0x46, 0xac, 0x3b, 0x76, 0x84, 0x50, 0x5b, 0xba, 0xff, 0x3f, 0x34, - 0x20, 0x77, 0x00, 0xce, 0xf9, 0xa9, 0xd0, 0x25, 0x4c, 0xb7, 0x59, 0x5a, 0x56, 0x12, 0xec, 0x99, - 0xe4, 0x63, 0xa8, 0xa2, 0x7a, 0xc4, 0x1c, 0x11, 0xa9, 0x8f, 0x47, 0x6c, 0xad, 0x74, 0x55, 0x09, - 0x0f, 0x8d, 0x8c, 0xec, 0xc0, 0x06, 0x82, 0x92, 0xf3, 0x03, 0xfb, 0xb5, 0x13, 0x0d, 0x4d, 0x4b, - 0xa5, 0x44, 0xe9, 0x92, 0xaa, 0xf3, 0x5c, 0x69, 0xae, 0x4d, 0xa7, 0x9b, 0xb0, 0x6e, 0xcf, 0x2f, - 0xa8, 0xf5, 0x9b, 0x1c, 0x14, 0xf7, 0xf1, 0x70, 0xde, 0xfa, 0xaf, 0x2c, 0xac, 0x50, 0xf6, 0x67, - 0x11, 0x13, 0x72, 0xe6, 0xe6, 0x21, 0x33, 0x7b, 0xf3, 0x30, 0x7d, 0x28, 0x9f, 0x9d, 0x3d, 0x94, - 0x5f, 0x70, 0x76, 0x9d, 0x5f, 0x78, 0x76, 0xbd, 0x09, 0xc5, 0x90, 0x0d, 0xd4, 0x02, 0x14, 0xcd, - 0x11, 0x23, 0x3e, 0x91, 0xd6, 0xdc, 0xa9, 0xfe, 0xca, 0x55, 0xa7, 0xfa, 0x8a, 0xf0, 0x53, 0xe7, - 0xfa, 0x8a, 0x8d, 0x9f, 0x4e, 0x9f, 0x71, 0x97, 0xcc, 0x4e, 0x35, 0x2d, 0xd4, 0x3b, 0x24, 0x7d, - 0xd0, 0x5d, 0xbe, 0xc6, 0x41, 0x37, 0x06, 0x7b, 0x7a, 0x60, 0x7a, 0x33, 0x3f, 0x71, 0xf9, 0x32, - 0x5f, 0xca, 0x35, 0xf2, 0x74, 0xfe, 0x86, 0xc5, 0xfa, 0xcb, 0x0c, 0x94, 0xa8, 0x69, 0xb8, 0xe4, - 0x01, 0xac, 0x4d, 0xa2, 0x63, 0x87, 0x51, 0x30, 0x09, 0x73, 0x5d, 0xa4, 0xb9, 0xd7, 0xf5, 0x48, - 0x0f, 0x36, 0xc7, 0x21, 0x13, 0xfe, 0x20, 0x50, 0xdd, 0x8e, 0x0b, 0xd5, 0x94, 0x70, 0x95, 0xcc, - 0x7d, 0xd6, 0xe4, 0xda, 0xe7, 0x38, 0x86, 0x1d, 0x73, 0x21, 0xcd, 0x52, 0xd2, 0x8d, 0xf1, 0x02, - 0xa9, 0xf5, 0x77, 0x19, 0x58, 0xdf, 0xe7, 0xc1, 0x6b, 0x3f, 0x1c, 0xf5, 0x78, 0x14, 0xba, 0xec, - 0x64, 0x3c, 0xe4, 0x8e, 0x67, 0xfd, 0xf9, 0xb5, 0x39, 0xb0, 0x70, 0x0a, 0xd9, 0xc5, 0x53, 0xf8, - 0x0c, 0xea, 0x2e, 0xf7, 0x98, 0xcd, 0x02, 0x19, 0x5e, 0x8e, 0xb9, 0x1f, 0x48, 0x73, 0xe0, 0x5e, - 0x53, 0xe2, 0x76, 0x22, 0xb5, 0x60, 0x12, 0x23, 0xeb, 0xaf, 0x32, 0x90, 0x7b, 0xc1, 0xa4, 0xd5, - 0xff, 0x31, 0x86, 0x64, 0xfd, 0x2c, 0xb5, 0x1a, 0xf7, 0x21, 0x17, 0x46, 0xba, 0x61, 0x4f, 0x71, - 0x2c, 0x6d, 0x42, 0x15, 0xc4, 0xfa, 0xd7, 0x2c, 0xe4, 0x0f, 0x7c, 0x21, 0xad, 0x7f, 0xc9, 0x5c, - 0x7b, 0x54, 0x4f, 0x67, 0x6e, 0x29, 0xae, 0xbe, 0xa6, 0xeb, 0xdc, 0x88, 0xef, 0x28, 0x14, 0x3b, - 0xbf, 0x01, 0x18, 0x3b, 0x03, 0xa6, 0xcf, 0x1c, 0x30, 0x66, 0x95, 0xdd, 0x66, 0x62, 0xdf, 0x57, - 0xd2, 0x63, 0x67, 0x60, 0x3a, 0x7f, 0x27, 0x43, 0xcb, 0x0a, 0x8d, 0x62, 0xb5, 0x69, 0x50, 0x5d, - 0x47, 0xfb, 0x6a, 0x55, 0xa1, 0x62, 0x4f, 0x3c, 0x59, 0xef, 0xa6, 0xb8, 0x98, 0x0f, 0xa3, 0x40, - 0x34, 0x33, 0x78, 0x40, 0xb9, 0x6c, 0xfa, 0x88, 0x21, 0x7f, 0x00, 0xf5, 0x80, 0xbd, 0x93, 0x29, - 0x57, 0x86, 0x84, 0x4b, 0x07, 0x45, 0xab, 0xca, 0xe0, 0x38, 0x1e, 0x96, 0x75, 0x0e, 0xc5, 0x7d, - 0x27, 0x70, 0xd9, 0xf0, 0x47, 0x5a, 0xd7, 0x34, 0x83, 0x7e, 0xe4, 0x4b, 0x83, 0x5f, 0x67, 0x92, - 0x5b, 0x83, 0xdb, 0x70, 0x73, 0xfa, 0xd6, 0xc0, 0x3e, 0x39, 0x3e, 0x78, 0xb5, 0xf7, 0xac, 0x71, - 0x83, 0xdc, 0x84, 0x35, 0xa3, 0x7a, 0xd1, 0x3e, 0x6a, 0xd3, 0xbd, 0xbe, 0xbe, 0x3f, 0x98, 0xbf, - 0x53, 0xc8, 0x92, 0x4d, 0x20, 0x46, 0xd6, 0x3b, 0x39, 0x3c, 0xdc, 0xa3, 0xdd, 0xef, 0x95, 0x3c, - 0xb7, 0xf0, 0xae, 0x21, 0x3f, 0x7f, 0xd7, 0x50, 0x58, 0x78, 0xd7, 0x50, 0x7c, 0x99, 0x2f, 0x95, - 0x1a, 0x65, 0xba, 0x62, 0x6e, 0xd4, 0xee, 0xfd, 0x3a, 0x07, 0xa5, 0xb8, 0x7c, 0x4e, 0xae, 0xa7, - 0x32, 0xe9, 0xeb, 0xa9, 0xd9, 0xdb, 0xb1, 0xec, 0x82, 0xdb, 0xb1, 0xc5, 0xf7, 0x60, 0xb9, 0x65, - 0xf7, 0x60, 0x8f, 0xcc, 0x8d, 0x57, 0x1e, 0x59, 0xf6, 0xc1, 0x5c, 0x21, 0xdf, 0xee, 0x3b, 0x03, - 0xa1, 0xaf, 0xf8, 0xf5, 0x75, 0x98, 0x05, 0xa5, 0x48, 0xb0, 0xd0, 0x73, 0xa4, 0x63, 0x6e, 0xd7, - 0x92, 0x67, 0xeb, 0x1f, 0x32, 0xb0, 0xa6, 0xbb, 0xd6, 0xf3, 0x90, 0x8f, 0xcc, 0x89, 0xb5, 0xf5, - 0x8b, 0x6b, 0x13, 0x2a, 0x75, 0xb7, 0x95, 0x9d, 0xba, 0xdb, 0x9a, 0x34, 0xa4, 0x5c, 0xba, 0x21, - 0x59, 0x4f, 0x52, 0xf9, 0xf2, 0x05, 0x94, 0xe2, 0x1e, 0x60, 0x4a, 0xc6, 0xda, 0xdc, 0x6c, 0x68, - 0x02, 0xb1, 0xbe, 0x82, 0x72, 0x32, 0xb5, 0x05, 0x7f, 0x4e, 0xd8, 0x48, 0xff, 0x39, 0xa1, 0x9c, - 0xfa, 0x03, 0xc2, 0xbd, 0x3e, 0x54, 0xa7, 0xba, 0x1c, 0x21, 0x90, 0xc7, 0x7e, 0xab, 0xad, 0xf1, - 0x37, 0x79, 0x04, 0xe5, 0xf8, 0x4d, 0x6a, 0x99, 0x72, 0x8b, 0x47, 0x33, 0xc1, 0xdc, 0xfb, 0xe7, - 0x0c, 0x90, 0x49, 0x66, 0x3f, 0xf3, 0xc5, 0xd8, 0x91, 0xee, 0xd9, 0x6f, 0xd5, 0x90, 0x6e, 0x42, - 0xf1, 0x9c, 0x9f, 0x4e, 0x82, 0x57, 0x38, 0xe7, 0xa7, 0x5d, 0x6f, 0x2a, 0x2e, 0xb9, 0xf7, 0xc6, - 0x25, 0x69, 0xbc, 0xf9, 0x6b, 0x34, 0xde, 0x07, 0xaf, 0xa1, 0x36, 0x2d, 0x27, 0x1f, 0xc1, 0x07, - 0xbd, 0xee, 0xe1, 0xc9, 0xc1, 0x5e, 0xbf, 0xfb, 0xea, 0xc8, 0x3e, 0x7c, 0xf5, 0xac, 0x6d, 0x9f, - 0x1c, 0xf5, 0x8e, 0xdb, 0xfb, 0xdd, 0xe7, 0xdd, 0xb6, 0xca, 0xbb, 0x26, 0x6c, 0xcc, 0x02, 0xfa, - 0xed, 0x3f, 0xee, 0x37, 0x32, 0x98, 0xac, 0x33, 0x9a, 0xbd, 0x93, 0x67, 0xdd, 0x57, 0x8d, 0xec, - 0xee, 0xdf, 0x16, 0xa0, 0xbe, 0xa7, 0xb8, 0x3b, 0x79, 0x1b, 0xf1, 0x60, 0x5d, 0x73, 0x6d, 0xfa, - 0xcf, 0x1a, 0xcb, 0xb6, 0x9b, 0x1a, 0xbb, 0x1d, 0x37, 0xda, 0x9f, 0xbe, 0x0f, 0x66, 0x58, 0xf5, - 0xab, 0x0c, 0xdc, 0x89, 0x1b, 0x72, 0x02, 0x4c, 0xb7, 0x66, 0xb2, 0xbb, 0xcc, 0xd3, 0x7c, 0x1b, - 0x4f, 0xde, 0xfe, 0xe5, 0x6f, 0x65, 0x63, 0x86, 0xf2, 0x27, 0xd0, 0x78, 0xc1, 0xe4, 0xf4, 0x6c, - 0xef, 0x2d, 0x71, 0xf4, 0x82, 0xc9, 0xe4, 0x65, 0x1f, 0x5f, 0x89, 0x31, 0xce, 0x6d, 0x20, 0xaa, - 0x81, 0x4e, 0x21, 0x04, 0x59, 0x66, 0xaa, 0xa0, 0x89, 0xff, 0x4f, 0xae, 0x06, 0x99, 0x17, 0xa8, - 0xe5, 0xc2, 0x06, 0x73, 0xcd, 0xe5, 0x42, 0xec, 0xfb, 0x97, 0x2b, 0x86, 0x99, 0xb7, 0xbc, 0x85, - 0xdb, 0x86, 0x14, 0x86, 0xcf, 0xa9, 0x42, 0x44, 0x1e, 0xce, 0x57, 0xb7, 0xb9, 0x6a, 0x95, 0xbc, - 0xf1, 0xf3, 0xeb, 0x81, 0xf5, 0x7b, 0x5b, 0xcf, 0xbf, 0xff, 0x78, 0xe0, 0xcb, 0xb3, 0xe8, 0x74, - 0xdb, 0xe5, 0xa3, 0xf8, 0x4f, 0x68, 0xfa, 0x8f, 0x66, 0x2e, 0x1f, 0xc6, 0x82, 0x7f, 0xcc, 0x56, - 0x0f, 0xfc, 0xb7, 0xec, 0x0f, 0x71, 0x4f, 0xc8, 0x25, 0xff, 0x9f, 0x6c, 0xcd, 0x3c, 0x3f, 0x7d, - 0x8a, 0x82, 0xd3, 0x22, 0x9a, 0x7c, 0xf9, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x59, 0x32, 0xc0, - 0x0f, 0xf7, 0x26, 0x00, 0x00, + 0x76, 0x37, 0xc9, 0x26, 0xd9, 0x7c, 0x14, 0xc9, 0x56, 0xe9, 0xc3, 0x74, 0xcf, 0x7a, 0xc6, 0xe3, + 0x99, 0xd9, 0x35, 0xec, 0x59, 0xd9, 0xd1, 0xac, 0x77, 0x56, 0x9e, 0xdd, 0x20, 0xa2, 0x4c, 0x9b, + 0x52, 0x24, 0x59, 0x53, 0xa4, 0x90, 0xec, 0x04, 0x41, 0xa3, 0xd5, 0x5d, 0xa6, 0x5a, 0x6e, 0x76, + 0x71, 0xbb, 0xaa, 0x6d, 0x6b, 0x81, 0xdc, 0x07, 0xc8, 0x29, 0x87, 0x00, 0xc9, 0x25, 0xc8, 0x65, + 0x0e, 0xc9, 0x35, 0xa7, 0x00, 0x01, 0xf2, 0x37, 0x04, 0x01, 0x72, 0xca, 0x2d, 0xb7, 0xdc, 0x72, + 0x48, 0x4e, 0x39, 0x04, 0xf5, 0xd1, 0xcd, 0xe6, 0x97, 0xac, 0x99, 0xcc, 0xdc, 0xf6, 0xc6, 0x7e, + 0xef, 0xf7, 0xea, 0xe3, 0xd5, 0xfb, 0xd5, 0xab, 0xaa, 0x47, 0x78, 0x3f, 0x0c, 0x5e, 0x93, 0x57, + 0x01, 0x77, 0xdc, 0x21, 0x89, 0xb8, 0xc3, 0x82, 0x51, 0x12, 0xba, 0x3c, 0xa0, 0xd1, 0xd6, 0x38, + 0xa6, 0x9c, 0xa2, 0xaa, 0xd6, 0xdb, 0x1f, 0x4a, 0xc0, 0xc3, 0x19, 0x38, 0x61, 0x2c, 0xc3, 0xda, + 0x1f, 0x0c, 0x29, 0x1d, 0x86, 0xe4, 0xa1, 0xfc, 0x3a, 0x4b, 0x5e, 0x3e, 0xe4, 0xc1, 0x88, 0x30, + 0xee, 0x8e, 0xc6, 0x1a, 0x70, 0x2b, 0xb5, 0xf6, 0x42, 0x9a, 0xf8, 0xaa, 0x0d, 0xad, 0x5a, 0x4f, + 0x55, 0x23, 0xea, 0x93, 0x90, 0x29, 0xe9, 0xdd, 0x7f, 0x29, 0xc1, 0x7a, 0x3f, 0x1b, 0x12, 0x4e, + 0xa2, 0x7e, 0x32, 0x1a, 0xb9, 0xf1, 0x25, 0xda, 0x84, 0xca, 0xd8, 0x65, 0x8c, 0xf8, 0xed, 0xc2, + 0x9d, 0xc2, 0xbd, 0x32, 0xd6, 0x5f, 0x42, 0xfe, 0xd2, 0x0d, 0x42, 0xe2, 0xb7, 0x8b, 0x4a, 0xae, + 0xbe, 0xd0, 0x6d, 0x80, 0x21, 0x0d, 0xa2, 0xa1, 0xf3, 0x86, 0x84, 0x61, 0xbb, 0x74, 0xa7, 0x70, + 0xaf, 0x86, 0x6b, 0x52, 0xf2, 0x47, 0x24, 0x0c, 0x85, 0x9a, 0x53, 0x27, 0x18, 0x8d, 0x63, 0xfa, + 0x9a, 0xb4, 0x0d, 0xa5, 0xe6, 0x74, 0x5f, 0x09, 0xd0, 0x17, 0x50, 0x09, 0x18, 0x4b, 0x08, 0x6b, + 0x97, 0xef, 0x94, 0xee, 0xd5, 0xb7, 0x3f, 0xda, 0xd2, 0xa3, 0xdd, 0x5a, 0x34, 0xb8, 0xad, 0x7d, + 0x81, 0xc5, 0xda, 0x04, 0x7d, 0x09, 0x2b, 0xde, 0xb9, 0xcb, 0x9d, 0xf3, 0x80, 0x71, 0x1a, 0x5f, + 0xb6, 0x2b, 0xb2, 0x89, 0xad, 0xab, 0x9b, 0xd8, 0x3b, 0x77, 0x79, 0x4f, 0x19, 0x74, 0x23, 0x1e, + 0x5f, 0xe2, 0xba, 0x37, 0x91, 0xd8, 0x5f, 0x81, 0x35, 0x0b, 0x40, 0x16, 0x94, 0x5e, 0x91, 0x4b, + 0xe9, 0x8e, 0x1a, 0x16, 0x3f, 0xd1, 0x23, 0x28, 0xbf, 0x76, 0xc3, 0x84, 0x48, 0x57, 0xd4, 0xb7, + 0xed, 0xac, 0x47, 0xe5, 0x77, 0xd1, 0xc2, 0x1e, 0x8d, 0x38, 0x79, 0xcb, 0xb1, 0x02, 0x3e, 0x29, + 0xfe, 0xa2, 0x60, 0x3b, 0x50, 0x96, 0xe3, 0x47, 0x77, 0xa0, 0xee, 0x13, 0xe6, 0xc5, 0xc1, 0x58, + 0x8c, 0x4d, 0x37, 0x9c, 0x17, 0xa1, 0xf7, 0x01, 0x58, 0x32, 0x1c, 0x12, 0x26, 0x01, 0x45, 0x09, + 0xc8, 0x49, 0xd0, 0x3a, 0x94, 0x43, 0xf7, 0x8c, 0xa4, 0xfe, 0x56, 0x1f, 0x77, 0xff, 0xab, 0x03, + 0x8d, 0xa9, 0x39, 0xa3, 0x26, 0x14, 0x03, 0x5f, 0x77, 0x50, 0x0c, 0xe4, 0x62, 0x8d, 0x63, 0x7a, + 0x41, 0x3c, 0xee, 0x04, 0xbe, 0x6e, 0xb7, 0xa6, 0x25, 0xfb, 0x3e, 0x7a, 0x0c, 0x15, 0xc6, 0x5d, + 0x9e, 0x30, 0xd9, 0x6e, 0x73, 0xfb, 0xf6, 0x62, 0x57, 0x6e, 0xf5, 0x25, 0x08, 0x6b, 0x30, 0x7a, + 0x00, 0xab, 0x2a, 0x68, 0xf3, 0xb3, 0x52, 0x4b, 0x6d, 0x49, 0xc5, 0xd3, 0xdc, 0xd4, 0xd6, 0xa1, + 0x4c, 0xe2, 0x98, 0xc6, 0xed, 0xb2, 0x1a, 0xba, 0xfc, 0x40, 0x3b, 0x00, 0x5e, 0x4c, 0x5c, 0x4e, + 0x7c, 0xc7, 0xe5, 0xed, 0x8a, 0x76, 0xab, 0x8a, 0xfa, 0xad, 0x34, 0xea, 0xb7, 0x06, 0x69, 0xd4, + 0xe3, 0x9a, 0x46, 0xef, 0x72, 0xb4, 0x05, 0xc6, 0x05, 0x3d, 0x63, 0xed, 0xaa, 0x5c, 0x7d, 0x7b, + 0xc9, 0x90, 0x0f, 0xe8, 0x19, 0x96, 0x38, 0xe1, 0x03, 0x35, 0xda, 0xc8, 0x1d, 0x91, 0x76, 0x4d, + 0xf9, 0x40, 0x4a, 0x8e, 0xdd, 0x11, 0x41, 0xbf, 0x82, 0x26, 0xf3, 0x48, 0xe4, 0xc6, 0x01, 0x75, + 0x86, 0x31, 0x4d, 0xc6, 0x6d, 0x90, 0xa3, 0xd9, 0x9c, 0x34, 0xac, 0xd5, 0xcf, 0x85, 0x16, 0x37, + 0x58, 0xfe, 0x13, 0x3d, 0x06, 0x93, 0x44, 0xbe, 0x9a, 0x46, 0xfd, 0x9d, 0xd3, 0xa8, 0x4a, 0xec, + 0x2e, 0x47, 0xef, 0x41, 0xed, 0x82, 0x9e, 0x39, 0x1e, 0x4d, 0x22, 0xde, 0x5e, 0x91, 0x04, 0x33, + 0x2f, 0xe8, 0xd9, 0x9e, 0xf8, 0x46, 0x1f, 0xc2, 0x8a, 0x22, 0xa1, 0xd6, 0x37, 0xa4, 0xbe, 0xae, + 0x64, 0x19, 0x44, 0xf1, 0x51, 0x43, 0x9a, 0x0a, 0xa2, 0x64, 0x0a, 0xf2, 0x13, 0x68, 0x45, 0xc9, + 0x28, 0xb7, 0x0f, 0xb1, 0x76, 0x4b, 0xa2, 0x9a, 0x51, 0x32, 0x9a, 0x38, 0x8b, 0xa1, 0x6d, 0x28, + 0x27, 0xcc, 0x1d, 0x92, 0xb6, 0x25, 0xc7, 0xff, 0xa3, 0x25, 0x1e, 0x3d, 0x15, 0x18, 0xac, 0xa0, + 0x22, 0xa4, 0x3d, 0x1a, 0x79, 0x49, 0x1c, 0x93, 0xc8, 0xbb, 0x6c, 0xaf, 0xaa, 0xee, 0x73, 0x22, + 0xf4, 0x00, 0x0c, 0xb1, 0x01, 0xb5, 0x91, 0x8c, 0xac, 0x9b, 0x0b, 0x1a, 0x3d, 0xa2, 0x3e, 0xc1, + 0x12, 0x84, 0xbe, 0x80, 0xea, 0x88, 0xf0, 0x38, 0xf0, 0x58, 0x7b, 0x4d, 0x0e, 0xe2, 0xc3, 0x25, + 0x83, 0xc0, 0x49, 0x74, 0xa4, 0x80, 0x38, 0xb5, 0x10, 0xbe, 0x60, 0x8a, 0xec, 0xce, 0x6f, 0x19, + 0xf7, 0xdb, 0xeb, 0x77, 0x0a, 0xf7, 0x56, 0x70, 0x5d, 0xcb, 0xbe, 0x62, 0xdc, 0xb7, 0xff, 0xad, + 0x0c, 0xa5, 0x03, 0x7a, 0x36, 0xc7, 0x8f, 0x9d, 0x8c, 0x00, 0x45, 0x39, 0xcc, 0x0f, 0x97, 0x47, + 0xd3, 0x2c, 0x09, 0xee, 0xc2, 0x4a, 0x10, 0x31, 0x1e, 0x27, 0x9e, 0xf2, 0xad, 0x62, 0xe6, 0x94, + 0x6c, 0x12, 0xfb, 0x46, 0x3e, 0xf6, 0x7f, 0x0a, 0x48, 0x05, 0x24, 0x79, 0x3b, 0x26, 0x1e, 0xd7, + 0x6b, 0xa3, 0xe8, 0xa1, 0x88, 0xd5, 0xcd, 0x29, 0x26, 0xdc, 0xaf, 0xe4, 0xb8, 0x8f, 0x10, 0x18, + 0xdc, 0x1d, 0x2a, 0x16, 0xd4, 0xb0, 0xfc, 0x2d, 0x82, 0x2a, 0xa6, 0x74, 0xa4, 0x02, 0xdd, 0x94, + 0x68, 0x53, 0x08, 0x64, 0x9c, 0xef, 0x00, 0x30, 0xee, 0xc6, 0x9a, 0x71, 0xf0, 0x6e, 0xc6, 0x69, + 0xf4, 0x2e, 0xff, 0xae, 0x31, 0x7e, 0x13, 0xaa, 0x72, 0x38, 0x81, 0x2f, 0x23, 0xbc, 0x86, 0x2b, + 0xe2, 0x73, 0xdf, 0x47, 0x3f, 0x4f, 0x03, 0xae, 0x21, 0x1b, 0xbb, 0x73, 0x85, 0xd3, 0xa7, 0x82, + 0x2e, 0x17, 0x25, 0xcd, 0x2b, 0xa3, 0xe4, 0x80, 0x9e, 0xcd, 0x46, 0x89, 0xfd, 0xa7, 0x50, 0x96, + 0x8d, 0xa1, 0x7b, 0x60, 0x89, 0x9d, 0xda, 0xe1, 0x49, 0x1c, 0x31, 0x4d, 0x1f, 0x95, 0xfa, 0x9a, + 0x42, 0x3e, 0x10, 0x62, 0xc5, 0xa0, 0xfb, 0xb0, 0xea, 0x26, 0x7e, 0x40, 0xa7, 0xa0, 0x2a, 0x1b, + 0xb6, 0xa4, 0x62, 0x82, 0xbd, 0x4b, 0xa1, 0xa2, 0x02, 0x04, 0x21, 0x68, 0xf6, 0x07, 0xbb, 0x83, + 0xd3, 0xbe, 0x73, 0xd2, 0x3d, 0x7e, 0xba, 0x7f, 0xfc, 0xdc, 0xba, 0x91, 0x93, 0xe1, 0xd3, 0xe3, + 0x63, 0x21, 0x2b, 0xa0, 0x75, 0xb0, 0xb4, 0x6c, 0xef, 0xc5, 0xd1, 0xc9, 0x61, 0x77, 0xd0, 0x7d, + 0x6a, 0x15, 0xd1, 0x2a, 0x34, 0xb4, 0xf4, 0xd9, 0xee, 0xfe, 0x61, 0xf7, 0xa9, 0x55, 0xca, 0x03, + 0x77, 0x8f, 0xf7, 0xba, 0x87, 0x42, 0x6a, 0x1c, 0x18, 0x66, 0xcd, 0x02, 0xfb, 0x2f, 0x3f, 0x01, + 0x98, 0xcc, 0x16, 0xdd, 0x87, 0xa6, 0xeb, 0x79, 0x49, 0xec, 0x7a, 0x97, 0x0e, 0xf3, 0x68, 0x4c, + 0xe4, 0xcc, 0x8a, 0xbd, 0x1b, 0xb8, 0x91, 0xca, 0xfb, 0x42, 0xfc, 0x75, 0xa1, 0x80, 0xb6, 0xc0, + 0x12, 0x01, 0x18, 0x07, 0x24, 0xf2, 0x88, 0x46, 0x17, 0x25, 0xba, 0x80, 0x5b, 0x13, 0x4d, 0x86, + 0xff, 0x14, 0x5a, 0xdc, 0x65, 0xaf, 0x1c, 0x8f, 0x8e, 0xc6, 0x21, 0x91, 0x7b, 0x7e, 0x49, 0xc2, + 0x8b, 0xb8, 0x29, 0x14, 0x7b, 0x99, 0x5c, 0xa0, 0x3f, 0x87, 0x12, 0xe3, 0x5c, 0x06, 0x7e, 0x7d, + 0xfb, 0x93, 0x77, 0xae, 0xd3, 0x56, 0x7f, 0x30, 0xc0, 0xc2, 0x42, 0x18, 0x86, 0xe1, 0x48, 0xd2, + 0xe1, 0x5a, 0x86, 0x87, 0x87, 0x47, 0x58, 0x58, 0x08, 0x43, 0xce, 0x99, 0xce, 0x25, 0xd7, 0x30, + 0x1c, 0x0c, 0xfa, 0x58, 0x58, 0x20, 0x0c, 0x2b, 0x1e, 0x8d, 0x5e, 0x93, 0x98, 0x49, 0x58, 0xbb, + 0x2a, 0x5b, 0xd8, 0x7a, 0x77, 0x0b, 0x7b, 0x39, 0x2b, 0x3c, 0xd5, 0x06, 0xda, 0x87, 0x9a, 0xde, + 0x78, 0x69, 0x2c, 0xa9, 0x58, 0xdf, 0x7e, 0x70, 0x0d, 0x27, 0xa4, 0x26, 0x78, 0x62, 0x8d, 0x7e, + 0x09, 0x65, 0x19, 0x7f, 0xed, 0x9a, 0x4c, 0x78, 0x3f, 0xbe, 0xc6, 0xcc, 0x92, 0x38, 0xc2, 0xca, + 0x08, 0x7d, 0x00, 0xf5, 0x8b, 0xc4, 0x1f, 0x12, 0x75, 0x1a, 0x94, 0xbc, 0xaf, 0x61, 0x90, 0x22, + 0xb1, 0xff, 0x86, 0x93, 0x20, 0xcf, 0xc3, 0xea, 0x12, 0xa6, 0x82, 0xfc, 0x60, 0x82, 0xfd, 0x14, + 0xd0, 0xb9, 0xcb, 0x9c, 0x98, 0x8c, 0x28, 0x27, 0xe9, 0x91, 0x55, 0x92, 0xdb, 0xc4, 0xd6, 0xb9, + 0xcb, 0xb0, 0x54, 0xf4, 0x95, 0x1c, 0xdd, 0x87, 0x22, 0x7f, 0xa4, 0x39, 0x7e, 0xd5, 0x86, 0x51, + 0xe4, 0x8f, 0xd0, 0x27, 0x2a, 0x9f, 0x04, 0x8c, 0x44, 0x84, 0x29, 0x7a, 0x17, 0x7b, 0x25, 0x9c, + 0x17, 0x8a, 0xa8, 0xda, 0x81, 0xcd, 0x24, 0x8a, 0x88, 0x47, 0x18, 0x13, 0xdb, 0x3d, 0xa7, 0x34, + 0x74, 0x3c, 0x37, 0x0c, 0x55, 0x6a, 0x33, 0x7b, 0x06, 0x5e, 0xcf, 0xe9, 0x07, 0x94, 0x86, 0x7b, + 0x42, 0xab, 0xc3, 0x3d, 0x88, 0x5e, 0xd2, 0x78, 0x24, 0x3d, 0xe6, 0x84, 0x94, 0x31, 0x99, 0xf0, + 0xcc, 0x5e, 0x19, 0xb7, 0x72, 0x9a, 0x43, 0xaa, 0xba, 0xfa, 0x39, 0xac, 0xc7, 0xc4, 0x4f, 0x22, + 0xdf, 0x15, 0xa7, 0x73, 0xee, 0x72, 0x32, 0x22, 0x11, 0x67, 0x32, 0xd5, 0x99, 0xbd, 0x0a, 0x5e, + 0xcb, 0xb4, 0xfd, 0x4c, 0xa9, 0x02, 0x7f, 0x63, 0x4c, 0x69, 0xec, 0xfc, 0x26, 0x51, 0x67, 0x37, + 0xe7, 0x37, 0x89, 0x1b, 0x06, 0xfc, 0x52, 0x26, 0x42, 0xb3, 0x57, 0xc5, 0x6b, 0x42, 0xfd, 0xa5, + 0xd6, 0x7e, 0xa9, 0x94, 0xc2, 0xf0, 0xf7, 0xa1, 0x9d, 0x0f, 0x21, 0x67, 0x1c, 0xd3, 0x61, 0xac, + 0x5d, 0xbc, 0x26, 0xfd, 0x61, 0xe2, 0x9b, 0x79, 0xc4, 0xc9, 0x04, 0xf0, 0x75, 0xa1, 0x60, 0xff, + 0xaf, 0x01, 0xa5, 0xfe, 0x60, 0x80, 0x36, 0xa0, 0xf4, 0x86, 0xc4, 0x19, 0xf1, 0xc5, 0x87, 0x68, + 0xfe, 0x16, 0x94, 0xdf, 0xd0, 0xd8, 0x57, 0x99, 0xae, 0xd1, 0x2b, 0x60, 0xf5, 0x29, 0x54, 0x1f, + 0x43, 0x5d, 0xfc, 0x76, 0x64, 0x7a, 0x52, 0x99, 0xac, 0xd1, 0x2b, 0x62, 0x10, 0xc2, 0xae, 0x94, + 0x09, 0xd4, 0x06, 0x94, 0x3c, 0xa2, 0x52, 0x99, 0x58, 0x1a, 0xf1, 0xa1, 0xdb, 0xf5, 0xce, 0xdd, + 0x98, 0xc9, 0x93, 0x55, 0xa3, 0x67, 0x60, 0xf5, 0xa9, 0xdb, 0x15, 0xbf, 0xd3, 0x76, 0x41, 0x02, + 0xca, 0x18, 0x84, 0x70, 0xd2, 0xee, 0xaf, 0xa0, 0xcd, 0x63, 0x37, 0xca, 0x4e, 0x8c, 0x4e, 0xe8, + 0x72, 0x71, 0x82, 0x70, 0x46, 0x4c, 0x32, 0xa7, 0xd1, 0xab, 0xe0, 0xcd, 0x29, 0xc4, 0xa1, 0x02, + 0x1c, 0x49, 0xf3, 0x6d, 0x40, 0x24, 0xe2, 0x01, 0xbf, 0x74, 0x62, 0xe2, 0xd1, 0x61, 0x14, 0x48, + 0x0e, 0xd7, 0xe5, 0x28, 0xab, 0x78, 0x55, 0xe9, 0xf0, 0x44, 0x95, 0x6e, 0x7d, 0x42, 0x1e, 0x10, + 0xe6, 0x24, 0x9c, 0x93, 0x98, 0xa8, 0x14, 0xd5, 0xe8, 0x99, 0xb8, 0x95, 0x6a, 0x4e, 0x95, 0x42, + 0xe0, 0x7f, 0x06, 0x6b, 0x19, 0x5e, 0xf7, 0xf2, 0x5b, 0xe2, 0xcb, 0xd0, 0x6e, 0xf4, 0x6a, 0x18, + 0xa5, 0x4a, 0x9c, 0xe9, 0xbe, 0x2e, 0x14, 0x3a, 0x15, 0x30, 0x9c, 0x37, 0x24, 0xee, 0x98, 0x50, + 0x71, 0xa4, 0xaf, 0x3b, 0x4d, 0x58, 0x71, 0x72, 0x9e, 0x96, 0x08, 0x4f, 0x23, 0xa4, 0xd7, 0x24, + 0x22, 0xe7, 0xb3, 0xce, 0x7b, 0x70, 0xcb, 0x59, 0xe6, 0x9d, 0xce, 0x06, 0xac, 0x39, 0xf3, 0x73, + 0xef, 0xac, 0xc1, 0xaa, 0x33, 0x3b, 0xbd, 0xce, 0x26, 0xac, 0x3b, 0x0b, 0xe6, 0x70, 0x60, 0x98, + 0x65, 0xab, 0x72, 0x60, 0x98, 0x15, 0xab, 0x7a, 0x60, 0x98, 0x55, 0xcb, 0xc4, 0xcd, 0x57, 0xe4, + 0x92, 0x93, 0x78, 0x24, 0x50, 0x6e, 0x18, 0x62, 0x4b, 0x7f, 0x67, 0x6d, 0xe1, 0xb5, 0x4c, 0x32, + 0x69, 0xc8, 0xfe, 0xc7, 0x02, 0x94, 0x0e, 0x0f, 0x8f, 0xd0, 0x8f, 0xa0, 0xca, 0xf9, 0x4b, 0x2e, + 0x56, 0xaf, 0x20, 0xfd, 0x73, 0x03, 0x57, 0x84, 0x40, 0xad, 0x96, 0xd2, 0x32, 0xa1, 0x4d, 0xe3, + 0x50, 0x68, 0x99, 0xd2, 0x3e, 0x84, 0x55, 0x4e, 0x5f, 0x91, 0x88, 0x39, 0x63, 0x12, 0x3b, 0x8c, + 0x78, 0x34, 0xf2, 0xb3, 0x24, 0xd3, 0x52, 0xaa, 0x13, 0x12, 0xf7, 0xa5, 0x42, 0xb8, 0x18, 0xc0, + 0x74, 0x74, 0x6f, 0xe9, 0x6f, 0xd1, 0x76, 0x67, 0x1d, 0x90, 0x33, 0xd7, 0xd2, 0x81, 0x61, 0x1a, + 0x56, 0x19, 0xaf, 0xe6, 0xf6, 0x14, 0x95, 0xf6, 0xec, 0xff, 0x29, 0x43, 0x69, 0x30, 0xe8, 0xeb, + 0xd1, 0xb9, 0xb3, 0x63, 0x77, 0xf3, 0x63, 0x3f, 0x9b, 0x1d, 0xfb, 0xd9, 0x51, 0x4a, 0x0f, 0x41, + 0xbb, 0x74, 0xb4, 0x73, 0xb4, 0xab, 0x4a, 0x93, 0xd2, 0x72, 0xda, 0x99, 0x9a, 0x3f, 0x8b, 0x69, + 0x57, 0x93, 0xed, 0x96, 0xe7, 0x69, 0x07, 0x9a, 0x22, 0x4b, 0x69, 0x57, 0x97, 0x80, 0xea, 0x2c, + 0xed, 0x1e, 0xc1, 0x6a, 0xe4, 0xf2, 0x24, 0x76, 0xc3, 0x89, 0x23, 0x64, 0xd6, 0x15, 0xfb, 0x8c, + 0x95, 0x53, 0x65, 0x07, 0x80, 0x47, 0xb0, 0x4a, 0xa2, 0x24, 0xf2, 0x02, 0xb5, 0x3f, 0x29, 0x8b, + 0x8a, 0xb4, 0xa8, 0x61, 0x2b, 0xa7, 0xca, 0x2c, 0x16, 0x73, 0x53, 0x6d, 0xee, 0xf0, 0x2d, 0xb8, + 0xd9, 0x92, 0x53, 0xa8, 0x7f, 0x1b, 0x6e, 0x5a, 0xd2, 0x64, 0x65, 0x19, 0x37, 0x75, 0xb0, 0xb8, + 0xb9, 0xc0, 0x11, 0x0b, 0xfb, 0xbd, 0x70, 0x56, 0x04, 0xdf, 0x9c, 0x6b, 0xa5, 0x74, 0xce, 0x7d, + 0xdf, 0x13, 0x85, 0x0d, 0xab, 0x7c, 0x60, 0x98, 0x2b, 0x56, 0xe3, 0xc0, 0x30, 0x1b, 0x56, 0x13, + 0xb7, 0xd8, 0x98, 0x10, 0xef, 0xdc, 0x89, 0x5d, 0x4e, 0x9c, 0x37, 0xe3, 0x11, 0xae, 0x9f, 0x13, + 0x37, 0xf6, 0xd5, 0x8c, 0x70, 0x4d, 0x6b, 0x47, 0xcc, 0xfe, 0x6b, 0x80, 0x95, 0xfc, 0x29, 0x46, + 0x32, 0x30, 0x89, 0x23, 0x87, 0xbb, 0xaf, 0x82, 0x68, 0x38, 0x73, 0x86, 0x6c, 0x09, 0xd5, 0x40, + 0x6a, 0xb2, 0x25, 0x7e, 0x02, 0x37, 0x63, 0xc2, 0xc6, 0x34, 0x62, 0x24, 0xdb, 0x9a, 0xc6, 0x8f, + 0x1f, 0xa5, 0x24, 0x29, 0xf7, 0x0a, 0x78, 0x3d, 0x05, 0xe8, 0x7d, 0xfb, 0xe4, 0xf1, 0x23, 0x45, + 0x99, 0x85, 0xb6, 0x3b, 0x8f, 0x85, 0x6d, 0x49, 0xda, 0x16, 0xe7, 0x6d, 0x77, 0x1e, 0x5f, 0x65, + 0xbb, 0x23, 0x6c, 0x0d, 0x69, 0x5b, 0x5a, 0x60, 0xbb, 0xa3, 0x6c, 0x3f, 0x83, 0xb5, 0x39, 0xdb, + 0x91, 0x3a, 0x0d, 0x94, 0x7b, 0x06, 0x5e, 0x9d, 0xb1, 0x3b, 0x4a, 0xd3, 0xd4, 0x9c, 0x11, 0x73, + 0xc5, 0x91, 0x57, 0x9d, 0x09, 0x44, 0x66, 0xdb, 0x9c, 0xb1, 0xec, 0x2b, 0xbd, 0x30, 0xff, 0x05, + 0x6c, 0xaa, 0x4b, 0xdf, 0x65, 0x40, 0x42, 0x3f, 0xdf, 0x6d, 0x59, 0x13, 0x78, 0x4d, 0xea, 0x7f, + 0x2d, 0xd4, 0x53, 0x1d, 0x7f, 0x01, 0x37, 0x09, 0xe5, 0xce, 0x28, 0x60, 0xe3, 0x98, 0xf8, 0x81, + 0xbc, 0x5a, 0xea, 0xbb, 0x48, 0x45, 0x53, 0x7b, 0x83, 0x50, 0x7e, 0x94, 0xd7, 0xcb, 0x3b, 0x89, + 0x30, 0xbe, 0x07, 0x0d, 0xfa, 0x9a, 0xc4, 0xa1, 0x3b, 0x16, 0xc1, 0x10, 0x50, 0xb9, 0x0d, 0x09, + 0x86, 0xaf, 0x68, 0x31, 0x16, 0x52, 0xbd, 0xf7, 0xa6, 0xc8, 0x2c, 0x3e, 0xf4, 0x9e, 0x54, 0xc3, + 0x2d, 0xad, 0xea, 0x4b, 0x8d, 0x1a, 0xd7, 0x03, 0x68, 0x71, 0xca, 0xdd, 0x30, 0x07, 0x57, 0x47, + 0x00, 0xc0, 0x0d, 0xa9, 0xc8, 0x83, 0x3f, 0x87, 0x0d, 0xf7, 0xcd, 0xab, 0x37, 0x22, 0x08, 0x59, + 0x10, 0xca, 0x1b, 0x87, 0x9a, 0x42, 0x5d, 0x53, 0x7b, 0x4d, 0xab, 0xfb, 0x4a, 0x9b, 0x4d, 0x60, + 0x0b, 0xac, 0x24, 0x72, 0x23, 0xf6, 0x46, 0x50, 0x40, 0x5d, 0xc4, 0x74, 0xaa, 0x5e, 0xc1, 0xad, + 0x89, 0x46, 0xde, 0xc4, 0xf4, 0x32, 0xbd, 0x74, 0x43, 0x46, 0x9c, 0x20, 0xe2, 0x24, 0x8e, 0x93, + 0x71, 0xce, 0x5d, 0x2a, 0x5f, 0x37, 0xf0, 0xa6, 0x44, 0xec, 0xe7, 0x00, 0x59, 0x77, 0x5d, 0xb8, + 0xad, 0x96, 0x29, 0x26, 0x63, 0x2a, 0x2f, 0xcb, 0x64, 0x7b, 0x2a, 0x48, 0xd4, 0x56, 0xd4, 0xc4, + 0xb7, 0x24, 0x0c, 0x6b, 0x54, 0x77, 0x7b, 0x2a, 0x58, 0x54, 0xfe, 0x99, 0xe5, 0x51, 0xc7, 0x86, + 0xb6, 0xb3, 0x84, 0x2c, 0x4b, 0x74, 0x92, 0x0c, 0xcb, 0x74, 0x22, 0xd8, 0xe5, 0xa6, 0xb0, 0x20, + 0x98, 0xe5, 0xc1, 0x61, 0x59, 0xbc, 0x76, 0x6e, 0xc1, 0x4d, 0x67, 0x71, 0x34, 0xca, 0xbe, 0x96, + 0x84, 0x5b, 0xc7, 0x82, 0xa6, 0x33, 0x15, 0x4d, 0x72, 0x9e, 0x73, 0x51, 0xd3, 0x41, 0x60, 0x39, + 0x33, 0xa1, 0xd1, 0x69, 0xc3, 0xa6, 0xb3, 0x30, 0x02, 0xe4, 0x5e, 0x37, 0xbb, 0xc4, 0x72, 0xf8, + 0xcb, 0xd6, 0xb1, 0x73, 0x07, 0xde, 0x77, 0xae, 0x5c, 0xa5, 0x03, 0xc3, 0x04, 0xab, 0x7e, 0x60, + 0x98, 0x4d, 0xab, 0x85, 0xad, 0xb4, 0x3b, 0x35, 0xa4, 0x11, 0xc3, 0x1f, 0x2f, 0x68, 0x39, 0x89, + 0xc4, 0x8e, 0xfa, 0x5a, 0x0e, 0x41, 0xf6, 0x62, 0xff, 0x55, 0x01, 0x6a, 0xd9, 0x85, 0x4c, 0x26, + 0x3f, 0x37, 0x0e, 0x2f, 0x1d, 0x71, 0xf0, 0x09, 0x22, 0x37, 0x7b, 0xc9, 0x35, 0x7b, 0x37, 0xb0, + 0x25, 0x55, 0x83, 0x89, 0x46, 0x47, 0xae, 0x18, 0xd1, 0x94, 0x41, 0x51, 0x1a, 0x14, 0x70, 0x4b, + 0x68, 0xa6, 0xf1, 0x2a, 0x41, 0xcc, 0x76, 0x21, 0xbd, 0x33, 0xdb, 0x8c, 0xfd, 0xaf, 0x25, 0x30, + 0x44, 0xc4, 0xa3, 0x75, 0x28, 0x07, 0x91, 0x4f, 0xde, 0xaa, 0xe3, 0x0a, 0x56, 0x1f, 0xe8, 0x01, + 0x18, 0x31, 0x0d, 0x89, 0x7e, 0xd3, 0xba, 0xb9, 0xe0, 0xb5, 0x1a, 0xd3, 0x90, 0x60, 0x09, 0x42, + 0xef, 0x83, 0x29, 0x5f, 0x7a, 0xd2, 0x5d, 0x57, 0x1c, 0x7a, 0xaa, 0x52, 0xa2, 0x98, 0x6b, 0x43, + 0x85, 0x44, 0x7e, 0xba, 0xaf, 0xca, 0x8b, 0x03, 0x89, 0xfc, 0x94, 0xd5, 0xf2, 0x92, 0x5f, 0xfe, + 0xae, 0x97, 0xfc, 0xca, 0x77, 0xbd, 0xe4, 0x57, 0xff, 0xdf, 0x97, 0x7c, 0xf3, 0x7b, 0xb8, 0xe4, + 0xcf, 0x5c, 0x5a, 0x6b, 0xfa, 0xe8, 0x37, 0x73, 0x69, 0xed, 0xd4, 0xa1, 0xe6, 0xa4, 0x2e, 0xee, + 0xd4, 0xa0, 0xea, 0x28, 0x7f, 0xaa, 0x73, 0xc3, 0x04, 0xda, 0x59, 0x85, 0x96, 0x33, 0xfd, 0x7a, + 0xa3, 0xce, 0x01, 0x33, 0x8f, 0x34, 0x8a, 0x5e, 0xd3, 0x2f, 0x31, 0x73, 0x6d, 0x09, 0x86, 0x2f, + 0xbe, 0x29, 0xcb, 0x36, 0x67, 0x6f, 0xc2, 0x9d, 0x9b, 0xb0, 0xe1, 0x2c, 0xba, 0xee, 0x4a, 0xde, + 0x2e, 0xbc, 0xcf, 0x4a, 0x8a, 0x2e, 0xbb, 0xb0, 0xda, 0xff, 0x51, 0x06, 0x98, 0xbc, 0xd5, 0xfe, + 0xa0, 0xef, 0x52, 0xbf, 0x07, 0x28, 0x7b, 0xc0, 0x1f, 0xbb, 0x8c, 0xc9, 0x53, 0x4f, 0x76, 0x0e, + 0xb7, 0x52, 0xdd, 0x89, 0xcb, 0x18, 0x76, 0x39, 0xf9, 0xdd, 0xe3, 0x14, 0xba, 0x0d, 0x70, 0x41, + 0xcf, 0x98, 0xda, 0x10, 0x55, 0xd2, 0xc6, 0x35, 0x21, 0x19, 0x08, 0x01, 0xfa, 0x08, 0x1a, 0x52, + 0x3d, 0x22, 0x2e, 0x4b, 0xc4, 0xf1, 0x5b, 0x5e, 0x31, 0xf0, 0x8a, 0x10, 0x1e, 0x69, 0x19, 0x7a, + 0x04, 0xeb, 0x12, 0x94, 0xbd, 0x53, 0x39, 0x2f, 0xdd, 0x24, 0xd4, 0xf9, 0x1c, 0x23, 0xa1, 0xcb, + 0x36, 0xcf, 0x67, 0x42, 0x33, 0xcb, 0x96, 0x95, 0x25, 0x4f, 0x3c, 0x57, 0x3d, 0x83, 0x34, 0xa4, + 0x8d, 0x71, 0xd5, 0x33, 0xc8, 0xb5, 0x59, 0x24, 0x4e, 0xde, 0xf3, 0x71, 0x33, 0x47, 0xa4, 0x2b, + 0xa3, 0xfc, 0xbf, 0x4b, 0x50, 0xd9, 0x93, 0x85, 0x29, 0xfb, 0xdf, 0x8b, 0x50, 0xc5, 0x44, 0x92, + 0x64, 0xa6, 0xea, 0x56, 0x98, 0xad, 0xba, 0x4d, 0x17, 0xa4, 0x8a, 0xb3, 0x05, 0xa9, 0x05, 0x75, + 0x1b, 0x63, 0x61, 0xdd, 0x66, 0x13, 0x2a, 0x31, 0x19, 0x0a, 0xbf, 0x54, 0xf4, 0xf3, 0xba, 0xfc, + 0x42, 0x9d, 0xb9, 0x8a, 0x56, 0xf5, 0xaa, 0x8a, 0x96, 0x20, 0xe1, 0x54, 0x4d, 0x4b, 0xac, 0xc2, + 0x27, 0xd3, 0xf5, 0x1d, 0x53, 0x1f, 0xe5, 0xf3, 0x42, 0x75, 0x06, 0x54, 0x45, 0x9e, 0xda, 0x35, + 0x8a, 0x3c, 0x72, 0x65, 0xa6, 0x07, 0x96, 0x79, 0x5b, 0x37, 0x79, 0x60, 0x98, 0x25, 0xcb, 0xc0, + 0xf3, 0xd5, 0x45, 0xfb, 0xcf, 0x0b, 0x60, 0x62, 0x7d, 0x9c, 0x41, 0xf7, 0x61, 0x75, 0xe2, 0x1d, + 0x27, 0x4e, 0xa2, 0x89, 0x9b, 0x5b, 0x2c, 0xcf, 0x87, 0x7d, 0x1f, 0xf5, 0x61, 0x73, 0x1c, 0x13, + 0x16, 0x0c, 0x23, 0xe2, 0x3b, 0x63, 0xca, 0xc4, 0x99, 0x41, 0xae, 0x92, 0xae, 0xe5, 0x4e, 0x4a, + 0x9e, 0x27, 0x29, 0xec, 0x84, 0x32, 0xae, 0x97, 0x12, 0xaf, 0x8f, 0x17, 0x48, 0xed, 0xbf, 0x2d, + 0xc0, 0xda, 0x1e, 0x8d, 0x5e, 0x06, 0xf1, 0xa8, 0x4f, 0x93, 0xd8, 0x23, 0xa7, 0xe3, 0x90, 0xba, + 0xbe, 0xfd, 0x67, 0xd7, 0x8e, 0x81, 0x85, 0x53, 0x28, 0x2e, 0x9e, 0xc2, 0x4f, 0xa0, 0xe5, 0x51, + 0x9f, 0x88, 0xbb, 0x5f, 0x7c, 0x39, 0xa6, 0x41, 0xc4, 0x75, 0xb1, 0xa9, 0x29, 0xc4, 0xdd, 0x4c, + 0x6a, 0xc3, 0xc4, 0x47, 0xf6, 0x5f, 0x14, 0xa0, 0xf4, 0x9c, 0x70, 0x7b, 0xf0, 0x43, 0x0c, 0xc9, + 0xfe, 0x59, 0x6e, 0x35, 0xee, 0x41, 0x29, 0x4e, 0xd4, 0x59, 0x68, 0x2a, 0xc6, 0xf2, 0x26, 0x58, + 0x40, 0xec, 0x7f, 0x2e, 0x82, 0x71, 0x18, 0x30, 0x6e, 0xff, 0x53, 0xe1, 0xda, 0xa3, 0x7a, 0x32, + 0x53, 0xa1, 0xbb, 0xba, 0x44, 0xdd, 0xbb, 0x91, 0xd6, 0xe7, 0x44, 0x74, 0xfe, 0x12, 0x60, 0xec, + 0x0e, 0x89, 0x7a, 0x09, 0x92, 0x3e, 0xab, 0x6f, 0xb7, 0x33, 0xfb, 0x81, 0x90, 0x9e, 0xb8, 0x43, + 0x7d, 0xa8, 0xea, 0x15, 0x70, 0x4d, 0xa0, 0xa5, 0x58, 0x6c, 0x24, 0x22, 0x53, 0xab, 0xb6, 0x3a, + 0x0d, 0xa8, 0x3b, 0x93, 0x96, 0xec, 0xb7, 0x53, 0xb1, 0x68, 0xc4, 0x49, 0xc4, 0xda, 0x05, 0xf9, + 0x38, 0xbf, 0x6c, 0xfa, 0x12, 0x83, 0xfe, 0x00, 0x5a, 0x11, 0x79, 0xcb, 0x73, 0x4d, 0xe9, 0x20, + 0x5c, 0x3a, 0x28, 0xdc, 0x10, 0x06, 0x27, 0xe9, 0xb0, 0xec, 0x0b, 0xa8, 0xec, 0xb9, 0x91, 0x47, + 0xc2, 0x1f, 0x68, 0x5d, 0xf3, 0x11, 0xf4, 0x03, 0x17, 0xcc, 0xbe, 0x29, 0x64, 0x15, 0xb3, 0x5b, + 0xb0, 0x31, 0x5d, 0x31, 0x73, 0x4e, 0x4f, 0x0e, 0x5f, 0xec, 0x3e, 0xb5, 0x6e, 0xa0, 0x0d, 0x58, + 0xd5, 0xaa, 0xe7, 0xdd, 0xe3, 0x2e, 0xde, 0x1d, 0xa8, 0xda, 0xd9, 0x7c, 0x3d, 0xad, 0x88, 0x36, + 0x01, 0x69, 0x59, 0xff, 0xf4, 0xe8, 0x68, 0x17, 0xef, 0x7f, 0x25, 0xe4, 0xa5, 0x85, 0x75, 0x36, + 0x63, 0xbe, 0xce, 0x56, 0x5e, 0x58, 0x67, 0xab, 0x1c, 0x18, 0xa6, 0x69, 0xd5, 0x70, 0x55, 0x57, + 0x93, 0xef, 0x7e, 0x53, 0x02, 0x33, 0xdd, 0x3e, 0x27, 0xa5, 0xd9, 0x42, 0xbe, 0x34, 0x3b, 0x5b, + 0x19, 0x2e, 0x2e, 0xa8, 0x0c, 0x2f, 0xae, 0x01, 0x97, 0x96, 0xd5, 0x80, 0x1f, 0xea, 0x6a, 0xaf, + 0x21, 0xa3, 0xec, 0xbd, 0xb9, 0x8d, 0x7c, 0x6b, 0xe0, 0x0e, 0x99, 0xfa, 0x7b, 0x8b, 0x2a, 0x05, + 0xdb, 0x60, 0x26, 0x8c, 0xc4, 0xbe, 0xcb, 0x5d, 0x5d, 0x59, 0xce, 0xbe, 0xed, 0xbf, 0x2b, 0xc0, + 0xaa, 0xca, 0x5a, 0xcf, 0x62, 0x3a, 0xd2, 0xd5, 0x1a, 0xfb, 0xd7, 0xd7, 0x0e, 0xa8, 0x5c, 0x5d, + 0xb7, 0x38, 0x55, 0xd7, 0x9d, 0x24, 0xa4, 0x52, 0x3e, 0x21, 0xd9, 0x3b, 0x39, 0xbe, 0xfc, 0x14, + 0xcc, 0x34, 0x07, 0xe8, 0x2d, 0x63, 0x75, 0x6e, 0x36, 0x38, 0x83, 0xd8, 0x9f, 0x43, 0x2d, 0x9b, + 0xda, 0x82, 0x3f, 0xe6, 0xac, 0xe7, 0xff, 0x98, 0x53, 0xcb, 0xfd, 0xf9, 0xe6, 0xee, 0x00, 0x1a, + 0x53, 0x59, 0x0e, 0x21, 0x30, 0x64, 0xbe, 0x55, 0xd6, 0xf2, 0x37, 0x7a, 0x08, 0xb5, 0xb4, 0x27, + 0xb1, 0x4c, 0xa5, 0xc5, 0xa3, 0x99, 0x60, 0xee, 0xfe, 0x43, 0x01, 0xd0, 0x84, 0xd9, 0x4f, 0x03, + 0x36, 0x76, 0xb9, 0x77, 0xfe, 0xad, 0x12, 0xd2, 0x06, 0x54, 0x2e, 0xe8, 0xd9, 0xc4, 0x79, 0xe5, + 0x0b, 0x7a, 0xb6, 0xef, 0x4f, 0xf9, 0xa5, 0xf4, 0x4e, 0xbf, 0x64, 0x89, 0xd7, 0xb8, 0x46, 0xe2, + 0xbd, 0xff, 0x12, 0x9a, 0xd3, 0x72, 0xf4, 0x01, 0xbc, 0xd7, 0xdf, 0x3f, 0x3a, 0x3d, 0xdc, 0x1d, + 0xec, 0xbf, 0x38, 0x76, 0x8e, 0x5e, 0x3c, 0xed, 0x3a, 0xa7, 0xc7, 0xfd, 0x93, 0xee, 0xde, 0xfe, + 0xb3, 0xfd, 0xae, 0xe0, 0x5d, 0x1b, 0xd6, 0x67, 0x01, 0x83, 0xee, 0x1f, 0x0f, 0xac, 0x82, 0x24, + 0xeb, 0x8c, 0x66, 0xf7, 0xf4, 0xe9, 0xfe, 0x0b, 0xab, 0xb8, 0xfd, 0x37, 0x65, 0x68, 0xed, 0x8a, + 0xd8, 0x9d, 0xf4, 0x86, 0x7c, 0x58, 0x53, 0xb1, 0x36, 0xfd, 0x47, 0xa5, 0x65, 0x47, 0x60, 0x85, + 0xdd, 0x4a, 0x13, 0xed, 0x8f, 0xdf, 0x05, 0xd3, 0x51, 0xf5, 0x75, 0x01, 0x6e, 0xa7, 0x09, 0x39, + 0x03, 0xe6, 0x53, 0x33, 0xda, 0x5e, 0xd6, 0xd2, 0x7c, 0x1a, 0xcf, 0x7a, 0xff, 0xec, 0x5b, 0xd9, + 0xe8, 0xa1, 0xfc, 0x09, 0x58, 0xcf, 0x09, 0x9f, 0x9e, 0xed, 0xdd, 0x25, 0x0d, 0x3d, 0x27, 0x3c, + 0xeb, 0xec, 0xa3, 0x2b, 0x31, 0xba, 0x71, 0x07, 0x90, 0x48, 0xa0, 0x53, 0x08, 0x86, 0x96, 0x99, + 0x0a, 0x68, 0xd6, 0xfe, 0xc7, 0x57, 0x83, 0x74, 0x07, 0x62, 0xb9, 0x64, 0x82, 0xb9, 0xe6, 0x72, + 0x49, 0xec, 0xbb, 0x97, 0x2b, 0x85, 0xe9, 0x5e, 0x5e, 0xc3, 0x2d, 0x1d, 0x14, 0x3a, 0x9e, 0x73, + 0x1b, 0x11, 0x7a, 0x30, 0xbf, 0xbb, 0xcd, 0xed, 0x56, 0x59, 0x8f, 0x9f, 0x5e, 0x0f, 0xac, 0xfa, + 0xed, 0x3c, 0xfb, 0xea, 0xa3, 0x61, 0xc0, 0xcf, 0x93, 0xb3, 0x2d, 0x8f, 0x8e, 0xd2, 0x3f, 0x60, + 0xaa, 0x3f, 0x59, 0x7a, 0x34, 0x4c, 0x05, 0x7f, 0x5f, 0x6c, 0x1c, 0x06, 0xaf, 0xc9, 0x1f, 0xca, + 0x33, 0x21, 0xe5, 0xf4, 0x3f, 0x8b, 0x4d, 0xfd, 0xfd, 0xe4, 0x89, 0x14, 0x9c, 0x55, 0xa4, 0xc9, + 0x67, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0xd3, 0x58, 0xb0, 0x0f, 0xf3, 0x29, 0x00, 0x00, } From 583614472f2cd25537c517249b1731c7d47e5938 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Sun, 2 Aug 2026 21:33:05 -0700 Subject: [PATCH 03/32] agent-simulation: drop the run-level judged means Nothing aggregates them: the run aggregation pools group fields, and the only JobMetrics-level scalars it means by hand are accuracy_score, experience_score and scenario_pass_rate. Both would have shipped empty, and experience_score already carries conciseness and conversation_progression at run level. If run-level judged aggregates are wanted later they should land together with the per-dimension flag rates, once something computes them. Also trims the comments on the fields this branch adds to what the names do not already say. --- protobufs/livekit_agent_simulation.proto | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/protobufs/livekit_agent_simulation.proto b/protobufs/livekit_agent_simulation.proto index 4e75c9e5e..b71dd9758 100644 --- a/protobufs/livekit_agent_simulation.proto +++ b/protobufs/livekit_agent_simulation.proto @@ -107,12 +107,12 @@ message SimulationRun { google.protobuf.Timestamp t0 = 13; // audio only; call start (first speech edge); turn times relative to it // Judged over the authored dialog (text and audio); needs the text judge. - optional float conciseness = 14; // judged {0, 0.5, 1} per agent turn: brief enough for voice; job = mean - // Whole-call issue flags (true = issue; absent = not judged), each first-class: - optional bool unnecessary_tool_calls = 15; // tool churn the dialog did not require - optional bool information_loss = 16; // agent dropped or forgot stated facts - optional bool redundant_statements = 17; // agent repeated itself without cause - optional bool poor_question_quality = 18; // vague, stacked, or already-answered questions + optional float conciseness = 14; // judged {0, 0.5, 1} per agent turn; job = mean + // Whole-call issue flags; true = present, absent = not judged. + optional bool unnecessary_tool_calls = 15; + optional bool information_loss = 16; + optional bool redundant_statements = 17; + optional bool poor_question_quality = 18; // Derived from the flags by fixed formula (0 flags = 1.0, 1 = 0.5, 2+ = 0.0); // the flags reach experience_score only through this, never directly. optional float conversation_progression = 19; @@ -230,9 +230,6 @@ message SimulationRun { uint32 jobs_total = 9; uint32 jobs_measured = 10; // composites cover jobs_measured - jobs_simulator_fault uint32 jobs_simulator_fault = 11; // spoiled by the simulator: flagged, not scored - - optional float conciseness = 12; // mean over judged jobs - optional float conversation_progression = 13; // mean over judged jobs } message Create { From 865edda870cfaa28dcb35813e575d2053e4967a7 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 04:34:09 +0000 Subject: [PATCH 04/32] generated protobuf --- livekit/livekit_agent_simulation.pb.go | 66 ++-- livekit/livekit_agent_simulation.twirp.go | 441 +++++++++++----------- 2 files changed, 243 insertions(+), 264 deletions(-) diff --git a/livekit/livekit_agent_simulation.pb.go b/livekit/livekit_agent_simulation.pb.go index ddaa02b4f..3b89fc55d 100644 --- a/livekit/livekit_agent_simulation.pb.go +++ b/livekit/livekit_agent_simulation.pb.go @@ -912,12 +912,12 @@ type SimulationRun_JobMetrics struct { HasRemoteSession bool `protobuf:"varint,12,opt,name=has_remote_session,json=hasRemoteSession,proto3" json:"has_remote_session,omitempty"` // false = waveform-only capture (e.g. SIP) T0 *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=t0,proto3" json:"t0,omitempty"` // audio only; call start (first speech edge); turn times relative to it // Judged over the authored dialog (text and audio); needs the text judge. - Conciseness *float32 `protobuf:"fixed32,14,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` // judged {0, 0.5, 1} per agent turn: brief enough for voice; job = mean - // Whole-call issue flags (true = issue; absent = not judged), each first-class: - UnnecessaryToolCalls *bool `protobuf:"varint,15,opt,name=unnecessary_tool_calls,json=unnecessaryToolCalls,proto3,oneof" json:"unnecessary_tool_calls,omitempty"` // tool churn the dialog did not require - InformationLoss *bool `protobuf:"varint,16,opt,name=information_loss,json=informationLoss,proto3,oneof" json:"information_loss,omitempty"` // agent dropped or forgot stated facts - RedundantStatements *bool `protobuf:"varint,17,opt,name=redundant_statements,json=redundantStatements,proto3,oneof" json:"redundant_statements,omitempty"` // agent repeated itself without cause - PoorQuestionQuality *bool `protobuf:"varint,18,opt,name=poor_question_quality,json=poorQuestionQuality,proto3,oneof" json:"poor_question_quality,omitempty"` // vague, stacked, or already-answered questions + Conciseness *float32 `protobuf:"fixed32,14,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` // judged {0, 0.5, 1} per agent turn; job = mean + // Whole-call issue flags; true = present, absent = not judged. + UnnecessaryToolCalls *bool `protobuf:"varint,15,opt,name=unnecessary_tool_calls,json=unnecessaryToolCalls,proto3,oneof" json:"unnecessary_tool_calls,omitempty"` + InformationLoss *bool `protobuf:"varint,16,opt,name=information_loss,json=informationLoss,proto3,oneof" json:"information_loss,omitempty"` + RedundantStatements *bool `protobuf:"varint,17,opt,name=redundant_statements,json=redundantStatements,proto3,oneof" json:"redundant_statements,omitempty"` + PoorQuestionQuality *bool `protobuf:"varint,18,opt,name=poor_question_quality,json=poorQuestionQuality,proto3,oneof" json:"poor_question_quality,omitempty"` // Derived from the flags by fixed formula (0 flags = 1.0, 1 = 0.5, 2+ = 0.0); // the flags reach experience_score only through this, never directly. ConversationProgression *float32 `protobuf:"fixed32,19,opt,name=conversation_progression,json=conversationProgression,proto3,oneof" json:"conversation_progression,omitempty"` @@ -1090,21 +1090,19 @@ func (x *SimulationRun_JobMetrics) GetConversationProgression() float32 { // Aggregates over this run's jobs. Reuses the JobMetrics group shapes. type SimulationRun_RunMetrics struct { - state protoimpl.MessageState `protogen:"open.v1"` - AccuracyScore *float32 `protobuf:"fixed32,1,opt,name=accuracy_score,json=accuracyScore,proto3,oneof" json:"accuracy_score,omitempty"` // mean over scored jobs - ExperienceScore *float32 `protobuf:"fixed32,2,opt,name=experience_score,json=experienceScore,proto3,oneof" json:"experience_score,omitempty"` - ScenarioPassRate *float32 `protobuf:"fixed32,3,opt,name=scenario_pass_rate,json=scenarioPassRate,proto3,oneof" json:"scenario_pass_rate,omitempty"` // share of jobs whose scenario verdict passed - Stt *SimulationRun_JobMetrics_STT `protobuf:"bytes,4,opt,name=stt,proto3" json:"stt,omitempty"` - Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,5,opt,name=llm,proto3" json:"llm,omitempty"` - Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,6,opt,name=tts,proto3" json:"tts,omitempty"` - Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,7,opt,name=conversation,proto3" json:"conversation,omitempty"` - JobsTotal uint32 `protobuf:"varint,9,opt,name=jobs_total,json=jobsTotal,proto3" json:"jobs_total,omitempty"` - JobsMeasured uint32 `protobuf:"varint,10,opt,name=jobs_measured,json=jobsMeasured,proto3" json:"jobs_measured,omitempty"` // composites cover jobs_measured - jobs_simulator_fault - JobsSimulatorFault uint32 `protobuf:"varint,11,opt,name=jobs_simulator_fault,json=jobsSimulatorFault,proto3" json:"jobs_simulator_fault,omitempty"` // spoiled by the simulator: flagged, not scored - Conciseness *float32 `protobuf:"fixed32,12,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` // mean over judged jobs - ConversationProgression *float32 `protobuf:"fixed32,13,opt,name=conversation_progression,json=conversationProgression,proto3,oneof" json:"conversation_progression,omitempty"` // mean over judged jobs - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + AccuracyScore *float32 `protobuf:"fixed32,1,opt,name=accuracy_score,json=accuracyScore,proto3,oneof" json:"accuracy_score,omitempty"` // mean over scored jobs + ExperienceScore *float32 `protobuf:"fixed32,2,opt,name=experience_score,json=experienceScore,proto3,oneof" json:"experience_score,omitempty"` + ScenarioPassRate *float32 `protobuf:"fixed32,3,opt,name=scenario_pass_rate,json=scenarioPassRate,proto3,oneof" json:"scenario_pass_rate,omitempty"` // share of jobs whose scenario verdict passed + Stt *SimulationRun_JobMetrics_STT `protobuf:"bytes,4,opt,name=stt,proto3" json:"stt,omitempty"` + Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,5,opt,name=llm,proto3" json:"llm,omitempty"` + Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,6,opt,name=tts,proto3" json:"tts,omitempty"` + Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,7,opt,name=conversation,proto3" json:"conversation,omitempty"` + JobsTotal uint32 `protobuf:"varint,9,opt,name=jobs_total,json=jobsTotal,proto3" json:"jobs_total,omitempty"` + JobsMeasured uint32 `protobuf:"varint,10,opt,name=jobs_measured,json=jobsMeasured,proto3" json:"jobs_measured,omitempty"` // composites cover jobs_measured - jobs_simulator_fault + JobsSimulatorFault uint32 `protobuf:"varint,11,opt,name=jobs_simulator_fault,json=jobsSimulatorFault,proto3" json:"jobs_simulator_fault,omitempty"` // spoiled by the simulator: flagged, not scored + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimulationRun_RunMetrics) Reset() { @@ -1207,20 +1205,6 @@ func (x *SimulationRun_RunMetrics) GetJobsSimulatorFault() uint32 { return 0 } -func (x *SimulationRun_RunMetrics) GetConciseness() float32 { - if x != nil && x.Conciseness != nil { - return *x.Conciseness - } - return 0 -} - -func (x *SimulationRun_RunMetrics) GetConversationProgression() float32 { - if x != nil && x.ConversationProgression != nil { - return *x.ConversationProgression - } - return 0 -} - type SimulationRun_Create struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -2852,7 +2836,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\n" + "suggestion\x18\x02 \x01(\tR\n" + "suggestion\x12\x14\n" + - "\x05label\x18\x03 \x01(\tR\x05label\"\xf1B\n" + + "\x05label\x18\x03 \x01(\tR\x05label\"\xddA\n" + "\rSimulationRun\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + "\n" + @@ -3052,7 +3036,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x11_information_lossB\x17\n" + "\x15_redundant_statementsB\x18\n" + "\x16_poor_question_qualityB\x1b\n" + - "\x19_conversation_progression\x1a\xe3\x05\n" + + "\x19_conversation_progression\x1a\xcf\x04\n" + "\n" + "RunMetrics\x12*\n" + "\x0eaccuracy_score\x18\x01 \x01(\x02H\x00R\raccuracyScore\x88\x01\x01\x12.\n" + @@ -3066,14 +3050,10 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "jobs_total\x18\t \x01(\rR\tjobsTotal\x12#\n" + "\rjobs_measured\x18\n" + " \x01(\rR\fjobsMeasured\x120\n" + - "\x14jobs_simulator_fault\x18\v \x01(\rR\x12jobsSimulatorFault\x12%\n" + - "\vconciseness\x18\f \x01(\x02H\x03R\vconciseness\x88\x01\x01\x12>\n" + - "\x18conversation_progression\x18\r \x01(\x02H\x04R\x17conversationProgression\x88\x01\x01B\x11\n" + + "\x14jobs_simulator_fault\x18\v \x01(\rR\x12jobsSimulatorFaultB\x11\n" + "\x0f_accuracy_scoreB\x13\n" + "\x11_experience_scoreB\x15\n" + - "\x13_scenario_pass_rateB\x0e\n" + - "\f_concisenessB\x1b\n" + - "\x19_conversation_progression\x1a\xf5\x03\n" + + "\x13_scenario_pass_rate\x1a\xf5\x03\n" + "\x06Create\x1a\xdc\x02\n" + "\aRequest\x12\x1d\n" + "\n" + diff --git a/livekit/livekit_agent_simulation.twirp.go b/livekit/livekit_agent_simulation.twirp.go index e25f7efff..85ec49578 100644 --- a/livekit/livekit_agent_simulation.twirp.go +++ b/livekit/livekit_agent_simulation.twirp.go @@ -1912,230 +1912,229 @@ func (s *agentSimulationServer) PathPrefix() string { } var twirpFileDescriptor9 = []byte{ - // 3599 bytes of a gzipped FileDescriptorProto + // 3578 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x1b, 0x49, 0x76, 0x37, 0xc9, 0x26, 0xd9, 0x7c, 0x14, 0xc9, 0x56, 0xe9, 0xc3, 0x74, 0xcf, 0x7a, 0xc6, 0xe3, 0x99, 0xd9, 0x35, 0xec, 0x59, 0xd9, 0xd1, 0xac, 0x77, 0x56, 0x9e, 0xdd, 0x20, 0xa2, 0x4c, 0x9b, 0x52, 0x24, 0x59, 0x53, 0xa4, 0x90, 0xec, 0x04, 0x41, 0xa3, 0xd5, 0x5d, 0xa6, 0x5a, 0x6e, 0x76, 0x71, 0xbb, 0xaa, 0x6d, 0x6b, 0x81, 0xdc, 0x07, 0xc8, 0x29, 0x87, 0x00, 0xc9, 0x25, 0xc8, 0x65, - 0x0e, 0xc9, 0x35, 0xa7, 0x00, 0x01, 0xf2, 0x37, 0x04, 0x01, 0x72, 0xca, 0x2d, 0xb7, 0xdc, 0x72, - 0x48, 0x4e, 0x39, 0x04, 0xf5, 0xd1, 0xcd, 0xe6, 0x97, 0xac, 0x99, 0xcc, 0xdc, 0xf6, 0xc6, 0x7e, - 0xef, 0xf7, 0xea, 0xe3, 0xd5, 0xfb, 0xd5, 0xab, 0xaa, 0x47, 0x78, 0x3f, 0x0c, 0x5e, 0x93, 0x57, - 0x01, 0x77, 0xdc, 0x21, 0x89, 0xb8, 0xc3, 0x82, 0x51, 0x12, 0xba, 0x3c, 0xa0, 0xd1, 0xd6, 0x38, - 0xa6, 0x9c, 0xa2, 0xaa, 0xd6, 0xdb, 0x1f, 0x4a, 0xc0, 0xc3, 0x19, 0x38, 0x61, 0x2c, 0xc3, 0xda, - 0x1f, 0x0c, 0x29, 0x1d, 0x86, 0xe4, 0xa1, 0xfc, 0x3a, 0x4b, 0x5e, 0x3e, 0xe4, 0xc1, 0x88, 0x30, - 0xee, 0x8e, 0xc6, 0x1a, 0x70, 0x2b, 0xb5, 0xf6, 0x42, 0x9a, 0xf8, 0xaa, 0x0d, 0xad, 0x5a, 0x4f, - 0x55, 0x23, 0xea, 0x93, 0x90, 0x29, 0xe9, 0xdd, 0x7f, 0x29, 0xc1, 0x7a, 0x3f, 0x1b, 0x12, 0x4e, - 0xa2, 0x7e, 0x32, 0x1a, 0xb9, 0xf1, 0x25, 0xda, 0x84, 0xca, 0xd8, 0x65, 0x8c, 0xf8, 0xed, 0xc2, - 0x9d, 0xc2, 0xbd, 0x32, 0xd6, 0x5f, 0x42, 0xfe, 0xd2, 0x0d, 0x42, 0xe2, 0xb7, 0x8b, 0x4a, 0xae, - 0xbe, 0xd0, 0x6d, 0x80, 0x21, 0x0d, 0xa2, 0xa1, 0xf3, 0x86, 0x84, 0x61, 0xbb, 0x74, 0xa7, 0x70, - 0xaf, 0x86, 0x6b, 0x52, 0xf2, 0x47, 0x24, 0x0c, 0x85, 0x9a, 0x53, 0x27, 0x18, 0x8d, 0x63, 0xfa, - 0x9a, 0xb4, 0x0d, 0xa5, 0xe6, 0x74, 0x5f, 0x09, 0xd0, 0x17, 0x50, 0x09, 0x18, 0x4b, 0x08, 0x6b, - 0x97, 0xef, 0x94, 0xee, 0xd5, 0xb7, 0x3f, 0xda, 0xd2, 0xa3, 0xdd, 0x5a, 0x34, 0xb8, 0xad, 0x7d, - 0x81, 0xc5, 0xda, 0x04, 0x7d, 0x09, 0x2b, 0xde, 0xb9, 0xcb, 0x9d, 0xf3, 0x80, 0x71, 0x1a, 0x5f, - 0xb6, 0x2b, 0xb2, 0x89, 0xad, 0xab, 0x9b, 0xd8, 0x3b, 0x77, 0x79, 0x4f, 0x19, 0x74, 0x23, 0x1e, - 0x5f, 0xe2, 0xba, 0x37, 0x91, 0xd8, 0x5f, 0x81, 0x35, 0x0b, 0x40, 0x16, 0x94, 0x5e, 0x91, 0x4b, - 0xe9, 0x8e, 0x1a, 0x16, 0x3f, 0xd1, 0x23, 0x28, 0xbf, 0x76, 0xc3, 0x84, 0x48, 0x57, 0xd4, 0xb7, - 0xed, 0xac, 0x47, 0xe5, 0x77, 0xd1, 0xc2, 0x1e, 0x8d, 0x38, 0x79, 0xcb, 0xb1, 0x02, 0x3e, 0x29, - 0xfe, 0xa2, 0x60, 0x3b, 0x50, 0x96, 0xe3, 0x47, 0x77, 0xa0, 0xee, 0x13, 0xe6, 0xc5, 0xc1, 0x58, - 0x8c, 0x4d, 0x37, 0x9c, 0x17, 0xa1, 0xf7, 0x01, 0x58, 0x32, 0x1c, 0x12, 0x26, 0x01, 0x45, 0x09, - 0xc8, 0x49, 0xd0, 0x3a, 0x94, 0x43, 0xf7, 0x8c, 0xa4, 0xfe, 0x56, 0x1f, 0x77, 0xff, 0xab, 0x03, - 0x8d, 0xa9, 0x39, 0xa3, 0x26, 0x14, 0x03, 0x5f, 0x77, 0x50, 0x0c, 0xe4, 0x62, 0x8d, 0x63, 0x7a, - 0x41, 0x3c, 0xee, 0x04, 0xbe, 0x6e, 0xb7, 0xa6, 0x25, 0xfb, 0x3e, 0x7a, 0x0c, 0x15, 0xc6, 0x5d, - 0x9e, 0x30, 0xd9, 0x6e, 0x73, 0xfb, 0xf6, 0x62, 0x57, 0x6e, 0xf5, 0x25, 0x08, 0x6b, 0x30, 0x7a, - 0x00, 0xab, 0x2a, 0x68, 0xf3, 0xb3, 0x52, 0x4b, 0x6d, 0x49, 0xc5, 0xd3, 0xdc, 0xd4, 0xd6, 0xa1, - 0x4c, 0xe2, 0x98, 0xc6, 0xed, 0xb2, 0x1a, 0xba, 0xfc, 0x40, 0x3b, 0x00, 0x5e, 0x4c, 0x5c, 0x4e, - 0x7c, 0xc7, 0xe5, 0xed, 0x8a, 0x76, 0xab, 0x8a, 0xfa, 0xad, 0x34, 0xea, 0xb7, 0x06, 0x69, 0xd4, - 0xe3, 0x9a, 0x46, 0xef, 0x72, 0xb4, 0x05, 0xc6, 0x05, 0x3d, 0x63, 0xed, 0xaa, 0x5c, 0x7d, 0x7b, - 0xc9, 0x90, 0x0f, 0xe8, 0x19, 0x96, 0x38, 0xe1, 0x03, 0x35, 0xda, 0xc8, 0x1d, 0x91, 0x76, 0x4d, - 0xf9, 0x40, 0x4a, 0x8e, 0xdd, 0x11, 0x41, 0xbf, 0x82, 0x26, 0xf3, 0x48, 0xe4, 0xc6, 0x01, 0x75, - 0x86, 0x31, 0x4d, 0xc6, 0x6d, 0x90, 0xa3, 0xd9, 0x9c, 0x34, 0xac, 0xd5, 0xcf, 0x85, 0x16, 0x37, - 0x58, 0xfe, 0x13, 0x3d, 0x06, 0x93, 0x44, 0xbe, 0x9a, 0x46, 0xfd, 0x9d, 0xd3, 0xa8, 0x4a, 0xec, - 0x2e, 0x47, 0xef, 0x41, 0xed, 0x82, 0x9e, 0x39, 0x1e, 0x4d, 0x22, 0xde, 0x5e, 0x91, 0x04, 0x33, - 0x2f, 0xe8, 0xd9, 0x9e, 0xf8, 0x46, 0x1f, 0xc2, 0x8a, 0x22, 0xa1, 0xd6, 0x37, 0xa4, 0xbe, 0xae, - 0x64, 0x19, 0x44, 0xf1, 0x51, 0x43, 0x9a, 0x0a, 0xa2, 0x64, 0x0a, 0xf2, 0x13, 0x68, 0x45, 0xc9, - 0x28, 0xb7, 0x0f, 0xb1, 0x76, 0x4b, 0xa2, 0x9a, 0x51, 0x32, 0x9a, 0x38, 0x8b, 0xa1, 0x6d, 0x28, - 0x27, 0xcc, 0x1d, 0x92, 0xb6, 0x25, 0xc7, 0xff, 0xa3, 0x25, 0x1e, 0x3d, 0x15, 0x18, 0xac, 0xa0, - 0x22, 0xa4, 0x3d, 0x1a, 0x79, 0x49, 0x1c, 0x93, 0xc8, 0xbb, 0x6c, 0xaf, 0xaa, 0xee, 0x73, 0x22, - 0xf4, 0x00, 0x0c, 0xb1, 0x01, 0xb5, 0x91, 0x8c, 0xac, 0x9b, 0x0b, 0x1a, 0x3d, 0xa2, 0x3e, 0xc1, - 0x12, 0x84, 0xbe, 0x80, 0xea, 0x88, 0xf0, 0x38, 0xf0, 0x58, 0x7b, 0x4d, 0x0e, 0xe2, 0xc3, 0x25, - 0x83, 0xc0, 0x49, 0x74, 0xa4, 0x80, 0x38, 0xb5, 0x10, 0xbe, 0x60, 0x8a, 0xec, 0xce, 0x6f, 0x19, - 0xf7, 0xdb, 0xeb, 0x77, 0x0a, 0xf7, 0x56, 0x70, 0x5d, 0xcb, 0xbe, 0x62, 0xdc, 0xb7, 0xff, 0xad, - 0x0c, 0xa5, 0x03, 0x7a, 0x36, 0xc7, 0x8f, 0x9d, 0x8c, 0x00, 0x45, 0x39, 0xcc, 0x0f, 0x97, 0x47, - 0xd3, 0x2c, 0x09, 0xee, 0xc2, 0x4a, 0x10, 0x31, 0x1e, 0x27, 0x9e, 0xf2, 0xad, 0x62, 0xe6, 0x94, - 0x6c, 0x12, 0xfb, 0x46, 0x3e, 0xf6, 0x7f, 0x0a, 0x48, 0x05, 0x24, 0x79, 0x3b, 0x26, 0x1e, 0xd7, - 0x6b, 0xa3, 0xe8, 0xa1, 0x88, 0xd5, 0xcd, 0x29, 0x26, 0xdc, 0xaf, 0xe4, 0xb8, 0x8f, 0x10, 0x18, - 0xdc, 0x1d, 0x2a, 0x16, 0xd4, 0xb0, 0xfc, 0x2d, 0x82, 0x2a, 0xa6, 0x74, 0xa4, 0x02, 0xdd, 0x94, - 0x68, 0x53, 0x08, 0x64, 0x9c, 0xef, 0x00, 0x30, 0xee, 0xc6, 0x9a, 0x71, 0xf0, 0x6e, 0xc6, 0x69, - 0xf4, 0x2e, 0xff, 0xae, 0x31, 0x7e, 0x13, 0xaa, 0x72, 0x38, 0x81, 0x2f, 0x23, 0xbc, 0x86, 0x2b, - 0xe2, 0x73, 0xdf, 0x47, 0x3f, 0x4f, 0x03, 0xae, 0x21, 0x1b, 0xbb, 0x73, 0x85, 0xd3, 0xa7, 0x82, - 0x2e, 0x17, 0x25, 0xcd, 0x2b, 0xa3, 0xe4, 0x80, 0x9e, 0xcd, 0x46, 0x89, 0xfd, 0xa7, 0x50, 0x96, - 0x8d, 0xa1, 0x7b, 0x60, 0x89, 0x9d, 0xda, 0xe1, 0x49, 0x1c, 0x31, 0x4d, 0x1f, 0x95, 0xfa, 0x9a, - 0x42, 0x3e, 0x10, 0x62, 0xc5, 0xa0, 0xfb, 0xb0, 0xea, 0x26, 0x7e, 0x40, 0xa7, 0xa0, 0x2a, 0x1b, - 0xb6, 0xa4, 0x62, 0x82, 0xbd, 0x4b, 0xa1, 0xa2, 0x02, 0x04, 0x21, 0x68, 0xf6, 0x07, 0xbb, 0x83, - 0xd3, 0xbe, 0x73, 0xd2, 0x3d, 0x7e, 0xba, 0x7f, 0xfc, 0xdc, 0xba, 0x91, 0x93, 0xe1, 0xd3, 0xe3, - 0x63, 0x21, 0x2b, 0xa0, 0x75, 0xb0, 0xb4, 0x6c, 0xef, 0xc5, 0xd1, 0xc9, 0x61, 0x77, 0xd0, 0x7d, - 0x6a, 0x15, 0xd1, 0x2a, 0x34, 0xb4, 0xf4, 0xd9, 0xee, 0xfe, 0x61, 0xf7, 0xa9, 0x55, 0xca, 0x03, - 0x77, 0x8f, 0xf7, 0xba, 0x87, 0x42, 0x6a, 0x1c, 0x18, 0x66, 0xcd, 0x02, 0xfb, 0x2f, 0x3f, 0x01, - 0x98, 0xcc, 0x16, 0xdd, 0x87, 0xa6, 0xeb, 0x79, 0x49, 0xec, 0x7a, 0x97, 0x0e, 0xf3, 0x68, 0x4c, - 0xe4, 0xcc, 0x8a, 0xbd, 0x1b, 0xb8, 0x91, 0xca, 0xfb, 0x42, 0xfc, 0x75, 0xa1, 0x80, 0xb6, 0xc0, - 0x12, 0x01, 0x18, 0x07, 0x24, 0xf2, 0x88, 0x46, 0x17, 0x25, 0xba, 0x80, 0x5b, 0x13, 0x4d, 0x86, - 0xff, 0x14, 0x5a, 0xdc, 0x65, 0xaf, 0x1c, 0x8f, 0x8e, 0xc6, 0x21, 0x91, 0x7b, 0x7e, 0x49, 0xc2, - 0x8b, 0xb8, 0x29, 0x14, 0x7b, 0x99, 0x5c, 0xa0, 0x3f, 0x87, 0x12, 0xe3, 0x5c, 0x06, 0x7e, 0x7d, - 0xfb, 0x93, 0x77, 0xae, 0xd3, 0x56, 0x7f, 0x30, 0xc0, 0xc2, 0x42, 0x18, 0x86, 0xe1, 0x48, 0xd2, - 0xe1, 0x5a, 0x86, 0x87, 0x87, 0x47, 0x58, 0x58, 0x08, 0x43, 0xce, 0x99, 0xce, 0x25, 0xd7, 0x30, - 0x1c, 0x0c, 0xfa, 0x58, 0x58, 0x20, 0x0c, 0x2b, 0x1e, 0x8d, 0x5e, 0x93, 0x98, 0x49, 0x58, 0xbb, - 0x2a, 0x5b, 0xd8, 0x7a, 0x77, 0x0b, 0x7b, 0x39, 0x2b, 0x3c, 0xd5, 0x06, 0xda, 0x87, 0x9a, 0xde, - 0x78, 0x69, 0x2c, 0xa9, 0x58, 0xdf, 0x7e, 0x70, 0x0d, 0x27, 0xa4, 0x26, 0x78, 0x62, 0x8d, 0x7e, - 0x09, 0x65, 0x19, 0x7f, 0xed, 0x9a, 0x4c, 0x78, 0x3f, 0xbe, 0xc6, 0xcc, 0x92, 0x38, 0xc2, 0xca, - 0x08, 0x7d, 0x00, 0xf5, 0x8b, 0xc4, 0x1f, 0x12, 0x75, 0x1a, 0x94, 0xbc, 0xaf, 0x61, 0x90, 0x22, - 0xb1, 0xff, 0x86, 0x93, 0x20, 0xcf, 0xc3, 0xea, 0x12, 0xa6, 0x82, 0xfc, 0x60, 0x82, 0xfd, 0x14, - 0xd0, 0xb9, 0xcb, 0x9c, 0x98, 0x8c, 0x28, 0x27, 0xe9, 0x91, 0x55, 0x92, 0xdb, 0xc4, 0xd6, 0xb9, - 0xcb, 0xb0, 0x54, 0xf4, 0x95, 0x1c, 0xdd, 0x87, 0x22, 0x7f, 0xa4, 0x39, 0x7e, 0xd5, 0x86, 0x51, - 0xe4, 0x8f, 0xd0, 0x27, 0x2a, 0x9f, 0x04, 0x8c, 0x44, 0x84, 0x29, 0x7a, 0x17, 0x7b, 0x25, 0x9c, - 0x17, 0x8a, 0xa8, 0xda, 0x81, 0xcd, 0x24, 0x8a, 0x88, 0x47, 0x18, 0x13, 0xdb, 0x3d, 0xa7, 0x34, - 0x74, 0x3c, 0x37, 0x0c, 0x55, 0x6a, 0x33, 0x7b, 0x06, 0x5e, 0xcf, 0xe9, 0x07, 0x94, 0x86, 0x7b, - 0x42, 0xab, 0xc3, 0x3d, 0x88, 0x5e, 0xd2, 0x78, 0x24, 0x3d, 0xe6, 0x84, 0x94, 0x31, 0x99, 0xf0, - 0xcc, 0x5e, 0x19, 0xb7, 0x72, 0x9a, 0x43, 0xaa, 0xba, 0xfa, 0x39, 0xac, 0xc7, 0xc4, 0x4f, 0x22, - 0xdf, 0x15, 0xa7, 0x73, 0xee, 0x72, 0x32, 0x22, 0x11, 0x67, 0x32, 0xd5, 0x99, 0xbd, 0x0a, 0x5e, - 0xcb, 0xb4, 0xfd, 0x4c, 0xa9, 0x02, 0x7f, 0x63, 0x4c, 0x69, 0xec, 0xfc, 0x26, 0x51, 0x67, 0x37, - 0xe7, 0x37, 0x89, 0x1b, 0x06, 0xfc, 0x52, 0x26, 0x42, 0xb3, 0x57, 0xc5, 0x6b, 0x42, 0xfd, 0xa5, - 0xd6, 0x7e, 0xa9, 0x94, 0xc2, 0xf0, 0xf7, 0xa1, 0x9d, 0x0f, 0x21, 0x67, 0x1c, 0xd3, 0x61, 0xac, - 0x5d, 0xbc, 0x26, 0xfd, 0x61, 0xe2, 0x9b, 0x79, 0xc4, 0xc9, 0x04, 0xf0, 0x75, 0xa1, 0x60, 0xff, - 0xaf, 0x01, 0xa5, 0xfe, 0x60, 0x80, 0x36, 0xa0, 0xf4, 0x86, 0xc4, 0x19, 0xf1, 0xc5, 0x87, 0x68, - 0xfe, 0x16, 0x94, 0xdf, 0xd0, 0xd8, 0x57, 0x99, 0xae, 0xd1, 0x2b, 0x60, 0xf5, 0x29, 0x54, 0x1f, - 0x43, 0x5d, 0xfc, 0x76, 0x64, 0x7a, 0x52, 0x99, 0xac, 0xd1, 0x2b, 0x62, 0x10, 0xc2, 0xae, 0x94, - 0x09, 0xd4, 0x06, 0x94, 0x3c, 0xa2, 0x52, 0x99, 0x58, 0x1a, 0xf1, 0xa1, 0xdb, 0xf5, 0xce, 0xdd, - 0x98, 0xc9, 0x93, 0x55, 0xa3, 0x67, 0x60, 0xf5, 0xa9, 0xdb, 0x15, 0xbf, 0xd3, 0x76, 0x41, 0x02, - 0xca, 0x18, 0x84, 0x70, 0xd2, 0xee, 0xaf, 0xa0, 0xcd, 0x63, 0x37, 0xca, 0x4e, 0x8c, 0x4e, 0xe8, - 0x72, 0x71, 0x82, 0x70, 0x46, 0x4c, 0x32, 0xa7, 0xd1, 0xab, 0xe0, 0xcd, 0x29, 0xc4, 0xa1, 0x02, - 0x1c, 0x49, 0xf3, 0x6d, 0x40, 0x24, 0xe2, 0x01, 0xbf, 0x74, 0x62, 0xe2, 0xd1, 0x61, 0x14, 0x48, - 0x0e, 0xd7, 0xe5, 0x28, 0xab, 0x78, 0x55, 0xe9, 0xf0, 0x44, 0x95, 0x6e, 0x7d, 0x42, 0x1e, 0x10, - 0xe6, 0x24, 0x9c, 0x93, 0x98, 0xa8, 0x14, 0xd5, 0xe8, 0x99, 0xb8, 0x95, 0x6a, 0x4e, 0x95, 0x42, - 0xe0, 0x7f, 0x06, 0x6b, 0x19, 0x5e, 0xf7, 0xf2, 0x5b, 0xe2, 0xcb, 0xd0, 0x6e, 0xf4, 0x6a, 0x18, - 0xa5, 0x4a, 0x9c, 0xe9, 0xbe, 0x2e, 0x14, 0x3a, 0x15, 0x30, 0x9c, 0x37, 0x24, 0xee, 0x98, 0x50, - 0x71, 0xa4, 0xaf, 0x3b, 0x4d, 0x58, 0x71, 0x72, 0x9e, 0x96, 0x08, 0x4f, 0x23, 0xa4, 0xd7, 0x24, - 0x22, 0xe7, 0xb3, 0xce, 0x7b, 0x70, 0xcb, 0x59, 0xe6, 0x9d, 0xce, 0x06, 0xac, 0x39, 0xf3, 0x73, - 0xef, 0xac, 0xc1, 0xaa, 0x33, 0x3b, 0xbd, 0xce, 0x26, 0xac, 0x3b, 0x0b, 0xe6, 0x70, 0x60, 0x98, - 0x65, 0xab, 0x72, 0x60, 0x98, 0x15, 0xab, 0x7a, 0x60, 0x98, 0x55, 0xcb, 0xc4, 0xcd, 0x57, 0xe4, - 0x92, 0x93, 0x78, 0x24, 0x50, 0x6e, 0x18, 0x62, 0x4b, 0x7f, 0x67, 0x6d, 0xe1, 0xb5, 0x4c, 0x32, - 0x69, 0xc8, 0xfe, 0xc7, 0x02, 0x94, 0x0e, 0x0f, 0x8f, 0xd0, 0x8f, 0xa0, 0xca, 0xf9, 0x4b, 0x2e, - 0x56, 0xaf, 0x20, 0xfd, 0x73, 0x03, 0x57, 0x84, 0x40, 0xad, 0x96, 0xd2, 0x32, 0xa1, 0x4d, 0xe3, - 0x50, 0x68, 0x99, 0xd2, 0x3e, 0x84, 0x55, 0x4e, 0x5f, 0x91, 0x88, 0x39, 0x63, 0x12, 0x3b, 0x8c, - 0x78, 0x34, 0xf2, 0xb3, 0x24, 0xd3, 0x52, 0xaa, 0x13, 0x12, 0xf7, 0xa5, 0x42, 0xb8, 0x18, 0xc0, - 0x74, 0x74, 0x6f, 0xe9, 0x6f, 0xd1, 0x76, 0x67, 0x1d, 0x90, 0x33, 0xd7, 0xd2, 0x81, 0x61, 0x1a, - 0x56, 0x19, 0xaf, 0xe6, 0xf6, 0x14, 0x95, 0xf6, 0xec, 0xff, 0x29, 0x43, 0x69, 0x30, 0xe8, 0xeb, - 0xd1, 0xb9, 0xb3, 0x63, 0x77, 0xf3, 0x63, 0x3f, 0x9b, 0x1d, 0xfb, 0xd9, 0x51, 0x4a, 0x0f, 0x41, - 0xbb, 0x74, 0xb4, 0x73, 0xb4, 0xab, 0x4a, 0x93, 0xd2, 0x72, 0xda, 0x99, 0x9a, 0x3f, 0x8b, 0x69, - 0x57, 0x93, 0xed, 0x96, 0xe7, 0x69, 0x07, 0x9a, 0x22, 0x4b, 0x69, 0x57, 0x97, 0x80, 0xea, 0x2c, - 0xed, 0x1e, 0xc1, 0x6a, 0xe4, 0xf2, 0x24, 0x76, 0xc3, 0x89, 0x23, 0x64, 0xd6, 0x15, 0xfb, 0x8c, - 0x95, 0x53, 0x65, 0x07, 0x80, 0x47, 0xb0, 0x4a, 0xa2, 0x24, 0xf2, 0x02, 0xb5, 0x3f, 0x29, 0x8b, - 0x8a, 0xb4, 0xa8, 0x61, 0x2b, 0xa7, 0xca, 0x2c, 0x16, 0x73, 0x53, 0x6d, 0xee, 0xf0, 0x2d, 0xb8, - 0xd9, 0x92, 0x53, 0xa8, 0x7f, 0x1b, 0x6e, 0x5a, 0xd2, 0x64, 0x65, 0x19, 0x37, 0x75, 0xb0, 0xb8, - 0xb9, 0xc0, 0x11, 0x0b, 0xfb, 0xbd, 0x70, 0x56, 0x04, 0xdf, 0x9c, 0x6b, 0xa5, 0x74, 0xce, 0x7d, - 0xdf, 0x13, 0x85, 0x0d, 0xab, 0x7c, 0x60, 0x98, 0x2b, 0x56, 0xe3, 0xc0, 0x30, 0x1b, 0x56, 0x13, - 0xb7, 0xd8, 0x98, 0x10, 0xef, 0xdc, 0x89, 0x5d, 0x4e, 0x9c, 0x37, 0xe3, 0x11, 0xae, 0x9f, 0x13, - 0x37, 0xf6, 0xd5, 0x8c, 0x70, 0x4d, 0x6b, 0x47, 0xcc, 0xfe, 0x6b, 0x80, 0x95, 0xfc, 0x29, 0x46, - 0x32, 0x30, 0x89, 0x23, 0x87, 0xbb, 0xaf, 0x82, 0x68, 0x38, 0x73, 0x86, 0x6c, 0x09, 0xd5, 0x40, - 0x6a, 0xb2, 0x25, 0x7e, 0x02, 0x37, 0x63, 0xc2, 0xc6, 0x34, 0x62, 0x24, 0xdb, 0x9a, 0xc6, 0x8f, - 0x1f, 0xa5, 0x24, 0x29, 0xf7, 0x0a, 0x78, 0x3d, 0x05, 0xe8, 0x7d, 0xfb, 0xe4, 0xf1, 0x23, 0x45, - 0x99, 0x85, 0xb6, 0x3b, 0x8f, 0x85, 0x6d, 0x49, 0xda, 0x16, 0xe7, 0x6d, 0x77, 0x1e, 0x5f, 0x65, - 0xbb, 0x23, 0x6c, 0x0d, 0x69, 0x5b, 0x5a, 0x60, 0xbb, 0xa3, 0x6c, 0x3f, 0x83, 0xb5, 0x39, 0xdb, - 0x91, 0x3a, 0x0d, 0x94, 0x7b, 0x06, 0x5e, 0x9d, 0xb1, 0x3b, 0x4a, 0xd3, 0xd4, 0x9c, 0x11, 0x73, - 0xc5, 0x91, 0x57, 0x9d, 0x09, 0x44, 0x66, 0xdb, 0x9c, 0xb1, 0xec, 0x2b, 0xbd, 0x30, 0xff, 0x05, - 0x6c, 0xaa, 0x4b, 0xdf, 0x65, 0x40, 0x42, 0x3f, 0xdf, 0x6d, 0x59, 0x13, 0x78, 0x4d, 0xea, 0x7f, - 0x2d, 0xd4, 0x53, 0x1d, 0x7f, 0x01, 0x37, 0x09, 0xe5, 0xce, 0x28, 0x60, 0xe3, 0x98, 0xf8, 0x81, - 0xbc, 0x5a, 0xea, 0xbb, 0x48, 0x45, 0x53, 0x7b, 0x83, 0x50, 0x7e, 0x94, 0xd7, 0xcb, 0x3b, 0x89, - 0x30, 0xbe, 0x07, 0x0d, 0xfa, 0x9a, 0xc4, 0xa1, 0x3b, 0x16, 0xc1, 0x10, 0x50, 0xb9, 0x0d, 0x09, - 0x86, 0xaf, 0x68, 0x31, 0x16, 0x52, 0xbd, 0xf7, 0xa6, 0xc8, 0x2c, 0x3e, 0xf4, 0x9e, 0x54, 0xc3, - 0x2d, 0xad, 0xea, 0x4b, 0x8d, 0x1a, 0xd7, 0x03, 0x68, 0x71, 0xca, 0xdd, 0x30, 0x07, 0x57, 0x47, - 0x00, 0xc0, 0x0d, 0xa9, 0xc8, 0x83, 0x3f, 0x87, 0x0d, 0xf7, 0xcd, 0xab, 0x37, 0x22, 0x08, 0x59, - 0x10, 0xca, 0x1b, 0x87, 0x9a, 0x42, 0x5d, 0x53, 0x7b, 0x4d, 0xab, 0xfb, 0x4a, 0x9b, 0x4d, 0x60, - 0x0b, 0xac, 0x24, 0x72, 0x23, 0xf6, 0x46, 0x50, 0x40, 0x5d, 0xc4, 0x74, 0xaa, 0x5e, 0xc1, 0xad, - 0x89, 0x46, 0xde, 0xc4, 0xf4, 0x32, 0xbd, 0x74, 0x43, 0x46, 0x9c, 0x20, 0xe2, 0x24, 0x8e, 0x93, - 0x71, 0xce, 0x5d, 0x2a, 0x5f, 0x37, 0xf0, 0xa6, 0x44, 0xec, 0xe7, 0x00, 0x59, 0x77, 0x5d, 0xb8, - 0xad, 0x96, 0x29, 0x26, 0x63, 0x2a, 0x2f, 0xcb, 0x64, 0x7b, 0x2a, 0x48, 0xd4, 0x56, 0xd4, 0xc4, - 0xb7, 0x24, 0x0c, 0x6b, 0x54, 0x77, 0x7b, 0x2a, 0x58, 0x54, 0xfe, 0x99, 0xe5, 0x51, 0xc7, 0x86, - 0xb6, 0xb3, 0x84, 0x2c, 0x4b, 0x74, 0x92, 0x0c, 0xcb, 0x74, 0x22, 0xd8, 0xe5, 0xa6, 0xb0, 0x20, - 0x98, 0xe5, 0xc1, 0x61, 0x59, 0xbc, 0x76, 0x6e, 0xc1, 0x4d, 0x67, 0x71, 0x34, 0xca, 0xbe, 0x96, - 0x84, 0x5b, 0xc7, 0x82, 0xa6, 0x33, 0x15, 0x4d, 0x72, 0x9e, 0x73, 0x51, 0xd3, 0x41, 0x60, 0x39, - 0x33, 0xa1, 0xd1, 0x69, 0xc3, 0xa6, 0xb3, 0x30, 0x02, 0xe4, 0x5e, 0x37, 0xbb, 0xc4, 0x72, 0xf8, - 0xcb, 0xd6, 0xb1, 0x73, 0x07, 0xde, 0x77, 0xae, 0x5c, 0xa5, 0x03, 0xc3, 0x04, 0xab, 0x7e, 0x60, - 0x98, 0x4d, 0xab, 0x85, 0xad, 0xb4, 0x3b, 0x35, 0xa4, 0x11, 0xc3, 0x1f, 0x2f, 0x68, 0x39, 0x89, - 0xc4, 0x8e, 0xfa, 0x5a, 0x0e, 0x41, 0xf6, 0x62, 0xff, 0x55, 0x01, 0x6a, 0xd9, 0x85, 0x4c, 0x26, - 0x3f, 0x37, 0x0e, 0x2f, 0x1d, 0x71, 0xf0, 0x09, 0x22, 0x37, 0x7b, 0xc9, 0x35, 0x7b, 0x37, 0xb0, - 0x25, 0x55, 0x83, 0x89, 0x46, 0x47, 0xae, 0x18, 0xd1, 0x94, 0x41, 0x51, 0x1a, 0x14, 0x70, 0x4b, - 0x68, 0xa6, 0xf1, 0x2a, 0x41, 0xcc, 0x76, 0x21, 0xbd, 0x33, 0xdb, 0x8c, 0xfd, 0xaf, 0x25, 0x30, - 0x44, 0xc4, 0xa3, 0x75, 0x28, 0x07, 0x91, 0x4f, 0xde, 0xaa, 0xe3, 0x0a, 0x56, 0x1f, 0xe8, 0x01, - 0x18, 0x31, 0x0d, 0x89, 0x7e, 0xd3, 0xba, 0xb9, 0xe0, 0xb5, 0x1a, 0xd3, 0x90, 0x60, 0x09, 0x42, - 0xef, 0x83, 0x29, 0x5f, 0x7a, 0xd2, 0x5d, 0x57, 0x1c, 0x7a, 0xaa, 0x52, 0xa2, 0x98, 0x6b, 0x43, - 0x85, 0x44, 0x7e, 0xba, 0xaf, 0xca, 0x8b, 0x03, 0x89, 0xfc, 0x94, 0xd5, 0xf2, 0x92, 0x5f, 0xfe, - 0xae, 0x97, 0xfc, 0xca, 0x77, 0xbd, 0xe4, 0x57, 0xff, 0xdf, 0x97, 0x7c, 0xf3, 0x7b, 0xb8, 0xe4, - 0xcf, 0x5c, 0x5a, 0x6b, 0xfa, 0xe8, 0x37, 0x73, 0x69, 0xed, 0xd4, 0xa1, 0xe6, 0xa4, 0x2e, 0xee, - 0xd4, 0xa0, 0xea, 0x28, 0x7f, 0xaa, 0x73, 0xc3, 0x04, 0xda, 0x59, 0x85, 0x96, 0x33, 0xfd, 0x7a, - 0xa3, 0xce, 0x01, 0x33, 0x8f, 0x34, 0x8a, 0x5e, 0xd3, 0x2f, 0x31, 0x73, 0x6d, 0x09, 0x86, 0x2f, - 0xbe, 0x29, 0xcb, 0x36, 0x67, 0x6f, 0xc2, 0x9d, 0x9b, 0xb0, 0xe1, 0x2c, 0xba, 0xee, 0x4a, 0xde, - 0x2e, 0xbc, 0xcf, 0x4a, 0x8a, 0x2e, 0xbb, 0xb0, 0xda, 0xff, 0x51, 0x06, 0x98, 0xbc, 0xd5, 0xfe, - 0xa0, 0xef, 0x52, 0xbf, 0x07, 0x28, 0x7b, 0xc0, 0x1f, 0xbb, 0x8c, 0xc9, 0x53, 0x4f, 0x76, 0x0e, - 0xb7, 0x52, 0xdd, 0x89, 0xcb, 0x18, 0x76, 0x39, 0xf9, 0xdd, 0xe3, 0x14, 0xba, 0x0d, 0x70, 0x41, - 0xcf, 0x98, 0xda, 0x10, 0x55, 0xd2, 0xc6, 0x35, 0x21, 0x19, 0x08, 0x01, 0xfa, 0x08, 0x1a, 0x52, - 0x3d, 0x22, 0x2e, 0x4b, 0xc4, 0xf1, 0x5b, 0x5e, 0x31, 0xf0, 0x8a, 0x10, 0x1e, 0x69, 0x19, 0x7a, - 0x04, 0xeb, 0x12, 0x94, 0xbd, 0x53, 0x39, 0x2f, 0xdd, 0x24, 0xd4, 0xf9, 0x1c, 0x23, 0xa1, 0xcb, - 0x36, 0xcf, 0x67, 0x42, 0x33, 0xcb, 0x96, 0x95, 0x25, 0x4f, 0x3c, 0x57, 0x3d, 0x83, 0x34, 0xa4, - 0x8d, 0x71, 0xd5, 0x33, 0xc8, 0xb5, 0x59, 0x24, 0x4e, 0xde, 0xf3, 0x71, 0x33, 0x47, 0xa4, 0x2b, - 0xa3, 0xfc, 0xbf, 0x4b, 0x50, 0xd9, 0x93, 0x85, 0x29, 0xfb, 0xdf, 0x8b, 0x50, 0xc5, 0x44, 0x92, - 0x64, 0xa6, 0xea, 0x56, 0x98, 0xad, 0xba, 0x4d, 0x17, 0xa4, 0x8a, 0xb3, 0x05, 0xa9, 0x05, 0x75, - 0x1b, 0x63, 0x61, 0xdd, 0x66, 0x13, 0x2a, 0x31, 0x19, 0x0a, 0xbf, 0x54, 0xf4, 0xf3, 0xba, 0xfc, - 0x42, 0x9d, 0xb9, 0x8a, 0x56, 0xf5, 0xaa, 0x8a, 0x96, 0x20, 0xe1, 0x54, 0x4d, 0x4b, 0xac, 0xc2, - 0x27, 0xd3, 0xf5, 0x1d, 0x53, 0x1f, 0xe5, 0xf3, 0x42, 0x75, 0x06, 0x54, 0x45, 0x9e, 0xda, 0x35, - 0x8a, 0x3c, 0x72, 0x65, 0xa6, 0x07, 0x96, 0x79, 0x5b, 0x37, 0x79, 0x60, 0x98, 0x25, 0xcb, 0xc0, - 0xf3, 0xd5, 0x45, 0xfb, 0xcf, 0x0b, 0x60, 0x62, 0x7d, 0x9c, 0x41, 0xf7, 0x61, 0x75, 0xe2, 0x1d, - 0x27, 0x4e, 0xa2, 0x89, 0x9b, 0x5b, 0x2c, 0xcf, 0x87, 0x7d, 0x1f, 0xf5, 0x61, 0x73, 0x1c, 0x13, - 0x16, 0x0c, 0x23, 0xe2, 0x3b, 0x63, 0xca, 0xc4, 0x99, 0x41, 0xae, 0x92, 0xae, 0xe5, 0x4e, 0x4a, - 0x9e, 0x27, 0x29, 0xec, 0x84, 0x32, 0xae, 0x97, 0x12, 0xaf, 0x8f, 0x17, 0x48, 0xed, 0xbf, 0x2d, - 0xc0, 0xda, 0x1e, 0x8d, 0x5e, 0x06, 0xf1, 0xa8, 0x4f, 0x93, 0xd8, 0x23, 0xa7, 0xe3, 0x90, 0xba, - 0xbe, 0xfd, 0x67, 0xd7, 0x8e, 0x81, 0x85, 0x53, 0x28, 0x2e, 0x9e, 0xc2, 0x4f, 0xa0, 0xe5, 0x51, - 0x9f, 0x88, 0xbb, 0x5f, 0x7c, 0x39, 0xa6, 0x41, 0xc4, 0x75, 0xb1, 0xa9, 0x29, 0xc4, 0xdd, 0x4c, - 0x6a, 0xc3, 0xc4, 0x47, 0xf6, 0x5f, 0x14, 0xa0, 0xf4, 0x9c, 0x70, 0x7b, 0xf0, 0x43, 0x0c, 0xc9, - 0xfe, 0x59, 0x6e, 0x35, 0xee, 0x41, 0x29, 0x4e, 0xd4, 0x59, 0x68, 0x2a, 0xc6, 0xf2, 0x26, 0x58, - 0x40, 0xec, 0x7f, 0x2e, 0x82, 0x71, 0x18, 0x30, 0x6e, 0xff, 0x53, 0xe1, 0xda, 0xa3, 0x7a, 0x32, - 0x53, 0xa1, 0xbb, 0xba, 0x44, 0xdd, 0xbb, 0x91, 0xd6, 0xe7, 0x44, 0x74, 0xfe, 0x12, 0x60, 0xec, - 0x0e, 0x89, 0x7a, 0x09, 0x92, 0x3e, 0xab, 0x6f, 0xb7, 0x33, 0xfb, 0x81, 0x90, 0x9e, 0xb8, 0x43, - 0x7d, 0xa8, 0xea, 0x15, 0x70, 0x4d, 0xa0, 0xa5, 0x58, 0x6c, 0x24, 0x22, 0x53, 0xab, 0xb6, 0x3a, - 0x0d, 0xa8, 0x3b, 0x93, 0x96, 0xec, 0xb7, 0x53, 0xb1, 0x68, 0xc4, 0x49, 0xc4, 0xda, 0x05, 0xf9, - 0x38, 0xbf, 0x6c, 0xfa, 0x12, 0x83, 0xfe, 0x00, 0x5a, 0x11, 0x79, 0xcb, 0x73, 0x4d, 0xe9, 0x20, - 0x5c, 0x3a, 0x28, 0xdc, 0x10, 0x06, 0x27, 0xe9, 0xb0, 0xec, 0x0b, 0xa8, 0xec, 0xb9, 0x91, 0x47, - 0xc2, 0x1f, 0x68, 0x5d, 0xf3, 0x11, 0xf4, 0x03, 0x17, 0xcc, 0xbe, 0x29, 0x64, 0x15, 0xb3, 0x5b, - 0xb0, 0x31, 0x5d, 0x31, 0x73, 0x4e, 0x4f, 0x0e, 0x5f, 0xec, 0x3e, 0xb5, 0x6e, 0xa0, 0x0d, 0x58, - 0xd5, 0xaa, 0xe7, 0xdd, 0xe3, 0x2e, 0xde, 0x1d, 0xa8, 0xda, 0xd9, 0x7c, 0x3d, 0xad, 0x88, 0x36, - 0x01, 0x69, 0x59, 0xff, 0xf4, 0xe8, 0x68, 0x17, 0xef, 0x7f, 0x25, 0xe4, 0xa5, 0x85, 0x75, 0x36, - 0x63, 0xbe, 0xce, 0x56, 0x5e, 0x58, 0x67, 0xab, 0x1c, 0x18, 0xa6, 0x69, 0xd5, 0x70, 0x55, 0x57, - 0x93, 0xef, 0x7e, 0x53, 0x02, 0x33, 0xdd, 0x3e, 0x27, 0xa5, 0xd9, 0x42, 0xbe, 0x34, 0x3b, 0x5b, - 0x19, 0x2e, 0x2e, 0xa8, 0x0c, 0x2f, 0xae, 0x01, 0x97, 0x96, 0xd5, 0x80, 0x1f, 0xea, 0x6a, 0xaf, - 0x21, 0xa3, 0xec, 0xbd, 0xb9, 0x8d, 0x7c, 0x6b, 0xe0, 0x0e, 0x99, 0xfa, 0x7b, 0x8b, 0x2a, 0x05, - 0xdb, 0x60, 0x26, 0x8c, 0xc4, 0xbe, 0xcb, 0x5d, 0x5d, 0x59, 0xce, 0xbe, 0xed, 0xbf, 0x2b, 0xc0, - 0xaa, 0xca, 0x5a, 0xcf, 0x62, 0x3a, 0xd2, 0xd5, 0x1a, 0xfb, 0xd7, 0xd7, 0x0e, 0xa8, 0x5c, 0x5d, - 0xb7, 0x38, 0x55, 0xd7, 0x9d, 0x24, 0xa4, 0x52, 0x3e, 0x21, 0xd9, 0x3b, 0x39, 0xbe, 0xfc, 0x14, - 0xcc, 0x34, 0x07, 0xe8, 0x2d, 0x63, 0x75, 0x6e, 0x36, 0x38, 0x83, 0xd8, 0x9f, 0x43, 0x2d, 0x9b, - 0xda, 0x82, 0x3f, 0xe6, 0xac, 0xe7, 0xff, 0x98, 0x53, 0xcb, 0xfd, 0xf9, 0xe6, 0xee, 0x00, 0x1a, - 0x53, 0x59, 0x0e, 0x21, 0x30, 0x64, 0xbe, 0x55, 0xd6, 0xf2, 0x37, 0x7a, 0x08, 0xb5, 0xb4, 0x27, - 0xb1, 0x4c, 0xa5, 0xc5, 0xa3, 0x99, 0x60, 0xee, 0xfe, 0x43, 0x01, 0xd0, 0x84, 0xd9, 0x4f, 0x03, - 0x36, 0x76, 0xb9, 0x77, 0xfe, 0xad, 0x12, 0xd2, 0x06, 0x54, 0x2e, 0xe8, 0xd9, 0xc4, 0x79, 0xe5, - 0x0b, 0x7a, 0xb6, 0xef, 0x4f, 0xf9, 0xa5, 0xf4, 0x4e, 0xbf, 0x64, 0x89, 0xd7, 0xb8, 0x46, 0xe2, - 0xbd, 0xff, 0x12, 0x9a, 0xd3, 0x72, 0xf4, 0x01, 0xbc, 0xd7, 0xdf, 0x3f, 0x3a, 0x3d, 0xdc, 0x1d, - 0xec, 0xbf, 0x38, 0x76, 0x8e, 0x5e, 0x3c, 0xed, 0x3a, 0xa7, 0xc7, 0xfd, 0x93, 0xee, 0xde, 0xfe, - 0xb3, 0xfd, 0xae, 0xe0, 0x5d, 0x1b, 0xd6, 0x67, 0x01, 0x83, 0xee, 0x1f, 0x0f, 0xac, 0x82, 0x24, - 0xeb, 0x8c, 0x66, 0xf7, 0xf4, 0xe9, 0xfe, 0x0b, 0xab, 0xb8, 0xfd, 0x37, 0x65, 0x68, 0xed, 0x8a, - 0xd8, 0x9d, 0xf4, 0x86, 0x7c, 0x58, 0x53, 0xb1, 0x36, 0xfd, 0x47, 0xa5, 0x65, 0x47, 0x60, 0x85, - 0xdd, 0x4a, 0x13, 0xed, 0x8f, 0xdf, 0x05, 0xd3, 0x51, 0xf5, 0x75, 0x01, 0x6e, 0xa7, 0x09, 0x39, - 0x03, 0xe6, 0x53, 0x33, 0xda, 0x5e, 0xd6, 0xd2, 0x7c, 0x1a, 0xcf, 0x7a, 0xff, 0xec, 0x5b, 0xd9, - 0xe8, 0xa1, 0xfc, 0x09, 0x58, 0xcf, 0x09, 0x9f, 0x9e, 0xed, 0xdd, 0x25, 0x0d, 0x3d, 0x27, 0x3c, - 0xeb, 0xec, 0xa3, 0x2b, 0x31, 0xba, 0x71, 0x07, 0x90, 0x48, 0xa0, 0x53, 0x08, 0x86, 0x96, 0x99, - 0x0a, 0x68, 0xd6, 0xfe, 0xc7, 0x57, 0x83, 0x74, 0x07, 0x62, 0xb9, 0x64, 0x82, 0xb9, 0xe6, 0x72, - 0x49, 0xec, 0xbb, 0x97, 0x2b, 0x85, 0xe9, 0x5e, 0x5e, 0xc3, 0x2d, 0x1d, 0x14, 0x3a, 0x9e, 0x73, - 0x1b, 0x11, 0x7a, 0x30, 0xbf, 0xbb, 0xcd, 0xed, 0x56, 0x59, 0x8f, 0x9f, 0x5e, 0x0f, 0xac, 0xfa, - 0xed, 0x3c, 0xfb, 0xea, 0xa3, 0x61, 0xc0, 0xcf, 0x93, 0xb3, 0x2d, 0x8f, 0x8e, 0xd2, 0x3f, 0x60, - 0xaa, 0x3f, 0x59, 0x7a, 0x34, 0x4c, 0x05, 0x7f, 0x5f, 0x6c, 0x1c, 0x06, 0xaf, 0xc9, 0x1f, 0xca, - 0x33, 0x21, 0xe5, 0xf4, 0x3f, 0x8b, 0x4d, 0xfd, 0xfd, 0xe4, 0x89, 0x14, 0x9c, 0x55, 0xa4, 0xc9, - 0x67, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0xd3, 0x58, 0xb0, 0x0f, 0xf3, 0x29, 0x00, 0x00, + 0x0e, 0xc9, 0x35, 0xa7, 0x00, 0x01, 0xf2, 0x27, 0x04, 0x41, 0x80, 0x9c, 0x92, 0x7f, 0x20, 0xf7, + 0xe4, 0x94, 0x43, 0x50, 0x1f, 0xdd, 0x6c, 0x7e, 0xc9, 0x9a, 0xc9, 0xcc, 0x6d, 0x6f, 0xac, 0xf7, + 0x7e, 0xaf, 0x3e, 0x5e, 0xfd, 0x5e, 0xbd, 0xaa, 0x7e, 0x84, 0xf7, 0xc3, 0xe0, 0x35, 0x79, 0x15, + 0x70, 0xc7, 0x1d, 0x92, 0x88, 0x3b, 0x2c, 0x18, 0x25, 0xa1, 0xcb, 0x03, 0x1a, 0x6d, 0x8d, 0x63, + 0xca, 0x29, 0xaa, 0x6a, 0xbd, 0xfd, 0xa1, 0x04, 0x3c, 0x9c, 0x81, 0x13, 0xc6, 0x32, 0xac, 0xfd, + 0xc1, 0x90, 0xd2, 0x61, 0x48, 0x1e, 0xca, 0xd6, 0x59, 0xf2, 0xf2, 0x21, 0x0f, 0x46, 0x84, 0x71, + 0x77, 0x34, 0xd6, 0x80, 0x5b, 0xa9, 0xb5, 0x17, 0xd2, 0xc4, 0x57, 0x7d, 0x68, 0xd5, 0x7a, 0xaa, + 0x1a, 0x51, 0x9f, 0x84, 0x4c, 0x49, 0xef, 0xfe, 0x6b, 0x09, 0xd6, 0xfb, 0xd9, 0x94, 0x70, 0x12, + 0xf5, 0x93, 0xd1, 0xc8, 0x8d, 0x2f, 0xd1, 0x26, 0x54, 0xc6, 0x2e, 0x63, 0xc4, 0x6f, 0x17, 0xee, + 0x14, 0xee, 0x95, 0xb1, 0x6e, 0x09, 0xf9, 0x4b, 0x37, 0x08, 0x89, 0xdf, 0x2e, 0x2a, 0xb9, 0x6a, + 0xa1, 0xdb, 0x00, 0x43, 0x1a, 0x44, 0x43, 0xe7, 0x0d, 0x09, 0xc3, 0x76, 0xe9, 0x4e, 0xe1, 0x5e, + 0x0d, 0xd7, 0xa4, 0xe4, 0x8f, 0x48, 0x18, 0x0a, 0x35, 0xa7, 0x4e, 0x30, 0x1a, 0xc7, 0xf4, 0x35, + 0x69, 0x1b, 0x4a, 0xcd, 0xe9, 0xbe, 0x12, 0xa0, 0x2f, 0xa0, 0x12, 0x30, 0x96, 0x10, 0xd6, 0x2e, + 0xdf, 0x29, 0xdd, 0xab, 0x6f, 0x7f, 0xb4, 0xa5, 0x67, 0xbb, 0xb5, 0x68, 0x72, 0x5b, 0xfb, 0x02, + 0x8b, 0xb5, 0x09, 0xfa, 0x12, 0x56, 0xbc, 0x73, 0x97, 0x3b, 0xe7, 0x01, 0xe3, 0x34, 0xbe, 0x6c, + 0x57, 0x64, 0x17, 0x5b, 0x57, 0x77, 0xb1, 0x77, 0xee, 0xf2, 0x9e, 0x32, 0xe8, 0x46, 0x3c, 0xbe, + 0xc4, 0x75, 0x6f, 0x22, 0xb1, 0xbf, 0x02, 0x6b, 0x16, 0x80, 0x2c, 0x28, 0xbd, 0x22, 0x97, 0xd2, + 0x1d, 0x35, 0x2c, 0x7e, 0xa2, 0x47, 0x50, 0x7e, 0xed, 0x86, 0x09, 0x91, 0xae, 0xa8, 0x6f, 0xdb, + 0xd9, 0x88, 0xca, 0xef, 0xa2, 0x87, 0x3d, 0x1a, 0x71, 0xf2, 0x96, 0x63, 0x05, 0x7c, 0x52, 0xfc, + 0x45, 0xc1, 0x76, 0xa0, 0x2c, 0xe7, 0x8f, 0xee, 0x40, 0xdd, 0x27, 0xcc, 0x8b, 0x83, 0xb1, 0x98, + 0x9b, 0xee, 0x38, 0x2f, 0x42, 0xef, 0x03, 0xb0, 0x64, 0x38, 0x24, 0x4c, 0x02, 0x8a, 0x12, 0x90, + 0x93, 0xa0, 0x75, 0x28, 0x87, 0xee, 0x19, 0x49, 0xfd, 0xad, 0x1a, 0x77, 0xff, 0x73, 0x17, 0x1a, + 0x53, 0x6b, 0x46, 0x4d, 0x28, 0x06, 0xbe, 0x1e, 0xa0, 0x18, 0xc8, 0xcd, 0x1a, 0xc7, 0xf4, 0x82, + 0x78, 0xdc, 0x09, 0x7c, 0xdd, 0x6f, 0x4d, 0x4b, 0xf6, 0x7d, 0xf4, 0x18, 0x2a, 0x8c, 0xbb, 0x3c, + 0x61, 0xb2, 0xdf, 0xe6, 0xf6, 0xed, 0xc5, 0xae, 0xdc, 0xea, 0x4b, 0x10, 0xd6, 0x60, 0xf4, 0x00, + 0x56, 0x15, 0x69, 0xf3, 0xab, 0x52, 0x5b, 0x6d, 0x49, 0xc5, 0xd3, 0xdc, 0xd2, 0xd6, 0xa1, 0x4c, + 0xe2, 0x98, 0xc6, 0xed, 0xb2, 0x9a, 0xba, 0x6c, 0xa0, 0x1d, 0x00, 0x2f, 0x26, 0x2e, 0x27, 0xbe, + 0xe3, 0xf2, 0x76, 0x45, 0xbb, 0x55, 0xb1, 0x7e, 0x2b, 0x65, 0xfd, 0xd6, 0x20, 0x65, 0x3d, 0xae, + 0x69, 0xf4, 0x2e, 0x47, 0x5b, 0x60, 0x5c, 0xd0, 0x33, 0xd6, 0xae, 0xca, 0xdd, 0xb7, 0x97, 0x4c, + 0xf9, 0x80, 0x9e, 0x61, 0x89, 0x13, 0x3e, 0x50, 0xb3, 0x8d, 0xdc, 0x11, 0x69, 0xd7, 0x94, 0x0f, + 0xa4, 0xe4, 0xd8, 0x1d, 0x11, 0xf4, 0x2b, 0x68, 0x32, 0x8f, 0x44, 0x6e, 0x1c, 0x50, 0x67, 0x18, + 0xd3, 0x64, 0xdc, 0x06, 0x39, 0x9b, 0xcd, 0x49, 0xc7, 0x5a, 0xfd, 0x5c, 0x68, 0x71, 0x83, 0xe5, + 0x9b, 0xe8, 0x31, 0x98, 0x24, 0xf2, 0xd5, 0x32, 0xea, 0xef, 0x5c, 0x46, 0x55, 0x62, 0x77, 0x39, + 0x7a, 0x0f, 0x6a, 0x17, 0xf4, 0xcc, 0xf1, 0x68, 0x12, 0xf1, 0xf6, 0x8a, 0x0c, 0x30, 0xf3, 0x82, + 0x9e, 0xed, 0x89, 0x36, 0xfa, 0x10, 0x56, 0x54, 0x10, 0x6a, 0x7d, 0x43, 0xea, 0xeb, 0x4a, 0x96, + 0x41, 0x54, 0x3c, 0x6a, 0x48, 0x53, 0x41, 0x94, 0x4c, 0x41, 0x7e, 0x02, 0xad, 0x28, 0x19, 0xe5, + 0xce, 0x21, 0xd6, 0x6e, 0x49, 0x54, 0x33, 0x4a, 0x46, 0x13, 0x67, 0x31, 0xb4, 0x0d, 0xe5, 0x84, + 0xb9, 0x43, 0xd2, 0xb6, 0xe4, 0xfc, 0x7f, 0xb4, 0xc4, 0xa3, 0xa7, 0x02, 0x83, 0x15, 0x54, 0x50, + 0xda, 0xa3, 0x91, 0x97, 0xc4, 0x31, 0x89, 0xbc, 0xcb, 0xf6, 0xaa, 0x1a, 0x3e, 0x27, 0x42, 0x0f, + 0xc0, 0x10, 0x07, 0x50, 0x1b, 0x49, 0x66, 0xdd, 0x5c, 0xd0, 0xe9, 0x11, 0xf5, 0x09, 0x96, 0x20, + 0xf4, 0x05, 0x54, 0x47, 0x84, 0xc7, 0x81, 0xc7, 0xda, 0x6b, 0x72, 0x12, 0x1f, 0x2e, 0x99, 0x04, + 0x4e, 0xa2, 0x23, 0x05, 0xc4, 0xa9, 0x85, 0xf0, 0x05, 0x53, 0xc1, 0xee, 0xfc, 0x96, 0x71, 0xbf, + 0xbd, 0x7e, 0xa7, 0x70, 0x6f, 0x05, 0xd7, 0xb5, 0xec, 0x2b, 0xc6, 0x7d, 0xfb, 0xdf, 0xcb, 0x50, + 0x3a, 0xa0, 0x67, 0x73, 0xf1, 0xb1, 0x93, 0x05, 0x40, 0x51, 0x4e, 0xf3, 0xc3, 0xe5, 0x6c, 0x9a, + 0x0d, 0x82, 0xbb, 0xb0, 0x12, 0x44, 0x8c, 0xc7, 0x89, 0xa7, 0x7c, 0xab, 0x22, 0x73, 0x4a, 0x36, + 0xe1, 0xbe, 0x91, 0xe7, 0xfe, 0x4f, 0x01, 0x29, 0x42, 0x92, 0xb7, 0x63, 0xe2, 0x71, 0xbd, 0x37, + 0x2a, 0x3c, 0x54, 0x60, 0x75, 0x73, 0x8a, 0x49, 0xec, 0x57, 0x72, 0xb1, 0x8f, 0x10, 0x18, 0xdc, + 0x1d, 0xaa, 0x28, 0xa8, 0x61, 0xf9, 0x5b, 0x90, 0x2a, 0xa6, 0x74, 0xa4, 0x88, 0x6e, 0x4a, 0xb4, + 0x29, 0x04, 0x92, 0xe7, 0x3b, 0x00, 0x8c, 0xbb, 0xb1, 0x8e, 0x38, 0x78, 0x77, 0xc4, 0x69, 0xf4, + 0x2e, 0xff, 0xae, 0x1c, 0xbf, 0x09, 0x55, 0x39, 0x9d, 0xc0, 0x97, 0x0c, 0xaf, 0xe1, 0x8a, 0x68, + 0xee, 0xfb, 0xe8, 0xe7, 0x29, 0xe1, 0x1a, 0xb2, 0xb3, 0x3b, 0x57, 0x38, 0x7d, 0x8a, 0x74, 0x39, + 0x96, 0x34, 0xaf, 0x64, 0xc9, 0x01, 0x3d, 0x9b, 0x65, 0x89, 0xfd, 0xa7, 0x50, 0x96, 0x9d, 0xa1, + 0x7b, 0x60, 0x89, 0x93, 0xda, 0xe1, 0x49, 0x1c, 0x31, 0x1d, 0x3e, 0x2a, 0xf5, 0x35, 0x85, 0x7c, + 0x20, 0xc4, 0x2a, 0x82, 0xee, 0xc3, 0xaa, 0x9b, 0xf8, 0x01, 0x9d, 0x82, 0xaa, 0x6c, 0xd8, 0x92, + 0x8a, 0x09, 0xf6, 0x2e, 0x85, 0x8a, 0x22, 0x08, 0x42, 0xd0, 0xec, 0x0f, 0x76, 0x07, 0xa7, 0x7d, + 0xe7, 0xa4, 0x7b, 0xfc, 0x74, 0xff, 0xf8, 0xb9, 0x75, 0x23, 0x27, 0xc3, 0xa7, 0xc7, 0xc7, 0x42, + 0x56, 0x40, 0xeb, 0x60, 0x69, 0xd9, 0xde, 0x8b, 0xa3, 0x93, 0xc3, 0xee, 0xa0, 0xfb, 0xd4, 0x2a, + 0xa2, 0x55, 0x68, 0x68, 0xe9, 0xb3, 0xdd, 0xfd, 0xc3, 0xee, 0x53, 0xab, 0x94, 0x07, 0xee, 0x1e, + 0xef, 0x75, 0x0f, 0x85, 0xd4, 0x38, 0x30, 0xcc, 0x9a, 0x05, 0xf6, 0x5f, 0x7e, 0x02, 0x30, 0x59, + 0x2d, 0xba, 0x0f, 0x4d, 0xd7, 0xf3, 0x92, 0xd8, 0xf5, 0x2e, 0x1d, 0xe6, 0xd1, 0x98, 0xc8, 0x95, + 0x15, 0x7b, 0x37, 0x70, 0x23, 0x95, 0xf7, 0x85, 0xf8, 0xeb, 0x42, 0x01, 0x6d, 0x81, 0x25, 0x08, + 0x18, 0x07, 0x24, 0xf2, 0x88, 0x46, 0x17, 0x25, 0xba, 0x80, 0x5b, 0x13, 0x4d, 0x86, 0xff, 0x14, + 0x5a, 0xdc, 0x65, 0xaf, 0x1c, 0x8f, 0x8e, 0xc6, 0x21, 0x91, 0x67, 0x7e, 0x49, 0xc2, 0x8b, 0xb8, + 0x29, 0x14, 0x7b, 0x99, 0x5c, 0xa0, 0x3f, 0x87, 0x12, 0xe3, 0x5c, 0x12, 0xbf, 0xbe, 0xfd, 0xc9, + 0x3b, 0xf7, 0x69, 0xab, 0x3f, 0x18, 0x60, 0x61, 0x21, 0x0c, 0xc3, 0x70, 0x24, 0xc3, 0xe1, 0x5a, + 0x86, 0x87, 0x87, 0x47, 0x58, 0x58, 0x08, 0x43, 0xce, 0x99, 0xce, 0x25, 0xd7, 0x30, 0x1c, 0x0c, + 0xfa, 0x58, 0x58, 0x20, 0x0c, 0x2b, 0x1e, 0x8d, 0x5e, 0x93, 0x98, 0x49, 0x58, 0xbb, 0x2a, 0x7b, + 0xd8, 0x7a, 0x77, 0x0f, 0x7b, 0x39, 0x2b, 0x3c, 0xd5, 0x07, 0xda, 0x87, 0x9a, 0x3e, 0x78, 0x69, + 0x2c, 0x43, 0xb1, 0xbe, 0xfd, 0xe0, 0x1a, 0x4e, 0x48, 0x4d, 0xf0, 0xc4, 0x1a, 0xfd, 0x12, 0xca, + 0x92, 0x7f, 0xed, 0x9a, 0x4c, 0x78, 0x3f, 0xbe, 0xc6, 0xca, 0x92, 0x38, 0xc2, 0xca, 0x08, 0x7d, + 0x00, 0xf5, 0x8b, 0xc4, 0x1f, 0x12, 0x75, 0x1b, 0x94, 0x71, 0x5f, 0xc3, 0x20, 0x45, 0xe2, 0xfc, + 0x0d, 0x27, 0x24, 0xcf, 0xc3, 0xea, 0x12, 0xa6, 0x48, 0x7e, 0x30, 0xc1, 0x7e, 0x0a, 0xe8, 0xdc, + 0x65, 0x4e, 0x4c, 0x46, 0x94, 0x93, 0xf4, 0xca, 0x2a, 0x83, 0xdb, 0xc4, 0xd6, 0xb9, 0xcb, 0xb0, + 0x54, 0xf4, 0x95, 0x1c, 0xdd, 0x87, 0x22, 0x7f, 0xa4, 0x63, 0xfc, 0xaa, 0x03, 0xa3, 0xc8, 0x1f, + 0xa1, 0x4f, 0x54, 0x3e, 0x09, 0x18, 0x89, 0x08, 0x53, 0xe1, 0x5d, 0xec, 0x95, 0x70, 0x5e, 0x28, + 0x58, 0xb5, 0x03, 0x9b, 0x49, 0x14, 0x11, 0x8f, 0x30, 0x26, 0x8e, 0x7b, 0x4e, 0x69, 0xe8, 0x78, + 0x6e, 0x18, 0xaa, 0xd4, 0x66, 0xf6, 0x0c, 0xbc, 0x9e, 0xd3, 0x0f, 0x28, 0x0d, 0xf7, 0x84, 0x56, + 0xd3, 0x3d, 0x88, 0x5e, 0xd2, 0x78, 0x24, 0x3d, 0xe6, 0x84, 0x94, 0x31, 0x99, 0xf0, 0xcc, 0x5e, + 0x19, 0xb7, 0x72, 0x9a, 0x43, 0xaa, 0x86, 0xfa, 0x39, 0xac, 0xc7, 0xc4, 0x4f, 0x22, 0xdf, 0x15, + 0xb7, 0x73, 0xee, 0x72, 0x32, 0x22, 0x11, 0x67, 0x32, 0xd5, 0x99, 0xbd, 0x0a, 0x5e, 0xcb, 0xb4, + 0xfd, 0x4c, 0xa9, 0x88, 0xbf, 0x31, 0xa6, 0x34, 0x76, 0x7e, 0x93, 0xa8, 0xbb, 0x9b, 0xf3, 0x9b, + 0xc4, 0x0d, 0x03, 0x7e, 0x29, 0x13, 0xa1, 0xd9, 0xab, 0xe2, 0x35, 0xa1, 0xfe, 0x52, 0x6b, 0xbf, + 0x54, 0x4a, 0x61, 0xf8, 0xfb, 0xd0, 0xce, 0x53, 0xc8, 0x19, 0xc7, 0x74, 0x18, 0x6b, 0x17, 0xaf, + 0x49, 0x7f, 0x98, 0xf8, 0x66, 0x1e, 0x71, 0x32, 0x01, 0x7c, 0x5d, 0x28, 0xd8, 0xff, 0x6b, 0x40, + 0xa9, 0x3f, 0x18, 0xa0, 0x0d, 0x28, 0xbd, 0x21, 0x71, 0x16, 0xf8, 0xa2, 0x21, 0xba, 0xbf, 0x05, + 0xe5, 0x37, 0x34, 0xf6, 0x55, 0xa6, 0x6b, 0xf4, 0x0a, 0x58, 0x35, 0x85, 0xea, 0x63, 0xa8, 0x8b, + 0xdf, 0x8e, 0x4c, 0x4f, 0x2a, 0x93, 0x35, 0x7a, 0x45, 0x0c, 0x42, 0xd8, 0x95, 0x32, 0x81, 0xda, + 0x80, 0x92, 0x47, 0x54, 0x2a, 0x13, 0x5b, 0x23, 0x1a, 0xba, 0x5f, 0xef, 0xdc, 0x8d, 0x99, 0xbc, + 0x59, 0x35, 0x7a, 0x06, 0x56, 0x4d, 0xdd, 0xaf, 0xf8, 0x9d, 0xf6, 0x0b, 0x12, 0x50, 0xc6, 0x20, + 0x84, 0x93, 0x7e, 0x7f, 0x05, 0x6d, 0x1e, 0xbb, 0x51, 0x76, 0x63, 0x74, 0x42, 0x97, 0x8b, 0x1b, + 0x84, 0x33, 0x62, 0x32, 0x72, 0x1a, 0xbd, 0x0a, 0xde, 0x9c, 0x42, 0x1c, 0x2a, 0xc0, 0x91, 0x34, + 0xdf, 0x06, 0x44, 0x22, 0x1e, 0xf0, 0x4b, 0x27, 0x26, 0x1e, 0x1d, 0x46, 0x81, 0x8c, 0xe1, 0xba, + 0x9c, 0x65, 0x15, 0xaf, 0x2a, 0x1d, 0x9e, 0xa8, 0xd2, 0xa3, 0x4f, 0xc8, 0x03, 0xc2, 0x9c, 0x84, + 0x73, 0x12, 0x13, 0x95, 0xa2, 0x1a, 0x3d, 0x13, 0xb7, 0x52, 0xcd, 0xa9, 0x52, 0x08, 0xfc, 0xcf, + 0x60, 0x2d, 0xc3, 0xeb, 0x51, 0x7e, 0x4b, 0x7c, 0x49, 0xed, 0x46, 0xaf, 0x86, 0x51, 0xaa, 0xc4, + 0x99, 0xee, 0xeb, 0x42, 0xa1, 0x53, 0x01, 0xc3, 0x79, 0x43, 0xe2, 0x8e, 0x09, 0x15, 0x47, 0xfa, + 0xba, 0xd3, 0x84, 0x15, 0x27, 0xe7, 0x69, 0x89, 0xf0, 0x34, 0x42, 0x7a, 0x4d, 0x22, 0x72, 0x3e, + 0xeb, 0xbc, 0x07, 0xb7, 0x9c, 0x65, 0xde, 0xe9, 0x6c, 0xc0, 0x9a, 0x33, 0xbf, 0xf6, 0xce, 0x1a, + 0xac, 0x3a, 0xb3, 0xcb, 0xeb, 0x6c, 0xc2, 0xba, 0xb3, 0x60, 0x0d, 0x07, 0x86, 0x59, 0xb6, 0x2a, + 0x07, 0x86, 0x59, 0xb1, 0xaa, 0x07, 0x86, 0x59, 0xb5, 0x4c, 0xdc, 0x7c, 0x45, 0x2e, 0x39, 0x89, + 0x47, 0x02, 0xe5, 0x86, 0x21, 0xb6, 0x74, 0x3b, 0xeb, 0x0b, 0xaf, 0x65, 0x92, 0x49, 0x47, 0xf6, + 0x3f, 0x16, 0xa0, 0x74, 0x78, 0x78, 0x84, 0x7e, 0x04, 0x55, 0xce, 0x5f, 0x72, 0xb1, 0x7b, 0x05, + 0xe9, 0x9f, 0x1b, 0xb8, 0x22, 0x04, 0x6a, 0xb7, 0x94, 0x96, 0x09, 0x6d, 0xca, 0x43, 0xa1, 0x65, + 0x4a, 0xfb, 0x10, 0x56, 0x39, 0x7d, 0x45, 0x22, 0xe6, 0x8c, 0x49, 0xec, 0x30, 0xe2, 0xd1, 0xc8, + 0xcf, 0x92, 0x4c, 0x4b, 0xa9, 0x4e, 0x48, 0xdc, 0x97, 0x0a, 0xe1, 0x62, 0x00, 0xd3, 0xd1, 0xa3, + 0xa5, 0xbf, 0x45, 0xdf, 0x9d, 0x75, 0x40, 0xce, 0x5c, 0x4f, 0x07, 0x86, 0x69, 0x58, 0x65, 0xbc, + 0x9a, 0x3b, 0x53, 0x54, 0xda, 0xb3, 0xff, 0xa7, 0x0c, 0xa5, 0xc1, 0xa0, 0xaf, 0x67, 0xe7, 0xce, + 0xce, 0xdd, 0xcd, 0xcf, 0xfd, 0x6c, 0x76, 0xee, 0x67, 0x47, 0x69, 0x78, 0x88, 0xb0, 0x4b, 0x67, + 0x3b, 0x17, 0x76, 0x55, 0x69, 0x52, 0x5a, 0x1e, 0x76, 0xa6, 0x8e, 0x9f, 0xc5, 0x61, 0x57, 0x93, + 0xfd, 0x96, 0xe7, 0xc3, 0x0e, 0x74, 0x88, 0x2c, 0x0d, 0xbb, 0xba, 0x04, 0x54, 0x67, 0xc3, 0xee, + 0x11, 0xac, 0x46, 0x2e, 0x4f, 0x62, 0x37, 0x9c, 0x38, 0x42, 0x66, 0x5d, 0x71, 0xce, 0x58, 0x39, + 0x55, 0x76, 0x01, 0x78, 0x04, 0xab, 0x24, 0x4a, 0x22, 0x2f, 0x50, 0xe7, 0x93, 0xb2, 0xa8, 0x48, + 0x8b, 0x1a, 0xb6, 0x72, 0xaa, 0xcc, 0x62, 0x71, 0x6c, 0xaa, 0xc3, 0x1d, 0xbe, 0x45, 0x6c, 0xb6, + 0xe4, 0x12, 0xea, 0xdf, 0x26, 0x36, 0x2d, 0x69, 0xb2, 0xb2, 0x2c, 0x36, 0x35, 0x59, 0xdc, 0x1c, + 0x71, 0xc4, 0xc6, 0x7e, 0x2f, 0x31, 0x2b, 0xc8, 0x37, 0xe7, 0x5a, 0x29, 0x9d, 0x73, 0xdf, 0xf7, + 0x14, 0xc2, 0x86, 0x55, 0x3e, 0x30, 0xcc, 0x15, 0xab, 0x71, 0x60, 0x98, 0x0d, 0xab, 0x89, 0x5b, + 0x6c, 0x4c, 0x88, 0x77, 0xee, 0xc4, 0x2e, 0x27, 0xce, 0x9b, 0xf1, 0x08, 0xd7, 0xcf, 0x89, 0x1b, + 0xfb, 0x6a, 0x45, 0xb8, 0xa6, 0xb5, 0x23, 0x66, 0xff, 0x35, 0xc0, 0x4a, 0xfe, 0x16, 0x23, 0x23, + 0x30, 0x89, 0x23, 0x87, 0xbb, 0xaf, 0x82, 0x68, 0x38, 0x73, 0x87, 0x6c, 0x09, 0xd5, 0x40, 0x6a, + 0xb2, 0x2d, 0x7e, 0x02, 0x37, 0x63, 0xc2, 0xc6, 0x34, 0x62, 0x24, 0x3b, 0x9a, 0xc6, 0x8f, 0x1f, + 0xa5, 0x41, 0x52, 0xee, 0x15, 0xf0, 0x7a, 0x0a, 0xd0, 0xe7, 0xf6, 0xc9, 0xe3, 0x47, 0x2a, 0x64, + 0x16, 0xda, 0xee, 0x3c, 0x16, 0xb6, 0x25, 0x69, 0x5b, 0x9c, 0xb7, 0xdd, 0x79, 0x7c, 0x95, 0xed, + 0x8e, 0xb0, 0x35, 0xa4, 0x6d, 0x69, 0x81, 0xed, 0x8e, 0xb2, 0xfd, 0x0c, 0xd6, 0xe6, 0x6c, 0x47, + 0xea, 0x36, 0x50, 0xee, 0x19, 0x78, 0x75, 0xc6, 0xee, 0x28, 0x4d, 0x53, 0x73, 0x46, 0xcc, 0x15, + 0x57, 0x5e, 0x75, 0x27, 0x10, 0x99, 0x6d, 0x73, 0xc6, 0xb2, 0xaf, 0xf4, 0xc2, 0xfc, 0x17, 0xb0, + 0xa9, 0x1e, 0x7d, 0x97, 0x01, 0x09, 0xfd, 0xfc, 0xb0, 0x65, 0x1d, 0xc0, 0x6b, 0x52, 0xff, 0x6b, + 0xa1, 0x9e, 0x1a, 0xf8, 0x0b, 0xb8, 0x49, 0x28, 0x77, 0x46, 0x01, 0x1b, 0xc7, 0xc4, 0x0f, 0xe4, + 0xd3, 0x52, 0xbf, 0x45, 0x2a, 0x3a, 0xb4, 0x37, 0x08, 0xe5, 0x47, 0x79, 0xbd, 0x7c, 0x93, 0x08, + 0xe3, 0x7b, 0xd0, 0xa0, 0xaf, 0x49, 0x1c, 0xba, 0x63, 0x41, 0x86, 0x80, 0xca, 0x63, 0x48, 0x44, + 0xf8, 0x8a, 0x16, 0x63, 0x21, 0xd5, 0x67, 0x6f, 0x8a, 0xcc, 0xf8, 0xa1, 0xcf, 0xa4, 0x1a, 0x6e, + 0x69, 0x55, 0x5f, 0x6a, 0xd4, 0xbc, 0x1e, 0x40, 0x8b, 0x53, 0xee, 0x86, 0x39, 0xb8, 0xba, 0x02, + 0x00, 0x6e, 0x48, 0x45, 0x1e, 0xfc, 0x39, 0x6c, 0xb8, 0x6f, 0x5e, 0xbd, 0x11, 0x24, 0x64, 0x41, + 0x28, 0x5f, 0x1c, 0x6a, 0x09, 0x75, 0x1d, 0xda, 0x6b, 0x5a, 0xdd, 0x57, 0xda, 0x6c, 0x01, 0x5b, + 0x60, 0x25, 0x91, 0x1b, 0xb1, 0x37, 0x22, 0x04, 0xd4, 0x43, 0x4c, 0xa7, 0xea, 0x15, 0xdc, 0x9a, + 0x68, 0xe4, 0x4b, 0x4c, 0x6f, 0xd3, 0x4b, 0x37, 0x64, 0xc4, 0x09, 0x22, 0x4e, 0xe2, 0x38, 0x19, + 0xe7, 0xdc, 0xa5, 0xf2, 0x75, 0x03, 0x6f, 0x4a, 0xc4, 0x7e, 0x0e, 0x90, 0x0d, 0xd7, 0x85, 0xdb, + 0x6a, 0x9b, 0x62, 0x32, 0xa6, 0xf2, 0xb1, 0x4c, 0xb6, 0xa7, 0x48, 0xa2, 0x8e, 0xa2, 0x26, 0xbe, + 0x25, 0x61, 0x58, 0xa3, 0xba, 0xdb, 0x53, 0x64, 0x51, 0xf9, 0x67, 0x36, 0x8e, 0x3a, 0x36, 0xb4, + 0x9d, 0x25, 0xc1, 0xb2, 0x44, 0x27, 0x83, 0x61, 0x99, 0x4e, 0x90, 0x5d, 0x1e, 0x0a, 0x0b, 0xc8, + 0x2c, 0x2f, 0x0e, 0xcb, 0xf8, 0xda, 0xb9, 0x05, 0x37, 0x9d, 0xc5, 0x6c, 0x94, 0x63, 0x2d, 0xa1, + 0x5b, 0xc7, 0x82, 0xa6, 0x33, 0xc5, 0x26, 0xb9, 0xce, 0x39, 0xd6, 0x74, 0x10, 0x58, 0xce, 0x0c, + 0x35, 0x3a, 0x6d, 0xd8, 0x74, 0x16, 0x32, 0x40, 0x9e, 0x75, 0xb3, 0x5b, 0x2c, 0xa7, 0xbf, 0x6c, + 0x1f, 0x3b, 0x77, 0xe0, 0x7d, 0xe7, 0xca, 0x5d, 0x3a, 0x30, 0x4c, 0xb0, 0xea, 0x07, 0x86, 0xd9, + 0xb4, 0x5a, 0xd8, 0x4a, 0x87, 0x53, 0x53, 0x1a, 0x31, 0xfc, 0xf1, 0x82, 0x9e, 0x93, 0x48, 0x9c, + 0xa8, 0xaf, 0xe5, 0x14, 0xe4, 0x28, 0xf6, 0x5f, 0x15, 0xa0, 0x96, 0x3d, 0xc8, 0x64, 0xf2, 0x73, + 0xe3, 0xf0, 0xd2, 0x11, 0x17, 0x9f, 0x20, 0x72, 0xb3, 0x2f, 0xb9, 0x66, 0xef, 0x06, 0xb6, 0xa4, + 0x6a, 0x30, 0xd1, 0x68, 0xe6, 0x8a, 0x19, 0x4d, 0x19, 0x14, 0xa5, 0x41, 0x01, 0xb7, 0x84, 0x66, + 0x1a, 0xaf, 0x12, 0xc4, 0xec, 0x10, 0xd2, 0x3b, 0xb3, 0xdd, 0xd8, 0xff, 0x56, 0x02, 0x43, 0x30, + 0x1e, 0xad, 0x43, 0x39, 0x88, 0x7c, 0xf2, 0x56, 0x5d, 0x57, 0xb0, 0x6a, 0xa0, 0x07, 0x60, 0xc4, + 0x34, 0x24, 0xfa, 0x9b, 0xd6, 0xcd, 0x05, 0x5f, 0xab, 0x31, 0x0d, 0x09, 0x96, 0x20, 0xf4, 0x3e, + 0x98, 0xf2, 0x4b, 0x4f, 0x7a, 0xea, 0x8a, 0x4b, 0x4f, 0x55, 0x4a, 0x54, 0xe4, 0xda, 0x50, 0x21, + 0x91, 0x9f, 0x9e, 0xab, 0xf2, 0xe1, 0x40, 0x22, 0x3f, 0x8d, 0x6a, 0xf9, 0xc8, 0x2f, 0x7f, 0xd7, + 0x47, 0x7e, 0xe5, 0xbb, 0x3e, 0xf2, 0xab, 0xff, 0xef, 0x47, 0xbe, 0xf9, 0x3d, 0x3c, 0xf2, 0x67, + 0x1e, 0xad, 0x35, 0x7d, 0xf5, 0x9b, 0x79, 0xb4, 0x76, 0xea, 0x50, 0x73, 0x52, 0x17, 0x77, 0x6a, + 0x50, 0x75, 0x94, 0x3f, 0xd5, 0xbd, 0x61, 0x02, 0xed, 0xac, 0x42, 0xcb, 0x99, 0xfe, 0x7a, 0xa3, + 0xee, 0x01, 0x33, 0x1f, 0x69, 0x54, 0x78, 0x4d, 0x7f, 0x89, 0x99, 0xeb, 0x4b, 0x44, 0xf8, 0xe2, + 0x97, 0xb2, 0xec, 0x73, 0xf6, 0x25, 0xdc, 0xb9, 0x09, 0x1b, 0xce, 0xa2, 0xe7, 0xae, 0x8c, 0xdb, + 0x85, 0xef, 0x59, 0x19, 0xa2, 0xcb, 0x1e, 0xac, 0xf6, 0xbf, 0x18, 0x00, 0x93, 0x6f, 0xb5, 0x3f, + 0xe8, 0x77, 0xa9, 0xdf, 0x03, 0x94, 0x7d, 0xc0, 0x1f, 0xbb, 0x8c, 0xc9, 0x5b, 0x4f, 0x76, 0x0f, + 0xb7, 0x52, 0xdd, 0x89, 0xcb, 0x18, 0x76, 0x39, 0xf9, 0xdd, 0xc7, 0x29, 0x74, 0x1b, 0xe0, 0x82, + 0x9e, 0x31, 0x75, 0x20, 0xaa, 0xa4, 0x8d, 0x6b, 0x42, 0x32, 0x10, 0x02, 0xf4, 0x11, 0x34, 0xa4, + 0x7a, 0x44, 0x5c, 0x96, 0x88, 0xeb, 0xb7, 0x7c, 0x62, 0xe0, 0x15, 0x21, 0x3c, 0xd2, 0x32, 0xf4, + 0x08, 0xd6, 0x25, 0x28, 0xfb, 0x4e, 0xe5, 0xbc, 0x74, 0x93, 0x50, 0xe7, 0x73, 0x8c, 0x84, 0x2e, + 0x3b, 0x3c, 0x9f, 0x09, 0xcd, 0xb5, 0xe9, 0x2d, 0xae, 0xc4, 0xf3, 0x1b, 0x6a, 0xff, 0x77, 0x09, + 0x2a, 0x7b, 0xb2, 0x08, 0x64, 0xff, 0x47, 0x11, 0xaa, 0x98, 0x48, 0x42, 0xce, 0x54, 0xb8, 0x0a, + 0xb3, 0x15, 0xae, 0xe9, 0xe2, 0x4f, 0x71, 0xb6, 0xf8, 0xb3, 0xa0, 0x46, 0x62, 0x2c, 0xac, 0x91, + 0x6c, 0x42, 0x25, 0x26, 0x43, 0xb1, 0x01, 0x15, 0xfd, 0x29, 0x5b, 0xb6, 0x50, 0x67, 0xae, 0x7a, + 0x54, 0xbd, 0xaa, 0x7a, 0x24, 0x08, 0x3f, 0x55, 0x3f, 0x12, 0x6c, 0xfc, 0x64, 0xba, 0x96, 0x62, + 0xea, 0x6b, 0x73, 0x5e, 0xa8, 0xee, 0x5b, 0xaa, 0xa0, 0x52, 0xbb, 0x46, 0x41, 0x45, 0x3a, 0x7b, + 0x7a, 0x62, 0xd9, 0x11, 0xa1, 0xbb, 0x3c, 0x30, 0xcc, 0x92, 0x65, 0xe0, 0xf9, 0x4a, 0x9e, 0xfd, + 0xe7, 0x05, 0x30, 0xb1, 0xbe, 0x3a, 0xa0, 0xfb, 0xb0, 0x3a, 0xf1, 0x8e, 0x13, 0x27, 0xd1, 0xc4, + 0xcd, 0x2d, 0x96, 0xe7, 0xde, 0xbe, 0x8f, 0xfa, 0xb0, 0x39, 0x8e, 0x09, 0x0b, 0x86, 0x11, 0xf1, + 0x9d, 0x31, 0x65, 0x22, 0x3f, 0xcb, 0x5d, 0xd2, 0x75, 0xd3, 0x49, 0x79, 0xf1, 0x24, 0x85, 0x9d, + 0x50, 0xc6, 0xf5, 0x56, 0xe2, 0xf5, 0xf1, 0x02, 0xa9, 0xfd, 0xb7, 0x05, 0x58, 0xdb, 0xa3, 0xd1, + 0xcb, 0x20, 0x1e, 0xf5, 0x69, 0x12, 0x7b, 0xe4, 0x74, 0x1c, 0x52, 0xd7, 0xb7, 0xff, 0xec, 0xda, + 0x1c, 0x58, 0xb8, 0x84, 0xe2, 0xe2, 0x25, 0xfc, 0x04, 0x5a, 0x1e, 0xf5, 0x89, 0x78, 0x67, 0xc5, + 0x97, 0x63, 0x1a, 0x44, 0x5c, 0x17, 0x76, 0x9a, 0x42, 0xdc, 0xcd, 0xa4, 0x36, 0x4c, 0x7c, 0x64, + 0xff, 0x45, 0x01, 0x4a, 0xcf, 0x09, 0xb7, 0x07, 0x3f, 0xc4, 0x94, 0xec, 0x9f, 0xe5, 0x76, 0xe3, + 0x1e, 0x94, 0xe2, 0x44, 0xdd, 0x3b, 0xa6, 0x38, 0x96, 0x37, 0xc1, 0x02, 0x62, 0xff, 0x73, 0x11, + 0x8c, 0xc3, 0x80, 0x71, 0xfb, 0x9f, 0x0a, 0xd7, 0x9e, 0xd5, 0x93, 0x99, 0x6a, 0xd8, 0xd5, 0xe5, + 0xe0, 0xde, 0x8d, 0xb4, 0x16, 0x26, 0xd8, 0xf9, 0x4b, 0x80, 0xb1, 0x3b, 0x24, 0xea, 0xab, 0x8b, + 0xf4, 0x59, 0x7d, 0xbb, 0x9d, 0xd9, 0x0f, 0x84, 0xf4, 0xc4, 0x1d, 0xea, 0x0b, 0x4c, 0xaf, 0x80, + 0x6b, 0x02, 0x2d, 0xc5, 0x22, 0x45, 0x8a, 0xac, 0xa8, 0xfa, 0xea, 0x34, 0xa0, 0xee, 0x4c, 0x7a, + 0xb2, 0xdf, 0x4e, 0x71, 0xd1, 0x88, 0x93, 0x88, 0xb5, 0x0b, 0xf2, 0x43, 0xf8, 0xb2, 0xe5, 0x4b, + 0x0c, 0xfa, 0x03, 0x68, 0x45, 0xe4, 0x2d, 0xcf, 0x75, 0xa5, 0x49, 0xb8, 0x74, 0x52, 0xb8, 0x21, + 0x0c, 0x4e, 0xd2, 0x69, 0xd9, 0x17, 0x50, 0xd9, 0x73, 0x23, 0x8f, 0x84, 0x3f, 0xd0, 0xbe, 0xe6, + 0x19, 0xf4, 0x03, 0x17, 0xa7, 0xbe, 0x29, 0x64, 0xd5, 0xa9, 0x5b, 0xb0, 0x31, 0x5d, 0x9d, 0x72, + 0x4e, 0x4f, 0x0e, 0x5f, 0xec, 0x3e, 0xb5, 0x6e, 0xa0, 0x0d, 0x58, 0xd5, 0xaa, 0xe7, 0xdd, 0xe3, + 0x2e, 0xde, 0x1d, 0xa8, 0x3a, 0xd5, 0x7c, 0xed, 0xaa, 0x88, 0x36, 0x01, 0x69, 0x59, 0xff, 0xf4, + 0xe8, 0x68, 0x17, 0xef, 0x7f, 0x25, 0xe4, 0xa5, 0x85, 0x35, 0x2d, 0x63, 0xbe, 0xa6, 0x55, 0x5e, + 0x58, 0xd3, 0xaa, 0x1c, 0x18, 0xa6, 0x69, 0xd5, 0x70, 0x55, 0x57, 0x6e, 0xef, 0x7e, 0x53, 0x02, + 0x33, 0x3d, 0x3e, 0x27, 0x65, 0xd0, 0x42, 0xbe, 0x0c, 0x3a, 0x5b, 0x85, 0x2d, 0x2e, 0xa8, 0xc2, + 0x2e, 0xae, 0xb7, 0x96, 0x96, 0xd5, 0x5b, 0x1f, 0xea, 0xca, 0xaa, 0x21, 0x59, 0xf6, 0xde, 0xdc, + 0x41, 0xbe, 0x35, 0x70, 0x87, 0x4c, 0xfd, 0x95, 0x44, 0x95, 0x5d, 0x6d, 0x30, 0x13, 0x46, 0x62, + 0xdf, 0xe5, 0xae, 0xae, 0xe2, 0x66, 0x6d, 0xfb, 0xef, 0x0a, 0xb0, 0xaa, 0xb2, 0xd6, 0xb3, 0x98, + 0x8e, 0x74, 0x65, 0xc4, 0xfe, 0xf5, 0xb5, 0x09, 0x95, 0xab, 0xa1, 0x16, 0xa7, 0x6a, 0xa8, 0x93, + 0x84, 0x54, 0xca, 0x27, 0x24, 0x7b, 0x27, 0x17, 0x2f, 0x3f, 0x05, 0x33, 0xcd, 0x01, 0xfa, 0xc8, + 0x58, 0x9d, 0x5b, 0x0d, 0xce, 0x20, 0xf6, 0xe7, 0x50, 0xcb, 0x96, 0xb6, 0xe0, 0x4f, 0x30, 0xeb, + 0xf9, 0x3f, 0xc1, 0xd4, 0x72, 0x7f, 0x74, 0xb9, 0x3b, 0x80, 0xc6, 0x54, 0x96, 0x43, 0x08, 0x0c, + 0x99, 0x6f, 0x95, 0xb5, 0xfc, 0x8d, 0x1e, 0x42, 0x2d, 0x1d, 0x49, 0x6c, 0x53, 0x69, 0xf1, 0x6c, + 0x26, 0x98, 0xbb, 0xff, 0x50, 0x00, 0x34, 0x89, 0xec, 0xa7, 0x01, 0x1b, 0xbb, 0xdc, 0x3b, 0xff, + 0x56, 0x09, 0x69, 0x03, 0x2a, 0x17, 0xf4, 0x6c, 0xe2, 0xbc, 0xf2, 0x05, 0x3d, 0xdb, 0xf7, 0xa7, + 0xfc, 0x52, 0x7a, 0xa7, 0x5f, 0xb2, 0xc4, 0x6b, 0x5c, 0x23, 0xf1, 0xde, 0x7f, 0x09, 0xcd, 0x69, + 0x39, 0xfa, 0x00, 0xde, 0xeb, 0xef, 0x1f, 0x9d, 0x1e, 0xee, 0x0e, 0xf6, 0x5f, 0x1c, 0x3b, 0x47, + 0x2f, 0x9e, 0x76, 0x9d, 0xd3, 0xe3, 0xfe, 0x49, 0x77, 0x6f, 0xff, 0xd9, 0x7e, 0x57, 0xc4, 0x5d, + 0x1b, 0xd6, 0x67, 0x01, 0x83, 0xee, 0x1f, 0x0f, 0xac, 0x82, 0x0c, 0xd6, 0x19, 0xcd, 0xee, 0xe9, + 0xd3, 0xfd, 0x17, 0x56, 0x71, 0xfb, 0x6f, 0xca, 0xd0, 0xda, 0x15, 0xdc, 0x9d, 0x8c, 0x86, 0x7c, + 0x58, 0x53, 0x5c, 0x9b, 0xfe, 0x53, 0xd0, 0xb2, 0xeb, 0xa6, 0xc2, 0x6e, 0xa5, 0x89, 0xf6, 0xc7, + 0xef, 0x82, 0x69, 0x56, 0x7d, 0x5d, 0x80, 0xdb, 0x69, 0x42, 0xce, 0x80, 0xf9, 0xd4, 0x8c, 0xb6, + 0x97, 0xf5, 0x34, 0x9f, 0xc6, 0xb3, 0xd1, 0x3f, 0xfb, 0x56, 0x36, 0x7a, 0x2a, 0x7f, 0x02, 0xd6, + 0x73, 0xc2, 0xa7, 0x57, 0x7b, 0x77, 0x49, 0x47, 0xcf, 0x09, 0xcf, 0x06, 0xfb, 0xe8, 0x4a, 0x8c, + 0xee, 0xdc, 0x01, 0x24, 0x12, 0xe8, 0x14, 0x82, 0xa1, 0x65, 0xa6, 0x02, 0x9a, 0xf5, 0xff, 0xf1, + 0xd5, 0x20, 0x3d, 0x80, 0xd8, 0x2e, 0x99, 0x60, 0xae, 0xb9, 0x5d, 0x12, 0xfb, 0xee, 0xed, 0x4a, + 0x61, 0x7a, 0x94, 0xd7, 0x70, 0x4b, 0x93, 0x42, 0xf3, 0x39, 0x77, 0x10, 0xa1, 0x07, 0xf3, 0xa7, + 0xdb, 0xdc, 0x69, 0x95, 0x8d, 0xf8, 0xe9, 0xf5, 0xc0, 0x6a, 0xdc, 0xce, 0xb3, 0xaf, 0x3e, 0x1a, + 0x06, 0xfc, 0x3c, 0x39, 0xdb, 0xf2, 0xe8, 0x28, 0xfd, 0xb3, 0xa3, 0xfa, 0x43, 0xa3, 0x47, 0xc3, + 0x54, 0xf0, 0xf7, 0xc5, 0xc6, 0x61, 0xf0, 0x9a, 0xfc, 0xa1, 0xbc, 0x13, 0x52, 0x4e, 0xff, 0xab, + 0xd8, 0xd4, 0xed, 0x27, 0x4f, 0xa4, 0xe0, 0xac, 0x22, 0x4d, 0x3e, 0xfb, 0xbf, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xf2, 0xf4, 0x5a, 0xf1, 0x5f, 0x29, 0x00, 0x00, } From 3d4e2420a6393d5e4d105cd1a62addcf0ee9f420 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Sun, 2 Aug 2026 21:35:59 -0700 Subject: [PATCH 05/32] agent-simulation: drop the composite formulas from the comments The weights are editorial and change with the metric set; spelling them out on the wire format only guarantees they go stale. --- protobufs/livekit_agent_simulation.proto | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/protobufs/livekit_agent_simulation.proto b/protobufs/livekit_agent_simulation.proto index b71dd9758..61004e669 100644 --- a/protobufs/livekit_agent_simulation.proto +++ b/protobufs/livekit_agent_simulation.proto @@ -83,10 +83,7 @@ message SimulationRun { message JobMetrics { // Headline scores, 0-1, computed by the worker as weighted means over the - // members that ran (a missing member renormalizes the rest): - // accuracy = task_completion x3 + (1 - stt.wer) + stt.entity_recognition - // experience = conversation.turn_taking_score x2 + conciseness + conversation_progression - // + (1 - conversation.false_interruption_count / agent turns, penalty-only) + // members that ran (a missing member renormalizes the rest). optional float accuracy_score = 1; // absent when the simulator spoiled the call optional float experience_score = 2; // absent when the simulator spoiled the call // The accuracy anchor: the scenario verdict as 1/0, or the fraction of the declared target state the call reached. From dadf72c9525b2e75d63374fe49241bb733f2d12b Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 04:36:44 +0000 Subject: [PATCH 06/32] generated protobuf --- livekit/livekit_agent_simulation.pb.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/livekit/livekit_agent_simulation.pb.go b/livekit/livekit_agent_simulation.pb.go index 3b89fc55d..8a8ce84d2 100644 --- a/livekit/livekit_agent_simulation.pb.go +++ b/livekit/livekit_agent_simulation.pb.go @@ -891,11 +891,7 @@ func (x *SimulationRun_Job) GetMetrics() *SimulationRun_JobMetrics { type SimulationRun_JobMetrics struct { state protoimpl.MessageState `protogen:"open.v1"` // Headline scores, 0-1, computed by the worker as weighted means over the - // members that ran (a missing member renormalizes the rest): - // - // accuracy = task_completion x3 + (1 - stt.wer) + stt.entity_recognition - // experience = conversation.turn_taking_score x2 + conciseness + conversation_progression - // + (1 - conversation.false_interruption_count / agent turns, penalty-only) + // members that ran (a missing member renormalizes the rest). AccuracyScore *float32 `protobuf:"fixed32,1,opt,name=accuracy_score,json=accuracyScore,proto3,oneof" json:"accuracy_score,omitempty"` // absent when the simulator spoiled the call ExperienceScore *float32 `protobuf:"fixed32,2,opt,name=experience_score,json=experienceScore,proto3,oneof" json:"experience_score,omitempty"` // absent when the simulator spoiled the call // The accuracy anchor: the scenario verdict as 1/0, or the fraction of the declared target state the call reached. From 4110eec848b10a0ba22a10434cf7c2ae9f995adf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Sun, 2 Aug 2026 21:43:20 -0700 Subject: [PATCH 07/32] agent-simulation: keep methodology out of the wire format The proto says what a field is and when it is available; how the worker derives it, with which thresholds and weights, belongs with the worker. One of these was already stale - the progression derivation changed after it was written. --- protobufs/livekit_agent_simulation.proto | 34 +++++++++++------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/protobufs/livekit_agent_simulation.proto b/protobufs/livekit_agent_simulation.proto index 61004e669..147d8850a 100644 --- a/protobufs/livekit_agent_simulation.proto +++ b/protobufs/livekit_agent_simulation.proto @@ -110,9 +110,7 @@ message SimulationRun { optional bool information_loss = 16; optional bool redundant_statements = 17; optional bool poor_question_quality = 18; - // Derived from the flags by fixed formula (0 flags = 1.0, 1 = 0.5, 2+ = 0.0); - // the flags reach experience_score only through this, never directly. - optional float conversation_progression = 19; + optional float conversation_progression = 19; // 0-1, derived from the flags above // The agent's perception of the caller. Audio only. message STT { @@ -124,13 +122,12 @@ message SimulationRun { optional uint32 char_errors = 10; // needs the RemoteSession optional uint32 transcription_latency_ms = 8; // needs the RemoteSession; agent-reported STT/endpointing delay, mean - // Key entities (names, IDs, amounts) LLM-extracted from the authored dialog, - // scored by occurrence survival over the WER alignment. Needs the text judge. - optional float entity_recognition = 11; // recognized / uttered; feeds accuracy_score - optional uint32 entities_uttered = 12; // pooling stats + // Key entities (names, IDs, amounts) the caller said. Needs the text judge. + optional float entity_recognition = 11; // recognized / uttered + optional uint32 entities_uttered = 12; optional uint32 entities_recognized = 13; - reserved 5, 6, 7; // was keyterm_recall, keyterms_uttered, keyterms_recognized (methodology replaced by entity_*) + reserved 5, 6, 7; // was keyterm_recall, keyterms_uttered, keyterms_recognized reserved "keyterm_recall", "keyterms_uttered", "keyterms_recognized"; } @@ -139,7 +136,7 @@ message SimulationRun { optional uint32 ttfs_ms = 2; // needs the RemoteSession; time to first sentence (the smallest speakable unit) optional float tokens_per_second = 3; // needs the RemoteSession; decode rate, mean (per-turn in turns.llm) - reserved 4; // was conciseness_score; conciseness is a dialog judgment, moved to JobMetrics/Turn + reserved 4; // was conciseness_score, now on JobMetrics/Turn reserved "conciseness_score"; } @@ -156,13 +153,12 @@ message SimulationRun { optional float naturalness_score = 5; // needs the audio judge; judged 0-1: prosody / expressiveness optional float enunciation_score = 6; // needs the audio judge; judged 0-1: key entities audibly intact - // Did the simulator hear the agent's key entities intact? Same - // methodology as STT.entity_*, opposite direction. Needs the text judge. - optional float entity_recognition = 14; - optional uint32 entities_uttered = 15; // pooling stats + // Key entities the agent said, as the caller heard them. Needs the text judge. + optional float entity_recognition = 14; // recognized / uttered + optional uint32 entities_uttered = 15; optional uint32 entities_recognized = 16; - reserved 4, 12, 13; // was speech_rate_wpm + its pooling stats (heard_words, speech_ms); real speaking rate needs a prosody model + reserved 4, 12, 13; // was speech_rate_wpm, heard_words, speech_ms reserved "speech_rate_wpm", "heard_words", "speech_ms"; } @@ -173,10 +169,10 @@ message SimulationRun { optional int32 response_latency_p95_ms = 3; optional int32 response_latency_p99_ms = 4; optional int32 response_latency_ms = 16; // one turn's floor-transfer offset, cut-in if negative; job/run serve the percentiles - optional uint32 response_latency_samples = 17; // clean handoffs behind the percentiles; cut-ins are excluded and counted below + optional uint32 response_latency_samples = 17; // samples behind the percentiles optional uint32 agent_yield_latency_ms = 5; // agent audio continuing past a barge-in — per turn: on the barging persona row (presence = barge-in); job: mean - optional uint32 eot_misprediction_count = 6; // agent cut in >= 200ms before the caller's turn ended; 0/1 per turn - optional float overlap_ratio = 7; // competitive overlap (backchannels excluded) / voiced union + optional uint32 eot_misprediction_count = 6; // agent started before the caller's turn ended; 0/1 per turn + optional float overlap_ratio = 7; // overlapping speech / total speech optional uint32 overlap_speech_ms = 8; // pooling stats for overlap_ratio optional uint32 total_speech_ms = 9; optional uint32 awkward_silence_count = 11; // gaps past the natural-pause threshold; 0/1 per turn @@ -184,7 +180,7 @@ message SimulationRun { optional uint32 false_interruption_count = 13; // needs the RemoteSession; agent paused for a non-interruption optional uint32 agent_reported_e2e_latency_ms = 15; // needs the RemoteSession; the agent's own claim, mean - reserved 10, 14; // was silence_total_ms (derivable from turn edges), false_interruption_unrecovered_count (recovery no longer tracked) + reserved 10, 14; // was silence_total_ms, false_interruption_unrecovered_count reserved "silence_total_ms", "false_interruption_unrecovered_count"; } @@ -209,7 +205,7 @@ message SimulationRun { TTS tts = 7; // ttfa_ms, ttfb_ms, naturalness_score, enunciation_score Conversation conversation = 8; // response_latency_ms, agent_yield_latency_ms, agent_reported_e2e_latency_ms, 0/1 counts - optional float conciseness = 9; // judged {0, 0.5, 1}: this reply was brief enough for voice + optional float conciseness = 9; // judged {0, 0.5, 1} } } From a7c52958d2037efa2d3147077d91828852c67329 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 04:43:59 +0000 Subject: [PATCH 08/32] generated protobuf --- livekit/livekit_agent_simulation.pb.go | 34 ++++++++++++-------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/livekit/livekit_agent_simulation.pb.go b/livekit/livekit_agent_simulation.pb.go index 8a8ce84d2..728be7fd2 100644 --- a/livekit/livekit_agent_simulation.pb.go +++ b/livekit/livekit_agent_simulation.pb.go @@ -910,13 +910,11 @@ type SimulationRun_JobMetrics struct { // Judged over the authored dialog (text and audio); needs the text judge. Conciseness *float32 `protobuf:"fixed32,14,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` // judged {0, 0.5, 1} per agent turn; job = mean // Whole-call issue flags; true = present, absent = not judged. - UnnecessaryToolCalls *bool `protobuf:"varint,15,opt,name=unnecessary_tool_calls,json=unnecessaryToolCalls,proto3,oneof" json:"unnecessary_tool_calls,omitempty"` - InformationLoss *bool `protobuf:"varint,16,opt,name=information_loss,json=informationLoss,proto3,oneof" json:"information_loss,omitempty"` - RedundantStatements *bool `protobuf:"varint,17,opt,name=redundant_statements,json=redundantStatements,proto3,oneof" json:"redundant_statements,omitempty"` - PoorQuestionQuality *bool `protobuf:"varint,18,opt,name=poor_question_quality,json=poorQuestionQuality,proto3,oneof" json:"poor_question_quality,omitempty"` - // Derived from the flags by fixed formula (0 flags = 1.0, 1 = 0.5, 2+ = 0.0); - // the flags reach experience_score only through this, never directly. - ConversationProgression *float32 `protobuf:"fixed32,19,opt,name=conversation_progression,json=conversationProgression,proto3,oneof" json:"conversation_progression,omitempty"` + UnnecessaryToolCalls *bool `protobuf:"varint,15,opt,name=unnecessary_tool_calls,json=unnecessaryToolCalls,proto3,oneof" json:"unnecessary_tool_calls,omitempty"` + InformationLoss *bool `protobuf:"varint,16,opt,name=information_loss,json=informationLoss,proto3,oneof" json:"information_loss,omitempty"` + RedundantStatements *bool `protobuf:"varint,17,opt,name=redundant_statements,json=redundantStatements,proto3,oneof" json:"redundant_statements,omitempty"` + PoorQuestionQuality *bool `protobuf:"varint,18,opt,name=poor_question_quality,json=poorQuestionQuality,proto3,oneof" json:"poor_question_quality,omitempty"` + ConversationProgression *float32 `protobuf:"fixed32,19,opt,name=conversation_progression,json=conversationProgression,proto3,oneof" json:"conversation_progression,omitempty"` // 0-1, derived from the flags above unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1495,10 +1493,9 @@ type SimulationRun_JobMetrics_STT struct { Chars *uint32 `protobuf:"varint,9,opt,name=chars,proto3,oneof" json:"chars,omitempty"` // needs the RemoteSession CharErrors *uint32 `protobuf:"varint,10,opt,name=char_errors,json=charErrors,proto3,oneof" json:"char_errors,omitempty"` // needs the RemoteSession TranscriptionLatencyMs *uint32 `protobuf:"varint,8,opt,name=transcription_latency_ms,json=transcriptionLatencyMs,proto3,oneof" json:"transcription_latency_ms,omitempty"` // needs the RemoteSession; agent-reported STT/endpointing delay, mean - // Key entities (names, IDs, amounts) LLM-extracted from the authored dialog, - // scored by occurrence survival over the WER alignment. Needs the text judge. - EntityRecognition *float32 `protobuf:"fixed32,11,opt,name=entity_recognition,json=entityRecognition,proto3,oneof" json:"entity_recognition,omitempty"` // recognized / uttered; feeds accuracy_score - EntitiesUttered *uint32 `protobuf:"varint,12,opt,name=entities_uttered,json=entitiesUttered,proto3,oneof" json:"entities_uttered,omitempty"` // pooling stats + // Key entities (names, IDs, amounts) the caller said. Needs the text judge. + EntityRecognition *float32 `protobuf:"fixed32,11,opt,name=entity_recognition,json=entityRecognition,proto3,oneof" json:"entity_recognition,omitempty"` // recognized / uttered + EntitiesUttered *uint32 `protobuf:"varint,12,opt,name=entities_uttered,json=entitiesUttered,proto3,oneof" json:"entities_uttered,omitempty"` EntitiesRecognized *uint32 `protobuf:"varint,13,opt,name=entities_recognized,json=entitiesRecognized,proto3,oneof" json:"entities_recognized,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -1677,10 +1674,9 @@ type SimulationRun_JobMetrics_TTS struct { CharErrors *uint32 `protobuf:"varint,11,opt,name=char_errors,json=charErrors,proto3,oneof" json:"char_errors,omitempty"` // needs the RemoteSession NaturalnessScore *float32 `protobuf:"fixed32,5,opt,name=naturalness_score,json=naturalnessScore,proto3,oneof" json:"naturalness_score,omitempty"` // needs the audio judge; judged 0-1: prosody / expressiveness EnunciationScore *float32 `protobuf:"fixed32,6,opt,name=enunciation_score,json=enunciationScore,proto3,oneof" json:"enunciation_score,omitempty"` // needs the audio judge; judged 0-1: key entities audibly intact - // Did the simulator hear the agent's key entities intact? Same - // methodology as STT.entity_*, opposite direction. Needs the text judge. - EntityRecognition *float32 `protobuf:"fixed32,14,opt,name=entity_recognition,json=entityRecognition,proto3,oneof" json:"entity_recognition,omitempty"` - EntitiesUttered *uint32 `protobuf:"varint,15,opt,name=entities_uttered,json=entitiesUttered,proto3,oneof" json:"entities_uttered,omitempty"` // pooling stats + // Key entities the agent said, as the caller heard them. Needs the text judge. + EntityRecognition *float32 `protobuf:"fixed32,14,opt,name=entity_recognition,json=entityRecognition,proto3,oneof" json:"entity_recognition,omitempty"` // recognized / uttered + EntitiesUttered *uint32 `protobuf:"varint,15,opt,name=entities_uttered,json=entitiesUttered,proto3,oneof" json:"entities_uttered,omitempty"` EntitiesRecognized *uint32 `protobuf:"varint,16,opt,name=entities_recognized,json=entitiesRecognized,proto3,oneof" json:"entities_recognized,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -1815,10 +1811,10 @@ type SimulationRun_JobMetrics_Conversation struct { ResponseLatencyP95Ms *int32 `protobuf:"varint,3,opt,name=response_latency_p95_ms,json=responseLatencyP95Ms,proto3,oneof" json:"response_latency_p95_ms,omitempty"` ResponseLatencyP99Ms *int32 `protobuf:"varint,4,opt,name=response_latency_p99_ms,json=responseLatencyP99Ms,proto3,oneof" json:"response_latency_p99_ms,omitempty"` ResponseLatencyMs *int32 `protobuf:"varint,16,opt,name=response_latency_ms,json=responseLatencyMs,proto3,oneof" json:"response_latency_ms,omitempty"` // one turn's floor-transfer offset, cut-in if negative; job/run serve the percentiles - ResponseLatencySamples *uint32 `protobuf:"varint,17,opt,name=response_latency_samples,json=responseLatencySamples,proto3,oneof" json:"response_latency_samples,omitempty"` // clean handoffs behind the percentiles; cut-ins are excluded and counted below + ResponseLatencySamples *uint32 `protobuf:"varint,17,opt,name=response_latency_samples,json=responseLatencySamples,proto3,oneof" json:"response_latency_samples,omitempty"` // samples behind the percentiles AgentYieldLatencyMs *uint32 `protobuf:"varint,5,opt,name=agent_yield_latency_ms,json=agentYieldLatencyMs,proto3,oneof" json:"agent_yield_latency_ms,omitempty"` // agent audio continuing past a barge-in — per turn: on the barging persona row (presence = barge-in); job: mean - EotMispredictionCount *uint32 `protobuf:"varint,6,opt,name=eot_misprediction_count,json=eotMispredictionCount,proto3,oneof" json:"eot_misprediction_count,omitempty"` // agent cut in >= 200ms before the caller's turn ended; 0/1 per turn - OverlapRatio *float32 `protobuf:"fixed32,7,opt,name=overlap_ratio,json=overlapRatio,proto3,oneof" json:"overlap_ratio,omitempty"` // competitive overlap (backchannels excluded) / voiced union + EotMispredictionCount *uint32 `protobuf:"varint,6,opt,name=eot_misprediction_count,json=eotMispredictionCount,proto3,oneof" json:"eot_misprediction_count,omitempty"` // agent started before the caller's turn ended; 0/1 per turn + OverlapRatio *float32 `protobuf:"fixed32,7,opt,name=overlap_ratio,json=overlapRatio,proto3,oneof" json:"overlap_ratio,omitempty"` // overlapping speech / total speech OverlapSpeechMs *uint32 `protobuf:"varint,8,opt,name=overlap_speech_ms,json=overlapSpeechMs,proto3,oneof" json:"overlap_speech_ms,omitempty"` // pooling stats for overlap_ratio TotalSpeechMs *uint32 `protobuf:"varint,9,opt,name=total_speech_ms,json=totalSpeechMs,proto3,oneof" json:"total_speech_ms,omitempty"` AwkwardSilenceCount *uint32 `protobuf:"varint,11,opt,name=awkward_silence_count,json=awkwardSilenceCount,proto3,oneof" json:"awkward_silence_count,omitempty"` // gaps past the natural-pause threshold; 0/1 per turn @@ -2031,7 +2027,7 @@ type SimulationRun_JobMetrics_Turn struct { Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,6,opt,name=llm,proto3" json:"llm,omitempty"` // ttft_ms, ttfs_ms, tokens_per_second Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,7,opt,name=tts,proto3" json:"tts,omitempty"` // ttfa_ms, ttfb_ms, naturalness_score, enunciation_score Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,8,opt,name=conversation,proto3" json:"conversation,omitempty"` // response_latency_ms, agent_yield_latency_ms, agent_reported_e2e_latency_ms, 0/1 counts - Conciseness *float32 `protobuf:"fixed32,9,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` // judged {0, 0.5, 1}: this reply was brief enough for voice + Conciseness *float32 `protobuf:"fixed32,9,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` // judged {0, 0.5, 1} unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } From 39f1c0199ce6f3c756ee800dfc3b9847f9dedfeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Sun, 2 Aug 2026 21:48:49 -0700 Subject: [PATCH 09/32] agent-simulation: drop response_latency_samples Derivable from data already on the wire: the turn rows carry response_latency_ms and flag cut-ins, so the clean-handoff count is a subtraction the client can do itself. --- protobufs/livekit_agent_simulation.proto | 1 - 1 file changed, 1 deletion(-) diff --git a/protobufs/livekit_agent_simulation.proto b/protobufs/livekit_agent_simulation.proto index 147d8850a..b9583794b 100644 --- a/protobufs/livekit_agent_simulation.proto +++ b/protobufs/livekit_agent_simulation.proto @@ -169,7 +169,6 @@ message SimulationRun { optional int32 response_latency_p95_ms = 3; optional int32 response_latency_p99_ms = 4; optional int32 response_latency_ms = 16; // one turn's floor-transfer offset, cut-in if negative; job/run serve the percentiles - optional uint32 response_latency_samples = 17; // samples behind the percentiles optional uint32 agent_yield_latency_ms = 5; // agent audio continuing past a barge-in — per turn: on the barging persona row (presence = barge-in); job: mean optional uint32 eot_misprediction_count = 6; // agent started before the caller's turn ended; 0/1 per turn optional float overlap_ratio = 7; // overlapping speech / total speech From 75c30a93c4b01439af6af229c387239ba220939f Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 04:49:29 +0000 Subject: [PATCH 10/32] generated protobuf --- livekit/livekit_agent_simulation.pb.go | 51 +-- livekit/livekit_agent_simulation.twirp.go | 448 +++++++++++----------- 2 files changed, 243 insertions(+), 256 deletions(-) diff --git a/livekit/livekit_agent_simulation.pb.go b/livekit/livekit_agent_simulation.pb.go index 728be7fd2..a361e6ab0 100644 --- a/livekit/livekit_agent_simulation.pb.go +++ b/livekit/livekit_agent_simulation.pb.go @@ -1810,12 +1810,11 @@ type SimulationRun_JobMetrics_Conversation struct { ResponseLatencyP50Ms *int32 `protobuf:"varint,2,opt,name=response_latency_p50_ms,json=responseLatencyP50Ms,proto3,oneof" json:"response_latency_p50_ms,omitempty"` // floor-transfer offset; a gap is > 0, an overlap < 0 ResponseLatencyP95Ms *int32 `protobuf:"varint,3,opt,name=response_latency_p95_ms,json=responseLatencyP95Ms,proto3,oneof" json:"response_latency_p95_ms,omitempty"` ResponseLatencyP99Ms *int32 `protobuf:"varint,4,opt,name=response_latency_p99_ms,json=responseLatencyP99Ms,proto3,oneof" json:"response_latency_p99_ms,omitempty"` - ResponseLatencyMs *int32 `protobuf:"varint,16,opt,name=response_latency_ms,json=responseLatencyMs,proto3,oneof" json:"response_latency_ms,omitempty"` // one turn's floor-transfer offset, cut-in if negative; job/run serve the percentiles - ResponseLatencySamples *uint32 `protobuf:"varint,17,opt,name=response_latency_samples,json=responseLatencySamples,proto3,oneof" json:"response_latency_samples,omitempty"` // samples behind the percentiles - AgentYieldLatencyMs *uint32 `protobuf:"varint,5,opt,name=agent_yield_latency_ms,json=agentYieldLatencyMs,proto3,oneof" json:"agent_yield_latency_ms,omitempty"` // agent audio continuing past a barge-in — per turn: on the barging persona row (presence = barge-in); job: mean - EotMispredictionCount *uint32 `protobuf:"varint,6,opt,name=eot_misprediction_count,json=eotMispredictionCount,proto3,oneof" json:"eot_misprediction_count,omitempty"` // agent started before the caller's turn ended; 0/1 per turn - OverlapRatio *float32 `protobuf:"fixed32,7,opt,name=overlap_ratio,json=overlapRatio,proto3,oneof" json:"overlap_ratio,omitempty"` // overlapping speech / total speech - OverlapSpeechMs *uint32 `protobuf:"varint,8,opt,name=overlap_speech_ms,json=overlapSpeechMs,proto3,oneof" json:"overlap_speech_ms,omitempty"` // pooling stats for overlap_ratio + ResponseLatencyMs *int32 `protobuf:"varint,16,opt,name=response_latency_ms,json=responseLatencyMs,proto3,oneof" json:"response_latency_ms,omitempty"` // one turn's floor-transfer offset, cut-in if negative; job/run serve the percentiles + AgentYieldLatencyMs *uint32 `protobuf:"varint,5,opt,name=agent_yield_latency_ms,json=agentYieldLatencyMs,proto3,oneof" json:"agent_yield_latency_ms,omitempty"` // agent audio continuing past a barge-in — per turn: on the barging persona row (presence = barge-in); job: mean + EotMispredictionCount *uint32 `protobuf:"varint,6,opt,name=eot_misprediction_count,json=eotMispredictionCount,proto3,oneof" json:"eot_misprediction_count,omitempty"` // agent started before the caller's turn ended; 0/1 per turn + OverlapRatio *float32 `protobuf:"fixed32,7,opt,name=overlap_ratio,json=overlapRatio,proto3,oneof" json:"overlap_ratio,omitempty"` // overlapping speech / total speech + OverlapSpeechMs *uint32 `protobuf:"varint,8,opt,name=overlap_speech_ms,json=overlapSpeechMs,proto3,oneof" json:"overlap_speech_ms,omitempty"` // pooling stats for overlap_ratio TotalSpeechMs *uint32 `protobuf:"varint,9,opt,name=total_speech_ms,json=totalSpeechMs,proto3,oneof" json:"total_speech_ms,omitempty"` AwkwardSilenceCount *uint32 `protobuf:"varint,11,opt,name=awkward_silence_count,json=awkwardSilenceCount,proto3,oneof" json:"awkward_silence_count,omitempty"` // gaps past the natural-pause threshold; 0/1 per turn UnansweredTurns *uint32 `protobuf:"varint,12,opt,name=unanswered_turns,json=unansweredTurns,proto3,oneof" json:"unanswered_turns,omitempty"` // the simulated party spoke, the agent never responded; 0/1 per turn @@ -1890,13 +1889,6 @@ func (x *SimulationRun_JobMetrics_Conversation) GetResponseLatencyMs() int32 { return 0 } -func (x *SimulationRun_JobMetrics_Conversation) GetResponseLatencySamples() uint32 { - if x != nil && x.ResponseLatencySamples != nil { - return *x.ResponseLatencySamples - } - return 0 -} - func (x *SimulationRun_JobMetrics_Conversation) GetAgentYieldLatencyMs() uint32 { if x != nil && x.AgentYieldLatencyMs != nil { return *x.AgentYieldLatencyMs @@ -2828,7 +2820,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\n" + "suggestion\x18\x02 \x01(\tR\n" + "suggestion\x12\x14\n" + - "\x05label\x18\x03 \x01(\tR\x05label\"\xddA\n" + + "\x05label\x18\x03 \x01(\tR\x05label\"\x81A\n" + "\rSimulationRun\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + "\n" + @@ -2878,7 +2870,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x10STATUS_COMPLETED\x10\x02\x12\x11\n" + "\rSTATUS_FAILED\x10\x03\x12\x14\n" + "\x10STATUS_CANCELLED\x10\x04J\x04\b\t\x10\n" + - "\x1a\x95%\n" + + "\x1a\xb9$\n" + "\n" + "JobMetrics\x12*\n" + "\x0eaccuracy_score\x18\x01 \x01(\x02H\x00R\raccuracyScore\x88\x01\x01\x12.\n" + @@ -2967,31 +2959,28 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x12_enunciation_scoreB\x15\n" + "\x13_entity_recognitionB\x13\n" + "\x11_entities_utteredB\x16\n" + - "\x14_entities_recognizedJ\x04\b\x04\x10\x05J\x04\b\f\x10\rJ\x04\b\r\x10\x0eR\x0fspeech_rate_wpmR\vheard_wordsR\tspeech_ms\x1a\x99\n" + - "\n" + + "\x14_entities_recognizedJ\x04\b\x04\x10\x05J\x04\b\f\x10\rJ\x04\b\r\x10\x0eR\x0fspeech_rate_wpmR\vheard_wordsR\tspeech_ms\x1a\xbd\t\n" + "\fConversation\x12/\n" + "\x11turn_taking_score\x18\x01 \x01(\x02H\x00R\x0fturnTakingScore\x88\x01\x01\x12:\n" + "\x17response_latency_p50_ms\x18\x02 \x01(\x05H\x01R\x14responseLatencyP50Ms\x88\x01\x01\x12:\n" + "\x17response_latency_p95_ms\x18\x03 \x01(\x05H\x02R\x14responseLatencyP95Ms\x88\x01\x01\x12:\n" + "\x17response_latency_p99_ms\x18\x04 \x01(\x05H\x03R\x14responseLatencyP99Ms\x88\x01\x01\x123\n" + - "\x13response_latency_ms\x18\x10 \x01(\x05H\x04R\x11responseLatencyMs\x88\x01\x01\x12=\n" + - "\x18response_latency_samples\x18\x11 \x01(\rH\x05R\x16responseLatencySamples\x88\x01\x01\x128\n" + - "\x16agent_yield_latency_ms\x18\x05 \x01(\rH\x06R\x13agentYieldLatencyMs\x88\x01\x01\x12;\n" + - "\x17eot_misprediction_count\x18\x06 \x01(\rH\aR\x15eotMispredictionCount\x88\x01\x01\x12(\n" + - "\roverlap_ratio\x18\a \x01(\x02H\bR\foverlapRatio\x88\x01\x01\x12/\n" + - "\x11overlap_speech_ms\x18\b \x01(\rH\tR\x0foverlapSpeechMs\x88\x01\x01\x12+\n" + - "\x0ftotal_speech_ms\x18\t \x01(\rH\n" + - "R\rtotalSpeechMs\x88\x01\x01\x127\n" + - "\x15awkward_silence_count\x18\v \x01(\rH\vR\x13awkwardSilenceCount\x88\x01\x01\x12.\n" + - "\x10unanswered_turns\x18\f \x01(\rH\fR\x0funansweredTurns\x88\x01\x01\x12=\n" + - "\x18false_interruption_count\x18\r \x01(\rH\rR\x16falseInterruptionCount\x88\x01\x01\x12E\n" + - "\x1dagent_reported_e2e_latency_ms\x18\x0f \x01(\rH\x0eR\x19agentReportedE2eLatencyMs\x88\x01\x01B\x14\n" + + "\x13response_latency_ms\x18\x10 \x01(\x05H\x04R\x11responseLatencyMs\x88\x01\x01\x128\n" + + "\x16agent_yield_latency_ms\x18\x05 \x01(\rH\x05R\x13agentYieldLatencyMs\x88\x01\x01\x12;\n" + + "\x17eot_misprediction_count\x18\x06 \x01(\rH\x06R\x15eotMispredictionCount\x88\x01\x01\x12(\n" + + "\roverlap_ratio\x18\a \x01(\x02H\aR\foverlapRatio\x88\x01\x01\x12/\n" + + "\x11overlap_speech_ms\x18\b \x01(\rH\bR\x0foverlapSpeechMs\x88\x01\x01\x12+\n" + + "\x0ftotal_speech_ms\x18\t \x01(\rH\tR\rtotalSpeechMs\x88\x01\x01\x127\n" + + "\x15awkward_silence_count\x18\v \x01(\rH\n" + + "R\x13awkwardSilenceCount\x88\x01\x01\x12.\n" + + "\x10unanswered_turns\x18\f \x01(\rH\vR\x0funansweredTurns\x88\x01\x01\x12=\n" + + "\x18false_interruption_count\x18\r \x01(\rH\fR\x16falseInterruptionCount\x88\x01\x01\x12E\n" + + "\x1dagent_reported_e2e_latency_ms\x18\x0f \x01(\rH\rR\x19agentReportedE2eLatencyMs\x88\x01\x01B\x14\n" + "\x12_turn_taking_scoreB\x1a\n" + "\x18_response_latency_p50_msB\x1a\n" + "\x18_response_latency_p95_msB\x1a\n" + "\x18_response_latency_p99_msB\x16\n" + - "\x14_response_latency_msB\x1b\n" + - "\x19_response_latency_samplesB\x19\n" + + "\x14_response_latency_msB\x19\n" + "\x17_agent_yield_latency_msB\x1a\n" + "\x18_eot_misprediction_countB\x10\n" + "\x0e_overlap_ratioB\x14\n" + diff --git a/livekit/livekit_agent_simulation.twirp.go b/livekit/livekit_agent_simulation.twirp.go index 85ec49578..a70ccd687 100644 --- a/livekit/livekit_agent_simulation.twirp.go +++ b/livekit/livekit_agent_simulation.twirp.go @@ -1912,229 +1912,227 @@ func (s *agentSimulationServer) PathPrefix() string { } var twirpFileDescriptor9 = []byte{ - // 3578 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x1b, 0x49, - 0x76, 0x37, 0xc9, 0x26, 0xd9, 0x7c, 0x14, 0xc9, 0x56, 0xe9, 0xc3, 0x74, 0xcf, 0x7a, 0xc6, 0xe3, - 0x99, 0xd9, 0x35, 0xec, 0x59, 0xd9, 0xd1, 0xac, 0x77, 0x56, 0x9e, 0xdd, 0x20, 0xa2, 0x4c, 0x9b, - 0x52, 0x24, 0x59, 0x53, 0xa4, 0x90, 0xec, 0x04, 0x41, 0xa3, 0xd5, 0x5d, 0xa6, 0x5a, 0x6e, 0x76, - 0x71, 0xbb, 0xaa, 0x6d, 0x6b, 0x81, 0xdc, 0x07, 0xc8, 0x29, 0x87, 0x00, 0xc9, 0x25, 0xc8, 0x65, - 0x0e, 0xc9, 0x35, 0xa7, 0x00, 0x01, 0xf2, 0x27, 0x04, 0x41, 0x80, 0x9c, 0x92, 0x7f, 0x20, 0xf7, - 0xe4, 0x94, 0x43, 0x50, 0x1f, 0xdd, 0x6c, 0x7e, 0xc9, 0x9a, 0xc9, 0xcc, 0x6d, 0x6f, 0xac, 0xf7, - 0x7e, 0xaf, 0x3e, 0x5e, 0xfd, 0x5e, 0xbd, 0xaa, 0x7e, 0x84, 0xf7, 0xc3, 0xe0, 0x35, 0x79, 0x15, - 0x70, 0xc7, 0x1d, 0x92, 0x88, 0x3b, 0x2c, 0x18, 0x25, 0xa1, 0xcb, 0x03, 0x1a, 0x6d, 0x8d, 0x63, - 0xca, 0x29, 0xaa, 0x6a, 0xbd, 0xfd, 0xa1, 0x04, 0x3c, 0x9c, 0x81, 0x13, 0xc6, 0x32, 0xac, 0xfd, - 0xc1, 0x90, 0xd2, 0x61, 0x48, 0x1e, 0xca, 0xd6, 0x59, 0xf2, 0xf2, 0x21, 0x0f, 0x46, 0x84, 0x71, - 0x77, 0x34, 0xd6, 0x80, 0x5b, 0xa9, 0xb5, 0x17, 0xd2, 0xc4, 0x57, 0x7d, 0x68, 0xd5, 0x7a, 0xaa, - 0x1a, 0x51, 0x9f, 0x84, 0x4c, 0x49, 0xef, 0xfe, 0x6b, 0x09, 0xd6, 0xfb, 0xd9, 0x94, 0x70, 0x12, - 0xf5, 0x93, 0xd1, 0xc8, 0x8d, 0x2f, 0xd1, 0x26, 0x54, 0xc6, 0x2e, 0x63, 0xc4, 0x6f, 0x17, 0xee, - 0x14, 0xee, 0x95, 0xb1, 0x6e, 0x09, 0xf9, 0x4b, 0x37, 0x08, 0x89, 0xdf, 0x2e, 0x2a, 0xb9, 0x6a, - 0xa1, 0xdb, 0x00, 0x43, 0x1a, 0x44, 0x43, 0xe7, 0x0d, 0x09, 0xc3, 0x76, 0xe9, 0x4e, 0xe1, 0x5e, - 0x0d, 0xd7, 0xa4, 0xe4, 0x8f, 0x48, 0x18, 0x0a, 0x35, 0xa7, 0x4e, 0x30, 0x1a, 0xc7, 0xf4, 0x35, - 0x69, 0x1b, 0x4a, 0xcd, 0xe9, 0xbe, 0x12, 0xa0, 0x2f, 0xa0, 0x12, 0x30, 0x96, 0x10, 0xd6, 0x2e, - 0xdf, 0x29, 0xdd, 0xab, 0x6f, 0x7f, 0xb4, 0xa5, 0x67, 0xbb, 0xb5, 0x68, 0x72, 0x5b, 0xfb, 0x02, - 0x8b, 0xb5, 0x09, 0xfa, 0x12, 0x56, 0xbc, 0x73, 0x97, 0x3b, 0xe7, 0x01, 0xe3, 0x34, 0xbe, 0x6c, - 0x57, 0x64, 0x17, 0x5b, 0x57, 0x77, 0xb1, 0x77, 0xee, 0xf2, 0x9e, 0x32, 0xe8, 0x46, 0x3c, 0xbe, - 0xc4, 0x75, 0x6f, 0x22, 0xb1, 0xbf, 0x02, 0x6b, 0x16, 0x80, 0x2c, 0x28, 0xbd, 0x22, 0x97, 0xd2, - 0x1d, 0x35, 0x2c, 0x7e, 0xa2, 0x47, 0x50, 0x7e, 0xed, 0x86, 0x09, 0x91, 0xae, 0xa8, 0x6f, 0xdb, - 0xd9, 0x88, 0xca, 0xef, 0xa2, 0x87, 0x3d, 0x1a, 0x71, 0xf2, 0x96, 0x63, 0x05, 0x7c, 0x52, 0xfc, - 0x45, 0xc1, 0x76, 0xa0, 0x2c, 0xe7, 0x8f, 0xee, 0x40, 0xdd, 0x27, 0xcc, 0x8b, 0x83, 0xb1, 0x98, - 0x9b, 0xee, 0x38, 0x2f, 0x42, 0xef, 0x03, 0xb0, 0x64, 0x38, 0x24, 0x4c, 0x02, 0x8a, 0x12, 0x90, - 0x93, 0xa0, 0x75, 0x28, 0x87, 0xee, 0x19, 0x49, 0xfd, 0xad, 0x1a, 0x77, 0xff, 0x73, 0x17, 0x1a, - 0x53, 0x6b, 0x46, 0x4d, 0x28, 0x06, 0xbe, 0x1e, 0xa0, 0x18, 0xc8, 0xcd, 0x1a, 0xc7, 0xf4, 0x82, - 0x78, 0xdc, 0x09, 0x7c, 0xdd, 0x6f, 0x4d, 0x4b, 0xf6, 0x7d, 0xf4, 0x18, 0x2a, 0x8c, 0xbb, 0x3c, - 0x61, 0xb2, 0xdf, 0xe6, 0xf6, 0xed, 0xc5, 0xae, 0xdc, 0xea, 0x4b, 0x10, 0xd6, 0x60, 0xf4, 0x00, - 0x56, 0x15, 0x69, 0xf3, 0xab, 0x52, 0x5b, 0x6d, 0x49, 0xc5, 0xd3, 0xdc, 0xd2, 0xd6, 0xa1, 0x4c, - 0xe2, 0x98, 0xc6, 0xed, 0xb2, 0x9a, 0xba, 0x6c, 0xa0, 0x1d, 0x00, 0x2f, 0x26, 0x2e, 0x27, 0xbe, - 0xe3, 0xf2, 0x76, 0x45, 0xbb, 0x55, 0xb1, 0x7e, 0x2b, 0x65, 0xfd, 0xd6, 0x20, 0x65, 0x3d, 0xae, - 0x69, 0xf4, 0x2e, 0x47, 0x5b, 0x60, 0x5c, 0xd0, 0x33, 0xd6, 0xae, 0xca, 0xdd, 0xb7, 0x97, 0x4c, - 0xf9, 0x80, 0x9e, 0x61, 0x89, 0x13, 0x3e, 0x50, 0xb3, 0x8d, 0xdc, 0x11, 0x69, 0xd7, 0x94, 0x0f, - 0xa4, 0xe4, 0xd8, 0x1d, 0x11, 0xf4, 0x2b, 0x68, 0x32, 0x8f, 0x44, 0x6e, 0x1c, 0x50, 0x67, 0x18, - 0xd3, 0x64, 0xdc, 0x06, 0x39, 0x9b, 0xcd, 0x49, 0xc7, 0x5a, 0xfd, 0x5c, 0x68, 0x71, 0x83, 0xe5, - 0x9b, 0xe8, 0x31, 0x98, 0x24, 0xf2, 0xd5, 0x32, 0xea, 0xef, 0x5c, 0x46, 0x55, 0x62, 0x77, 0x39, - 0x7a, 0x0f, 0x6a, 0x17, 0xf4, 0xcc, 0xf1, 0x68, 0x12, 0xf1, 0xf6, 0x8a, 0x0c, 0x30, 0xf3, 0x82, - 0x9e, 0xed, 0x89, 0x36, 0xfa, 0x10, 0x56, 0x54, 0x10, 0x6a, 0x7d, 0x43, 0xea, 0xeb, 0x4a, 0x96, - 0x41, 0x54, 0x3c, 0x6a, 0x48, 0x53, 0x41, 0x94, 0x4c, 0x41, 0x7e, 0x02, 0xad, 0x28, 0x19, 0xe5, - 0xce, 0x21, 0xd6, 0x6e, 0x49, 0x54, 0x33, 0x4a, 0x46, 0x13, 0x67, 0x31, 0xb4, 0x0d, 0xe5, 0x84, - 0xb9, 0x43, 0xd2, 0xb6, 0xe4, 0xfc, 0x7f, 0xb4, 0xc4, 0xa3, 0xa7, 0x02, 0x83, 0x15, 0x54, 0x50, - 0xda, 0xa3, 0x91, 0x97, 0xc4, 0x31, 0x89, 0xbc, 0xcb, 0xf6, 0xaa, 0x1a, 0x3e, 0x27, 0x42, 0x0f, - 0xc0, 0x10, 0x07, 0x50, 0x1b, 0x49, 0x66, 0xdd, 0x5c, 0xd0, 0xe9, 0x11, 0xf5, 0x09, 0x96, 0x20, - 0xf4, 0x05, 0x54, 0x47, 0x84, 0xc7, 0x81, 0xc7, 0xda, 0x6b, 0x72, 0x12, 0x1f, 0x2e, 0x99, 0x04, - 0x4e, 0xa2, 0x23, 0x05, 0xc4, 0xa9, 0x85, 0xf0, 0x05, 0x53, 0xc1, 0xee, 0xfc, 0x96, 0x71, 0xbf, - 0xbd, 0x7e, 0xa7, 0x70, 0x6f, 0x05, 0xd7, 0xb5, 0xec, 0x2b, 0xc6, 0x7d, 0xfb, 0xdf, 0xcb, 0x50, - 0x3a, 0xa0, 0x67, 0x73, 0xf1, 0xb1, 0x93, 0x05, 0x40, 0x51, 0x4e, 0xf3, 0xc3, 0xe5, 0x6c, 0x9a, - 0x0d, 0x82, 0xbb, 0xb0, 0x12, 0x44, 0x8c, 0xc7, 0x89, 0xa7, 0x7c, 0xab, 0x22, 0x73, 0x4a, 0x36, - 0xe1, 0xbe, 0x91, 0xe7, 0xfe, 0x4f, 0x01, 0x29, 0x42, 0x92, 0xb7, 0x63, 0xe2, 0x71, 0xbd, 0x37, - 0x2a, 0x3c, 0x54, 0x60, 0x75, 0x73, 0x8a, 0x49, 0xec, 0x57, 0x72, 0xb1, 0x8f, 0x10, 0x18, 0xdc, - 0x1d, 0xaa, 0x28, 0xa8, 0x61, 0xf9, 0x5b, 0x90, 0x2a, 0xa6, 0x74, 0xa4, 0x88, 0x6e, 0x4a, 0xb4, - 0x29, 0x04, 0x92, 0xe7, 0x3b, 0x00, 0x8c, 0xbb, 0xb1, 0x8e, 0x38, 0x78, 0x77, 0xc4, 0x69, 0xf4, - 0x2e, 0xff, 0xae, 0x1c, 0xbf, 0x09, 0x55, 0x39, 0x9d, 0xc0, 0x97, 0x0c, 0xaf, 0xe1, 0x8a, 0x68, - 0xee, 0xfb, 0xe8, 0xe7, 0x29, 0xe1, 0x1a, 0xb2, 0xb3, 0x3b, 0x57, 0x38, 0x7d, 0x8a, 0x74, 0x39, - 0x96, 0x34, 0xaf, 0x64, 0xc9, 0x01, 0x3d, 0x9b, 0x65, 0x89, 0xfd, 0xa7, 0x50, 0x96, 0x9d, 0xa1, - 0x7b, 0x60, 0x89, 0x93, 0xda, 0xe1, 0x49, 0x1c, 0x31, 0x1d, 0x3e, 0x2a, 0xf5, 0x35, 0x85, 0x7c, - 0x20, 0xc4, 0x2a, 0x82, 0xee, 0xc3, 0xaa, 0x9b, 0xf8, 0x01, 0x9d, 0x82, 0xaa, 0x6c, 0xd8, 0x92, - 0x8a, 0x09, 0xf6, 0x2e, 0x85, 0x8a, 0x22, 0x08, 0x42, 0xd0, 0xec, 0x0f, 0x76, 0x07, 0xa7, 0x7d, - 0xe7, 0xa4, 0x7b, 0xfc, 0x74, 0xff, 0xf8, 0xb9, 0x75, 0x23, 0x27, 0xc3, 0xa7, 0xc7, 0xc7, 0x42, - 0x56, 0x40, 0xeb, 0x60, 0x69, 0xd9, 0xde, 0x8b, 0xa3, 0x93, 0xc3, 0xee, 0xa0, 0xfb, 0xd4, 0x2a, - 0xa2, 0x55, 0x68, 0x68, 0xe9, 0xb3, 0xdd, 0xfd, 0xc3, 0xee, 0x53, 0xab, 0x94, 0x07, 0xee, 0x1e, - 0xef, 0x75, 0x0f, 0x85, 0xd4, 0x38, 0x30, 0xcc, 0x9a, 0x05, 0xf6, 0x5f, 0x7e, 0x02, 0x30, 0x59, - 0x2d, 0xba, 0x0f, 0x4d, 0xd7, 0xf3, 0x92, 0xd8, 0xf5, 0x2e, 0x1d, 0xe6, 0xd1, 0x98, 0xc8, 0x95, - 0x15, 0x7b, 0x37, 0x70, 0x23, 0x95, 0xf7, 0x85, 0xf8, 0xeb, 0x42, 0x01, 0x6d, 0x81, 0x25, 0x08, - 0x18, 0x07, 0x24, 0xf2, 0x88, 0x46, 0x17, 0x25, 0xba, 0x80, 0x5b, 0x13, 0x4d, 0x86, 0xff, 0x14, - 0x5a, 0xdc, 0x65, 0xaf, 0x1c, 0x8f, 0x8e, 0xc6, 0x21, 0x91, 0x67, 0x7e, 0x49, 0xc2, 0x8b, 0xb8, - 0x29, 0x14, 0x7b, 0x99, 0x5c, 0xa0, 0x3f, 0x87, 0x12, 0xe3, 0x5c, 0x12, 0xbf, 0xbe, 0xfd, 0xc9, - 0x3b, 0xf7, 0x69, 0xab, 0x3f, 0x18, 0x60, 0x61, 0x21, 0x0c, 0xc3, 0x70, 0x24, 0xc3, 0xe1, 0x5a, - 0x86, 0x87, 0x87, 0x47, 0x58, 0x58, 0x08, 0x43, 0xce, 0x99, 0xce, 0x25, 0xd7, 0x30, 0x1c, 0x0c, - 0xfa, 0x58, 0x58, 0x20, 0x0c, 0x2b, 0x1e, 0x8d, 0x5e, 0x93, 0x98, 0x49, 0x58, 0xbb, 0x2a, 0x7b, - 0xd8, 0x7a, 0x77, 0x0f, 0x7b, 0x39, 0x2b, 0x3c, 0xd5, 0x07, 0xda, 0x87, 0x9a, 0x3e, 0x78, 0x69, - 0x2c, 0x43, 0xb1, 0xbe, 0xfd, 0xe0, 0x1a, 0x4e, 0x48, 0x4d, 0xf0, 0xc4, 0x1a, 0xfd, 0x12, 0xca, - 0x92, 0x7f, 0xed, 0x9a, 0x4c, 0x78, 0x3f, 0xbe, 0xc6, 0xca, 0x92, 0x38, 0xc2, 0xca, 0x08, 0x7d, - 0x00, 0xf5, 0x8b, 0xc4, 0x1f, 0x12, 0x75, 0x1b, 0x94, 0x71, 0x5f, 0xc3, 0x20, 0x45, 0xe2, 0xfc, - 0x0d, 0x27, 0x24, 0xcf, 0xc3, 0xea, 0x12, 0xa6, 0x48, 0x7e, 0x30, 0xc1, 0x7e, 0x0a, 0xe8, 0xdc, - 0x65, 0x4e, 0x4c, 0x46, 0x94, 0x93, 0xf4, 0xca, 0x2a, 0x83, 0xdb, 0xc4, 0xd6, 0xb9, 0xcb, 0xb0, - 0x54, 0xf4, 0x95, 0x1c, 0xdd, 0x87, 0x22, 0x7f, 0xa4, 0x63, 0xfc, 0xaa, 0x03, 0xa3, 0xc8, 0x1f, - 0xa1, 0x4f, 0x54, 0x3e, 0x09, 0x18, 0x89, 0x08, 0x53, 0xe1, 0x5d, 0xec, 0x95, 0x70, 0x5e, 0x28, - 0x58, 0xb5, 0x03, 0x9b, 0x49, 0x14, 0x11, 0x8f, 0x30, 0x26, 0x8e, 0x7b, 0x4e, 0x69, 0xe8, 0x78, - 0x6e, 0x18, 0xaa, 0xd4, 0x66, 0xf6, 0x0c, 0xbc, 0x9e, 0xd3, 0x0f, 0x28, 0x0d, 0xf7, 0x84, 0x56, - 0xd3, 0x3d, 0x88, 0x5e, 0xd2, 0x78, 0x24, 0x3d, 0xe6, 0x84, 0x94, 0x31, 0x99, 0xf0, 0xcc, 0x5e, - 0x19, 0xb7, 0x72, 0x9a, 0x43, 0xaa, 0x86, 0xfa, 0x39, 0xac, 0xc7, 0xc4, 0x4f, 0x22, 0xdf, 0x15, - 0xb7, 0x73, 0xee, 0x72, 0x32, 0x22, 0x11, 0x67, 0x32, 0xd5, 0x99, 0xbd, 0x0a, 0x5e, 0xcb, 0xb4, - 0xfd, 0x4c, 0xa9, 0x88, 0xbf, 0x31, 0xa6, 0x34, 0x76, 0x7e, 0x93, 0xa8, 0xbb, 0x9b, 0xf3, 0x9b, - 0xc4, 0x0d, 0x03, 0x7e, 0x29, 0x13, 0xa1, 0xd9, 0xab, 0xe2, 0x35, 0xa1, 0xfe, 0x52, 0x6b, 0xbf, - 0x54, 0x4a, 0x61, 0xf8, 0xfb, 0xd0, 0xce, 0x53, 0xc8, 0x19, 0xc7, 0x74, 0x18, 0x6b, 0x17, 0xaf, - 0x49, 0x7f, 0x98, 0xf8, 0x66, 0x1e, 0x71, 0x32, 0x01, 0x7c, 0x5d, 0x28, 0xd8, 0xff, 0x6b, 0x40, - 0xa9, 0x3f, 0x18, 0xa0, 0x0d, 0x28, 0xbd, 0x21, 0x71, 0x16, 0xf8, 0xa2, 0x21, 0xba, 0xbf, 0x05, - 0xe5, 0x37, 0x34, 0xf6, 0x55, 0xa6, 0x6b, 0xf4, 0x0a, 0x58, 0x35, 0x85, 0xea, 0x63, 0xa8, 0x8b, - 0xdf, 0x8e, 0x4c, 0x4f, 0x2a, 0x93, 0x35, 0x7a, 0x45, 0x0c, 0x42, 0xd8, 0x95, 0x32, 0x81, 0xda, - 0x80, 0x92, 0x47, 0x54, 0x2a, 0x13, 0x5b, 0x23, 0x1a, 0xba, 0x5f, 0xef, 0xdc, 0x8d, 0x99, 0xbc, - 0x59, 0x35, 0x7a, 0x06, 0x56, 0x4d, 0xdd, 0xaf, 0xf8, 0x9d, 0xf6, 0x0b, 0x12, 0x50, 0xc6, 0x20, - 0x84, 0x93, 0x7e, 0x7f, 0x05, 0x6d, 0x1e, 0xbb, 0x51, 0x76, 0x63, 0x74, 0x42, 0x97, 0x8b, 0x1b, - 0x84, 0x33, 0x62, 0x32, 0x72, 0x1a, 0xbd, 0x0a, 0xde, 0x9c, 0x42, 0x1c, 0x2a, 0xc0, 0x91, 0x34, - 0xdf, 0x06, 0x44, 0x22, 0x1e, 0xf0, 0x4b, 0x27, 0x26, 0x1e, 0x1d, 0x46, 0x81, 0x8c, 0xe1, 0xba, - 0x9c, 0x65, 0x15, 0xaf, 0x2a, 0x1d, 0x9e, 0xa8, 0xd2, 0xa3, 0x4f, 0xc8, 0x03, 0xc2, 0x9c, 0x84, - 0x73, 0x12, 0x13, 0x95, 0xa2, 0x1a, 0x3d, 0x13, 0xb7, 0x52, 0xcd, 0xa9, 0x52, 0x08, 0xfc, 0xcf, - 0x60, 0x2d, 0xc3, 0xeb, 0x51, 0x7e, 0x4b, 0x7c, 0x49, 0xed, 0x46, 0xaf, 0x86, 0x51, 0xaa, 0xc4, - 0x99, 0xee, 0xeb, 0x42, 0xa1, 0x53, 0x01, 0xc3, 0x79, 0x43, 0xe2, 0x8e, 0x09, 0x15, 0x47, 0xfa, - 0xba, 0xd3, 0x84, 0x15, 0x27, 0xe7, 0x69, 0x89, 0xf0, 0x34, 0x42, 0x7a, 0x4d, 0x22, 0x72, 0x3e, - 0xeb, 0xbc, 0x07, 0xb7, 0x9c, 0x65, 0xde, 0xe9, 0x6c, 0xc0, 0x9a, 0x33, 0xbf, 0xf6, 0xce, 0x1a, - 0xac, 0x3a, 0xb3, 0xcb, 0xeb, 0x6c, 0xc2, 0xba, 0xb3, 0x60, 0x0d, 0x07, 0x86, 0x59, 0xb6, 0x2a, - 0x07, 0x86, 0x59, 0xb1, 0xaa, 0x07, 0x86, 0x59, 0xb5, 0x4c, 0xdc, 0x7c, 0x45, 0x2e, 0x39, 0x89, - 0x47, 0x02, 0xe5, 0x86, 0x21, 0xb6, 0x74, 0x3b, 0xeb, 0x0b, 0xaf, 0x65, 0x92, 0x49, 0x47, 0xf6, - 0x3f, 0x16, 0xa0, 0x74, 0x78, 0x78, 0x84, 0x7e, 0x04, 0x55, 0xce, 0x5f, 0x72, 0xb1, 0x7b, 0x05, - 0xe9, 0x9f, 0x1b, 0xb8, 0x22, 0x04, 0x6a, 0xb7, 0x94, 0x96, 0x09, 0x6d, 0xca, 0x43, 0xa1, 0x65, - 0x4a, 0xfb, 0x10, 0x56, 0x39, 0x7d, 0x45, 0x22, 0xe6, 0x8c, 0x49, 0xec, 0x30, 0xe2, 0xd1, 0xc8, - 0xcf, 0x92, 0x4c, 0x4b, 0xa9, 0x4e, 0x48, 0xdc, 0x97, 0x0a, 0xe1, 0x62, 0x00, 0xd3, 0xd1, 0xa3, - 0xa5, 0xbf, 0x45, 0xdf, 0x9d, 0x75, 0x40, 0xce, 0x5c, 0x4f, 0x07, 0x86, 0x69, 0x58, 0x65, 0xbc, - 0x9a, 0x3b, 0x53, 0x54, 0xda, 0xb3, 0xff, 0xa7, 0x0c, 0xa5, 0xc1, 0xa0, 0xaf, 0x67, 0xe7, 0xce, - 0xce, 0xdd, 0xcd, 0xcf, 0xfd, 0x6c, 0x76, 0xee, 0x67, 0x47, 0x69, 0x78, 0x88, 0xb0, 0x4b, 0x67, - 0x3b, 0x17, 0x76, 0x55, 0x69, 0x52, 0x5a, 0x1e, 0x76, 0xa6, 0x8e, 0x9f, 0xc5, 0x61, 0x57, 0x93, - 0xfd, 0x96, 0xe7, 0xc3, 0x0e, 0x74, 0x88, 0x2c, 0x0d, 0xbb, 0xba, 0x04, 0x54, 0x67, 0xc3, 0xee, - 0x11, 0xac, 0x46, 0x2e, 0x4f, 0x62, 0x37, 0x9c, 0x38, 0x42, 0x66, 0x5d, 0x71, 0xce, 0x58, 0x39, - 0x55, 0x76, 0x01, 0x78, 0x04, 0xab, 0x24, 0x4a, 0x22, 0x2f, 0x50, 0xe7, 0x93, 0xb2, 0xa8, 0x48, - 0x8b, 0x1a, 0xb6, 0x72, 0xaa, 0xcc, 0x62, 0x71, 0x6c, 0xaa, 0xc3, 0x1d, 0xbe, 0x45, 0x6c, 0xb6, - 0xe4, 0x12, 0xea, 0xdf, 0x26, 0x36, 0x2d, 0x69, 0xb2, 0xb2, 0x2c, 0x36, 0x35, 0x59, 0xdc, 0x1c, - 0x71, 0xc4, 0xc6, 0x7e, 0x2f, 0x31, 0x2b, 0xc8, 0x37, 0xe7, 0x5a, 0x29, 0x9d, 0x73, 0xdf, 0xf7, - 0x14, 0xc2, 0x86, 0x55, 0x3e, 0x30, 0xcc, 0x15, 0xab, 0x71, 0x60, 0x98, 0x0d, 0xab, 0x89, 0x5b, - 0x6c, 0x4c, 0x88, 0x77, 0xee, 0xc4, 0x2e, 0x27, 0xce, 0x9b, 0xf1, 0x08, 0xd7, 0xcf, 0x89, 0x1b, - 0xfb, 0x6a, 0x45, 0xb8, 0xa6, 0xb5, 0x23, 0x66, 0xff, 0x35, 0xc0, 0x4a, 0xfe, 0x16, 0x23, 0x23, - 0x30, 0x89, 0x23, 0x87, 0xbb, 0xaf, 0x82, 0x68, 0x38, 0x73, 0x87, 0x6c, 0x09, 0xd5, 0x40, 0x6a, - 0xb2, 0x2d, 0x7e, 0x02, 0x37, 0x63, 0xc2, 0xc6, 0x34, 0x62, 0x24, 0x3b, 0x9a, 0xc6, 0x8f, 0x1f, - 0xa5, 0x41, 0x52, 0xee, 0x15, 0xf0, 0x7a, 0x0a, 0xd0, 0xe7, 0xf6, 0xc9, 0xe3, 0x47, 0x2a, 0x64, - 0x16, 0xda, 0xee, 0x3c, 0x16, 0xb6, 0x25, 0x69, 0x5b, 0x9c, 0xb7, 0xdd, 0x79, 0x7c, 0x95, 0xed, - 0x8e, 0xb0, 0x35, 0xa4, 0x6d, 0x69, 0x81, 0xed, 0x8e, 0xb2, 0xfd, 0x0c, 0xd6, 0xe6, 0x6c, 0x47, - 0xea, 0x36, 0x50, 0xee, 0x19, 0x78, 0x75, 0xc6, 0xee, 0x28, 0x4d, 0x53, 0x73, 0x46, 0xcc, 0x15, - 0x57, 0x5e, 0x75, 0x27, 0x10, 0x99, 0x6d, 0x73, 0xc6, 0xb2, 0xaf, 0xf4, 0xc2, 0xfc, 0x17, 0xb0, - 0xa9, 0x1e, 0x7d, 0x97, 0x01, 0x09, 0xfd, 0xfc, 0xb0, 0x65, 0x1d, 0xc0, 0x6b, 0x52, 0xff, 0x6b, - 0xa1, 0x9e, 0x1a, 0xf8, 0x0b, 0xb8, 0x49, 0x28, 0x77, 0x46, 0x01, 0x1b, 0xc7, 0xc4, 0x0f, 0xe4, - 0xd3, 0x52, 0xbf, 0x45, 0x2a, 0x3a, 0xb4, 0x37, 0x08, 0xe5, 0x47, 0x79, 0xbd, 0x7c, 0x93, 0x08, - 0xe3, 0x7b, 0xd0, 0xa0, 0xaf, 0x49, 0x1c, 0xba, 0x63, 0x41, 0x86, 0x80, 0xca, 0x63, 0x48, 0x44, - 0xf8, 0x8a, 0x16, 0x63, 0x21, 0xd5, 0x67, 0x6f, 0x8a, 0xcc, 0xf8, 0xa1, 0xcf, 0xa4, 0x1a, 0x6e, - 0x69, 0x55, 0x5f, 0x6a, 0xd4, 0xbc, 0x1e, 0x40, 0x8b, 0x53, 0xee, 0x86, 0x39, 0xb8, 0xba, 0x02, - 0x00, 0x6e, 0x48, 0x45, 0x1e, 0xfc, 0x39, 0x6c, 0xb8, 0x6f, 0x5e, 0xbd, 0x11, 0x24, 0x64, 0x41, - 0x28, 0x5f, 0x1c, 0x6a, 0x09, 0x75, 0x1d, 0xda, 0x6b, 0x5a, 0xdd, 0x57, 0xda, 0x6c, 0x01, 0x5b, - 0x60, 0x25, 0x91, 0x1b, 0xb1, 0x37, 0x22, 0x04, 0xd4, 0x43, 0x4c, 0xa7, 0xea, 0x15, 0xdc, 0x9a, - 0x68, 0xe4, 0x4b, 0x4c, 0x6f, 0xd3, 0x4b, 0x37, 0x64, 0xc4, 0x09, 0x22, 0x4e, 0xe2, 0x38, 0x19, - 0xe7, 0xdc, 0xa5, 0xf2, 0x75, 0x03, 0x6f, 0x4a, 0xc4, 0x7e, 0x0e, 0x90, 0x0d, 0xd7, 0x85, 0xdb, - 0x6a, 0x9b, 0x62, 0x32, 0xa6, 0xf2, 0xb1, 0x4c, 0xb6, 0xa7, 0x48, 0xa2, 0x8e, 0xa2, 0x26, 0xbe, - 0x25, 0x61, 0x58, 0xa3, 0xba, 0xdb, 0x53, 0x64, 0x51, 0xf9, 0x67, 0x36, 0x8e, 0x3a, 0x36, 0xb4, - 0x9d, 0x25, 0xc1, 0xb2, 0x44, 0x27, 0x83, 0x61, 0x99, 0x4e, 0x90, 0x5d, 0x1e, 0x0a, 0x0b, 0xc8, - 0x2c, 0x2f, 0x0e, 0xcb, 0xf8, 0xda, 0xb9, 0x05, 0x37, 0x9d, 0xc5, 0x6c, 0x94, 0x63, 0x2d, 0xa1, - 0x5b, 0xc7, 0x82, 0xa6, 0x33, 0xc5, 0x26, 0xb9, 0xce, 0x39, 0xd6, 0x74, 0x10, 0x58, 0xce, 0x0c, - 0x35, 0x3a, 0x6d, 0xd8, 0x74, 0x16, 0x32, 0x40, 0x9e, 0x75, 0xb3, 0x5b, 0x2c, 0xa7, 0xbf, 0x6c, - 0x1f, 0x3b, 0x77, 0xe0, 0x7d, 0xe7, 0xca, 0x5d, 0x3a, 0x30, 0x4c, 0xb0, 0xea, 0x07, 0x86, 0xd9, - 0xb4, 0x5a, 0xd8, 0x4a, 0x87, 0x53, 0x53, 0x1a, 0x31, 0xfc, 0xf1, 0x82, 0x9e, 0x93, 0x48, 0x9c, - 0xa8, 0xaf, 0xe5, 0x14, 0xe4, 0x28, 0xf6, 0x5f, 0x15, 0xa0, 0x96, 0x3d, 0xc8, 0x64, 0xf2, 0x73, - 0xe3, 0xf0, 0xd2, 0x11, 0x17, 0x9f, 0x20, 0x72, 0xb3, 0x2f, 0xb9, 0x66, 0xef, 0x06, 0xb6, 0xa4, - 0x6a, 0x30, 0xd1, 0x68, 0xe6, 0x8a, 0x19, 0x4d, 0x19, 0x14, 0xa5, 0x41, 0x01, 0xb7, 0x84, 0x66, - 0x1a, 0xaf, 0x12, 0xc4, 0xec, 0x10, 0xd2, 0x3b, 0xb3, 0xdd, 0xd8, 0xff, 0x56, 0x02, 0x43, 0x30, - 0x1e, 0xad, 0x43, 0x39, 0x88, 0x7c, 0xf2, 0x56, 0x5d, 0x57, 0xb0, 0x6a, 0xa0, 0x07, 0x60, 0xc4, - 0x34, 0x24, 0xfa, 0x9b, 0xd6, 0xcd, 0x05, 0x5f, 0xab, 0x31, 0x0d, 0x09, 0x96, 0x20, 0xf4, 0x3e, - 0x98, 0xf2, 0x4b, 0x4f, 0x7a, 0xea, 0x8a, 0x4b, 0x4f, 0x55, 0x4a, 0x54, 0xe4, 0xda, 0x50, 0x21, - 0x91, 0x9f, 0x9e, 0xab, 0xf2, 0xe1, 0x40, 0x22, 0x3f, 0x8d, 0x6a, 0xf9, 0xc8, 0x2f, 0x7f, 0xd7, - 0x47, 0x7e, 0xe5, 0xbb, 0x3e, 0xf2, 0xab, 0xff, 0xef, 0x47, 0xbe, 0xf9, 0x3d, 0x3c, 0xf2, 0x67, - 0x1e, 0xad, 0x35, 0x7d, 0xf5, 0x9b, 0x79, 0xb4, 0x76, 0xea, 0x50, 0x73, 0x52, 0x17, 0x77, 0x6a, - 0x50, 0x75, 0x94, 0x3f, 0xd5, 0xbd, 0x61, 0x02, 0xed, 0xac, 0x42, 0xcb, 0x99, 0xfe, 0x7a, 0xa3, - 0xee, 0x01, 0x33, 0x1f, 0x69, 0x54, 0x78, 0x4d, 0x7f, 0x89, 0x99, 0xeb, 0x4b, 0x44, 0xf8, 0xe2, - 0x97, 0xb2, 0xec, 0x73, 0xf6, 0x25, 0xdc, 0xb9, 0x09, 0x1b, 0xce, 0xa2, 0xe7, 0xae, 0x8c, 0xdb, - 0x85, 0xef, 0x59, 0x19, 0xa2, 0xcb, 0x1e, 0xac, 0xf6, 0xbf, 0x18, 0x00, 0x93, 0x6f, 0xb5, 0x3f, - 0xe8, 0x77, 0xa9, 0xdf, 0x03, 0x94, 0x7d, 0xc0, 0x1f, 0xbb, 0x8c, 0xc9, 0x5b, 0x4f, 0x76, 0x0f, - 0xb7, 0x52, 0xdd, 0x89, 0xcb, 0x18, 0x76, 0x39, 0xf9, 0xdd, 0xc7, 0x29, 0x74, 0x1b, 0xe0, 0x82, - 0x9e, 0x31, 0x75, 0x20, 0xaa, 0xa4, 0x8d, 0x6b, 0x42, 0x32, 0x10, 0x02, 0xf4, 0x11, 0x34, 0xa4, - 0x7a, 0x44, 0x5c, 0x96, 0x88, 0xeb, 0xb7, 0x7c, 0x62, 0xe0, 0x15, 0x21, 0x3c, 0xd2, 0x32, 0xf4, - 0x08, 0xd6, 0x25, 0x28, 0xfb, 0x4e, 0xe5, 0xbc, 0x74, 0x93, 0x50, 0xe7, 0x73, 0x8c, 0x84, 0x2e, - 0x3b, 0x3c, 0x9f, 0x09, 0xcd, 0xb5, 0xe9, 0x2d, 0xae, 0xc4, 0xf3, 0x1b, 0x6a, 0xff, 0x77, 0x09, - 0x2a, 0x7b, 0xb2, 0x08, 0x64, 0xff, 0x47, 0x11, 0xaa, 0x98, 0x48, 0x42, 0xce, 0x54, 0xb8, 0x0a, - 0xb3, 0x15, 0xae, 0xe9, 0xe2, 0x4f, 0x71, 0xb6, 0xf8, 0xb3, 0xa0, 0x46, 0x62, 0x2c, 0xac, 0x91, - 0x6c, 0x42, 0x25, 0x26, 0x43, 0xb1, 0x01, 0x15, 0xfd, 0x29, 0x5b, 0xb6, 0x50, 0x67, 0xae, 0x7a, - 0x54, 0xbd, 0xaa, 0x7a, 0x24, 0x08, 0x3f, 0x55, 0x3f, 0x12, 0x6c, 0xfc, 0x64, 0xba, 0x96, 0x62, - 0xea, 0x6b, 0x73, 0x5e, 0xa8, 0xee, 0x5b, 0xaa, 0xa0, 0x52, 0xbb, 0x46, 0x41, 0x45, 0x3a, 0x7b, - 0x7a, 0x62, 0xd9, 0x11, 0xa1, 0xbb, 0x3c, 0x30, 0xcc, 0x92, 0x65, 0xe0, 0xf9, 0x4a, 0x9e, 0xfd, - 0xe7, 0x05, 0x30, 0xb1, 0xbe, 0x3a, 0xa0, 0xfb, 0xb0, 0x3a, 0xf1, 0x8e, 0x13, 0x27, 0xd1, 0xc4, - 0xcd, 0x2d, 0x96, 0xe7, 0xde, 0xbe, 0x8f, 0xfa, 0xb0, 0x39, 0x8e, 0x09, 0x0b, 0x86, 0x11, 0xf1, - 0x9d, 0x31, 0x65, 0x22, 0x3f, 0xcb, 0x5d, 0xd2, 0x75, 0xd3, 0x49, 0x79, 0xf1, 0x24, 0x85, 0x9d, - 0x50, 0xc6, 0xf5, 0x56, 0xe2, 0xf5, 0xf1, 0x02, 0xa9, 0xfd, 0xb7, 0x05, 0x58, 0xdb, 0xa3, 0xd1, - 0xcb, 0x20, 0x1e, 0xf5, 0x69, 0x12, 0x7b, 0xe4, 0x74, 0x1c, 0x52, 0xd7, 0xb7, 0xff, 0xec, 0xda, - 0x1c, 0x58, 0xb8, 0x84, 0xe2, 0xe2, 0x25, 0xfc, 0x04, 0x5a, 0x1e, 0xf5, 0x89, 0x78, 0x67, 0xc5, - 0x97, 0x63, 0x1a, 0x44, 0x5c, 0x17, 0x76, 0x9a, 0x42, 0xdc, 0xcd, 0xa4, 0x36, 0x4c, 0x7c, 0x64, - 0xff, 0x45, 0x01, 0x4a, 0xcf, 0x09, 0xb7, 0x07, 0x3f, 0xc4, 0x94, 0xec, 0x9f, 0xe5, 0x76, 0xe3, - 0x1e, 0x94, 0xe2, 0x44, 0xdd, 0x3b, 0xa6, 0x38, 0x96, 0x37, 0xc1, 0x02, 0x62, 0xff, 0x73, 0x11, - 0x8c, 0xc3, 0x80, 0x71, 0xfb, 0x9f, 0x0a, 0xd7, 0x9e, 0xd5, 0x93, 0x99, 0x6a, 0xd8, 0xd5, 0xe5, - 0xe0, 0xde, 0x8d, 0xb4, 0x16, 0x26, 0xd8, 0xf9, 0x4b, 0x80, 0xb1, 0x3b, 0x24, 0xea, 0xab, 0x8b, - 0xf4, 0x59, 0x7d, 0xbb, 0x9d, 0xd9, 0x0f, 0x84, 0xf4, 0xc4, 0x1d, 0xea, 0x0b, 0x4c, 0xaf, 0x80, - 0x6b, 0x02, 0x2d, 0xc5, 0x22, 0x45, 0x8a, 0xac, 0xa8, 0xfa, 0xea, 0x34, 0xa0, 0xee, 0x4c, 0x7a, - 0xb2, 0xdf, 0x4e, 0x71, 0xd1, 0x88, 0x93, 0x88, 0xb5, 0x0b, 0xf2, 0x43, 0xf8, 0xb2, 0xe5, 0x4b, - 0x0c, 0xfa, 0x03, 0x68, 0x45, 0xe4, 0x2d, 0xcf, 0x75, 0xa5, 0x49, 0xb8, 0x74, 0x52, 0xb8, 0x21, - 0x0c, 0x4e, 0xd2, 0x69, 0xd9, 0x17, 0x50, 0xd9, 0x73, 0x23, 0x8f, 0x84, 0x3f, 0xd0, 0xbe, 0xe6, - 0x19, 0xf4, 0x03, 0x17, 0xa7, 0xbe, 0x29, 0x64, 0xd5, 0xa9, 0x5b, 0xb0, 0x31, 0x5d, 0x9d, 0x72, - 0x4e, 0x4f, 0x0e, 0x5f, 0xec, 0x3e, 0xb5, 0x6e, 0xa0, 0x0d, 0x58, 0xd5, 0xaa, 0xe7, 0xdd, 0xe3, - 0x2e, 0xde, 0x1d, 0xa8, 0x3a, 0xd5, 0x7c, 0xed, 0xaa, 0x88, 0x36, 0x01, 0x69, 0x59, 0xff, 0xf4, - 0xe8, 0x68, 0x17, 0xef, 0x7f, 0x25, 0xe4, 0xa5, 0x85, 0x35, 0x2d, 0x63, 0xbe, 0xa6, 0x55, 0x5e, - 0x58, 0xd3, 0xaa, 0x1c, 0x18, 0xa6, 0x69, 0xd5, 0x70, 0x55, 0x57, 0x6e, 0xef, 0x7e, 0x53, 0x02, - 0x33, 0x3d, 0x3e, 0x27, 0x65, 0xd0, 0x42, 0xbe, 0x0c, 0x3a, 0x5b, 0x85, 0x2d, 0x2e, 0xa8, 0xc2, - 0x2e, 0xae, 0xb7, 0x96, 0x96, 0xd5, 0x5b, 0x1f, 0xea, 0xca, 0xaa, 0x21, 0x59, 0xf6, 0xde, 0xdc, - 0x41, 0xbe, 0x35, 0x70, 0x87, 0x4c, 0xfd, 0x95, 0x44, 0x95, 0x5d, 0x6d, 0x30, 0x13, 0x46, 0x62, - 0xdf, 0xe5, 0xae, 0xae, 0xe2, 0x66, 0x6d, 0xfb, 0xef, 0x0a, 0xb0, 0xaa, 0xb2, 0xd6, 0xb3, 0x98, - 0x8e, 0x74, 0x65, 0xc4, 0xfe, 0xf5, 0xb5, 0x09, 0x95, 0xab, 0xa1, 0x16, 0xa7, 0x6a, 0xa8, 0x93, - 0x84, 0x54, 0xca, 0x27, 0x24, 0x7b, 0x27, 0x17, 0x2f, 0x3f, 0x05, 0x33, 0xcd, 0x01, 0xfa, 0xc8, - 0x58, 0x9d, 0x5b, 0x0d, 0xce, 0x20, 0xf6, 0xe7, 0x50, 0xcb, 0x96, 0xb6, 0xe0, 0x4f, 0x30, 0xeb, - 0xf9, 0x3f, 0xc1, 0xd4, 0x72, 0x7f, 0x74, 0xb9, 0x3b, 0x80, 0xc6, 0x54, 0x96, 0x43, 0x08, 0x0c, - 0x99, 0x6f, 0x95, 0xb5, 0xfc, 0x8d, 0x1e, 0x42, 0x2d, 0x1d, 0x49, 0x6c, 0x53, 0x69, 0xf1, 0x6c, - 0x26, 0x98, 0xbb, 0xff, 0x50, 0x00, 0x34, 0x89, 0xec, 0xa7, 0x01, 0x1b, 0xbb, 0xdc, 0x3b, 0xff, - 0x56, 0x09, 0x69, 0x03, 0x2a, 0x17, 0xf4, 0x6c, 0xe2, 0xbc, 0xf2, 0x05, 0x3d, 0xdb, 0xf7, 0xa7, - 0xfc, 0x52, 0x7a, 0xa7, 0x5f, 0xb2, 0xc4, 0x6b, 0x5c, 0x23, 0xf1, 0xde, 0x7f, 0x09, 0xcd, 0x69, - 0x39, 0xfa, 0x00, 0xde, 0xeb, 0xef, 0x1f, 0x9d, 0x1e, 0xee, 0x0e, 0xf6, 0x5f, 0x1c, 0x3b, 0x47, - 0x2f, 0x9e, 0x76, 0x9d, 0xd3, 0xe3, 0xfe, 0x49, 0x77, 0x6f, 0xff, 0xd9, 0x7e, 0x57, 0xc4, 0x5d, - 0x1b, 0xd6, 0x67, 0x01, 0x83, 0xee, 0x1f, 0x0f, 0xac, 0x82, 0x0c, 0xd6, 0x19, 0xcd, 0xee, 0xe9, - 0xd3, 0xfd, 0x17, 0x56, 0x71, 0xfb, 0x6f, 0xca, 0xd0, 0xda, 0x15, 0xdc, 0x9d, 0x8c, 0x86, 0x7c, - 0x58, 0x53, 0x5c, 0x9b, 0xfe, 0x53, 0xd0, 0xb2, 0xeb, 0xa6, 0xc2, 0x6e, 0xa5, 0x89, 0xf6, 0xc7, - 0xef, 0x82, 0x69, 0x56, 0x7d, 0x5d, 0x80, 0xdb, 0x69, 0x42, 0xce, 0x80, 0xf9, 0xd4, 0x8c, 0xb6, - 0x97, 0xf5, 0x34, 0x9f, 0xc6, 0xb3, 0xd1, 0x3f, 0xfb, 0x56, 0x36, 0x7a, 0x2a, 0x7f, 0x02, 0xd6, - 0x73, 0xc2, 0xa7, 0x57, 0x7b, 0x77, 0x49, 0x47, 0xcf, 0x09, 0xcf, 0x06, 0xfb, 0xe8, 0x4a, 0x8c, - 0xee, 0xdc, 0x01, 0x24, 0x12, 0xe8, 0x14, 0x82, 0xa1, 0x65, 0xa6, 0x02, 0x9a, 0xf5, 0xff, 0xf1, - 0xd5, 0x20, 0x3d, 0x80, 0xd8, 0x2e, 0x99, 0x60, 0xae, 0xb9, 0x5d, 0x12, 0xfb, 0xee, 0xed, 0x4a, - 0x61, 0x7a, 0x94, 0xd7, 0x70, 0x4b, 0x93, 0x42, 0xf3, 0x39, 0x77, 0x10, 0xa1, 0x07, 0xf3, 0xa7, - 0xdb, 0xdc, 0x69, 0x95, 0x8d, 0xf8, 0xe9, 0xf5, 0xc0, 0x6a, 0xdc, 0xce, 0xb3, 0xaf, 0x3e, 0x1a, - 0x06, 0xfc, 0x3c, 0x39, 0xdb, 0xf2, 0xe8, 0x28, 0xfd, 0xb3, 0xa3, 0xfa, 0x43, 0xa3, 0x47, 0xc3, - 0x54, 0xf0, 0xf7, 0xc5, 0xc6, 0x61, 0xf0, 0x9a, 0xfc, 0xa1, 0xbc, 0x13, 0x52, 0x4e, 0xff, 0xab, - 0xd8, 0xd4, 0xed, 0x27, 0x4f, 0xa4, 0xe0, 0xac, 0x22, 0x4d, 0x3e, 0xfb, 0xbf, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xf2, 0xf4, 0x5a, 0xf1, 0x5f, 0x29, 0x00, 0x00, + // 3551 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x73, 0x1b, 0x47, + 0x76, 0x17, 0x80, 0x01, 0x30, 0x78, 0x20, 0x80, 0x61, 0xf3, 0x43, 0xd0, 0x78, 0x65, 0xcb, 0xb2, + 0xbd, 0xab, 0x92, 0xbc, 0x94, 0x42, 0xaf, 0xd6, 0x4b, 0x79, 0x37, 0x15, 0x82, 0x82, 0x04, 0x32, + 0x24, 0x45, 0x37, 0xc0, 0x4a, 0xd6, 0xa9, 0xd4, 0xd4, 0x70, 0xa6, 0x05, 0x0e, 0x35, 0x98, 0xc6, + 0x4e, 0xf7, 0x48, 0xe2, 0x56, 0xe5, 0x90, 0x9b, 0xab, 0x72, 0xca, 0x2d, 0xa7, 0x54, 0x2e, 0x7b, + 0x48, 0xae, 0x39, 0xb9, 0x2a, 0xa9, 0xfc, 0x09, 0xa9, 0x54, 0xaa, 0x72, 0xca, 0x5f, 0x90, 0x7b, + 0x72, 0xca, 0x21, 0xd5, 0x1f, 0x33, 0x18, 0x7c, 0x51, 0xb4, 0x63, 0xdf, 0xf6, 0x86, 0x7e, 0xef, + 0xf7, 0x5e, 0x77, 0xbf, 0x7e, 0x1f, 0xdd, 0xf3, 0x00, 0xef, 0x87, 0xc1, 0x6b, 0xf2, 0x2a, 0xe0, + 0x8e, 0x3b, 0x24, 0x11, 0x77, 0x58, 0x30, 0x4a, 0x42, 0x97, 0x07, 0x34, 0xda, 0x1a, 0xc7, 0x94, + 0x53, 0x54, 0xd5, 0x7c, 0xfb, 0x43, 0x09, 0x78, 0x38, 0x03, 0x27, 0x8c, 0x65, 0x58, 0xfb, 0x83, + 0x21, 0xa5, 0xc3, 0x90, 0x3c, 0x94, 0xa3, 0xb3, 0xe4, 0xe5, 0x43, 0x1e, 0x8c, 0x08, 0xe3, 0xee, + 0x68, 0xac, 0x01, 0xb7, 0x52, 0x69, 0x2f, 0xa4, 0x89, 0xaf, 0x74, 0x68, 0xd6, 0x7a, 0xca, 0x1a, + 0x51, 0x9f, 0x84, 0x4c, 0x51, 0xef, 0xfe, 0x5b, 0x09, 0xd6, 0xfb, 0xd9, 0x92, 0x70, 0x12, 0xf5, + 0x93, 0xd1, 0xc8, 0x8d, 0x2f, 0xd1, 0x26, 0x54, 0xc6, 0x2e, 0x63, 0xc4, 0x6f, 0x17, 0xee, 0x14, + 0xee, 0x95, 0xb1, 0x1e, 0x09, 0xfa, 0x4b, 0x37, 0x08, 0x89, 0xdf, 0x2e, 0x2a, 0xba, 0x1a, 0xa1, + 0xdb, 0x00, 0x43, 0x1a, 0x44, 0x43, 0xe7, 0x0d, 0x09, 0xc3, 0x76, 0xe9, 0x4e, 0xe1, 0x5e, 0x0d, + 0xd7, 0x24, 0xe5, 0x4f, 0x48, 0x18, 0x0a, 0x36, 0xa7, 0x4e, 0x30, 0x1a, 0xc7, 0xf4, 0x35, 0x69, + 0x1b, 0x8a, 0xcd, 0xe9, 0xbe, 0x22, 0xa0, 0x2f, 0xa0, 0x12, 0x30, 0x96, 0x10, 0xd6, 0x2e, 0xdf, + 0x29, 0xdd, 0xab, 0x6f, 0x7f, 0xb4, 0xa5, 0x57, 0xbb, 0xb5, 0x68, 0x71, 0x5b, 0xfb, 0x02, 0x8b, + 0xb5, 0x08, 0xfa, 0x12, 0x56, 0xbc, 0x73, 0x97, 0x3b, 0xe7, 0x01, 0xe3, 0x34, 0xbe, 0x6c, 0x57, + 0xa4, 0x8a, 0xad, 0xab, 0x55, 0xec, 0x9d, 0xbb, 0xbc, 0xa7, 0x04, 0xba, 0x11, 0x8f, 0x2f, 0x71, + 0xdd, 0x9b, 0x50, 0xec, 0xaf, 0xc0, 0x9a, 0x05, 0x20, 0x0b, 0x4a, 0xaf, 0xc8, 0xa5, 0x34, 0x47, + 0x0d, 0x8b, 0x9f, 0xe8, 0x11, 0x94, 0x5f, 0xbb, 0x61, 0x42, 0xa4, 0x29, 0xea, 0xdb, 0x76, 0x36, + 0xa3, 0xb2, 0xbb, 0xd0, 0xb0, 0x47, 0x23, 0x4e, 0xde, 0x72, 0xac, 0x80, 0x4f, 0x8a, 0xbf, 0x28, + 0xd8, 0x0e, 0x94, 0xe5, 0xfa, 0xd1, 0x1d, 0xa8, 0xfb, 0x84, 0x79, 0x71, 0x30, 0x16, 0x6b, 0xd3, + 0x8a, 0xf3, 0x24, 0xf4, 0x3e, 0x00, 0x4b, 0x86, 0x43, 0xc2, 0x24, 0xa0, 0x28, 0x01, 0x39, 0x0a, + 0x5a, 0x87, 0x72, 0xe8, 0x9e, 0x91, 0xd4, 0xde, 0x6a, 0x70, 0xf7, 0x2f, 0x77, 0xa1, 0x31, 0xb5, + 0x67, 0xd4, 0x84, 0x62, 0xe0, 0xeb, 0x09, 0x8a, 0x81, 0x3c, 0xac, 0x71, 0x4c, 0x2f, 0x88, 0xc7, + 0x9d, 0xc0, 0xd7, 0x7a, 0x6b, 0x9a, 0xb2, 0xef, 0xa3, 0xc7, 0x50, 0x61, 0xdc, 0xe5, 0x09, 0x93, + 0x7a, 0x9b, 0xdb, 0xb7, 0x17, 0x9b, 0x72, 0xab, 0x2f, 0x41, 0x58, 0x83, 0xd1, 0x03, 0x58, 0x55, + 0x4e, 0x9b, 0xdf, 0x95, 0x3a, 0x6a, 0x4b, 0x32, 0x9e, 0xe6, 0xb6, 0xb6, 0x0e, 0x65, 0x12, 0xc7, + 0x34, 0x6e, 0x97, 0xd5, 0xd2, 0xe5, 0x00, 0xed, 0x00, 0x78, 0x31, 0x71, 0x39, 0xf1, 0x1d, 0x97, + 0xb7, 0x2b, 0xda, 0xac, 0xca, 0xeb, 0xb7, 0x52, 0xaf, 0xdf, 0x1a, 0xa4, 0x5e, 0x8f, 0x6b, 0x1a, + 0xbd, 0xcb, 0xd1, 0x16, 0x18, 0x17, 0xf4, 0x8c, 0xb5, 0xab, 0xf2, 0xf4, 0xed, 0x25, 0x4b, 0x3e, + 0xa0, 0x67, 0x58, 0xe2, 0x84, 0x0d, 0xd4, 0x6a, 0x23, 0x77, 0x44, 0xda, 0x35, 0x65, 0x03, 0x49, + 0x39, 0x76, 0x47, 0x04, 0xfd, 0x0a, 0x9a, 0xcc, 0x23, 0x91, 0x1b, 0x07, 0xd4, 0x19, 0xc6, 0x34, + 0x19, 0xb7, 0x41, 0xae, 0x66, 0x73, 0xa2, 0x58, 0xb3, 0x9f, 0x0b, 0x2e, 0x6e, 0xb0, 0xfc, 0x10, + 0x3d, 0x06, 0x93, 0x44, 0xbe, 0xda, 0x46, 0xfd, 0x9d, 0xdb, 0xa8, 0x4a, 0xec, 0x2e, 0x47, 0xef, + 0x41, 0xed, 0x82, 0x9e, 0x39, 0x1e, 0x4d, 0x22, 0xde, 0x5e, 0x91, 0x01, 0x66, 0x5e, 0xd0, 0xb3, + 0x3d, 0x31, 0x46, 0x1f, 0xc2, 0x8a, 0x0a, 0x42, 0xcd, 0x6f, 0x48, 0x7e, 0x5d, 0xd1, 0x32, 0x88, + 0x8a, 0x47, 0x0d, 0x69, 0x2a, 0x88, 0xa2, 0x29, 0xc8, 0x4f, 0xa0, 0x15, 0x25, 0xa3, 0x5c, 0x1e, + 0x62, 0xed, 0x96, 0x44, 0x35, 0xa3, 0x64, 0x34, 0x31, 0x16, 0x43, 0xdb, 0x50, 0x4e, 0x98, 0x3b, + 0x24, 0x6d, 0x4b, 0xae, 0xff, 0x47, 0x4b, 0x2c, 0x7a, 0x2a, 0x30, 0x58, 0x41, 0x85, 0x4b, 0x7b, + 0x34, 0xf2, 0x92, 0x38, 0x26, 0x91, 0x77, 0xd9, 0x5e, 0x55, 0xd3, 0xe7, 0x48, 0xe8, 0x01, 0x18, + 0x22, 0x01, 0xb5, 0x91, 0xf4, 0xac, 0x9b, 0x0b, 0x94, 0x1e, 0x51, 0x9f, 0x60, 0x09, 0x42, 0x5f, + 0x40, 0x75, 0x44, 0x78, 0x1c, 0x78, 0xac, 0xbd, 0x26, 0x17, 0xf1, 0xe1, 0x92, 0x45, 0xe0, 0x24, + 0x3a, 0x52, 0x40, 0x9c, 0x4a, 0x08, 0x5b, 0x30, 0x15, 0xec, 0xce, 0x6f, 0x19, 0xf7, 0xdb, 0xeb, + 0x77, 0x0a, 0xf7, 0x56, 0x70, 0x5d, 0xd3, 0xbe, 0x62, 0xdc, 0xb7, 0xff, 0xa3, 0x0c, 0xa5, 0x03, + 0x7a, 0x36, 0x17, 0x1f, 0x3b, 0x59, 0x00, 0x14, 0xe5, 0x32, 0x3f, 0x5c, 0xee, 0x4d, 0xb3, 0x41, + 0x70, 0x17, 0x56, 0x82, 0x88, 0xf1, 0x38, 0xf1, 0x94, 0x6d, 0x55, 0x64, 0x4e, 0xd1, 0x26, 0xbe, + 0x6f, 0xe4, 0x7d, 0xff, 0xa7, 0x80, 0x94, 0x43, 0x92, 0xb7, 0x63, 0xe2, 0x71, 0x7d, 0x36, 0x2a, + 0x3c, 0x54, 0x60, 0x75, 0x73, 0x8c, 0x49, 0xec, 0x57, 0x72, 0xb1, 0x8f, 0x10, 0x18, 0xdc, 0x1d, + 0xaa, 0x28, 0xa8, 0x61, 0xf9, 0x5b, 0x38, 0x55, 0x4c, 0xe9, 0x48, 0x39, 0xba, 0x29, 0xd1, 0xa6, + 0x20, 0x48, 0x3f, 0xdf, 0x01, 0x60, 0xdc, 0x8d, 0x75, 0xc4, 0xc1, 0xbb, 0x23, 0x4e, 0xa3, 0x77, + 0xf9, 0x77, 0xf5, 0xf1, 0x9b, 0x50, 0x95, 0xcb, 0x09, 0x7c, 0xe9, 0xe1, 0x35, 0x5c, 0x11, 0xc3, + 0x7d, 0x1f, 0xfd, 0x3c, 0x75, 0xb8, 0x86, 0x54, 0x76, 0xe7, 0x0a, 0xa3, 0x4f, 0x39, 0x5d, 0xce, + 0x4b, 0x9a, 0x57, 0x7a, 0xc9, 0x01, 0x3d, 0x9b, 0xf5, 0x12, 0xfb, 0xcf, 0xa1, 0x2c, 0x95, 0xa1, + 0x7b, 0x60, 0x89, 0x4c, 0xed, 0xf0, 0x24, 0x8e, 0x98, 0x0e, 0x1f, 0x55, 0xfa, 0x9a, 0x82, 0x3e, + 0x10, 0x64, 0x15, 0x41, 0xf7, 0x61, 0xd5, 0x4d, 0xfc, 0x80, 0x4e, 0x41, 0x55, 0x35, 0x6c, 0x49, + 0xc6, 0x04, 0x7b, 0x97, 0x42, 0x45, 0x39, 0x08, 0x42, 0xd0, 0xec, 0x0f, 0x76, 0x07, 0xa7, 0x7d, + 0xe7, 0xa4, 0x7b, 0xfc, 0x74, 0xff, 0xf8, 0xb9, 0x75, 0x23, 0x47, 0xc3, 0xa7, 0xc7, 0xc7, 0x82, + 0x56, 0x40, 0xeb, 0x60, 0x69, 0xda, 0xde, 0x8b, 0xa3, 0x93, 0xc3, 0xee, 0xa0, 0xfb, 0xd4, 0x2a, + 0xa2, 0x55, 0x68, 0x68, 0xea, 0xb3, 0xdd, 0xfd, 0xc3, 0xee, 0x53, 0xab, 0x94, 0x07, 0xee, 0x1e, + 0xef, 0x75, 0x0f, 0x05, 0xd5, 0x38, 0x30, 0xcc, 0x9a, 0x05, 0xf6, 0x37, 0x1f, 0x03, 0x4c, 0x76, + 0x8b, 0xee, 0x43, 0xd3, 0xf5, 0xbc, 0x24, 0x76, 0xbd, 0x4b, 0x87, 0x79, 0x34, 0x26, 0x72, 0x67, + 0xc5, 0xde, 0x0d, 0xdc, 0x48, 0xe9, 0x7d, 0x41, 0xfe, 0xba, 0x50, 0x40, 0x5b, 0x60, 0x09, 0x07, + 0x8c, 0x03, 0x12, 0x79, 0x44, 0xa3, 0x8b, 0x12, 0x5d, 0xc0, 0xad, 0x09, 0x27, 0xc3, 0x7f, 0x0a, + 0x2d, 0xee, 0xb2, 0x57, 0x8e, 0x47, 0x47, 0xe3, 0x90, 0xc8, 0x9c, 0x5f, 0x92, 0xf0, 0x22, 0x6e, + 0x0a, 0xc6, 0x5e, 0x46, 0x17, 0xe8, 0xcf, 0xa1, 0xc4, 0x38, 0x97, 0x8e, 0x5f, 0xdf, 0xfe, 0xe4, + 0x9d, 0xe7, 0xb4, 0xd5, 0x1f, 0x0c, 0xb0, 0x90, 0x10, 0x82, 0x61, 0x38, 0x92, 0xe1, 0x70, 0x2d, + 0xc1, 0xc3, 0xc3, 0x23, 0x2c, 0x24, 0x84, 0x20, 0xe7, 0x4c, 0xd7, 0x92, 0x6b, 0x08, 0x0e, 0x06, + 0x7d, 0x2c, 0x24, 0x10, 0x86, 0x15, 0x8f, 0x46, 0xaf, 0x49, 0xcc, 0x24, 0xac, 0x5d, 0x95, 0x1a, + 0xb6, 0xde, 0xad, 0x61, 0x2f, 0x27, 0x85, 0xa7, 0x74, 0xa0, 0x7d, 0xa8, 0xe9, 0xc4, 0x4b, 0x63, + 0x19, 0x8a, 0xf5, 0xed, 0x07, 0xd7, 0x30, 0x42, 0x2a, 0x82, 0x27, 0xd2, 0xe8, 0x97, 0x50, 0x96, + 0xfe, 0xd7, 0xae, 0xc9, 0x82, 0xf7, 0xe3, 0x6b, 0xec, 0x2c, 0x89, 0x23, 0xac, 0x84, 0xd0, 0x07, + 0x50, 0xbf, 0x48, 0xfc, 0x21, 0x51, 0xb7, 0x41, 0x19, 0xf7, 0x35, 0x0c, 0x92, 0x24, 0xf2, 0x6f, + 0x38, 0x71, 0xf2, 0x3c, 0xac, 0x2e, 0x61, 0xca, 0xc9, 0x0f, 0x26, 0xd8, 0x4f, 0x01, 0x9d, 0xbb, + 0xcc, 0x89, 0xc9, 0x88, 0x72, 0x92, 0x5e, 0x59, 0x65, 0x70, 0x9b, 0xd8, 0x3a, 0x77, 0x19, 0x96, + 0x8c, 0xbe, 0xa2, 0xa3, 0xfb, 0x50, 0xe4, 0x8f, 0x74, 0x8c, 0x5f, 0x95, 0x30, 0x8a, 0xfc, 0x11, + 0xfa, 0x44, 0xd5, 0x93, 0x80, 0x91, 0x88, 0x30, 0x15, 0xde, 0xc5, 0x5e, 0x09, 0xe7, 0x89, 0xc2, + 0xab, 0x76, 0x60, 0x33, 0x89, 0x22, 0xe2, 0x11, 0xc6, 0x44, 0xba, 0xe7, 0x94, 0x86, 0x8e, 0xe7, + 0x86, 0xa1, 0x2a, 0x6d, 0x66, 0xcf, 0xc0, 0xeb, 0x39, 0xfe, 0x80, 0xd2, 0x70, 0x4f, 0x70, 0xb5, + 0xbb, 0x07, 0xd1, 0x4b, 0x1a, 0x8f, 0xa4, 0xc5, 0x9c, 0x90, 0x32, 0x26, 0x0b, 0x9e, 0xd9, 0x2b, + 0xe3, 0x56, 0x8e, 0x73, 0x48, 0xd5, 0x54, 0x3f, 0x87, 0xf5, 0x98, 0xf8, 0x49, 0xe4, 0xbb, 0xe2, + 0x76, 0xce, 0x5d, 0x4e, 0x46, 0x24, 0xe2, 0x4c, 0x96, 0x3a, 0xb3, 0x57, 0xc1, 0x6b, 0x19, 0xb7, + 0x9f, 0x31, 0x95, 0xe3, 0x6f, 0x8c, 0x29, 0x8d, 0x9d, 0xdf, 0x24, 0xea, 0xee, 0xe6, 0xfc, 0x26, + 0x71, 0xc3, 0x80, 0x5f, 0xca, 0x42, 0x68, 0xf6, 0xaa, 0x78, 0x4d, 0xb0, 0xbf, 0xd4, 0xdc, 0x2f, + 0x15, 0x53, 0x08, 0xfe, 0x21, 0xb4, 0xf3, 0x2e, 0xe4, 0x8c, 0x63, 0x3a, 0x8c, 0xb5, 0x89, 0xd7, + 0xa4, 0x3d, 0x4c, 0x7c, 0x33, 0x8f, 0x38, 0x99, 0x00, 0xbe, 0x2e, 0x14, 0xec, 0xff, 0x35, 0xa0, + 0xd4, 0x1f, 0x0c, 0xd0, 0x06, 0x94, 0xde, 0x90, 0x38, 0x0b, 0x7c, 0x31, 0x10, 0xea, 0x6f, 0x41, + 0xf9, 0x0d, 0x8d, 0x7d, 0x55, 0xe9, 0x1a, 0xbd, 0x02, 0x56, 0x43, 0xc1, 0xfa, 0x18, 0xea, 0xe2, + 0xb7, 0x23, 0xcb, 0x93, 0xaa, 0x64, 0x8d, 0x5e, 0x11, 0x83, 0x20, 0x76, 0x25, 0x4d, 0xa0, 0x36, + 0xa0, 0xe4, 0x11, 0x55, 0xca, 0xc4, 0xd1, 0x88, 0x81, 0xd6, 0xeb, 0x9d, 0xbb, 0x31, 0x93, 0x37, + 0xab, 0x46, 0xcf, 0xc0, 0x6a, 0xa8, 0xf5, 0x8a, 0xdf, 0xa9, 0x5e, 0x90, 0x80, 0x32, 0x06, 0x41, + 0x9c, 0xe8, 0xfd, 0x15, 0xb4, 0x79, 0xec, 0x46, 0xd9, 0x8d, 0xd1, 0x09, 0x5d, 0x2e, 0x6e, 0x10, + 0xce, 0x88, 0xc9, 0xc8, 0x69, 0xf4, 0x2a, 0x78, 0x73, 0x0a, 0x71, 0xa8, 0x00, 0x47, 0x52, 0x7c, + 0x1b, 0x10, 0x89, 0x78, 0xc0, 0x2f, 0x9d, 0x98, 0x78, 0x74, 0x18, 0x05, 0x32, 0x86, 0xeb, 0x72, + 0x95, 0x55, 0xbc, 0xaa, 0x78, 0x78, 0xc2, 0x4a, 0x53, 0x9f, 0xa0, 0x07, 0x84, 0x39, 0x09, 0xe7, + 0x24, 0x26, 0xaa, 0x44, 0x35, 0x7a, 0x26, 0x6e, 0xa5, 0x9c, 0x53, 0xc5, 0x10, 0xf8, 0x9f, 0xc1, + 0x5a, 0x86, 0xd7, 0xb3, 0xfc, 0x96, 0xf8, 0xd2, 0xb5, 0x1b, 0xbd, 0x1a, 0x46, 0x29, 0x13, 0x67, + 0xbc, 0xaf, 0x0b, 0x85, 0x4e, 0x05, 0x0c, 0xe7, 0x0d, 0x89, 0x3b, 0x26, 0x54, 0x1c, 0x69, 0xeb, + 0x4e, 0x13, 0x56, 0x9c, 0x9c, 0xa5, 0x25, 0xc2, 0xd3, 0x08, 0x69, 0x35, 0x89, 0xc8, 0xd9, 0xac, + 0xf3, 0x1e, 0xdc, 0x72, 0x96, 0x59, 0xa7, 0xb3, 0x01, 0x6b, 0xce, 0xfc, 0xde, 0x3b, 0x6b, 0xb0, + 0xea, 0xcc, 0x6e, 0xaf, 0xb3, 0x09, 0xeb, 0xce, 0x82, 0x3d, 0x1c, 0x18, 0x66, 0xd9, 0xaa, 0x1c, + 0x18, 0x66, 0xc5, 0xaa, 0x1e, 0x18, 0x66, 0xd5, 0x32, 0x71, 0xf3, 0x15, 0xb9, 0xe4, 0x24, 0x1e, + 0x09, 0x94, 0x1b, 0x86, 0xd8, 0xd2, 0xe3, 0x4c, 0x17, 0x5e, 0xcb, 0x28, 0x13, 0x45, 0xf6, 0x37, + 0x05, 0x28, 0x1d, 0x1e, 0x1e, 0xa1, 0x1f, 0x41, 0x95, 0xf3, 0x97, 0x5c, 0x9c, 0x5e, 0x41, 0xda, + 0xe7, 0x06, 0xae, 0x08, 0x82, 0x3a, 0x2d, 0xc5, 0x65, 0x82, 0x9b, 0xfa, 0xa1, 0xe0, 0x32, 0xc5, + 0x7d, 0x08, 0xab, 0x9c, 0xbe, 0x22, 0x11, 0x73, 0xc6, 0x24, 0x76, 0x18, 0xf1, 0x68, 0xe4, 0x67, + 0x45, 0xa6, 0xa5, 0x58, 0x27, 0x24, 0xee, 0x4b, 0x86, 0x30, 0x31, 0x80, 0xe9, 0xe8, 0xd9, 0xd2, + 0xdf, 0x42, 0x77, 0x67, 0x1d, 0x90, 0x33, 0xa7, 0xe9, 0xc0, 0x30, 0x0d, 0xab, 0x8c, 0x57, 0x73, + 0x39, 0x45, 0x95, 0x3d, 0xfb, 0x7f, 0xca, 0x50, 0x1a, 0x0c, 0xfa, 0x7a, 0x75, 0xee, 0xec, 0xda, + 0xdd, 0xfc, 0xda, 0xcf, 0x66, 0xd7, 0x7e, 0x76, 0x94, 0x86, 0x87, 0x08, 0xbb, 0x74, 0xb5, 0x73, + 0x61, 0x57, 0x95, 0x22, 0xa5, 0xe5, 0x61, 0x67, 0xea, 0xf8, 0x59, 0x1c, 0x76, 0x35, 0xa9, 0xb7, + 0x3c, 0x1f, 0x76, 0xa0, 0x43, 0x64, 0x69, 0xd8, 0xd5, 0x25, 0xa0, 0x3a, 0x1b, 0x76, 0x8f, 0x60, + 0x35, 0x72, 0x79, 0x12, 0xbb, 0xe1, 0xc4, 0x10, 0xb2, 0xea, 0x8a, 0x3c, 0x63, 0xe5, 0x58, 0xd9, + 0x05, 0xe0, 0x11, 0xac, 0x92, 0x28, 0x89, 0xbc, 0x40, 0xe5, 0x27, 0x25, 0x51, 0x91, 0x12, 0x35, + 0x6c, 0xe5, 0x58, 0x99, 0xc4, 0xe2, 0xd8, 0x54, 0xc9, 0x1d, 0xbe, 0x45, 0x6c, 0xb6, 0xe4, 0x16, + 0xea, 0xdf, 0x26, 0x36, 0x2d, 0x29, 0xb2, 0xb2, 0x2c, 0x36, 0xb5, 0xb3, 0xb8, 0x39, 0xc7, 0x11, + 0x07, 0xfb, 0xbd, 0xc4, 0xac, 0x70, 0xbe, 0x39, 0xd3, 0x4a, 0xea, 0x9c, 0xf9, 0xbe, 0xa7, 0x10, + 0x36, 0xac, 0xf2, 0x81, 0x61, 0xae, 0x58, 0x8d, 0x03, 0xc3, 0x6c, 0x58, 0x4d, 0xdc, 0x62, 0x63, + 0x42, 0xbc, 0x73, 0x27, 0x76, 0x39, 0x71, 0xde, 0x8c, 0x47, 0xb8, 0x7e, 0x4e, 0xdc, 0xd8, 0x57, + 0x3b, 0xc2, 0x35, 0xcd, 0x1d, 0x31, 0xfb, 0x9f, 0x6b, 0xb0, 0x92, 0xbf, 0xc5, 0xc8, 0x08, 0x4c, + 0xe2, 0xc8, 0xe1, 0xee, 0xab, 0x20, 0x1a, 0xce, 0xdc, 0x21, 0x5b, 0x82, 0x35, 0x90, 0x9c, 0xec, + 0x88, 0x9f, 0xc0, 0xcd, 0x98, 0xb0, 0x31, 0x8d, 0x18, 0xc9, 0x52, 0xd3, 0xf8, 0xf1, 0xa3, 0x34, + 0x48, 0xca, 0xbd, 0x02, 0x5e, 0x4f, 0x01, 0x3a, 0x6f, 0x9f, 0x3c, 0x7e, 0xa4, 0x42, 0x66, 0xa1, + 0xec, 0xce, 0x63, 0x21, 0x5b, 0x92, 0xb2, 0xc5, 0x79, 0xd9, 0x9d, 0xc7, 0x57, 0xc9, 0xee, 0x08, + 0x59, 0x43, 0xca, 0x96, 0x16, 0xc8, 0xee, 0x28, 0xd9, 0xcf, 0x60, 0x6d, 0x4e, 0x76, 0xa4, 0x6e, + 0x03, 0xe5, 0x9e, 0x81, 0x57, 0x67, 0xe4, 0x94, 0xd0, 0x2f, 0x60, 0x53, 0xbd, 0xda, 0x2e, 0x03, + 0x12, 0xfa, 0x79, 0xb9, 0xb2, 0xae, 0x6b, 0x6b, 0x92, 0xff, 0x6b, 0xc1, 0x9e, 0x92, 0xfc, 0x02, + 0x6e, 0x12, 0xca, 0x9d, 0x51, 0xc0, 0xc6, 0x31, 0xf1, 0x03, 0xf9, 0x36, 0xd4, 0x8f, 0x89, 0x8a, + 0x0e, 0xde, 0x0d, 0x42, 0xf9, 0x51, 0x9e, 0x2f, 0x1f, 0x15, 0x42, 0xf8, 0x1e, 0x34, 0xe8, 0x6b, + 0x12, 0x87, 0xee, 0x58, 0x9c, 0x66, 0x40, 0x65, 0x1e, 0x11, 0x95, 0x6d, 0x45, 0x93, 0xb1, 0xa0, + 0xea, 0xe4, 0x99, 0x22, 0xb3, 0x03, 0xd6, 0x49, 0xc5, 0xc4, 0x2d, 0xcd, 0xea, 0x4b, 0x8e, 0x5a, + 0xd7, 0x03, 0x68, 0x71, 0xca, 0xdd, 0x30, 0x07, 0xaf, 0xe9, 0x8a, 0xd6, 0x90, 0x8c, 0x3c, 0xf8, + 0x73, 0xd8, 0x70, 0xdf, 0xbc, 0x7a, 0x23, 0xbc, 0x88, 0x05, 0xa1, 0x7c, 0x32, 0xa8, 0x2d, 0xa8, + 0xf4, 0x02, 0x78, 0x4d, 0xb3, 0xfb, 0x8a, 0x9b, 0x6d, 0x60, 0x0b, 0xac, 0x24, 0x72, 0x23, 0xf6, + 0x46, 0xf8, 0xb0, 0x7a, 0x49, 0xe9, 0x5a, 0x5b, 0xc7, 0xad, 0x09, 0x47, 0x3e, 0xa5, 0xf4, 0x75, + 0xe0, 0xa5, 0x1b, 0x32, 0xe2, 0x04, 0x11, 0x27, 0x71, 0x9c, 0x8c, 0x73, 0xe6, 0x6a, 0xe8, 0xa0, + 0xde, 0x94, 0x88, 0xfd, 0x1c, 0x20, 0x9b, 0xae, 0x0b, 0xb7, 0xd5, 0x31, 0xc5, 0x64, 0x4c, 0xe5, + 0x6b, 0x97, 0x6c, 0x4f, 0x9d, 0xb2, 0xca, 0x25, 0x0d, 0x7c, 0x4b, 0xc2, 0xb0, 0x46, 0x75, 0xb7, + 0xa7, 0x4e, 0x5b, 0x15, 0x90, 0xd9, 0x40, 0xe8, 0xd8, 0xd0, 0x76, 0x96, 0x78, 0xfb, 0x12, 0x9e, + 0xf4, 0xe6, 0x65, 0x3c, 0xe1, 0xad, 0x32, 0xaa, 0x17, 0x78, 0x63, 0xe7, 0x16, 0xdc, 0x74, 0x16, + 0x3b, 0x9c, 0x54, 0xb7, 0xc4, 0xa3, 0x3a, 0x16, 0x34, 0x9d, 0x29, 0x87, 0x91, 0x5b, 0x99, 0x73, + 0x8c, 0x0e, 0x02, 0xcb, 0x99, 0x39, 0xfd, 0x4e, 0x1b, 0x36, 0x9d, 0x85, 0x87, 0x2c, 0xf3, 0xd1, + 0xec, 0x29, 0xca, 0xbb, 0xc9, 0xb2, 0xa3, 0xea, 0xdc, 0x81, 0xf7, 0x9d, 0x2b, 0x0f, 0xe2, 0xc0, + 0x30, 0xc1, 0xaa, 0x1f, 0x18, 0x66, 0xd3, 0x6a, 0x61, 0x2b, 0x9d, 0x4e, 0x2d, 0x69, 0xc4, 0xf0, + 0xc7, 0x0b, 0x34, 0x27, 0x91, 0xc8, 0x7a, 0xaf, 0xe5, 0x12, 0xe4, 0x2c, 0xf6, 0xdf, 0x14, 0xa0, + 0x96, 0x3d, 0x9a, 0x64, 0x81, 0x72, 0xe3, 0xf0, 0xd2, 0x11, 0x97, 0x93, 0x20, 0x72, 0xb3, 0xaf, + 0xad, 0x66, 0xef, 0x06, 0xb6, 0x24, 0x6b, 0x30, 0xe1, 0x68, 0xe7, 0x14, 0x2b, 0x9a, 0x12, 0x28, + 0x4a, 0x81, 0x02, 0x6e, 0x09, 0xce, 0x34, 0x5e, 0x25, 0xf1, 0xd9, 0x29, 0xa4, 0x75, 0x66, 0xd5, + 0xd8, 0xff, 0x5e, 0x02, 0x43, 0x38, 0x35, 0x5a, 0x87, 0x72, 0x10, 0xf9, 0xe4, 0xad, 0xba, 0x52, + 0x60, 0x35, 0x40, 0x0f, 0xc0, 0x88, 0x69, 0x48, 0xf4, 0x77, 0xa7, 0x9b, 0x0b, 0xbe, 0x28, 0x63, + 0x1a, 0x12, 0x2c, 0x41, 0xe8, 0x7d, 0x30, 0xe5, 0xd7, 0x98, 0x34, 0x33, 0x8a, 0x8b, 0x49, 0x55, + 0x52, 0x54, 0x70, 0xda, 0x50, 0x21, 0x91, 0x9f, 0xe6, 0x3e, 0x79, 0xb9, 0x27, 0x91, 0x9f, 0x06, + 0xae, 0x7c, 0x88, 0x97, 0xbf, 0xeb, 0x43, 0xbc, 0xf2, 0x5d, 0x1f, 0xe2, 0xd5, 0xff, 0xf7, 0x43, + 0xdc, 0xfc, 0x1e, 0x1e, 0xe2, 0x33, 0x0f, 0xcb, 0x9a, 0xbe, 0x9e, 0xcd, 0x3c, 0x2c, 0x3b, 0x75, + 0xa8, 0x39, 0xa9, 0x89, 0x3b, 0x35, 0xa8, 0x3a, 0xca, 0x9e, 0xaa, 0xb6, 0x4f, 0xa0, 0x9d, 0x55, + 0x68, 0x39, 0xd3, 0x5f, 0x58, 0x54, 0xad, 0x9e, 0xf9, 0x90, 0xa2, 0xc2, 0x6b, 0xfa, 0x6b, 0xc9, + 0x9c, 0x2e, 0x11, 0xe1, 0x8b, 0x5f, 0xb3, 0x52, 0xe7, 0xec, 0x6b, 0xb5, 0x73, 0x13, 0x36, 0x9c, + 0x45, 0x4f, 0x52, 0x19, 0xb7, 0x0b, 0xdf, 0x9c, 0x32, 0x44, 0x97, 0x3d, 0x2a, 0xed, 0x7f, 0x35, + 0x00, 0x26, 0xdf, 0x53, 0x7f, 0xd0, 0x6f, 0x47, 0x7f, 0x00, 0x28, 0xfb, 0xc8, 0x3e, 0x76, 0x19, + 0x93, 0x37, 0x93, 0xec, 0xae, 0x6c, 0xa5, 0xbc, 0x13, 0x97, 0x31, 0xec, 0x72, 0xf2, 0xfb, 0x0f, + 0x48, 0xe8, 0x36, 0xc0, 0x05, 0x3d, 0x63, 0x2a, 0x21, 0xaa, 0xba, 0x8c, 0x6b, 0x82, 0x32, 0x10, + 0x04, 0xf4, 0x11, 0x34, 0x24, 0x7b, 0x44, 0x5c, 0x96, 0x88, 0x2b, 0xb2, 0x7c, 0x06, 0xe0, 0x15, + 0x41, 0x3c, 0xd2, 0x34, 0xf4, 0x08, 0xd6, 0x25, 0x28, 0xfb, 0x96, 0xe4, 0xbc, 0x74, 0x93, 0x50, + 0x97, 0x6c, 0x8c, 0x04, 0x2f, 0x4b, 0x9e, 0xcf, 0x04, 0xe7, 0xda, 0xee, 0x2d, 0xae, 0xad, 0xf3, + 0x07, 0x6a, 0xff, 0x77, 0x09, 0x2a, 0x7b, 0xb2, 0x51, 0x63, 0xff, 0x67, 0x11, 0xaa, 0x98, 0x48, + 0x87, 0x9c, 0xe9, 0x42, 0x15, 0x66, 0xbb, 0x50, 0xd3, 0x0d, 0x9a, 0xe2, 0x6c, 0x83, 0x66, 0x41, + 0x1f, 0xc3, 0x58, 0xd8, 0xc7, 0xd8, 0x84, 0x4a, 0x4c, 0x86, 0xe2, 0x00, 0x2a, 0xfa, 0x73, 0xb3, + 0x1c, 0xa1, 0xce, 0x5c, 0x87, 0xa7, 0x7a, 0x55, 0x87, 0x47, 0x38, 0xfc, 0x54, 0x8f, 0x47, 0x78, + 0xe3, 0x27, 0xd3, 0xfd, 0x0e, 0x53, 0x5f, 0x6d, 0xf3, 0x44, 0x75, 0xa5, 0x52, 0x4d, 0x8f, 0xda, + 0x35, 0x9a, 0x1e, 0xd2, 0xd8, 0xd3, 0x0b, 0xcb, 0x52, 0x84, 0x56, 0x79, 0x60, 0x98, 0x25, 0xcb, + 0xc0, 0xf3, 0xdd, 0x36, 0xfb, 0xaf, 0x0a, 0x60, 0x62, 0x7d, 0x6b, 0x40, 0xf7, 0x61, 0x75, 0x62, + 0x1d, 0x27, 0x4e, 0xa2, 0x89, 0x99, 0x5b, 0x2c, 0xef, 0x7b, 0xfb, 0x3e, 0xea, 0xc3, 0xe6, 0x38, + 0x26, 0x2c, 0x18, 0x46, 0xc4, 0x77, 0xc6, 0x94, 0x89, 0xfa, 0x2c, 0x4f, 0x49, 0xf7, 0x36, 0x27, + 0x2d, 0xc0, 0x93, 0x14, 0x76, 0x42, 0x19, 0xd7, 0x47, 0x89, 0xd7, 0xc7, 0x0b, 0xa8, 0xf6, 0xdf, + 0x15, 0x60, 0x6d, 0x8f, 0x46, 0x2f, 0x83, 0x78, 0xd4, 0xa7, 0x49, 0xec, 0x91, 0xd3, 0x71, 0x48, + 0x5d, 0xdf, 0xfe, 0x8b, 0x6b, 0xfb, 0xc0, 0xc2, 0x2d, 0x14, 0x17, 0x6f, 0xe1, 0x27, 0xd0, 0xf2, + 0xa8, 0x4f, 0xc4, 0x5b, 0x28, 0xbe, 0x1c, 0xd3, 0x20, 0xe2, 0xba, 0xf9, 0xd2, 0x14, 0xe4, 0x6e, + 0x46, 0xb5, 0x61, 0x62, 0x23, 0xfb, 0xaf, 0x0b, 0x50, 0x7a, 0x4e, 0xb8, 0x3d, 0xf8, 0x21, 0x96, + 0x64, 0xff, 0x2c, 0x77, 0x1a, 0xf7, 0xa0, 0x14, 0x27, 0xea, 0xde, 0x31, 0xe5, 0x63, 0x79, 0x11, + 0x2c, 0x20, 0xf6, 0xbf, 0x14, 0xc1, 0x38, 0x0c, 0x18, 0xb7, 0xff, 0xa9, 0x70, 0xed, 0x55, 0x3d, + 0x99, 0xe9, 0x58, 0x5d, 0xdd, 0xb2, 0xed, 0xdd, 0x48, 0xfb, 0x55, 0xc2, 0x3b, 0x7f, 0x09, 0x30, + 0x76, 0x87, 0x44, 0x7d, 0x19, 0x91, 0x36, 0xab, 0x6f, 0xb7, 0x33, 0xf9, 0x81, 0xa0, 0x9e, 0xb8, + 0x43, 0x7d, 0x81, 0xe9, 0x15, 0x70, 0x4d, 0xa0, 0x25, 0x59, 0x94, 0x48, 0x51, 0x15, 0x95, 0xae, + 0x4e, 0x03, 0xea, 0xce, 0x44, 0x93, 0xfd, 0x76, 0xca, 0x17, 0x8d, 0x38, 0x89, 0x58, 0xbb, 0x20, + 0x3f, 0x56, 0x2f, 0xdb, 0xbe, 0xc4, 0xa0, 0x3f, 0x82, 0x56, 0x44, 0xde, 0xf2, 0x9c, 0x2a, 0xed, + 0x84, 0x4b, 0x17, 0x85, 0x1b, 0x42, 0xe0, 0x24, 0x5d, 0x96, 0x7d, 0x01, 0x95, 0x3d, 0x37, 0xf2, + 0x48, 0xf8, 0x03, 0x9d, 0x6b, 0xde, 0x83, 0x7e, 0xe0, 0x06, 0xd2, 0xef, 0x0a, 0x59, 0x07, 0xe9, + 0x16, 0x6c, 0x4c, 0x77, 0x90, 0x9c, 0xd3, 0x93, 0xc3, 0x17, 0xbb, 0x4f, 0xad, 0x1b, 0x68, 0x03, + 0x56, 0x35, 0xeb, 0x79, 0xf7, 0xb8, 0x8b, 0x77, 0x07, 0xaa, 0x97, 0x34, 0xdf, 0x5f, 0x2a, 0xa2, + 0x4d, 0x40, 0x9a, 0xd6, 0x3f, 0x3d, 0x3a, 0xda, 0xc5, 0xfb, 0x5f, 0x09, 0x7a, 0x69, 0x61, 0xdf, + 0xc9, 0x98, 0xef, 0x3b, 0x95, 0x17, 0xf6, 0x9d, 0x2a, 0x07, 0x86, 0x69, 0x5a, 0x35, 0x5c, 0xd5, + 0xdd, 0xd5, 0xbb, 0xbf, 0x2b, 0x81, 0x99, 0xa6, 0xcf, 0x49, 0xab, 0xb2, 0x90, 0x6f, 0x55, 0xce, + 0x76, 0x4a, 0x8b, 0x0b, 0x3a, 0xa5, 0x8b, 0x7b, 0xa2, 0xa5, 0x65, 0x3d, 0xd1, 0x87, 0xba, 0xfb, + 0x69, 0x48, 0x2f, 0x7b, 0x6f, 0x2e, 0x91, 0x6f, 0x0d, 0xdc, 0x21, 0x53, 0x7f, 0xf7, 0x50, 0xad, + 0x51, 0x1b, 0xcc, 0x84, 0x91, 0xd8, 0x77, 0xb9, 0xab, 0x3b, 0xad, 0xd9, 0xd8, 0xfe, 0xfb, 0x02, + 0xac, 0xaa, 0xaa, 0xf5, 0x2c, 0xa6, 0x23, 0xdd, 0xbd, 0xb0, 0x7f, 0x7d, 0x6d, 0x87, 0xca, 0xf5, + 0x39, 0x8b, 0x53, 0x7d, 0xce, 0x49, 0x41, 0x2a, 0xe5, 0x0b, 0x92, 0xbd, 0x93, 0x8b, 0x97, 0x9f, + 0x82, 0x99, 0xd6, 0x00, 0x9d, 0x32, 0x56, 0xe7, 0x76, 0x83, 0x33, 0x88, 0xfd, 0x39, 0xd4, 0xb2, + 0xad, 0x2d, 0xf8, 0xa3, 0xca, 0x7a, 0xfe, 0x8f, 0x2a, 0xb5, 0xdc, 0x9f, 0x51, 0xee, 0x0e, 0xa0, + 0x31, 0x55, 0xe5, 0x10, 0x02, 0x43, 0xd6, 0x5b, 0x25, 0x2d, 0x7f, 0xa3, 0x87, 0x50, 0x4b, 0x67, + 0x12, 0xc7, 0x54, 0x5a, 0xbc, 0x9a, 0x09, 0xe6, 0xee, 0x3f, 0x16, 0x00, 0x4d, 0x22, 0xfb, 0x69, + 0xc0, 0xc6, 0x2e, 0xf7, 0xce, 0xbf, 0x55, 0x41, 0xda, 0x80, 0xca, 0x05, 0x3d, 0x9b, 0x18, 0xaf, + 0x7c, 0x41, 0xcf, 0xf6, 0xfd, 0x29, 0xbb, 0x94, 0xde, 0x69, 0x97, 0xac, 0xf0, 0x1a, 0xd7, 0x28, + 0xbc, 0xf7, 0x5f, 0x42, 0x73, 0x9a, 0x8e, 0x3e, 0x80, 0xf7, 0xfa, 0xfb, 0x47, 0xa7, 0x87, 0xbb, + 0x83, 0xfd, 0x17, 0xc7, 0xce, 0xd1, 0x8b, 0xa7, 0x5d, 0xe7, 0xf4, 0xb8, 0x7f, 0xd2, 0xdd, 0xdb, + 0x7f, 0xb6, 0xdf, 0x15, 0x71, 0xd7, 0x86, 0xf5, 0x59, 0xc0, 0xa0, 0xfb, 0xa7, 0x03, 0xab, 0x20, + 0x83, 0x75, 0x86, 0xb3, 0x7b, 0xfa, 0x74, 0xff, 0x85, 0x55, 0xdc, 0xfe, 0xdb, 0x32, 0xb4, 0x76, + 0x85, 0xef, 0x4e, 0x66, 0x43, 0x3e, 0xac, 0x29, 0x5f, 0x9b, 0xfe, 0xe3, 0xce, 0xb2, 0xeb, 0xa6, + 0xc2, 0x6e, 0xa5, 0x85, 0xf6, 0xc7, 0xef, 0x82, 0x69, 0xaf, 0xfa, 0xba, 0x00, 0xb7, 0xd3, 0x82, + 0x9c, 0x01, 0xf3, 0xa5, 0x19, 0x6d, 0x2f, 0xd3, 0x34, 0x5f, 0xc6, 0xb3, 0xd9, 0x3f, 0xfb, 0x56, + 0x32, 0x7a, 0x29, 0x7f, 0x06, 0xd6, 0x73, 0xc2, 0xa7, 0x77, 0x7b, 0x77, 0x89, 0xa2, 0xe7, 0x84, + 0x67, 0x93, 0x7d, 0x74, 0x25, 0x46, 0x2b, 0x77, 0x00, 0x89, 0x02, 0x3a, 0x85, 0x60, 0x68, 0x99, + 0xa8, 0x80, 0x66, 0xfa, 0x3f, 0xbe, 0x1a, 0xa4, 0x27, 0x10, 0xc7, 0x25, 0x0b, 0xcc, 0x35, 0x8f, + 0x4b, 0x62, 0xdf, 0x7d, 0x5c, 0x29, 0x4c, 0xcf, 0xf2, 0x1a, 0x6e, 0x69, 0xa7, 0xd0, 0xfe, 0x9c, + 0x4b, 0x44, 0xe8, 0xc1, 0x7c, 0x76, 0x9b, 0xcb, 0x56, 0xd9, 0x8c, 0x9f, 0x5e, 0x0f, 0xac, 0xe6, + 0xed, 0x3c, 0xfb, 0xea, 0xa3, 0x61, 0xc0, 0xcf, 0x93, 0xb3, 0x2d, 0x8f, 0x8e, 0xd2, 0x3f, 0x24, + 0xaa, 0x3f, 0x1d, 0x7a, 0x34, 0x4c, 0x09, 0xff, 0x50, 0x6c, 0x1c, 0x06, 0xaf, 0xc9, 0x1f, 0xcb, + 0x3b, 0x21, 0xe5, 0xf4, 0xbf, 0x8a, 0x4d, 0x3d, 0x7e, 0xf2, 0x44, 0x12, 0xce, 0x2a, 0x52, 0xe4, + 0xb3, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0xef, 0xc9, 0xf9, 0x6f, 0x03, 0x29, 0x00, 0x00, } From 2553c26af5958852635d1c3711af87dd3fcf4afd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Sun, 2 Aug 2026 21:56:10 -0700 Subject: [PATCH 11/32] agent-simulation: drop the run-level job counts jobs_total, jobs_measured and jobs_simulator_fault are all counts the client can take off the jobs it already has in the same response. jobs_simulator_fault was also wrong: it is derived from early_termination alone, while the worker withholds scoring on three signals - one of which never reaches the proto. Counting measured jobs whose composites are absent gives the true number, whatever the worker decided. --- protobufs/livekit_agent_simulation.proto | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/protobufs/livekit_agent_simulation.proto b/protobufs/livekit_agent_simulation.proto index b9583794b..1586fb124 100644 --- a/protobufs/livekit_agent_simulation.proto +++ b/protobufs/livekit_agent_simulation.proto @@ -219,9 +219,8 @@ message SimulationRun { JobMetrics.TTS tts = 6; JobMetrics.Conversation conversation = 7; - uint32 jobs_total = 9; - uint32 jobs_measured = 10; // composites cover jobs_measured - jobs_simulator_fault - uint32 jobs_simulator_fault = 11; // spoiled by the simulator: flagged, not scored + reserved 9, 10, 11; // was jobs_total, jobs_measured, jobs_simulator_fault + reserved "jobs_total", "jobs_measured", "jobs_simulator_fault"; } message Create { From a4dd0d29a02f756c54ad44b8b3a1444746fd657d Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 04:56:59 +0000 Subject: [PATCH 12/32] generated protobuf --- livekit/livekit_agent_simulation.pb.go | 60 +-- livekit/livekit_agent_simulation.twirp.go | 443 +++++++++++----------- 2 files changed, 238 insertions(+), 265 deletions(-) diff --git a/livekit/livekit_agent_simulation.pb.go b/livekit/livekit_agent_simulation.pb.go index a361e6ab0..e38f526be 100644 --- a/livekit/livekit_agent_simulation.pb.go +++ b/livekit/livekit_agent_simulation.pb.go @@ -1084,19 +1084,16 @@ func (x *SimulationRun_JobMetrics) GetConversationProgression() float32 { // Aggregates over this run's jobs. Reuses the JobMetrics group shapes. type SimulationRun_RunMetrics struct { - state protoimpl.MessageState `protogen:"open.v1"` - AccuracyScore *float32 `protobuf:"fixed32,1,opt,name=accuracy_score,json=accuracyScore,proto3,oneof" json:"accuracy_score,omitempty"` // mean over scored jobs - ExperienceScore *float32 `protobuf:"fixed32,2,opt,name=experience_score,json=experienceScore,proto3,oneof" json:"experience_score,omitempty"` - ScenarioPassRate *float32 `protobuf:"fixed32,3,opt,name=scenario_pass_rate,json=scenarioPassRate,proto3,oneof" json:"scenario_pass_rate,omitempty"` // share of jobs whose scenario verdict passed - Stt *SimulationRun_JobMetrics_STT `protobuf:"bytes,4,opt,name=stt,proto3" json:"stt,omitempty"` - Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,5,opt,name=llm,proto3" json:"llm,omitempty"` - Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,6,opt,name=tts,proto3" json:"tts,omitempty"` - Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,7,opt,name=conversation,proto3" json:"conversation,omitempty"` - JobsTotal uint32 `protobuf:"varint,9,opt,name=jobs_total,json=jobsTotal,proto3" json:"jobs_total,omitempty"` - JobsMeasured uint32 `protobuf:"varint,10,opt,name=jobs_measured,json=jobsMeasured,proto3" json:"jobs_measured,omitempty"` // composites cover jobs_measured - jobs_simulator_fault - JobsSimulatorFault uint32 `protobuf:"varint,11,opt,name=jobs_simulator_fault,json=jobsSimulatorFault,proto3" json:"jobs_simulator_fault,omitempty"` // spoiled by the simulator: flagged, not scored - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + AccuracyScore *float32 `protobuf:"fixed32,1,opt,name=accuracy_score,json=accuracyScore,proto3,oneof" json:"accuracy_score,omitempty"` // mean over scored jobs + ExperienceScore *float32 `protobuf:"fixed32,2,opt,name=experience_score,json=experienceScore,proto3,oneof" json:"experience_score,omitempty"` + ScenarioPassRate *float32 `protobuf:"fixed32,3,opt,name=scenario_pass_rate,json=scenarioPassRate,proto3,oneof" json:"scenario_pass_rate,omitempty"` // share of jobs whose scenario verdict passed + Stt *SimulationRun_JobMetrics_STT `protobuf:"bytes,4,opt,name=stt,proto3" json:"stt,omitempty"` + Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,5,opt,name=llm,proto3" json:"llm,omitempty"` + Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,6,opt,name=tts,proto3" json:"tts,omitempty"` + Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,7,opt,name=conversation,proto3" json:"conversation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimulationRun_RunMetrics) Reset() { @@ -1178,27 +1175,6 @@ func (x *SimulationRun_RunMetrics) GetConversation() *SimulationRun_JobMetrics_C return nil } -func (x *SimulationRun_RunMetrics) GetJobsTotal() uint32 { - if x != nil { - return x.JobsTotal - } - return 0 -} - -func (x *SimulationRun_RunMetrics) GetJobsMeasured() uint32 { - if x != nil { - return x.JobsMeasured - } - return 0 -} - -func (x *SimulationRun_RunMetrics) GetJobsSimulatorFault() uint32 { - if x != nil { - return x.JobsSimulatorFault - } - return 0 -} - type SimulationRun_Create struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -2820,7 +2796,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\n" + "suggestion\x18\x02 \x01(\tR\n" + "suggestion\x12\x14\n" + - "\x05label\x18\x03 \x01(\tR\x05label\"\x81A\n" + + "\x05label\x18\x03 \x01(\tR\x05label\"\xce@\n" + "\rSimulationRun\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + "\n" + @@ -3017,7 +2993,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x11_information_lossB\x17\n" + "\x15_redundant_statementsB\x18\n" + "\x16_poor_question_qualityB\x1b\n" + - "\x19_conversation_progression\x1a\xcf\x04\n" + + "\x19_conversation_progression\x1a\x9c\x04\n" + "\n" + "RunMetrics\x12*\n" + "\x0eaccuracy_score\x18\x01 \x01(\x02H\x00R\raccuracyScore\x88\x01\x01\x12.\n" + @@ -3026,15 +3002,13 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x03stt\x18\x04 \x01(\v2%.livekit.SimulationRun.JobMetrics.STTR\x03stt\x127\n" + "\x03llm\x18\x05 \x01(\v2%.livekit.SimulationRun.JobMetrics.LLMR\x03llm\x127\n" + "\x03tts\x18\x06 \x01(\v2%.livekit.SimulationRun.JobMetrics.TTSR\x03tts\x12R\n" + - "\fconversation\x18\a \x01(\v2..livekit.SimulationRun.JobMetrics.ConversationR\fconversation\x12\x1d\n" + - "\n" + - "jobs_total\x18\t \x01(\rR\tjobsTotal\x12#\n" + - "\rjobs_measured\x18\n" + - " \x01(\rR\fjobsMeasured\x120\n" + - "\x14jobs_simulator_fault\x18\v \x01(\rR\x12jobsSimulatorFaultB\x11\n" + + "\fconversation\x18\a \x01(\v2..livekit.SimulationRun.JobMetrics.ConversationR\fconversationB\x11\n" + "\x0f_accuracy_scoreB\x13\n" + "\x11_experience_scoreB\x15\n" + - "\x13_scenario_pass_rate\x1a\xf5\x03\n" + + "\x13_scenario_pass_rateJ\x04\b\t\x10\n" + + "J\x04\b\n" + + "\x10\vJ\x04\b\v\x10\fR\n" + + "jobs_totalR\rjobs_measuredR\x14jobs_simulator_fault\x1a\xf5\x03\n" + "\x06Create\x1a\xdc\x02\n" + "\aRequest\x12\x1d\n" + "\n" + diff --git a/livekit/livekit_agent_simulation.twirp.go b/livekit/livekit_agent_simulation.twirp.go index a70ccd687..769106a4a 100644 --- a/livekit/livekit_agent_simulation.twirp.go +++ b/livekit/livekit_agent_simulation.twirp.go @@ -1912,227 +1912,226 @@ func (s *agentSimulationServer) PathPrefix() string { } var twirpFileDescriptor9 = []byte{ - // 3551 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x73, 0x1b, 0x47, - 0x76, 0x17, 0x80, 0x01, 0x30, 0x78, 0x20, 0x80, 0x61, 0xf3, 0x43, 0xd0, 0x78, 0x65, 0xcb, 0xb2, - 0xbd, 0xab, 0x92, 0xbc, 0x94, 0x42, 0xaf, 0xd6, 0x4b, 0x79, 0x37, 0x15, 0x82, 0x82, 0x04, 0x32, - 0x24, 0x45, 0x37, 0xc0, 0x4a, 0xd6, 0xa9, 0xd4, 0xd4, 0x70, 0xa6, 0x05, 0x0e, 0x35, 0x98, 0xc6, - 0x4e, 0xf7, 0x48, 0xe2, 0x56, 0xe5, 0x90, 0x9b, 0xab, 0x72, 0xca, 0x2d, 0xa7, 0x54, 0x2e, 0x7b, - 0x48, 0xae, 0x39, 0xb9, 0x2a, 0xa9, 0xfc, 0x09, 0xa9, 0x54, 0xaa, 0x72, 0xca, 0x5f, 0x90, 0x7b, - 0x72, 0xca, 0x21, 0xd5, 0x1f, 0x33, 0x18, 0x7c, 0x51, 0xb4, 0x63, 0xdf, 0xf6, 0x86, 0x7e, 0xef, - 0xf7, 0x5e, 0x77, 0xbf, 0x7e, 0x1f, 0xdd, 0xf3, 0x00, 0xef, 0x87, 0xc1, 0x6b, 0xf2, 0x2a, 0xe0, + // 3529 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x23, 0x47, + 0x76, 0x1f, 0x92, 0x4d, 0xb2, 0xf9, 0x28, 0x92, 0xad, 0xd2, 0xc7, 0x70, 0xda, 0x6b, 0x7b, 0x3c, + 0xb6, 0x77, 0x07, 0x33, 0x5e, 0xcd, 0x44, 0xde, 0x59, 0xaf, 0xc6, 0xbb, 0xc1, 0x8a, 0x1a, 0x7a, + 0x28, 0x45, 0xd2, 0xc8, 0x45, 0x0a, 0xc9, 0x3a, 0x08, 0x1a, 0xad, 0xee, 0x1a, 0xaa, 0x35, 0xcd, + 0x2e, 0x6e, 0x57, 0xf5, 0x68, 0xb4, 0x40, 0xee, 0x06, 0x72, 0xca, 0x2d, 0x87, 0x20, 0xc8, 0x65, + 0x0f, 0xc9, 0x35, 0x27, 0x03, 0x09, 0xf2, 0x1f, 0x04, 0x08, 0x02, 0xe4, 0x94, 0xbf, 0x20, 0xf7, + 0xe4, 0x94, 0x43, 0x50, 0x1f, 0xdd, 0x6c, 0x7e, 0x69, 0x64, 0xc7, 0xbe, 0xe5, 0xc6, 0x7a, 0xef, + 0xf7, 0x5e, 0x55, 0xbd, 0x7a, 0x1f, 0x55, 0xfd, 0x08, 0xef, 0x85, 0xc1, 0x6b, 0xf2, 0x2a, 0xe0, 0x8e, 0x3b, 0x24, 0x11, 0x77, 0x58, 0x30, 0x4a, 0x42, 0x97, 0x07, 0x34, 0xda, 0x1a, 0xc7, 0x94, - 0x53, 0x54, 0xd5, 0x7c, 0xfb, 0x43, 0x09, 0x78, 0x38, 0x03, 0x27, 0x8c, 0x65, 0x58, 0xfb, 0x83, - 0x21, 0xa5, 0xc3, 0x90, 0x3c, 0x94, 0xa3, 0xb3, 0xe4, 0xe5, 0x43, 0x1e, 0x8c, 0x08, 0xe3, 0xee, - 0x68, 0xac, 0x01, 0xb7, 0x52, 0x69, 0x2f, 0xa4, 0x89, 0xaf, 0x74, 0x68, 0xd6, 0x7a, 0xca, 0x1a, - 0x51, 0x9f, 0x84, 0x4c, 0x51, 0xef, 0xfe, 0x5b, 0x09, 0xd6, 0xfb, 0xd9, 0x92, 0x70, 0x12, 0xf5, - 0x93, 0xd1, 0xc8, 0x8d, 0x2f, 0xd1, 0x26, 0x54, 0xc6, 0x2e, 0x63, 0xc4, 0x6f, 0x17, 0xee, 0x14, - 0xee, 0x95, 0xb1, 0x1e, 0x09, 0xfa, 0x4b, 0x37, 0x08, 0x89, 0xdf, 0x2e, 0x2a, 0xba, 0x1a, 0xa1, - 0xdb, 0x00, 0x43, 0x1a, 0x44, 0x43, 0xe7, 0x0d, 0x09, 0xc3, 0x76, 0xe9, 0x4e, 0xe1, 0x5e, 0x0d, - 0xd7, 0x24, 0xe5, 0x4f, 0x48, 0x18, 0x0a, 0x36, 0xa7, 0x4e, 0x30, 0x1a, 0xc7, 0xf4, 0x35, 0x69, - 0x1b, 0x8a, 0xcd, 0xe9, 0xbe, 0x22, 0xa0, 0x2f, 0xa0, 0x12, 0x30, 0x96, 0x10, 0xd6, 0x2e, 0xdf, - 0x29, 0xdd, 0xab, 0x6f, 0x7f, 0xb4, 0xa5, 0x57, 0xbb, 0xb5, 0x68, 0x71, 0x5b, 0xfb, 0x02, 0x8b, - 0xb5, 0x08, 0xfa, 0x12, 0x56, 0xbc, 0x73, 0x97, 0x3b, 0xe7, 0x01, 0xe3, 0x34, 0xbe, 0x6c, 0x57, - 0xa4, 0x8a, 0xad, 0xab, 0x55, 0xec, 0x9d, 0xbb, 0xbc, 0xa7, 0x04, 0xba, 0x11, 0x8f, 0x2f, 0x71, - 0xdd, 0x9b, 0x50, 0xec, 0xaf, 0xc0, 0x9a, 0x05, 0x20, 0x0b, 0x4a, 0xaf, 0xc8, 0xa5, 0x34, 0x47, - 0x0d, 0x8b, 0x9f, 0xe8, 0x11, 0x94, 0x5f, 0xbb, 0x61, 0x42, 0xa4, 0x29, 0xea, 0xdb, 0x76, 0x36, - 0xa3, 0xb2, 0xbb, 0xd0, 0xb0, 0x47, 0x23, 0x4e, 0xde, 0x72, 0xac, 0x80, 0x4f, 0x8a, 0xbf, 0x28, - 0xd8, 0x0e, 0x94, 0xe5, 0xfa, 0xd1, 0x1d, 0xa8, 0xfb, 0x84, 0x79, 0x71, 0x30, 0x16, 0x6b, 0xd3, - 0x8a, 0xf3, 0x24, 0xf4, 0x3e, 0x00, 0x4b, 0x86, 0x43, 0xc2, 0x24, 0xa0, 0x28, 0x01, 0x39, 0x0a, - 0x5a, 0x87, 0x72, 0xe8, 0x9e, 0x91, 0xd4, 0xde, 0x6a, 0x70, 0xf7, 0x2f, 0x77, 0xa1, 0x31, 0xb5, - 0x67, 0xd4, 0x84, 0x62, 0xe0, 0xeb, 0x09, 0x8a, 0x81, 0x3c, 0xac, 0x71, 0x4c, 0x2f, 0x88, 0xc7, - 0x9d, 0xc0, 0xd7, 0x7a, 0x6b, 0x9a, 0xb2, 0xef, 0xa3, 0xc7, 0x50, 0x61, 0xdc, 0xe5, 0x09, 0x93, - 0x7a, 0x9b, 0xdb, 0xb7, 0x17, 0x9b, 0x72, 0xab, 0x2f, 0x41, 0x58, 0x83, 0xd1, 0x03, 0x58, 0x55, - 0x4e, 0x9b, 0xdf, 0x95, 0x3a, 0x6a, 0x4b, 0x32, 0x9e, 0xe6, 0xb6, 0xb6, 0x0e, 0x65, 0x12, 0xc7, - 0x34, 0x6e, 0x97, 0xd5, 0xd2, 0xe5, 0x00, 0xed, 0x00, 0x78, 0x31, 0x71, 0x39, 0xf1, 0x1d, 0x97, - 0xb7, 0x2b, 0xda, 0xac, 0xca, 0xeb, 0xb7, 0x52, 0xaf, 0xdf, 0x1a, 0xa4, 0x5e, 0x8f, 0x6b, 0x1a, - 0xbd, 0xcb, 0xd1, 0x16, 0x18, 0x17, 0xf4, 0x8c, 0xb5, 0xab, 0xf2, 0xf4, 0xed, 0x25, 0x4b, 0x3e, - 0xa0, 0x67, 0x58, 0xe2, 0x84, 0x0d, 0xd4, 0x6a, 0x23, 0x77, 0x44, 0xda, 0x35, 0x65, 0x03, 0x49, - 0x39, 0x76, 0x47, 0x04, 0xfd, 0x0a, 0x9a, 0xcc, 0x23, 0x91, 0x1b, 0x07, 0xd4, 0x19, 0xc6, 0x34, - 0x19, 0xb7, 0x41, 0xae, 0x66, 0x73, 0xa2, 0x58, 0xb3, 0x9f, 0x0b, 0x2e, 0x6e, 0xb0, 0xfc, 0x10, - 0x3d, 0x06, 0x93, 0x44, 0xbe, 0xda, 0x46, 0xfd, 0x9d, 0xdb, 0xa8, 0x4a, 0xec, 0x2e, 0x47, 0xef, - 0x41, 0xed, 0x82, 0x9e, 0x39, 0x1e, 0x4d, 0x22, 0xde, 0x5e, 0x91, 0x01, 0x66, 0x5e, 0xd0, 0xb3, - 0x3d, 0x31, 0x46, 0x1f, 0xc2, 0x8a, 0x0a, 0x42, 0xcd, 0x6f, 0x48, 0x7e, 0x5d, 0xd1, 0x32, 0x88, - 0x8a, 0x47, 0x0d, 0x69, 0x2a, 0x88, 0xa2, 0x29, 0xc8, 0x4f, 0xa0, 0x15, 0x25, 0xa3, 0x5c, 0x1e, - 0x62, 0xed, 0x96, 0x44, 0x35, 0xa3, 0x64, 0x34, 0x31, 0x16, 0x43, 0xdb, 0x50, 0x4e, 0x98, 0x3b, - 0x24, 0x6d, 0x4b, 0xae, 0xff, 0x47, 0x4b, 0x2c, 0x7a, 0x2a, 0x30, 0x58, 0x41, 0x85, 0x4b, 0x7b, - 0x34, 0xf2, 0x92, 0x38, 0x26, 0x91, 0x77, 0xd9, 0x5e, 0x55, 0xd3, 0xe7, 0x48, 0xe8, 0x01, 0x18, - 0x22, 0x01, 0xb5, 0x91, 0xf4, 0xac, 0x9b, 0x0b, 0x94, 0x1e, 0x51, 0x9f, 0x60, 0x09, 0x42, 0x5f, - 0x40, 0x75, 0x44, 0x78, 0x1c, 0x78, 0xac, 0xbd, 0x26, 0x17, 0xf1, 0xe1, 0x92, 0x45, 0xe0, 0x24, - 0x3a, 0x52, 0x40, 0x9c, 0x4a, 0x08, 0x5b, 0x30, 0x15, 0xec, 0xce, 0x6f, 0x19, 0xf7, 0xdb, 0xeb, - 0x77, 0x0a, 0xf7, 0x56, 0x70, 0x5d, 0xd3, 0xbe, 0x62, 0xdc, 0xb7, 0xff, 0xa3, 0x0c, 0xa5, 0x03, - 0x7a, 0x36, 0x17, 0x1f, 0x3b, 0x59, 0x00, 0x14, 0xe5, 0x32, 0x3f, 0x5c, 0xee, 0x4d, 0xb3, 0x41, - 0x70, 0x17, 0x56, 0x82, 0x88, 0xf1, 0x38, 0xf1, 0x94, 0x6d, 0x55, 0x64, 0x4e, 0xd1, 0x26, 0xbe, - 0x6f, 0xe4, 0x7d, 0xff, 0xa7, 0x80, 0x94, 0x43, 0x92, 0xb7, 0x63, 0xe2, 0x71, 0x7d, 0x36, 0x2a, - 0x3c, 0x54, 0x60, 0x75, 0x73, 0x8c, 0x49, 0xec, 0x57, 0x72, 0xb1, 0x8f, 0x10, 0x18, 0xdc, 0x1d, - 0xaa, 0x28, 0xa8, 0x61, 0xf9, 0x5b, 0x38, 0x55, 0x4c, 0xe9, 0x48, 0x39, 0xba, 0x29, 0xd1, 0xa6, - 0x20, 0x48, 0x3f, 0xdf, 0x01, 0x60, 0xdc, 0x8d, 0x75, 0xc4, 0xc1, 0xbb, 0x23, 0x4e, 0xa3, 0x77, - 0xf9, 0x77, 0xf5, 0xf1, 0x9b, 0x50, 0x95, 0xcb, 0x09, 0x7c, 0xe9, 0xe1, 0x35, 0x5c, 0x11, 0xc3, - 0x7d, 0x1f, 0xfd, 0x3c, 0x75, 0xb8, 0x86, 0x54, 0x76, 0xe7, 0x0a, 0xa3, 0x4f, 0x39, 0x5d, 0xce, - 0x4b, 0x9a, 0x57, 0x7a, 0xc9, 0x01, 0x3d, 0x9b, 0xf5, 0x12, 0xfb, 0xcf, 0xa1, 0x2c, 0x95, 0xa1, - 0x7b, 0x60, 0x89, 0x4c, 0xed, 0xf0, 0x24, 0x8e, 0x98, 0x0e, 0x1f, 0x55, 0xfa, 0x9a, 0x82, 0x3e, - 0x10, 0x64, 0x15, 0x41, 0xf7, 0x61, 0xd5, 0x4d, 0xfc, 0x80, 0x4e, 0x41, 0x55, 0x35, 0x6c, 0x49, - 0xc6, 0x04, 0x7b, 0x97, 0x42, 0x45, 0x39, 0x08, 0x42, 0xd0, 0xec, 0x0f, 0x76, 0x07, 0xa7, 0x7d, - 0xe7, 0xa4, 0x7b, 0xfc, 0x74, 0xff, 0xf8, 0xb9, 0x75, 0x23, 0x47, 0xc3, 0xa7, 0xc7, 0xc7, 0x82, - 0x56, 0x40, 0xeb, 0x60, 0x69, 0xda, 0xde, 0x8b, 0xa3, 0x93, 0xc3, 0xee, 0xa0, 0xfb, 0xd4, 0x2a, - 0xa2, 0x55, 0x68, 0x68, 0xea, 0xb3, 0xdd, 0xfd, 0xc3, 0xee, 0x53, 0xab, 0x94, 0x07, 0xee, 0x1e, - 0xef, 0x75, 0x0f, 0x05, 0xd5, 0x38, 0x30, 0xcc, 0x9a, 0x05, 0xf6, 0x37, 0x1f, 0x03, 0x4c, 0x76, - 0x8b, 0xee, 0x43, 0xd3, 0xf5, 0xbc, 0x24, 0x76, 0xbd, 0x4b, 0x87, 0x79, 0x34, 0x26, 0x72, 0x67, - 0xc5, 0xde, 0x0d, 0xdc, 0x48, 0xe9, 0x7d, 0x41, 0xfe, 0xba, 0x50, 0x40, 0x5b, 0x60, 0x09, 0x07, - 0x8c, 0x03, 0x12, 0x79, 0x44, 0xa3, 0x8b, 0x12, 0x5d, 0xc0, 0xad, 0x09, 0x27, 0xc3, 0x7f, 0x0a, - 0x2d, 0xee, 0xb2, 0x57, 0x8e, 0x47, 0x47, 0xe3, 0x90, 0xc8, 0x9c, 0x5f, 0x92, 0xf0, 0x22, 0x6e, - 0x0a, 0xc6, 0x5e, 0x46, 0x17, 0xe8, 0xcf, 0xa1, 0xc4, 0x38, 0x97, 0x8e, 0x5f, 0xdf, 0xfe, 0xe4, - 0x9d, 0xe7, 0xb4, 0xd5, 0x1f, 0x0c, 0xb0, 0x90, 0x10, 0x82, 0x61, 0x38, 0x92, 0xe1, 0x70, 0x2d, - 0xc1, 0xc3, 0xc3, 0x23, 0x2c, 0x24, 0x84, 0x20, 0xe7, 0x4c, 0xd7, 0x92, 0x6b, 0x08, 0x0e, 0x06, - 0x7d, 0x2c, 0x24, 0x10, 0x86, 0x15, 0x8f, 0x46, 0xaf, 0x49, 0xcc, 0x24, 0xac, 0x5d, 0x95, 0x1a, - 0xb6, 0xde, 0xad, 0x61, 0x2f, 0x27, 0x85, 0xa7, 0x74, 0xa0, 0x7d, 0xa8, 0xe9, 0xc4, 0x4b, 0x63, - 0x19, 0x8a, 0xf5, 0xed, 0x07, 0xd7, 0x30, 0x42, 0x2a, 0x82, 0x27, 0xd2, 0xe8, 0x97, 0x50, 0x96, - 0xfe, 0xd7, 0xae, 0xc9, 0x82, 0xf7, 0xe3, 0x6b, 0xec, 0x2c, 0x89, 0x23, 0xac, 0x84, 0xd0, 0x07, - 0x50, 0xbf, 0x48, 0xfc, 0x21, 0x51, 0xb7, 0x41, 0x19, 0xf7, 0x35, 0x0c, 0x92, 0x24, 0xf2, 0x6f, - 0x38, 0x71, 0xf2, 0x3c, 0xac, 0x2e, 0x61, 0xca, 0xc9, 0x0f, 0x26, 0xd8, 0x4f, 0x01, 0x9d, 0xbb, - 0xcc, 0x89, 0xc9, 0x88, 0x72, 0x92, 0x5e, 0x59, 0x65, 0x70, 0x9b, 0xd8, 0x3a, 0x77, 0x19, 0x96, - 0x8c, 0xbe, 0xa2, 0xa3, 0xfb, 0x50, 0xe4, 0x8f, 0x74, 0x8c, 0x5f, 0x95, 0x30, 0x8a, 0xfc, 0x11, - 0xfa, 0x44, 0xd5, 0x93, 0x80, 0x91, 0x88, 0x30, 0x15, 0xde, 0xc5, 0x5e, 0x09, 0xe7, 0x89, 0xc2, - 0xab, 0x76, 0x60, 0x33, 0x89, 0x22, 0xe2, 0x11, 0xc6, 0x44, 0xba, 0xe7, 0x94, 0x86, 0x8e, 0xe7, - 0x86, 0xa1, 0x2a, 0x6d, 0x66, 0xcf, 0xc0, 0xeb, 0x39, 0xfe, 0x80, 0xd2, 0x70, 0x4f, 0x70, 0xb5, - 0xbb, 0x07, 0xd1, 0x4b, 0x1a, 0x8f, 0xa4, 0xc5, 0x9c, 0x90, 0x32, 0x26, 0x0b, 0x9e, 0xd9, 0x2b, - 0xe3, 0x56, 0x8e, 0x73, 0x48, 0xd5, 0x54, 0x3f, 0x87, 0xf5, 0x98, 0xf8, 0x49, 0xe4, 0xbb, 0xe2, - 0x76, 0xce, 0x5d, 0x4e, 0x46, 0x24, 0xe2, 0x4c, 0x96, 0x3a, 0xb3, 0x57, 0xc1, 0x6b, 0x19, 0xb7, - 0x9f, 0x31, 0x95, 0xe3, 0x6f, 0x8c, 0x29, 0x8d, 0x9d, 0xdf, 0x24, 0xea, 0xee, 0xe6, 0xfc, 0x26, - 0x71, 0xc3, 0x80, 0x5f, 0xca, 0x42, 0x68, 0xf6, 0xaa, 0x78, 0x4d, 0xb0, 0xbf, 0xd4, 0xdc, 0x2f, - 0x15, 0x53, 0x08, 0xfe, 0x21, 0xb4, 0xf3, 0x2e, 0xe4, 0x8c, 0x63, 0x3a, 0x8c, 0xb5, 0x89, 0xd7, - 0xa4, 0x3d, 0x4c, 0x7c, 0x33, 0x8f, 0x38, 0x99, 0x00, 0xbe, 0x2e, 0x14, 0xec, 0xff, 0x35, 0xa0, - 0xd4, 0x1f, 0x0c, 0xd0, 0x06, 0x94, 0xde, 0x90, 0x38, 0x0b, 0x7c, 0x31, 0x10, 0xea, 0x6f, 0x41, - 0xf9, 0x0d, 0x8d, 0x7d, 0x55, 0xe9, 0x1a, 0xbd, 0x02, 0x56, 0x43, 0xc1, 0xfa, 0x18, 0xea, 0xe2, - 0xb7, 0x23, 0xcb, 0x93, 0xaa, 0x64, 0x8d, 0x5e, 0x11, 0x83, 0x20, 0x76, 0x25, 0x4d, 0xa0, 0x36, - 0xa0, 0xe4, 0x11, 0x55, 0xca, 0xc4, 0xd1, 0x88, 0x81, 0xd6, 0xeb, 0x9d, 0xbb, 0x31, 0x93, 0x37, - 0xab, 0x46, 0xcf, 0xc0, 0x6a, 0xa8, 0xf5, 0x8a, 0xdf, 0xa9, 0x5e, 0x90, 0x80, 0x32, 0x06, 0x41, - 0x9c, 0xe8, 0xfd, 0x15, 0xb4, 0x79, 0xec, 0x46, 0xd9, 0x8d, 0xd1, 0x09, 0x5d, 0x2e, 0x6e, 0x10, - 0xce, 0x88, 0xc9, 0xc8, 0x69, 0xf4, 0x2a, 0x78, 0x73, 0x0a, 0x71, 0xa8, 0x00, 0x47, 0x52, 0x7c, - 0x1b, 0x10, 0x89, 0x78, 0xc0, 0x2f, 0x9d, 0x98, 0x78, 0x74, 0x18, 0x05, 0x32, 0x86, 0xeb, 0x72, - 0x95, 0x55, 0xbc, 0xaa, 0x78, 0x78, 0xc2, 0x4a, 0x53, 0x9f, 0xa0, 0x07, 0x84, 0x39, 0x09, 0xe7, - 0x24, 0x26, 0xaa, 0x44, 0x35, 0x7a, 0x26, 0x6e, 0xa5, 0x9c, 0x53, 0xc5, 0x10, 0xf8, 0x9f, 0xc1, - 0x5a, 0x86, 0xd7, 0xb3, 0xfc, 0x96, 0xf8, 0xd2, 0xb5, 0x1b, 0xbd, 0x1a, 0x46, 0x29, 0x13, 0x67, - 0xbc, 0xaf, 0x0b, 0x85, 0x4e, 0x05, 0x0c, 0xe7, 0x0d, 0x89, 0x3b, 0x26, 0x54, 0x1c, 0x69, 0xeb, - 0x4e, 0x13, 0x56, 0x9c, 0x9c, 0xa5, 0x25, 0xc2, 0xd3, 0x08, 0x69, 0x35, 0x89, 0xc8, 0xd9, 0xac, - 0xf3, 0x1e, 0xdc, 0x72, 0x96, 0x59, 0xa7, 0xb3, 0x01, 0x6b, 0xce, 0xfc, 0xde, 0x3b, 0x6b, 0xb0, - 0xea, 0xcc, 0x6e, 0xaf, 0xb3, 0x09, 0xeb, 0xce, 0x82, 0x3d, 0x1c, 0x18, 0x66, 0xd9, 0xaa, 0x1c, - 0x18, 0x66, 0xc5, 0xaa, 0x1e, 0x18, 0x66, 0xd5, 0x32, 0x71, 0xf3, 0x15, 0xb9, 0xe4, 0x24, 0x1e, - 0x09, 0x94, 0x1b, 0x86, 0xd8, 0xd2, 0xe3, 0x4c, 0x17, 0x5e, 0xcb, 0x28, 0x13, 0x45, 0xf6, 0x37, - 0x05, 0x28, 0x1d, 0x1e, 0x1e, 0xa1, 0x1f, 0x41, 0x95, 0xf3, 0x97, 0x5c, 0x9c, 0x5e, 0x41, 0xda, - 0xe7, 0x06, 0xae, 0x08, 0x82, 0x3a, 0x2d, 0xc5, 0x65, 0x82, 0x9b, 0xfa, 0xa1, 0xe0, 0x32, 0xc5, - 0x7d, 0x08, 0xab, 0x9c, 0xbe, 0x22, 0x11, 0x73, 0xc6, 0x24, 0x76, 0x18, 0xf1, 0x68, 0xe4, 0x67, - 0x45, 0xa6, 0xa5, 0x58, 0x27, 0x24, 0xee, 0x4b, 0x86, 0x30, 0x31, 0x80, 0xe9, 0xe8, 0xd9, 0xd2, - 0xdf, 0x42, 0x77, 0x67, 0x1d, 0x90, 0x33, 0xa7, 0xe9, 0xc0, 0x30, 0x0d, 0xab, 0x8c, 0x57, 0x73, - 0x39, 0x45, 0x95, 0x3d, 0xfb, 0x7f, 0xca, 0x50, 0x1a, 0x0c, 0xfa, 0x7a, 0x75, 0xee, 0xec, 0xda, - 0xdd, 0xfc, 0xda, 0xcf, 0x66, 0xd7, 0x7e, 0x76, 0x94, 0x86, 0x87, 0x08, 0xbb, 0x74, 0xb5, 0x73, - 0x61, 0x57, 0x95, 0x22, 0xa5, 0xe5, 0x61, 0x67, 0xea, 0xf8, 0x59, 0x1c, 0x76, 0x35, 0xa9, 0xb7, - 0x3c, 0x1f, 0x76, 0xa0, 0x43, 0x64, 0x69, 0xd8, 0xd5, 0x25, 0xa0, 0x3a, 0x1b, 0x76, 0x8f, 0x60, - 0x35, 0x72, 0x79, 0x12, 0xbb, 0xe1, 0xc4, 0x10, 0xb2, 0xea, 0x8a, 0x3c, 0x63, 0xe5, 0x58, 0xd9, - 0x05, 0xe0, 0x11, 0xac, 0x92, 0x28, 0x89, 0xbc, 0x40, 0xe5, 0x27, 0x25, 0x51, 0x91, 0x12, 0x35, - 0x6c, 0xe5, 0x58, 0x99, 0xc4, 0xe2, 0xd8, 0x54, 0xc9, 0x1d, 0xbe, 0x45, 0x6c, 0xb6, 0xe4, 0x16, - 0xea, 0xdf, 0x26, 0x36, 0x2d, 0x29, 0xb2, 0xb2, 0x2c, 0x36, 0xb5, 0xb3, 0xb8, 0x39, 0xc7, 0x11, - 0x07, 0xfb, 0xbd, 0xc4, 0xac, 0x70, 0xbe, 0x39, 0xd3, 0x4a, 0xea, 0x9c, 0xf9, 0xbe, 0xa7, 0x10, - 0x36, 0xac, 0xf2, 0x81, 0x61, 0xae, 0x58, 0x8d, 0x03, 0xc3, 0x6c, 0x58, 0x4d, 0xdc, 0x62, 0x63, - 0x42, 0xbc, 0x73, 0x27, 0x76, 0x39, 0x71, 0xde, 0x8c, 0x47, 0xb8, 0x7e, 0x4e, 0xdc, 0xd8, 0x57, - 0x3b, 0xc2, 0x35, 0xcd, 0x1d, 0x31, 0xfb, 0x9f, 0x6b, 0xb0, 0x92, 0xbf, 0xc5, 0xc8, 0x08, 0x4c, - 0xe2, 0xc8, 0xe1, 0xee, 0xab, 0x20, 0x1a, 0xce, 0xdc, 0x21, 0x5b, 0x82, 0x35, 0x90, 0x9c, 0xec, - 0x88, 0x9f, 0xc0, 0xcd, 0x98, 0xb0, 0x31, 0x8d, 0x18, 0xc9, 0x52, 0xd3, 0xf8, 0xf1, 0xa3, 0x34, - 0x48, 0xca, 0xbd, 0x02, 0x5e, 0x4f, 0x01, 0x3a, 0x6f, 0x9f, 0x3c, 0x7e, 0xa4, 0x42, 0x66, 0xa1, - 0xec, 0xce, 0x63, 0x21, 0x5b, 0x92, 0xb2, 0xc5, 0x79, 0xd9, 0x9d, 0xc7, 0x57, 0xc9, 0xee, 0x08, - 0x59, 0x43, 0xca, 0x96, 0x16, 0xc8, 0xee, 0x28, 0xd9, 0xcf, 0x60, 0x6d, 0x4e, 0x76, 0xa4, 0x6e, - 0x03, 0xe5, 0x9e, 0x81, 0x57, 0x67, 0xe4, 0x94, 0xd0, 0x2f, 0x60, 0x53, 0xbd, 0xda, 0x2e, 0x03, - 0x12, 0xfa, 0x79, 0xb9, 0xb2, 0xae, 0x6b, 0x6b, 0x92, 0xff, 0x6b, 0xc1, 0x9e, 0x92, 0xfc, 0x02, - 0x6e, 0x12, 0xca, 0x9d, 0x51, 0xc0, 0xc6, 0x31, 0xf1, 0x03, 0xf9, 0x36, 0xd4, 0x8f, 0x89, 0x8a, - 0x0e, 0xde, 0x0d, 0x42, 0xf9, 0x51, 0x9e, 0x2f, 0x1f, 0x15, 0x42, 0xf8, 0x1e, 0x34, 0xe8, 0x6b, - 0x12, 0x87, 0xee, 0x58, 0x9c, 0x66, 0x40, 0x65, 0x1e, 0x11, 0x95, 0x6d, 0x45, 0x93, 0xb1, 0xa0, - 0xea, 0xe4, 0x99, 0x22, 0xb3, 0x03, 0xd6, 0x49, 0xc5, 0xc4, 0x2d, 0xcd, 0xea, 0x4b, 0x8e, 0x5a, - 0xd7, 0x03, 0x68, 0x71, 0xca, 0xdd, 0x30, 0x07, 0xaf, 0xe9, 0x8a, 0xd6, 0x90, 0x8c, 0x3c, 0xf8, - 0x73, 0xd8, 0x70, 0xdf, 0xbc, 0x7a, 0x23, 0xbc, 0x88, 0x05, 0xa1, 0x7c, 0x32, 0xa8, 0x2d, 0xa8, - 0xf4, 0x02, 0x78, 0x4d, 0xb3, 0xfb, 0x8a, 0x9b, 0x6d, 0x60, 0x0b, 0xac, 0x24, 0x72, 0x23, 0xf6, - 0x46, 0xf8, 0xb0, 0x7a, 0x49, 0xe9, 0x5a, 0x5b, 0xc7, 0xad, 0x09, 0x47, 0x3e, 0xa5, 0xf4, 0x75, - 0xe0, 0xa5, 0x1b, 0x32, 0xe2, 0x04, 0x11, 0x27, 0x71, 0x9c, 0x8c, 0x73, 0xe6, 0x6a, 0xe8, 0xa0, - 0xde, 0x94, 0x88, 0xfd, 0x1c, 0x20, 0x9b, 0xae, 0x0b, 0xb7, 0xd5, 0x31, 0xc5, 0x64, 0x4c, 0xe5, - 0x6b, 0x97, 0x6c, 0x4f, 0x9d, 0xb2, 0xca, 0x25, 0x0d, 0x7c, 0x4b, 0xc2, 0xb0, 0x46, 0x75, 0xb7, - 0xa7, 0x4e, 0x5b, 0x15, 0x90, 0xd9, 0x40, 0xe8, 0xd8, 0xd0, 0x76, 0x96, 0x78, 0xfb, 0x12, 0x9e, - 0xf4, 0xe6, 0x65, 0x3c, 0xe1, 0xad, 0x32, 0xaa, 0x17, 0x78, 0x63, 0xe7, 0x16, 0xdc, 0x74, 0x16, - 0x3b, 0x9c, 0x54, 0xb7, 0xc4, 0xa3, 0x3a, 0x16, 0x34, 0x9d, 0x29, 0x87, 0x91, 0x5b, 0x99, 0x73, - 0x8c, 0x0e, 0x02, 0xcb, 0x99, 0x39, 0xfd, 0x4e, 0x1b, 0x36, 0x9d, 0x85, 0x87, 0x2c, 0xf3, 0xd1, - 0xec, 0x29, 0xca, 0xbb, 0xc9, 0xb2, 0xa3, 0xea, 0xdc, 0x81, 0xf7, 0x9d, 0x2b, 0x0f, 0xe2, 0xc0, - 0x30, 0xc1, 0xaa, 0x1f, 0x18, 0x66, 0xd3, 0x6a, 0x61, 0x2b, 0x9d, 0x4e, 0x2d, 0x69, 0xc4, 0xf0, - 0xc7, 0x0b, 0x34, 0x27, 0x91, 0xc8, 0x7a, 0xaf, 0xe5, 0x12, 0xe4, 0x2c, 0xf6, 0xdf, 0x14, 0xa0, - 0x96, 0x3d, 0x9a, 0x64, 0x81, 0x72, 0xe3, 0xf0, 0xd2, 0x11, 0x97, 0x93, 0x20, 0x72, 0xb3, 0xaf, - 0xad, 0x66, 0xef, 0x06, 0xb6, 0x24, 0x6b, 0x30, 0xe1, 0x68, 0xe7, 0x14, 0x2b, 0x9a, 0x12, 0x28, - 0x4a, 0x81, 0x02, 0x6e, 0x09, 0xce, 0x34, 0x5e, 0x25, 0xf1, 0xd9, 0x29, 0xa4, 0x75, 0x66, 0xd5, - 0xd8, 0xff, 0x5e, 0x02, 0x43, 0x38, 0x35, 0x5a, 0x87, 0x72, 0x10, 0xf9, 0xe4, 0xad, 0xba, 0x52, - 0x60, 0x35, 0x40, 0x0f, 0xc0, 0x88, 0x69, 0x48, 0xf4, 0x77, 0xa7, 0x9b, 0x0b, 0xbe, 0x28, 0x63, - 0x1a, 0x12, 0x2c, 0x41, 0xe8, 0x7d, 0x30, 0xe5, 0xd7, 0x98, 0x34, 0x33, 0x8a, 0x8b, 0x49, 0x55, - 0x52, 0x54, 0x70, 0xda, 0x50, 0x21, 0x91, 0x9f, 0xe6, 0x3e, 0x79, 0xb9, 0x27, 0x91, 0x9f, 0x06, - 0xae, 0x7c, 0x88, 0x97, 0xbf, 0xeb, 0x43, 0xbc, 0xf2, 0x5d, 0x1f, 0xe2, 0xd5, 0xff, 0xf7, 0x43, - 0xdc, 0xfc, 0x1e, 0x1e, 0xe2, 0x33, 0x0f, 0xcb, 0x9a, 0xbe, 0x9e, 0xcd, 0x3c, 0x2c, 0x3b, 0x75, - 0xa8, 0x39, 0xa9, 0x89, 0x3b, 0x35, 0xa8, 0x3a, 0xca, 0x9e, 0xaa, 0xb6, 0x4f, 0xa0, 0x9d, 0x55, - 0x68, 0x39, 0xd3, 0x5f, 0x58, 0x54, 0xad, 0x9e, 0xf9, 0x90, 0xa2, 0xc2, 0x6b, 0xfa, 0x6b, 0xc9, - 0x9c, 0x2e, 0x11, 0xe1, 0x8b, 0x5f, 0xb3, 0x52, 0xe7, 0xec, 0x6b, 0xb5, 0x73, 0x13, 0x36, 0x9c, - 0x45, 0x4f, 0x52, 0x19, 0xb7, 0x0b, 0xdf, 0x9c, 0x32, 0x44, 0x97, 0x3d, 0x2a, 0xed, 0x7f, 0x35, - 0x00, 0x26, 0xdf, 0x53, 0x7f, 0xd0, 0x6f, 0x47, 0x7f, 0x00, 0x28, 0xfb, 0xc8, 0x3e, 0x76, 0x19, - 0x93, 0x37, 0x93, 0xec, 0xae, 0x6c, 0xa5, 0xbc, 0x13, 0x97, 0x31, 0xec, 0x72, 0xf2, 0xfb, 0x0f, - 0x48, 0xe8, 0x36, 0xc0, 0x05, 0x3d, 0x63, 0x2a, 0x21, 0xaa, 0xba, 0x8c, 0x6b, 0x82, 0x32, 0x10, - 0x04, 0xf4, 0x11, 0x34, 0x24, 0x7b, 0x44, 0x5c, 0x96, 0x88, 0x2b, 0xb2, 0x7c, 0x06, 0xe0, 0x15, - 0x41, 0x3c, 0xd2, 0x34, 0xf4, 0x08, 0xd6, 0x25, 0x28, 0xfb, 0x96, 0xe4, 0xbc, 0x74, 0x93, 0x50, - 0x97, 0x6c, 0x8c, 0x04, 0x2f, 0x4b, 0x9e, 0xcf, 0x04, 0xe7, 0xda, 0xee, 0x2d, 0xae, 0xad, 0xf3, - 0x07, 0x6a, 0xff, 0x77, 0x09, 0x2a, 0x7b, 0xb2, 0x51, 0x63, 0xff, 0x67, 0x11, 0xaa, 0x98, 0x48, - 0x87, 0x9c, 0xe9, 0x42, 0x15, 0x66, 0xbb, 0x50, 0xd3, 0x0d, 0x9a, 0xe2, 0x6c, 0x83, 0x66, 0x41, - 0x1f, 0xc3, 0x58, 0xd8, 0xc7, 0xd8, 0x84, 0x4a, 0x4c, 0x86, 0xe2, 0x00, 0x2a, 0xfa, 0x73, 0xb3, - 0x1c, 0xa1, 0xce, 0x5c, 0x87, 0xa7, 0x7a, 0x55, 0x87, 0x47, 0x38, 0xfc, 0x54, 0x8f, 0x47, 0x78, - 0xe3, 0x27, 0xd3, 0xfd, 0x0e, 0x53, 0x5f, 0x6d, 0xf3, 0x44, 0x75, 0xa5, 0x52, 0x4d, 0x8f, 0xda, - 0x35, 0x9a, 0x1e, 0xd2, 0xd8, 0xd3, 0x0b, 0xcb, 0x52, 0x84, 0x56, 0x79, 0x60, 0x98, 0x25, 0xcb, - 0xc0, 0xf3, 0xdd, 0x36, 0xfb, 0xaf, 0x0a, 0x60, 0x62, 0x7d, 0x6b, 0x40, 0xf7, 0x61, 0x75, 0x62, - 0x1d, 0x27, 0x4e, 0xa2, 0x89, 0x99, 0x5b, 0x2c, 0xef, 0x7b, 0xfb, 0x3e, 0xea, 0xc3, 0xe6, 0x38, - 0x26, 0x2c, 0x18, 0x46, 0xc4, 0x77, 0xc6, 0x94, 0x89, 0xfa, 0x2c, 0x4f, 0x49, 0xf7, 0x36, 0x27, - 0x2d, 0xc0, 0x93, 0x14, 0x76, 0x42, 0x19, 0xd7, 0x47, 0x89, 0xd7, 0xc7, 0x0b, 0xa8, 0xf6, 0xdf, - 0x15, 0x60, 0x6d, 0x8f, 0x46, 0x2f, 0x83, 0x78, 0xd4, 0xa7, 0x49, 0xec, 0x91, 0xd3, 0x71, 0x48, - 0x5d, 0xdf, 0xfe, 0x8b, 0x6b, 0xfb, 0xc0, 0xc2, 0x2d, 0x14, 0x17, 0x6f, 0xe1, 0x27, 0xd0, 0xf2, - 0xa8, 0x4f, 0xc4, 0x5b, 0x28, 0xbe, 0x1c, 0xd3, 0x20, 0xe2, 0xba, 0xf9, 0xd2, 0x14, 0xe4, 0x6e, - 0x46, 0xb5, 0x61, 0x62, 0x23, 0xfb, 0xaf, 0x0b, 0x50, 0x7a, 0x4e, 0xb8, 0x3d, 0xf8, 0x21, 0x96, - 0x64, 0xff, 0x2c, 0x77, 0x1a, 0xf7, 0xa0, 0x14, 0x27, 0xea, 0xde, 0x31, 0xe5, 0x63, 0x79, 0x11, - 0x2c, 0x20, 0xf6, 0xbf, 0x14, 0xc1, 0x38, 0x0c, 0x18, 0xb7, 0xff, 0xa9, 0x70, 0xed, 0x55, 0x3d, - 0x99, 0xe9, 0x58, 0x5d, 0xdd, 0xb2, 0xed, 0xdd, 0x48, 0xfb, 0x55, 0xc2, 0x3b, 0x7f, 0x09, 0x30, - 0x76, 0x87, 0x44, 0x7d, 0x19, 0x91, 0x36, 0xab, 0x6f, 0xb7, 0x33, 0xf9, 0x81, 0xa0, 0x9e, 0xb8, - 0x43, 0x7d, 0x81, 0xe9, 0x15, 0x70, 0x4d, 0xa0, 0x25, 0x59, 0x94, 0x48, 0x51, 0x15, 0x95, 0xae, - 0x4e, 0x03, 0xea, 0xce, 0x44, 0x93, 0xfd, 0x76, 0xca, 0x17, 0x8d, 0x38, 0x89, 0x58, 0xbb, 0x20, - 0x3f, 0x56, 0x2f, 0xdb, 0xbe, 0xc4, 0xa0, 0x3f, 0x82, 0x56, 0x44, 0xde, 0xf2, 0x9c, 0x2a, 0xed, - 0x84, 0x4b, 0x17, 0x85, 0x1b, 0x42, 0xe0, 0x24, 0x5d, 0x96, 0x7d, 0x01, 0x95, 0x3d, 0x37, 0xf2, - 0x48, 0xf8, 0x03, 0x9d, 0x6b, 0xde, 0x83, 0x7e, 0xe0, 0x06, 0xd2, 0xef, 0x0a, 0x59, 0x07, 0xe9, - 0x16, 0x6c, 0x4c, 0x77, 0x90, 0x9c, 0xd3, 0x93, 0xc3, 0x17, 0xbb, 0x4f, 0xad, 0x1b, 0x68, 0x03, - 0x56, 0x35, 0xeb, 0x79, 0xf7, 0xb8, 0x8b, 0x77, 0x07, 0xaa, 0x97, 0x34, 0xdf, 0x5f, 0x2a, 0xa2, - 0x4d, 0x40, 0x9a, 0xd6, 0x3f, 0x3d, 0x3a, 0xda, 0xc5, 0xfb, 0x5f, 0x09, 0x7a, 0x69, 0x61, 0xdf, - 0xc9, 0x98, 0xef, 0x3b, 0x95, 0x17, 0xf6, 0x9d, 0x2a, 0x07, 0x86, 0x69, 0x5a, 0x35, 0x5c, 0xd5, - 0xdd, 0xd5, 0xbb, 0xbf, 0x2b, 0x81, 0x99, 0xa6, 0xcf, 0x49, 0xab, 0xb2, 0x90, 0x6f, 0x55, 0xce, - 0x76, 0x4a, 0x8b, 0x0b, 0x3a, 0xa5, 0x8b, 0x7b, 0xa2, 0xa5, 0x65, 0x3d, 0xd1, 0x87, 0xba, 0xfb, - 0x69, 0x48, 0x2f, 0x7b, 0x6f, 0x2e, 0x91, 0x6f, 0x0d, 0xdc, 0x21, 0x53, 0x7f, 0xf7, 0x50, 0xad, - 0x51, 0x1b, 0xcc, 0x84, 0x91, 0xd8, 0x77, 0xb9, 0xab, 0x3b, 0xad, 0xd9, 0xd8, 0xfe, 0xfb, 0x02, - 0xac, 0xaa, 0xaa, 0xf5, 0x2c, 0xa6, 0x23, 0xdd, 0xbd, 0xb0, 0x7f, 0x7d, 0x6d, 0x87, 0xca, 0xf5, - 0x39, 0x8b, 0x53, 0x7d, 0xce, 0x49, 0x41, 0x2a, 0xe5, 0x0b, 0x92, 0xbd, 0x93, 0x8b, 0x97, 0x9f, - 0x82, 0x99, 0xd6, 0x00, 0x9d, 0x32, 0x56, 0xe7, 0x76, 0x83, 0x33, 0x88, 0xfd, 0x39, 0xd4, 0xb2, - 0xad, 0x2d, 0xf8, 0xa3, 0xca, 0x7a, 0xfe, 0x8f, 0x2a, 0xb5, 0xdc, 0x9f, 0x51, 0xee, 0x0e, 0xa0, - 0x31, 0x55, 0xe5, 0x10, 0x02, 0x43, 0xd6, 0x5b, 0x25, 0x2d, 0x7f, 0xa3, 0x87, 0x50, 0x4b, 0x67, - 0x12, 0xc7, 0x54, 0x5a, 0xbc, 0x9a, 0x09, 0xe6, 0xee, 0x3f, 0x16, 0x00, 0x4d, 0x22, 0xfb, 0x69, - 0xc0, 0xc6, 0x2e, 0xf7, 0xce, 0xbf, 0x55, 0x41, 0xda, 0x80, 0xca, 0x05, 0x3d, 0x9b, 0x18, 0xaf, - 0x7c, 0x41, 0xcf, 0xf6, 0xfd, 0x29, 0xbb, 0x94, 0xde, 0x69, 0x97, 0xac, 0xf0, 0x1a, 0xd7, 0x28, - 0xbc, 0xf7, 0x5f, 0x42, 0x73, 0x9a, 0x8e, 0x3e, 0x80, 0xf7, 0xfa, 0xfb, 0x47, 0xa7, 0x87, 0xbb, - 0x83, 0xfd, 0x17, 0xc7, 0xce, 0xd1, 0x8b, 0xa7, 0x5d, 0xe7, 0xf4, 0xb8, 0x7f, 0xd2, 0xdd, 0xdb, - 0x7f, 0xb6, 0xdf, 0x15, 0x71, 0xd7, 0x86, 0xf5, 0x59, 0xc0, 0xa0, 0xfb, 0xa7, 0x03, 0xab, 0x20, - 0x83, 0x75, 0x86, 0xb3, 0x7b, 0xfa, 0x74, 0xff, 0x85, 0x55, 0xdc, 0xfe, 0xdb, 0x32, 0xb4, 0x76, - 0x85, 0xef, 0x4e, 0x66, 0x43, 0x3e, 0xac, 0x29, 0x5f, 0x9b, 0xfe, 0xe3, 0xce, 0xb2, 0xeb, 0xa6, - 0xc2, 0x6e, 0xa5, 0x85, 0xf6, 0xc7, 0xef, 0x82, 0x69, 0xaf, 0xfa, 0xba, 0x00, 0xb7, 0xd3, 0x82, - 0x9c, 0x01, 0xf3, 0xa5, 0x19, 0x6d, 0x2f, 0xd3, 0x34, 0x5f, 0xc6, 0xb3, 0xd9, 0x3f, 0xfb, 0x56, - 0x32, 0x7a, 0x29, 0x7f, 0x06, 0xd6, 0x73, 0xc2, 0xa7, 0x77, 0x7b, 0x77, 0x89, 0xa2, 0xe7, 0x84, - 0x67, 0x93, 0x7d, 0x74, 0x25, 0x46, 0x2b, 0x77, 0x00, 0x89, 0x02, 0x3a, 0x85, 0x60, 0x68, 0x99, - 0xa8, 0x80, 0x66, 0xfa, 0x3f, 0xbe, 0x1a, 0xa4, 0x27, 0x10, 0xc7, 0x25, 0x0b, 0xcc, 0x35, 0x8f, - 0x4b, 0x62, 0xdf, 0x7d, 0x5c, 0x29, 0x4c, 0xcf, 0xf2, 0x1a, 0x6e, 0x69, 0xa7, 0xd0, 0xfe, 0x9c, - 0x4b, 0x44, 0xe8, 0xc1, 0x7c, 0x76, 0x9b, 0xcb, 0x56, 0xd9, 0x8c, 0x9f, 0x5e, 0x0f, 0xac, 0xe6, - 0xed, 0x3c, 0xfb, 0xea, 0xa3, 0x61, 0xc0, 0xcf, 0x93, 0xb3, 0x2d, 0x8f, 0x8e, 0xd2, 0x3f, 0x24, - 0xaa, 0x3f, 0x1d, 0x7a, 0x34, 0x4c, 0x09, 0xff, 0x50, 0x6c, 0x1c, 0x06, 0xaf, 0xc9, 0x1f, 0xcb, - 0x3b, 0x21, 0xe5, 0xf4, 0xbf, 0x8a, 0x4d, 0x3d, 0x7e, 0xf2, 0x44, 0x12, 0xce, 0x2a, 0x52, 0xe4, - 0xb3, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0xef, 0xc9, 0xf9, 0x6f, 0x03, 0x29, 0x00, 0x00, + 0x53, 0x54, 0xd5, 0x7c, 0xfb, 0x03, 0x09, 0x78, 0x34, 0x03, 0x27, 0x8c, 0x65, 0x58, 0xfb, 0xfd, + 0x21, 0xa5, 0xc3, 0x90, 0x3c, 0x92, 0xa3, 0xb3, 0xe4, 0xe5, 0x23, 0x1e, 0x8c, 0x08, 0xe3, 0xee, + 0x68, 0xac, 0x01, 0x77, 0x52, 0x69, 0x2f, 0xa4, 0x89, 0xaf, 0x74, 0x68, 0xd6, 0x7a, 0xca, 0x1a, + 0x51, 0x9f, 0x84, 0x4c, 0x51, 0xef, 0xfd, 0x6b, 0x09, 0xd6, 0xfb, 0xd9, 0x92, 0x70, 0x12, 0xf5, + 0x93, 0xd1, 0xc8, 0x8d, 0xaf, 0xd0, 0x26, 0x54, 0xc6, 0x2e, 0x63, 0xc4, 0x6f, 0x17, 0xee, 0x16, + 0xee, 0x97, 0xb1, 0x1e, 0x09, 0xfa, 0x4b, 0x37, 0x08, 0x89, 0xdf, 0x2e, 0x2a, 0xba, 0x1a, 0xa1, + 0x77, 0x01, 0x86, 0x34, 0x88, 0x86, 0xce, 0x25, 0x09, 0xc3, 0x76, 0xe9, 0x6e, 0xe1, 0x7e, 0x0d, + 0xd7, 0x24, 0xe5, 0x8f, 0x49, 0x18, 0x0a, 0x36, 0xa7, 0x4e, 0x30, 0x1a, 0xc7, 0xf4, 0x35, 0x69, + 0x1b, 0x8a, 0xcd, 0xe9, 0xbe, 0x22, 0xa0, 0xcf, 0xa1, 0x12, 0x30, 0x96, 0x10, 0xd6, 0x2e, 0xdf, + 0x2d, 0xdd, 0xaf, 0x6f, 0x7f, 0xb8, 0xa5, 0x57, 0xbb, 0xb5, 0x68, 0x71, 0x5b, 0xfb, 0x02, 0x8b, + 0xb5, 0x08, 0xfa, 0x12, 0x56, 0xbc, 0x73, 0x97, 0x3b, 0xe7, 0x01, 0xe3, 0x34, 0xbe, 0x6a, 0x57, + 0xa4, 0x8a, 0xad, 0xeb, 0x55, 0xec, 0x9d, 0xbb, 0xbc, 0xa7, 0x04, 0xba, 0x11, 0x8f, 0xaf, 0x70, + 0xdd, 0x9b, 0x50, 0xec, 0xaf, 0xc0, 0x9a, 0x05, 0x20, 0x0b, 0x4a, 0xaf, 0xc8, 0x95, 0x34, 0x47, + 0x0d, 0x8b, 0x9f, 0xe8, 0x31, 0x94, 0x5f, 0xbb, 0x61, 0x42, 0xa4, 0x29, 0xea, 0xdb, 0x76, 0x36, + 0xa3, 0xb2, 0xbb, 0xd0, 0xb0, 0x47, 0x23, 0x4e, 0xde, 0x70, 0xac, 0x80, 0x4f, 0x8b, 0xbf, 0x28, + 0xd8, 0x0e, 0x94, 0xe5, 0xfa, 0xd1, 0x5d, 0xa8, 0xfb, 0x84, 0x79, 0x71, 0x30, 0x16, 0x6b, 0xd3, + 0x8a, 0xf3, 0x24, 0xf4, 0x1e, 0x00, 0x4b, 0x86, 0x43, 0xc2, 0x24, 0xa0, 0x28, 0x01, 0x39, 0x0a, + 0x5a, 0x87, 0x72, 0xe8, 0x9e, 0x91, 0xd4, 0xde, 0x6a, 0x70, 0xef, 0x5f, 0x7e, 0x0d, 0x8d, 0xa9, + 0x3d, 0xa3, 0x26, 0x14, 0x03, 0x5f, 0x4f, 0x50, 0x0c, 0xe4, 0x61, 0x8d, 0x63, 0x7a, 0x41, 0x3c, + 0xee, 0x04, 0xbe, 0xd6, 0x5b, 0xd3, 0x94, 0x7d, 0x1f, 0x3d, 0x81, 0x0a, 0xe3, 0x2e, 0x4f, 0x98, + 0xd4, 0xdb, 0xdc, 0x7e, 0x77, 0xb1, 0x29, 0xb7, 0xfa, 0x12, 0x84, 0x35, 0x18, 0x3d, 0x84, 0x55, + 0xe5, 0xb4, 0xf9, 0x5d, 0xa9, 0xa3, 0xb6, 0x24, 0xe3, 0x59, 0x6e, 0x6b, 0xeb, 0x50, 0x26, 0x71, + 0x4c, 0xe3, 0x76, 0x59, 0x2d, 0x5d, 0x0e, 0xd0, 0x0e, 0x80, 0x17, 0x13, 0x97, 0x13, 0xdf, 0x71, + 0x79, 0xbb, 0xa2, 0xcd, 0xaa, 0xbc, 0x7e, 0x2b, 0xf5, 0xfa, 0xad, 0x41, 0xea, 0xf5, 0xb8, 0xa6, + 0xd1, 0xbb, 0x1c, 0x6d, 0x81, 0x71, 0x41, 0xcf, 0x58, 0xbb, 0x2a, 0x4f, 0xdf, 0x5e, 0xb2, 0xe4, + 0x03, 0x7a, 0x86, 0x25, 0x4e, 0xd8, 0x40, 0xad, 0x36, 0x72, 0x47, 0xa4, 0x5d, 0x53, 0x36, 0x90, + 0x94, 0x63, 0x77, 0x44, 0xd0, 0xaf, 0xa0, 0xc9, 0x3c, 0x12, 0xb9, 0x71, 0x40, 0x9d, 0x61, 0x4c, + 0x93, 0x71, 0x1b, 0xe4, 0x6a, 0x36, 0x27, 0x8a, 0x35, 0xfb, 0xb9, 0xe0, 0xe2, 0x06, 0xcb, 0x0f, + 0xd1, 0x13, 0x30, 0x49, 0xe4, 0xab, 0x6d, 0xd4, 0xdf, 0xba, 0x8d, 0xaa, 0xc4, 0xee, 0x72, 0xf4, + 0x0e, 0xd4, 0x2e, 0xe8, 0x99, 0xe3, 0xd1, 0x24, 0xe2, 0xed, 0x15, 0x19, 0x60, 0xe6, 0x05, 0x3d, + 0xdb, 0x13, 0x63, 0xf4, 0x01, 0xac, 0xa8, 0x20, 0xd4, 0xfc, 0x86, 0xe4, 0xd7, 0x15, 0x2d, 0x83, + 0xa8, 0x78, 0xd4, 0x90, 0xa6, 0x82, 0x28, 0x9a, 0x82, 0xfc, 0x04, 0x5a, 0x51, 0x32, 0xca, 0xe5, + 0x21, 0xd6, 0x6e, 0x49, 0x54, 0x33, 0x4a, 0x46, 0x13, 0x63, 0x31, 0xb4, 0x0d, 0xe5, 0x84, 0xb9, + 0x43, 0xd2, 0xb6, 0xe4, 0xfa, 0x7f, 0xb4, 0xc4, 0xa2, 0xa7, 0x02, 0x83, 0x15, 0x54, 0xb8, 0xb4, + 0x47, 0x23, 0x2f, 0x89, 0x63, 0x12, 0x79, 0x57, 0xed, 0x55, 0x35, 0x7d, 0x8e, 0x84, 0x1e, 0x82, + 0x21, 0x12, 0x50, 0x1b, 0x49, 0xcf, 0xba, 0xbd, 0x40, 0xe9, 0x11, 0xf5, 0x09, 0x96, 0x20, 0xf4, + 0x39, 0x54, 0x47, 0x84, 0xc7, 0x81, 0xc7, 0xda, 0x6b, 0x72, 0x11, 0x1f, 0x2c, 0x59, 0x04, 0x4e, + 0xa2, 0x23, 0x05, 0xc4, 0xa9, 0x84, 0xb0, 0x05, 0x53, 0xc1, 0xee, 0xfc, 0x8e, 0x71, 0xbf, 0xbd, + 0x7e, 0xb7, 0x70, 0x7f, 0x05, 0xd7, 0x35, 0xed, 0x2b, 0xc6, 0x7d, 0xfb, 0xdf, 0xcb, 0x50, 0x3a, + 0xa0, 0x67, 0x73, 0xf1, 0xb1, 0x93, 0x05, 0x40, 0x51, 0x2e, 0xf3, 0x83, 0xe5, 0xde, 0x34, 0x1b, + 0x04, 0xf7, 0x60, 0x25, 0x88, 0x18, 0x8f, 0x13, 0x4f, 0xd9, 0x56, 0x45, 0xe6, 0x14, 0x6d, 0xe2, + 0xfb, 0x46, 0xde, 0xf7, 0x7f, 0x0a, 0x48, 0x39, 0x24, 0x79, 0x33, 0x26, 0x1e, 0xd7, 0x67, 0xa3, + 0xc2, 0x43, 0x05, 0x56, 0x37, 0xc7, 0x98, 0xc4, 0x7e, 0x25, 0x17, 0xfb, 0x08, 0x81, 0xc1, 0xdd, + 0xa1, 0x8a, 0x82, 0x1a, 0x96, 0xbf, 0x85, 0x53, 0xc5, 0x94, 0x8e, 0x94, 0xa3, 0x9b, 0x12, 0x6d, + 0x0a, 0x82, 0xf4, 0xf3, 0x1d, 0x00, 0xc6, 0xdd, 0x58, 0x47, 0x1c, 0xbc, 0x3d, 0xe2, 0x34, 0x7a, + 0x97, 0x7f, 0x57, 0x1f, 0xbf, 0x0d, 0x55, 0xb9, 0x9c, 0xc0, 0x97, 0x1e, 0x5e, 0xc3, 0x15, 0x31, + 0xdc, 0xf7, 0xd1, 0xcf, 0x53, 0x87, 0x6b, 0x48, 0x65, 0x77, 0xaf, 0x31, 0xfa, 0x94, 0xd3, 0xe5, + 0xbc, 0xa4, 0x79, 0xad, 0x97, 0x1c, 0xd0, 0xb3, 0x59, 0x2f, 0xb1, 0xff, 0x0c, 0xca, 0x52, 0x19, + 0xba, 0x0f, 0x96, 0xc8, 0xd4, 0x0e, 0x4f, 0xe2, 0x88, 0xe9, 0xf0, 0x51, 0xa5, 0xaf, 0x29, 0xe8, + 0x03, 0x41, 0x56, 0x11, 0xf4, 0x00, 0x56, 0xdd, 0xc4, 0x0f, 0xe8, 0x14, 0x54, 0x55, 0xc3, 0x96, + 0x64, 0x4c, 0xb0, 0xf7, 0x28, 0x54, 0x94, 0x83, 0x20, 0x04, 0xcd, 0xfe, 0x60, 0x77, 0x70, 0xda, + 0x77, 0x4e, 0xba, 0xc7, 0xcf, 0xf6, 0x8f, 0x9f, 0x5b, 0xb7, 0x72, 0x34, 0x7c, 0x7a, 0x7c, 0x2c, + 0x68, 0x05, 0xb4, 0x0e, 0x96, 0xa6, 0xed, 0xbd, 0x38, 0x3a, 0x39, 0xec, 0x0e, 0xba, 0xcf, 0xac, + 0x22, 0x5a, 0x85, 0x86, 0xa6, 0x7e, 0xb1, 0xbb, 0x7f, 0xd8, 0x7d, 0x66, 0x95, 0xf2, 0xc0, 0xdd, + 0xe3, 0xbd, 0xee, 0xa1, 0xa0, 0x1a, 0x07, 0x86, 0x59, 0xb3, 0xc0, 0xfe, 0xe6, 0x23, 0x80, 0xc9, + 0x6e, 0xd1, 0x03, 0x68, 0xba, 0x9e, 0x97, 0xc4, 0xae, 0x77, 0xe5, 0x30, 0x8f, 0xc6, 0x44, 0xee, + 0xac, 0xd8, 0xbb, 0x85, 0x1b, 0x29, 0xbd, 0x2f, 0xc8, 0x5f, 0x17, 0x0a, 0x68, 0x0b, 0x2c, 0xe1, + 0x80, 0x71, 0x40, 0x22, 0x8f, 0x68, 0x74, 0x51, 0xa2, 0x0b, 0xb8, 0x35, 0xe1, 0x64, 0xf8, 0x4f, + 0xa0, 0xc5, 0x5d, 0xf6, 0xca, 0xf1, 0xe8, 0x68, 0x1c, 0x12, 0x99, 0xf3, 0x4b, 0x12, 0x5e, 0xc4, + 0x4d, 0xc1, 0xd8, 0xcb, 0xe8, 0x02, 0xfd, 0x19, 0x94, 0x18, 0xe7, 0xd2, 0xf1, 0xeb, 0xdb, 0x1f, + 0xbf, 0xf5, 0x9c, 0xb6, 0xfa, 0x83, 0x01, 0x16, 0x12, 0x42, 0x30, 0x0c, 0x47, 0x32, 0x1c, 0x6e, + 0x24, 0x78, 0x78, 0x78, 0x84, 0x85, 0x84, 0x10, 0xe4, 0x9c, 0xe9, 0x5a, 0x72, 0x03, 0xc1, 0xc1, + 0xa0, 0x8f, 0x85, 0x04, 0xc2, 0xb0, 0xe2, 0xd1, 0xe8, 0x35, 0x89, 0x99, 0x84, 0xb5, 0xab, 0x52, + 0xc3, 0xd6, 0xdb, 0x35, 0xec, 0xe5, 0xa4, 0xf0, 0x94, 0x0e, 0xb4, 0x0f, 0x35, 0x9d, 0x78, 0x69, + 0x2c, 0x43, 0xb1, 0xbe, 0xfd, 0xf0, 0x06, 0x46, 0x48, 0x45, 0xf0, 0x44, 0x1a, 0xfd, 0x12, 0xca, + 0xd2, 0xff, 0xda, 0x35, 0x59, 0xf0, 0x7e, 0x7c, 0x83, 0x9d, 0x25, 0x71, 0x84, 0x95, 0x10, 0x7a, + 0x1f, 0xea, 0x17, 0x89, 0x3f, 0x24, 0xea, 0x36, 0x28, 0xe3, 0xbe, 0x86, 0x41, 0x92, 0x44, 0xfe, + 0x0d, 0x27, 0x4e, 0x9e, 0x87, 0xd5, 0x25, 0x4c, 0x39, 0xf9, 0xc1, 0x04, 0xfb, 0x09, 0xa0, 0x73, + 0x97, 0x39, 0x31, 0x19, 0x51, 0x4e, 0xd2, 0x2b, 0xab, 0x0c, 0x6e, 0x13, 0x5b, 0xe7, 0x2e, 0xc3, + 0x92, 0xd1, 0x57, 0x74, 0xf4, 0x00, 0x8a, 0xfc, 0xb1, 0x8e, 0xf1, 0xeb, 0x12, 0x46, 0x91, 0x3f, + 0x46, 0x1f, 0xab, 0x7a, 0x12, 0x30, 0x12, 0x11, 0xa6, 0xc2, 0xbb, 0xd8, 0x2b, 0xe1, 0x3c, 0x51, + 0x78, 0xd5, 0x0e, 0x6c, 0x26, 0x51, 0x44, 0x3c, 0xc2, 0x98, 0x48, 0xf7, 0x9c, 0xd2, 0xd0, 0xf1, + 0xdc, 0x30, 0x54, 0xa5, 0xcd, 0xec, 0x19, 0x78, 0x3d, 0xc7, 0x1f, 0x50, 0x1a, 0xee, 0x09, 0xae, + 0x76, 0xf7, 0x20, 0x7a, 0x49, 0xe3, 0x91, 0xb4, 0x98, 0x13, 0x52, 0xc6, 0x64, 0xc1, 0x33, 0x7b, + 0x65, 0xdc, 0xca, 0x71, 0x0e, 0xa9, 0x9a, 0xea, 0xe7, 0xb0, 0x1e, 0x13, 0x3f, 0x89, 0x7c, 0x57, + 0xdc, 0xce, 0xb9, 0xcb, 0xc9, 0x88, 0x44, 0x9c, 0xc9, 0x52, 0x67, 0xf6, 0x2a, 0x78, 0x2d, 0xe3, + 0xf6, 0x33, 0xa6, 0x72, 0xfc, 0x8d, 0x31, 0xa5, 0xb1, 0xf3, 0xdb, 0x44, 0xdd, 0xdd, 0x9c, 0xdf, + 0x26, 0x6e, 0x18, 0xf0, 0x2b, 0x59, 0x08, 0xcd, 0x5e, 0x15, 0xaf, 0x09, 0xf6, 0x97, 0x9a, 0xfb, + 0xa5, 0x62, 0x0a, 0xc1, 0x3f, 0x84, 0x76, 0xde, 0x85, 0x9c, 0x71, 0x4c, 0x87, 0xb1, 0x36, 0xf1, + 0x9a, 0xb4, 0x87, 0x89, 0x6f, 0xe7, 0x11, 0x27, 0x13, 0xc0, 0xd7, 0x85, 0x82, 0xfd, 0x3f, 0x06, + 0x94, 0xfa, 0x83, 0x01, 0xda, 0x80, 0xd2, 0x25, 0x89, 0xb3, 0xc0, 0x17, 0x03, 0xa1, 0xfe, 0x0e, + 0x94, 0x2f, 0x69, 0xec, 0xab, 0x4a, 0xd7, 0xe8, 0x15, 0xb0, 0x1a, 0x0a, 0xd6, 0x47, 0x50, 0x17, + 0xbf, 0x1d, 0x59, 0x9e, 0x54, 0x25, 0x6b, 0xf4, 0x8a, 0x18, 0x04, 0xb1, 0x2b, 0x69, 0x02, 0xb5, + 0x01, 0x25, 0x8f, 0xa8, 0x52, 0x26, 0x8e, 0x46, 0x0c, 0xb4, 0x5e, 0xef, 0xdc, 0x8d, 0x99, 0xbc, + 0x59, 0x35, 0x7a, 0x06, 0x56, 0x43, 0xad, 0x57, 0xfc, 0x4e, 0xf5, 0x82, 0x04, 0x94, 0x31, 0x08, + 0xe2, 0x44, 0xef, 0xaf, 0xa0, 0xcd, 0x63, 0x37, 0xca, 0x6e, 0x8c, 0x4e, 0xe8, 0x72, 0x71, 0x83, + 0x70, 0x46, 0x4c, 0x46, 0x4e, 0xa3, 0x57, 0xc1, 0x9b, 0x53, 0x88, 0x43, 0x05, 0x38, 0x92, 0xe2, + 0xdb, 0x80, 0x48, 0xc4, 0x03, 0x7e, 0xe5, 0xc4, 0xc4, 0xa3, 0xc3, 0x28, 0x90, 0x31, 0x5c, 0x97, + 0xab, 0xac, 0xe2, 0x55, 0xc5, 0xc3, 0x13, 0x56, 0x9a, 0xfa, 0x04, 0x3d, 0x20, 0xcc, 0x49, 0x38, + 0x27, 0x31, 0x51, 0x25, 0xaa, 0xd1, 0x33, 0x71, 0x2b, 0xe5, 0x9c, 0x2a, 0x86, 0xc0, 0xff, 0x0c, + 0xd6, 0x32, 0xbc, 0x9e, 0xe5, 0x77, 0xc4, 0x97, 0xae, 0xdd, 0xe8, 0xd5, 0x30, 0x4a, 0x99, 0x38, + 0xe3, 0x7d, 0x5d, 0x28, 0x74, 0x2a, 0x60, 0x38, 0x97, 0x24, 0xee, 0x98, 0x50, 0x71, 0xa4, 0xad, + 0x3b, 0x4d, 0x58, 0x71, 0x72, 0x96, 0x96, 0x08, 0x4f, 0x23, 0xa4, 0xd5, 0x24, 0x22, 0x67, 0xb3, + 0xce, 0x3b, 0x70, 0xc7, 0x59, 0x66, 0x9d, 0xce, 0x06, 0xac, 0x39, 0xf3, 0x7b, 0xef, 0xac, 0xc1, + 0xaa, 0x33, 0xbb, 0xbd, 0xce, 0x26, 0xac, 0x3b, 0x0b, 0xf6, 0x70, 0x60, 0x98, 0x65, 0xab, 0x72, + 0x60, 0x98, 0x15, 0xab, 0x7a, 0x60, 0x98, 0x55, 0xcb, 0xc4, 0xcd, 0x57, 0xe4, 0x8a, 0x93, 0x78, + 0x24, 0x50, 0x6e, 0x18, 0x62, 0x4b, 0x8f, 0x33, 0x5d, 0x78, 0x2d, 0xa3, 0x4c, 0x14, 0xd9, 0xdf, + 0x14, 0xa0, 0x74, 0x78, 0x78, 0x84, 0x7e, 0x04, 0x55, 0xce, 0x5f, 0x72, 0x71, 0x7a, 0x05, 0x69, + 0x9f, 0x5b, 0xb8, 0x22, 0x08, 0xea, 0xb4, 0x14, 0x97, 0x09, 0x6e, 0xea, 0x87, 0x82, 0xcb, 0x14, + 0xf7, 0x11, 0xac, 0x72, 0xfa, 0x8a, 0x44, 0xcc, 0x19, 0x93, 0xd8, 0x61, 0xc4, 0xa3, 0x91, 0x9f, + 0x15, 0x99, 0x96, 0x62, 0x9d, 0x90, 0xb8, 0x2f, 0x19, 0xc2, 0xc4, 0x00, 0xa6, 0xa3, 0x67, 0x4b, + 0x7f, 0x0b, 0xdd, 0x9d, 0x75, 0x40, 0xce, 0x9c, 0xa6, 0x03, 0xc3, 0x34, 0xac, 0x32, 0x5e, 0xcd, + 0xe5, 0x14, 0x55, 0xf6, 0xec, 0xff, 0x2e, 0x43, 0x69, 0x30, 0xe8, 0xeb, 0xd5, 0xb9, 0xb3, 0x6b, + 0x77, 0xf3, 0x6b, 0x3f, 0x9b, 0x5d, 0xfb, 0xd9, 0x51, 0x1a, 0x1e, 0x22, 0xec, 0xd2, 0xd5, 0xce, + 0x85, 0x5d, 0x55, 0x8a, 0x94, 0x96, 0x87, 0x9d, 0xa9, 0xe3, 0x67, 0x71, 0xd8, 0xd5, 0xa4, 0xde, + 0xf2, 0x7c, 0xd8, 0x81, 0x0e, 0x91, 0xa5, 0x61, 0x57, 0x97, 0x80, 0xea, 0x6c, 0xd8, 0x3d, 0x86, + 0xd5, 0xc8, 0xe5, 0x49, 0xec, 0x86, 0x13, 0x43, 0xc8, 0xaa, 0x2b, 0xf2, 0x8c, 0x95, 0x63, 0x65, + 0x17, 0x80, 0xc7, 0xb0, 0x4a, 0xa2, 0x24, 0xf2, 0x02, 0x95, 0x9f, 0x94, 0x44, 0x45, 0x4a, 0xd4, + 0xb0, 0x95, 0x63, 0x65, 0x12, 0x8b, 0x63, 0x53, 0x25, 0x77, 0xf8, 0x16, 0xb1, 0xd9, 0x92, 0x5b, + 0xa8, 0x7f, 0x9b, 0xd8, 0xb4, 0xa4, 0xc8, 0xca, 0xb2, 0xd8, 0xd4, 0xce, 0xe2, 0xe6, 0x1c, 0x47, + 0x1c, 0xec, 0xf7, 0x12, 0xb3, 0xc2, 0xf9, 0xe6, 0x4c, 0x2b, 0xa9, 0x73, 0xe6, 0xfb, 0x9e, 0x42, + 0xd8, 0xb0, 0xca, 0x07, 0x86, 0xb9, 0x62, 0x35, 0x0e, 0x0c, 0xb3, 0x61, 0x35, 0x71, 0x8b, 0x8d, + 0x09, 0xf1, 0xce, 0x9d, 0xd8, 0xe5, 0xc4, 0xb9, 0x1c, 0x8f, 0x70, 0xfd, 0x9c, 0xb8, 0xb1, 0xaf, + 0x76, 0x84, 0x6b, 0x9a, 0x3b, 0x62, 0xf6, 0x3f, 0xd5, 0x60, 0x25, 0x7f, 0x8b, 0x91, 0x11, 0x98, + 0xc4, 0x91, 0xc3, 0xdd, 0x57, 0x41, 0x34, 0x9c, 0xb9, 0x43, 0xb6, 0x04, 0x6b, 0x20, 0x39, 0xd9, + 0x11, 0x3f, 0x85, 0xdb, 0x31, 0x61, 0x63, 0x1a, 0x31, 0x92, 0xa5, 0xa6, 0xf1, 0x93, 0xc7, 0x69, + 0x90, 0x94, 0x7b, 0x05, 0xbc, 0x9e, 0x02, 0x74, 0xde, 0x3e, 0x79, 0xf2, 0x58, 0x85, 0xcc, 0x42, + 0xd9, 0x9d, 0x27, 0x42, 0xb6, 0x24, 0x65, 0x8b, 0xf3, 0xb2, 0x3b, 0x4f, 0xae, 0x93, 0xdd, 0x11, + 0xb2, 0x86, 0x94, 0x2d, 0x2d, 0x90, 0xdd, 0x51, 0xb2, 0x9f, 0xc2, 0xda, 0x9c, 0xec, 0x48, 0xdd, + 0x06, 0xca, 0x3d, 0x03, 0xaf, 0xce, 0xc8, 0x29, 0xa1, 0x5f, 0xc0, 0xa6, 0x7a, 0xb5, 0x5d, 0x05, + 0x24, 0xf4, 0xf3, 0x72, 0x65, 0x5d, 0xd7, 0xd6, 0x24, 0xff, 0x37, 0x82, 0x3d, 0x25, 0xf9, 0x39, + 0xdc, 0x26, 0x94, 0x3b, 0xa3, 0x80, 0x8d, 0x63, 0xe2, 0x07, 0xf2, 0x6d, 0xa8, 0x1f, 0x13, 0x15, + 0x1d, 0xbc, 0x1b, 0x84, 0xf2, 0xa3, 0x3c, 0x5f, 0x3e, 0x2a, 0x84, 0xf0, 0x7d, 0x68, 0xd0, 0xd7, + 0x24, 0x0e, 0xdd, 0xb1, 0x38, 0xcd, 0x80, 0xca, 0x3c, 0x22, 0x2a, 0xdb, 0x8a, 0x26, 0x63, 0x41, + 0xd5, 0xc9, 0x33, 0x45, 0x66, 0x07, 0xac, 0x93, 0x8a, 0x89, 0x5b, 0x9a, 0xd5, 0x97, 0x1c, 0xb5, + 0xae, 0x87, 0xd0, 0xe2, 0x94, 0xbb, 0x61, 0x0e, 0x5e, 0xd3, 0x15, 0xad, 0x21, 0x19, 0x79, 0xf0, + 0x67, 0xb0, 0xe1, 0x5e, 0xbe, 0xba, 0x14, 0x5e, 0xc4, 0x82, 0x50, 0x3e, 0x19, 0xd4, 0x16, 0x54, + 0x7a, 0x01, 0xbc, 0xa6, 0xd9, 0x7d, 0xc5, 0xcd, 0x36, 0xb0, 0x05, 0x56, 0x12, 0xb9, 0x11, 0xbb, + 0x14, 0x3e, 0xac, 0x5e, 0x52, 0xba, 0xd6, 0xd6, 0x71, 0x6b, 0xc2, 0x91, 0x4f, 0x29, 0x7d, 0x1d, + 0x78, 0xe9, 0x86, 0x8c, 0x38, 0x41, 0xc4, 0x49, 0x1c, 0x27, 0xe3, 0x9c, 0xb9, 0x1a, 0x3a, 0xa8, + 0x37, 0x25, 0x62, 0x3f, 0x07, 0xc8, 0xa6, 0xeb, 0xc2, 0xbb, 0xea, 0x98, 0x62, 0x32, 0xa6, 0xf2, + 0xb5, 0x4b, 0xb6, 0xa7, 0x4e, 0x59, 0xe5, 0x92, 0x06, 0xbe, 0x23, 0x61, 0x58, 0xa3, 0xba, 0xdb, + 0x53, 0xa7, 0xad, 0x0a, 0xc8, 0x6c, 0x20, 0x74, 0x6c, 0x68, 0x3b, 0x4b, 0xbc, 0x7d, 0x09, 0x4f, + 0x7a, 0xf3, 0x32, 0x9e, 0xf0, 0x56, 0x19, 0xd5, 0x0b, 0xbc, 0xb1, 0x73, 0x07, 0x6e, 0x3b, 0x8b, + 0x1d, 0x4e, 0xaa, 0x5b, 0xe2, 0x51, 0x1d, 0x0b, 0x9a, 0xce, 0x94, 0xc3, 0xc8, 0xad, 0xcc, 0x39, + 0x46, 0x07, 0x81, 0xe5, 0xcc, 0x9c, 0x7e, 0xa7, 0x0d, 0x9b, 0xce, 0xc2, 0x43, 0x96, 0xf9, 0x68, + 0xf6, 0x14, 0xe5, 0xdd, 0x64, 0xd9, 0x51, 0x75, 0xee, 0xc2, 0x7b, 0xce, 0xb5, 0x07, 0x71, 0x60, + 0x98, 0x60, 0xd5, 0x0f, 0x0c, 0xb3, 0x69, 0xb5, 0xb0, 0x95, 0x4e, 0xa7, 0x96, 0x34, 0x62, 0xf8, + 0xa3, 0x05, 0x9a, 0x93, 0x48, 0x64, 0xbd, 0xd7, 0x72, 0x09, 0x72, 0x16, 0xfb, 0xaf, 0x0a, 0x50, + 0xcb, 0x1e, 0x4d, 0xb2, 0x40, 0xb9, 0x71, 0x78, 0xe5, 0x88, 0xcb, 0x49, 0x10, 0xb9, 0xd9, 0xd7, + 0x56, 0xb3, 0x77, 0x0b, 0x5b, 0x92, 0x35, 0x98, 0x70, 0xb4, 0x73, 0x8a, 0x15, 0x4d, 0x09, 0x14, + 0xa5, 0x40, 0x01, 0xb7, 0x04, 0x67, 0x1a, 0xaf, 0x92, 0xf8, 0xec, 0x14, 0xd2, 0x3a, 0xb3, 0x6a, + 0xec, 0x7f, 0x2b, 0x81, 0x21, 0x9c, 0x1a, 0xad, 0x43, 0x39, 0x88, 0x7c, 0xf2, 0x46, 0x5d, 0x29, + 0xb0, 0x1a, 0xa0, 0x87, 0x60, 0xc4, 0x34, 0x24, 0xfa, 0xbb, 0xd3, 0xed, 0x05, 0x5f, 0x94, 0x31, + 0x0d, 0x09, 0x96, 0x20, 0xf4, 0x1e, 0x98, 0xf2, 0x6b, 0x4c, 0x9a, 0x19, 0xc5, 0xc5, 0xa4, 0x2a, + 0x29, 0x2a, 0x38, 0x6d, 0xa8, 0x90, 0xc8, 0x4f, 0x73, 0x9f, 0xbc, 0xdc, 0x93, 0xc8, 0x4f, 0x03, + 0x57, 0x3e, 0xc4, 0xcb, 0xdf, 0xf5, 0x21, 0x5e, 0xf9, 0xae, 0x0f, 0xf1, 0xea, 0xff, 0xf9, 0x21, + 0x6e, 0x7e, 0x0f, 0x0f, 0xf1, 0x99, 0x87, 0x65, 0x4d, 0x5f, 0xcf, 0x66, 0x1e, 0x96, 0x9d, 0x3a, + 0xd4, 0x9c, 0xd4, 0xc4, 0x9d, 0x1a, 0x54, 0x1d, 0x65, 0x4f, 0x55, 0xdb, 0x27, 0xd0, 0xce, 0x2a, + 0xb4, 0x9c, 0xe9, 0x2f, 0x2c, 0xaa, 0x56, 0xcf, 0x7c, 0x48, 0x51, 0xe1, 0x35, 0xfd, 0xb5, 0x64, + 0x4e, 0x97, 0x88, 0xf0, 0xc5, 0xaf, 0x59, 0xa9, 0x73, 0xf6, 0xb5, 0xda, 0xb9, 0x0d, 0x1b, 0xce, + 0xa2, 0x27, 0xa9, 0x8c, 0xdb, 0x85, 0x6f, 0x4e, 0x19, 0xa2, 0xcb, 0x1e, 0x95, 0xf6, 0x5f, 0x1b, + 0x00, 0x93, 0xef, 0xa9, 0x3f, 0xe8, 0xb7, 0xa3, 0x3f, 0x00, 0x94, 0x7d, 0x64, 0x1f, 0xbb, 0x8c, + 0xc9, 0x9b, 0x49, 0x76, 0x57, 0xb6, 0x52, 0xde, 0x89, 0xcb, 0x18, 0x76, 0x39, 0xf9, 0xff, 0x0f, + 0x48, 0x37, 0x76, 0x34, 0x71, 0x81, 0x9c, 0x37, 0xad, 0xfa, 0x3a, 0x98, 0xa5, 0xd8, 0xba, 0xb5, + 0x82, 0xe1, 0x82, 0x9e, 0x31, 0x95, 0x5f, 0x71, 0x43, 0xfe, 0x1e, 0x11, 0x97, 0x25, 0xe2, 0x3d, + 0xb7, 0x2e, 0x87, 0xd9, 0x17, 0x27, 0xe7, 0xa5, 0x9b, 0x84, 0xdc, 0xfe, 0xaf, 0x12, 0x54, 0xf6, + 0x64, 0xd7, 0xc5, 0xfe, 0x8f, 0x22, 0x54, 0x31, 0x91, 0xde, 0x35, 0xd3, 0x52, 0x2a, 0xcc, 0xb6, + 0x94, 0xa6, 0xbb, 0x2d, 0xc5, 0xd9, 0x6e, 0xcb, 0x82, 0xa6, 0x84, 0xb1, 0xb0, 0x29, 0xb1, 0x09, + 0x95, 0x98, 0x0c, 0x85, 0x35, 0x2b, 0xfa, 0xdb, 0xb1, 0x1c, 0xa1, 0xce, 0x5c, 0xbb, 0xa6, 0x7a, + 0x5d, 0xbb, 0x46, 0x78, 0xef, 0x54, 0xc3, 0x46, 0xb8, 0xd6, 0xc7, 0xd3, 0xcd, 0x0b, 0x53, 0xdf, + 0x53, 0xf3, 0x44, 0x75, 0x3f, 0x52, 0x1d, 0x8c, 0xda, 0x0d, 0x3a, 0x18, 0xf2, 0xbc, 0xa6, 0x17, + 0x96, 0xc5, 0xbb, 0x56, 0x79, 0x60, 0x98, 0x25, 0xcb, 0xc0, 0xf3, 0xad, 0x33, 0xfb, 0x2f, 0x0a, + 0x60, 0x62, 0x7d, 0x05, 0x40, 0x0f, 0x60, 0x75, 0x62, 0x1d, 0x27, 0x4e, 0xa2, 0x89, 0x99, 0x5b, + 0x2c, 0xef, 0x48, 0xfb, 0x3e, 0xea, 0xc3, 0xe6, 0x38, 0x26, 0x2c, 0x18, 0x46, 0xc4, 0x77, 0xc6, + 0x94, 0x89, 0x62, 0x2b, 0x4f, 0x49, 0x37, 0x2a, 0x27, 0xfd, 0xbc, 0x93, 0x14, 0x76, 0x42, 0x19, + 0xd7, 0x47, 0x89, 0xd7, 0xc7, 0x0b, 0xa8, 0xf6, 0xdf, 0x16, 0x60, 0x6d, 0x8f, 0x46, 0x2f, 0x83, + 0x78, 0xd4, 0xa7, 0x49, 0xec, 0x91, 0xd3, 0x71, 0x48, 0x5d, 0xdf, 0xfe, 0xf3, 0x1b, 0xfb, 0xc0, + 0xc2, 0x2d, 0x14, 0x17, 0x6f, 0xe1, 0x27, 0xd0, 0xf2, 0xa8, 0x4f, 0xc4, 0xc3, 0x26, 0xbe, 0x1a, + 0xd3, 0x20, 0xe2, 0xba, 0x93, 0xd2, 0x14, 0xe4, 0x6e, 0x46, 0xb5, 0x61, 0x62, 0x23, 0xfb, 0x2f, + 0x0b, 0x50, 0x7a, 0x4e, 0xb8, 0x3d, 0xf8, 0x21, 0x96, 0x64, 0xff, 0x2c, 0x77, 0x1a, 0xf7, 0xa1, + 0x14, 0x27, 0xea, 0x12, 0x31, 0xe5, 0x63, 0x79, 0x11, 0x2c, 0x20, 0xf6, 0x3f, 0x17, 0xc1, 0x38, + 0x0c, 0x18, 0xb7, 0xff, 0xb1, 0x70, 0xe3, 0x55, 0x3d, 0x9d, 0x69, 0x3f, 0x5d, 0xdf, 0x7f, 0xed, + 0xdd, 0x4a, 0x9b, 0x4f, 0xc2, 0x3b, 0x7f, 0x09, 0x30, 0x76, 0x87, 0x44, 0x7d, 0xe6, 0x90, 0x36, + 0xab, 0x6f, 0xb7, 0x33, 0xf9, 0x81, 0xa0, 0x9e, 0xb8, 0x43, 0x7d, 0x1b, 0xe9, 0x15, 0x70, 0x4d, + 0xa0, 0x25, 0x59, 0xd4, 0x3b, 0x51, 0xe2, 0x94, 0xae, 0x4e, 0x03, 0xea, 0xce, 0x44, 0x93, 0xfd, + 0x66, 0xca, 0x17, 0x8d, 0x38, 0x89, 0x58, 0xbb, 0x20, 0xbf, 0x3c, 0x2f, 0xdb, 0xbe, 0xc4, 0xa0, + 0x5f, 0x43, 0x2b, 0x22, 0x6f, 0x78, 0x4e, 0x95, 0x76, 0xc2, 0xa5, 0x8b, 0xc2, 0x0d, 0x21, 0x70, + 0x92, 0x2e, 0xcb, 0xbe, 0x80, 0xca, 0x9e, 0x1b, 0x79, 0x24, 0xfc, 0x81, 0xce, 0x35, 0xef, 0x41, + 0x3f, 0x70, 0x37, 0xe8, 0xf7, 0x85, 0xac, 0x1d, 0x74, 0x07, 0x36, 0xa6, 0xdb, 0x41, 0xce, 0xe9, + 0xc9, 0xe1, 0x8b, 0xdd, 0x67, 0xd6, 0x2d, 0xb4, 0x01, 0xab, 0x9a, 0xf5, 0xbc, 0x7b, 0xdc, 0xc5, + 0xbb, 0x03, 0xd5, 0x18, 0x9a, 0x6f, 0x16, 0x15, 0xd1, 0x26, 0x20, 0x4d, 0xeb, 0x9f, 0x1e, 0x1d, + 0xed, 0xe2, 0xfd, 0xaf, 0x04, 0xbd, 0xb4, 0xb0, 0x89, 0x64, 0xcc, 0x37, 0x91, 0xca, 0x0b, 0x9b, + 0x48, 0x95, 0x03, 0xc3, 0x34, 0xad, 0x1a, 0xae, 0xea, 0x56, 0xe9, 0xbd, 0xdf, 0x97, 0xc0, 0x4c, + 0xd3, 0xe7, 0xa4, 0xef, 0x58, 0xc8, 0xf7, 0x1d, 0x67, 0xdb, 0x9e, 0xc5, 0x05, 0x6d, 0xcf, 0xc5, + 0x0d, 0xce, 0xd2, 0xb2, 0x06, 0xe7, 0x23, 0xdd, 0xca, 0x34, 0xa4, 0x97, 0xbd, 0x33, 0x97, 0xc8, + 0xb7, 0x06, 0xee, 0x90, 0xa9, 0xff, 0x6e, 0xa8, 0x3e, 0xa7, 0x0d, 0x66, 0xc2, 0x48, 0xec, 0xbb, + 0xdc, 0xd5, 0x6d, 0xd3, 0x6c, 0x6c, 0xff, 0x5d, 0x01, 0x56, 0x55, 0xd5, 0xfa, 0x22, 0xa6, 0x23, + 0xdd, 0x8a, 0xb0, 0x7f, 0x73, 0x63, 0x87, 0xca, 0x35, 0x2d, 0x8b, 0x53, 0x4d, 0xcb, 0x49, 0x41, + 0x2a, 0xe5, 0x0b, 0x92, 0xbd, 0x93, 0x8b, 0x97, 0x9f, 0x82, 0x99, 0xd6, 0x00, 0x9d, 0x32, 0x56, + 0xe7, 0x76, 0x83, 0x33, 0x88, 0xfd, 0x19, 0xd4, 0xb2, 0xad, 0x2d, 0xf8, 0xd7, 0xc9, 0x7a, 0xfe, + 0x5f, 0x27, 0xb5, 0xdc, 0x3f, 0x4b, 0xee, 0x0d, 0xa0, 0x31, 0x55, 0xe5, 0x10, 0x02, 0x43, 0xd6, + 0x5b, 0x25, 0x2d, 0x7f, 0xa3, 0x47, 0x50, 0x4b, 0x67, 0x12, 0xc7, 0x54, 0x5a, 0xbc, 0x9a, 0x09, + 0xe6, 0xde, 0x3f, 0x14, 0x00, 0x4d, 0x22, 0xfb, 0x59, 0xc0, 0xc6, 0x2e, 0xf7, 0xce, 0xbf, 0x55, + 0x41, 0xda, 0x80, 0xca, 0x05, 0x3d, 0x9b, 0x18, 0xaf, 0x7c, 0x41, 0xcf, 0xf6, 0xfd, 0x29, 0xbb, + 0x94, 0xde, 0x6a, 0x97, 0xac, 0xf0, 0x1a, 0x37, 0x28, 0xbc, 0x0f, 0x5e, 0x42, 0x73, 0x9a, 0x8e, + 0xde, 0x87, 0x77, 0xfa, 0xfb, 0x47, 0xa7, 0x87, 0xbb, 0x83, 0xfd, 0x17, 0xc7, 0xce, 0xd1, 0x8b, + 0x67, 0x5d, 0xe7, 0xf4, 0xb8, 0x7f, 0xd2, 0xdd, 0xdb, 0xff, 0x62, 0xbf, 0x2b, 0xe2, 0xae, 0x0d, + 0xeb, 0xb3, 0x80, 0x41, 0xf7, 0x4f, 0x06, 0x56, 0x41, 0x06, 0xeb, 0x0c, 0x67, 0xf7, 0xf4, 0xd9, + 0xfe, 0x0b, 0xab, 0xb8, 0xfd, 0x37, 0x65, 0x68, 0xed, 0x0a, 0xdf, 0x9d, 0xcc, 0x86, 0x7c, 0x58, + 0x53, 0xbe, 0x36, 0xfd, 0x2f, 0x9c, 0x65, 0x77, 0x47, 0x85, 0xdd, 0x4a, 0x0b, 0xed, 0x8f, 0xdf, + 0x06, 0xd3, 0x5e, 0xf5, 0x75, 0x01, 0xde, 0x4d, 0x0b, 0x72, 0x06, 0xcc, 0x97, 0x66, 0xb4, 0xbd, + 0x4c, 0xd3, 0x7c, 0x19, 0xcf, 0x66, 0xff, 0xf4, 0x5b, 0xc9, 0xe8, 0xa5, 0xfc, 0x29, 0x58, 0xcf, + 0x09, 0x9f, 0xde, 0xed, 0xbd, 0x25, 0x8a, 0x9e, 0x13, 0x9e, 0x4d, 0xf6, 0xe1, 0xb5, 0x18, 0xad, + 0xdc, 0x01, 0x24, 0x0a, 0xe8, 0x14, 0x82, 0xa1, 0x65, 0xa2, 0x02, 0x9a, 0xe9, 0xff, 0xe8, 0x7a, + 0x90, 0x9e, 0x40, 0x1c, 0x97, 0x2c, 0x30, 0x37, 0x3c, 0x2e, 0x89, 0x7d, 0xfb, 0x71, 0xa5, 0x30, + 0x3d, 0xcb, 0x6b, 0xb8, 0xa3, 0x9d, 0x42, 0xfb, 0x73, 0x2e, 0x11, 0xa1, 0x87, 0xf3, 0xd9, 0x6d, + 0x2e, 0x5b, 0x65, 0x33, 0x7e, 0x72, 0x33, 0xb0, 0x9a, 0xb7, 0xf3, 0xc5, 0x57, 0x1f, 0x0e, 0x03, + 0x7e, 0x9e, 0x9c, 0x6d, 0x79, 0x74, 0x94, 0xfe, 0xbb, 0x50, 0xfd, 0x83, 0xd0, 0xa3, 0x61, 0x4a, + 0xf8, 0xfb, 0x62, 0xe3, 0x30, 0x78, 0x4d, 0xfe, 0x48, 0xde, 0x09, 0x29, 0xa7, 0xff, 0x59, 0x6c, + 0xea, 0xf1, 0xd3, 0xa7, 0x92, 0x70, 0x56, 0x91, 0x22, 0x9f, 0xfe, 0x6f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xd2, 0xd8, 0x04, 0x4a, 0xd0, 0x28, 0x00, 0x00, } From d2739d69511b2b82d10cd1534b6c6ec736933425 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Sun, 2 Aug 2026 21:58:54 -0700 Subject: [PATCH 13/32] agent-simulation: drop the metrics reservations Nothing consumes these metrics yet, so there is no wire compatibility to protect and the freed numbers can be reused. --- protobufs/livekit_agent_simulation.proto | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/protobufs/livekit_agent_simulation.proto b/protobufs/livekit_agent_simulation.proto index 1586fb124..704bb4c7f 100644 --- a/protobufs/livekit_agent_simulation.proto +++ b/protobufs/livekit_agent_simulation.proto @@ -126,18 +126,12 @@ message SimulationRun { optional float entity_recognition = 11; // recognized / uttered optional uint32 entities_uttered = 12; optional uint32 entities_recognized = 13; - - reserved 5, 6, 7; // was keyterm_recall, keyterms_uttered, keyterms_recognized - reserved "keyterm_recall", "keyterms_uttered", "keyterms_recognized"; } message LLM { optional uint32 ttft_ms = 1; // needs the RemoteSession; time to first token, mean (per-turn in turns) optional uint32 ttfs_ms = 2; // needs the RemoteSession; time to first sentence (the smallest speakable unit) optional float tokens_per_second = 3; // needs the RemoteSession; decode rate, mean (per-turn in turns.llm) - - reserved 4; // was conciseness_score, now on JobMetrics/Turn - reserved "conciseness_score"; } // The agent's voice. audio only. @@ -157,9 +151,6 @@ message SimulationRun { optional float entity_recognition = 14; // recognized / uttered optional uint32 entities_uttered = 15; optional uint32 entities_recognized = 16; - - reserved 4, 12, 13; // was speech_rate_wpm, heard_words, speech_ms - reserved "speech_rate_wpm", "heard_words", "speech_ms"; } // Audio only. @@ -178,9 +169,6 @@ message SimulationRun { optional uint32 unanswered_turns = 12; // the simulated party spoke, the agent never responded; 0/1 per turn optional uint32 false_interruption_count = 13; // needs the RemoteSession; agent paused for a non-interruption optional uint32 agent_reported_e2e_latency_ms = 15; // needs the RemoteSession; the agent's own claim, mean - - reserved 10, 14; // was silence_total_ms, false_interruption_unrecovered_count - reserved "silence_total_ms", "false_interruption_unrecovered_count"; } // Was the call spoiled by the simulator, not the agent? Diagnostic only — @@ -218,9 +206,6 @@ message SimulationRun { JobMetrics.LLM llm = 5; JobMetrics.TTS tts = 6; JobMetrics.Conversation conversation = 7; - - reserved 9, 10, 11; // was jobs_total, jobs_measured, jobs_simulator_fault - reserved "jobs_total", "jobs_measured", "jobs_simulator_fault"; } message Create { From 14542a3e55f5d359030009aee49f9fc06ecc512f Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 04:59:38 +0000 Subject: [PATCH 14/32] generated protobuf --- livekit/livekit_agent_simulation.pb.go | 22 +- livekit/livekit_agent_simulation.twirp.go | 434 +++++++++++----------- 2 files changed, 221 insertions(+), 235 deletions(-) diff --git a/livekit/livekit_agent_simulation.pb.go b/livekit/livekit_agent_simulation.pb.go index e38f526be..629c5ad4e 100644 --- a/livekit/livekit_agent_simulation.pb.go +++ b/livekit/livekit_agent_simulation.pb.go @@ -2796,7 +2796,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\n" + "suggestion\x18\x02 \x01(\tR\n" + "suggestion\x12\x14\n" + - "\x05label\x18\x03 \x01(\tR\x05label\"\xce@\n" + + "\x05label\x18\x03 \x01(\tR\x05label\"\xaa>\n" + "\rSimulationRun\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + "\n" + @@ -2846,7 +2846,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x10STATUS_COMPLETED\x10\x02\x12\x11\n" + "\rSTATUS_FAILED\x10\x03\x12\x14\n" + "\x10STATUS_CANCELLED\x10\x04J\x04\b\t\x10\n" + - "\x1a\xb9$\n" + + "\x1a\xd8\"\n" + "\n" + "JobMetrics\x12*\n" + "\x0eaccuracy_score\x18\x01 \x01(\x02H\x00R\raccuracyScore\x88\x01\x01\x12.\n" + @@ -2869,7 +2869,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x10information_loss\x18\x10 \x01(\bH\x05R\x0finformationLoss\x88\x01\x01\x126\n" + "\x14redundant_statements\x18\x11 \x01(\bH\x06R\x13redundantStatements\x88\x01\x01\x127\n" + "\x15poor_question_quality\x18\x12 \x01(\bH\aR\x13poorQuestionQuality\x88\x01\x01\x12>\n" + - "\x18conversation_progression\x18\x13 \x01(\x02H\bR\x17conversationProgression\x88\x01\x01\x1a\xfc\x04\n" + + "\x18conversation_progression\x18\x13 \x01(\x02H\bR\x17conversationProgression\x88\x01\x01\x1a\xb3\x04\n" + "\x03STT\x12\x15\n" + "\x03wer\x18\x01 \x01(\x02H\x00R\x03wer\x88\x01\x01\x12\x19\n" + "\x05words\x18\x02 \x01(\rH\x01R\x05words\x88\x01\x01\x12$\n" + @@ -2893,7 +2893,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x19_transcription_latency_msB\x15\n" + "\x13_entity_recognitionB\x13\n" + "\x11_entities_utteredB\x16\n" + - "\x14_entities_recognizedJ\x04\b\x05\x10\x06J\x04\b\x06\x10\aJ\x04\b\a\x10\bR\x0ekeyterm_recallR\x10keyterms_utteredR\x13keyterms_recognized\x1a\xb9\x01\n" + + "\x14_entities_recognized\x1a\xa0\x01\n" + "\x03LLM\x12\x1c\n" + "\attft_ms\x18\x01 \x01(\rH\x00R\x06ttftMs\x88\x01\x01\x12\x1c\n" + "\attfs_ms\x18\x02 \x01(\rH\x01R\x06ttfsMs\x88\x01\x01\x12/\n" + @@ -2902,7 +2902,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\b_ttft_msB\n" + "\n" + "\b_ttfs_msB\x14\n" + - "\x12_tokens_per_secondJ\x04\b\x04\x10\x05R\x11conciseness_score\x1a\xf6\x05\n" + + "\x12_tokens_per_second\x1a\xbb\x05\n" + "\x03TTS\x12\x1c\n" + "\attfa_ms\x18\x01 \x01(\rH\x00R\x06ttfaMs\x88\x01\x01\x12\x1c\n" + "\attfb_ms\x18\x02 \x01(\rH\x01R\x06ttfbMs\x88\x01\x01\x12\x15\n" + @@ -2935,7 +2935,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x12_enunciation_scoreB\x15\n" + "\x13_entity_recognitionB\x13\n" + "\x11_entities_utteredB\x16\n" + - "\x14_entities_recognizedJ\x04\b\x04\x10\x05J\x04\b\f\x10\rJ\x04\b\r\x10\x0eR\x0fspeech_rate_wpmR\vheard_wordsR\tspeech_ms\x1a\xbd\t\n" + + "\x14_entities_recognized\x1a\xf9\b\n" + "\fConversation\x12/\n" + "\x11turn_taking_score\x18\x01 \x01(\x02H\x00R\x0fturnTakingScore\x88\x01\x01\x12:\n" + "\x17response_latency_p50_ms\x18\x02 \x01(\x05H\x01R\x14responseLatencyP50Ms\x88\x01\x01\x12:\n" + @@ -2965,8 +2965,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x16_awkward_silence_countB\x13\n" + "\x11_unanswered_turnsB\x1b\n" + "\x19_false_interruption_countB \n" + - "\x1e_agent_reported_e2e_latency_msJ\x04\b\n" + - "\x10\vJ\x04\b\x0e\x10\x0fR\x10silence_total_msR$false_interruption_unrecovered_count\x1a\x98\x01\n" + + "\x1e_agent_reported_e2e_latency_ms\x1a\x98\x01\n" + "\tSimulator\x120\n" + "\x11early_termination\x18\x01 \x01(\bH\x00R\x10earlyTermination\x88\x01\x01\x12.\n" + "\x10late_termination\x18\x02 \x01(\bH\x01R\x0flateTermination\x88\x01\x01B\x14\n" + @@ -2993,7 +2992,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x11_information_lossB\x17\n" + "\x15_redundant_statementsB\x18\n" + "\x16_poor_question_qualityB\x1b\n" + - "\x19_conversation_progression\x1a\x9c\x04\n" + + "\x19_conversation_progression\x1a\xd9\x03\n" + "\n" + "RunMetrics\x12*\n" + "\x0eaccuracy_score\x18\x01 \x01(\x02H\x00R\raccuracyScore\x88\x01\x01\x12.\n" + @@ -3005,10 +3004,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\fconversation\x18\a \x01(\v2..livekit.SimulationRun.JobMetrics.ConversationR\fconversationB\x11\n" + "\x0f_accuracy_scoreB\x13\n" + "\x11_experience_scoreB\x15\n" + - "\x13_scenario_pass_rateJ\x04\b\t\x10\n" + - "J\x04\b\n" + - "\x10\vJ\x04\b\v\x10\fR\n" + - "jobs_totalR\rjobs_measuredR\x14jobs_simulator_fault\x1a\xf5\x03\n" + + "\x13_scenario_pass_rate\x1a\xf5\x03\n" + "\x06Create\x1a\xdc\x02\n" + "\aRequest\x12\x1d\n" + "\n" + diff --git a/livekit/livekit_agent_simulation.twirp.go b/livekit/livekit_agent_simulation.twirp.go index 769106a4a..df559a3ae 100644 --- a/livekit/livekit_agent_simulation.twirp.go +++ b/livekit/livekit_agent_simulation.twirp.go @@ -1912,226 +1912,216 @@ func (s *agentSimulationServer) PathPrefix() string { } var twirpFileDescriptor9 = []byte{ - // 3529 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x23, 0x47, - 0x76, 0x1f, 0x92, 0x4d, 0xb2, 0xf9, 0x28, 0x92, 0xad, 0xd2, 0xc7, 0x70, 0xda, 0x6b, 0x7b, 0x3c, - 0xb6, 0x77, 0x07, 0x33, 0x5e, 0xcd, 0x44, 0xde, 0x59, 0xaf, 0xc6, 0xbb, 0xc1, 0x8a, 0x1a, 0x7a, - 0x28, 0x45, 0xd2, 0xc8, 0x45, 0x0a, 0xc9, 0x3a, 0x08, 0x1a, 0xad, 0xee, 0x1a, 0xaa, 0x35, 0xcd, - 0x2e, 0x6e, 0x57, 0xf5, 0x68, 0xb4, 0x40, 0xee, 0x06, 0x72, 0xca, 0x2d, 0x87, 0x20, 0xc8, 0x65, - 0x0f, 0xc9, 0x35, 0x27, 0x03, 0x09, 0xf2, 0x1f, 0x04, 0x08, 0x02, 0xe4, 0x94, 0xbf, 0x20, 0xf7, - 0xe4, 0x94, 0x43, 0x50, 0x1f, 0xdd, 0x6c, 0x7e, 0x69, 0x64, 0xc7, 0xbe, 0xe5, 0xc6, 0x7a, 0xef, - 0xf7, 0x5e, 0x55, 0xbd, 0x7a, 0x1f, 0x55, 0xfd, 0x08, 0xef, 0x85, 0xc1, 0x6b, 0xf2, 0x2a, 0xe0, - 0x8e, 0x3b, 0x24, 0x11, 0x77, 0x58, 0x30, 0x4a, 0x42, 0x97, 0x07, 0x34, 0xda, 0x1a, 0xc7, 0x94, - 0x53, 0x54, 0xd5, 0x7c, 0xfb, 0x03, 0x09, 0x78, 0x34, 0x03, 0x27, 0x8c, 0x65, 0x58, 0xfb, 0xfd, - 0x21, 0xa5, 0xc3, 0x90, 0x3c, 0x92, 0xa3, 0xb3, 0xe4, 0xe5, 0x23, 0x1e, 0x8c, 0x08, 0xe3, 0xee, - 0x68, 0xac, 0x01, 0x77, 0x52, 0x69, 0x2f, 0xa4, 0x89, 0xaf, 0x74, 0x68, 0xd6, 0x7a, 0xca, 0x1a, - 0x51, 0x9f, 0x84, 0x4c, 0x51, 0xef, 0xfd, 0x6b, 0x09, 0xd6, 0xfb, 0xd9, 0x92, 0x70, 0x12, 0xf5, - 0x93, 0xd1, 0xc8, 0x8d, 0xaf, 0xd0, 0x26, 0x54, 0xc6, 0x2e, 0x63, 0xc4, 0x6f, 0x17, 0xee, 0x16, - 0xee, 0x97, 0xb1, 0x1e, 0x09, 0xfa, 0x4b, 0x37, 0x08, 0x89, 0xdf, 0x2e, 0x2a, 0xba, 0x1a, 0xa1, - 0x77, 0x01, 0x86, 0x34, 0x88, 0x86, 0xce, 0x25, 0x09, 0xc3, 0x76, 0xe9, 0x6e, 0xe1, 0x7e, 0x0d, - 0xd7, 0x24, 0xe5, 0x8f, 0x49, 0x18, 0x0a, 0x36, 0xa7, 0x4e, 0x30, 0x1a, 0xc7, 0xf4, 0x35, 0x69, - 0x1b, 0x8a, 0xcd, 0xe9, 0xbe, 0x22, 0xa0, 0xcf, 0xa1, 0x12, 0x30, 0x96, 0x10, 0xd6, 0x2e, 0xdf, - 0x2d, 0xdd, 0xaf, 0x6f, 0x7f, 0xb8, 0xa5, 0x57, 0xbb, 0xb5, 0x68, 0x71, 0x5b, 0xfb, 0x02, 0x8b, - 0xb5, 0x08, 0xfa, 0x12, 0x56, 0xbc, 0x73, 0x97, 0x3b, 0xe7, 0x01, 0xe3, 0x34, 0xbe, 0x6a, 0x57, - 0xa4, 0x8a, 0xad, 0xeb, 0x55, 0xec, 0x9d, 0xbb, 0xbc, 0xa7, 0x04, 0xba, 0x11, 0x8f, 0xaf, 0x70, - 0xdd, 0x9b, 0x50, 0xec, 0xaf, 0xc0, 0x9a, 0x05, 0x20, 0x0b, 0x4a, 0xaf, 0xc8, 0x95, 0x34, 0x47, - 0x0d, 0x8b, 0x9f, 0xe8, 0x31, 0x94, 0x5f, 0xbb, 0x61, 0x42, 0xa4, 0x29, 0xea, 0xdb, 0x76, 0x36, - 0xa3, 0xb2, 0xbb, 0xd0, 0xb0, 0x47, 0x23, 0x4e, 0xde, 0x70, 0xac, 0x80, 0x4f, 0x8b, 0xbf, 0x28, - 0xd8, 0x0e, 0x94, 0xe5, 0xfa, 0xd1, 0x5d, 0xa8, 0xfb, 0x84, 0x79, 0x71, 0x30, 0x16, 0x6b, 0xd3, - 0x8a, 0xf3, 0x24, 0xf4, 0x1e, 0x00, 0x4b, 0x86, 0x43, 0xc2, 0x24, 0xa0, 0x28, 0x01, 0x39, 0x0a, - 0x5a, 0x87, 0x72, 0xe8, 0x9e, 0x91, 0xd4, 0xde, 0x6a, 0x70, 0xef, 0x5f, 0x7e, 0x0d, 0x8d, 0xa9, - 0x3d, 0xa3, 0x26, 0x14, 0x03, 0x5f, 0x4f, 0x50, 0x0c, 0xe4, 0x61, 0x8d, 0x63, 0x7a, 0x41, 0x3c, - 0xee, 0x04, 0xbe, 0xd6, 0x5b, 0xd3, 0x94, 0x7d, 0x1f, 0x3d, 0x81, 0x0a, 0xe3, 0x2e, 0x4f, 0x98, - 0xd4, 0xdb, 0xdc, 0x7e, 0x77, 0xb1, 0x29, 0xb7, 0xfa, 0x12, 0x84, 0x35, 0x18, 0x3d, 0x84, 0x55, - 0xe5, 0xb4, 0xf9, 0x5d, 0xa9, 0xa3, 0xb6, 0x24, 0xe3, 0x59, 0x6e, 0x6b, 0xeb, 0x50, 0x26, 0x71, - 0x4c, 0xe3, 0x76, 0x59, 0x2d, 0x5d, 0x0e, 0xd0, 0x0e, 0x80, 0x17, 0x13, 0x97, 0x13, 0xdf, 0x71, - 0x79, 0xbb, 0xa2, 0xcd, 0xaa, 0xbc, 0x7e, 0x2b, 0xf5, 0xfa, 0xad, 0x41, 0xea, 0xf5, 0xb8, 0xa6, - 0xd1, 0xbb, 0x1c, 0x6d, 0x81, 0x71, 0x41, 0xcf, 0x58, 0xbb, 0x2a, 0x4f, 0xdf, 0x5e, 0xb2, 0xe4, - 0x03, 0x7a, 0x86, 0x25, 0x4e, 0xd8, 0x40, 0xad, 0x36, 0x72, 0x47, 0xa4, 0x5d, 0x53, 0x36, 0x90, - 0x94, 0x63, 0x77, 0x44, 0xd0, 0xaf, 0xa0, 0xc9, 0x3c, 0x12, 0xb9, 0x71, 0x40, 0x9d, 0x61, 0x4c, - 0x93, 0x71, 0x1b, 0xe4, 0x6a, 0x36, 0x27, 0x8a, 0x35, 0xfb, 0xb9, 0xe0, 0xe2, 0x06, 0xcb, 0x0f, - 0xd1, 0x13, 0x30, 0x49, 0xe4, 0xab, 0x6d, 0xd4, 0xdf, 0xba, 0x8d, 0xaa, 0xc4, 0xee, 0x72, 0xf4, - 0x0e, 0xd4, 0x2e, 0xe8, 0x99, 0xe3, 0xd1, 0x24, 0xe2, 0xed, 0x15, 0x19, 0x60, 0xe6, 0x05, 0x3d, - 0xdb, 0x13, 0x63, 0xf4, 0x01, 0xac, 0xa8, 0x20, 0xd4, 0xfc, 0x86, 0xe4, 0xd7, 0x15, 0x2d, 0x83, - 0xa8, 0x78, 0xd4, 0x90, 0xa6, 0x82, 0x28, 0x9a, 0x82, 0xfc, 0x04, 0x5a, 0x51, 0x32, 0xca, 0xe5, - 0x21, 0xd6, 0x6e, 0x49, 0x54, 0x33, 0x4a, 0x46, 0x13, 0x63, 0x31, 0xb4, 0x0d, 0xe5, 0x84, 0xb9, - 0x43, 0xd2, 0xb6, 0xe4, 0xfa, 0x7f, 0xb4, 0xc4, 0xa2, 0xa7, 0x02, 0x83, 0x15, 0x54, 0xb8, 0xb4, - 0x47, 0x23, 0x2f, 0x89, 0x63, 0x12, 0x79, 0x57, 0xed, 0x55, 0x35, 0x7d, 0x8e, 0x84, 0x1e, 0x82, - 0x21, 0x12, 0x50, 0x1b, 0x49, 0xcf, 0xba, 0xbd, 0x40, 0xe9, 0x11, 0xf5, 0x09, 0x96, 0x20, 0xf4, - 0x39, 0x54, 0x47, 0x84, 0xc7, 0x81, 0xc7, 0xda, 0x6b, 0x72, 0x11, 0x1f, 0x2c, 0x59, 0x04, 0x4e, - 0xa2, 0x23, 0x05, 0xc4, 0xa9, 0x84, 0xb0, 0x05, 0x53, 0xc1, 0xee, 0xfc, 0x8e, 0x71, 0xbf, 0xbd, - 0x7e, 0xb7, 0x70, 0x7f, 0x05, 0xd7, 0x35, 0xed, 0x2b, 0xc6, 0x7d, 0xfb, 0xdf, 0xcb, 0x50, 0x3a, - 0xa0, 0x67, 0x73, 0xf1, 0xb1, 0x93, 0x05, 0x40, 0x51, 0x2e, 0xf3, 0x83, 0xe5, 0xde, 0x34, 0x1b, - 0x04, 0xf7, 0x60, 0x25, 0x88, 0x18, 0x8f, 0x13, 0x4f, 0xd9, 0x56, 0x45, 0xe6, 0x14, 0x6d, 0xe2, - 0xfb, 0x46, 0xde, 0xf7, 0x7f, 0x0a, 0x48, 0x39, 0x24, 0x79, 0x33, 0x26, 0x1e, 0xd7, 0x67, 0xa3, - 0xc2, 0x43, 0x05, 0x56, 0x37, 0xc7, 0x98, 0xc4, 0x7e, 0x25, 0x17, 0xfb, 0x08, 0x81, 0xc1, 0xdd, - 0xa1, 0x8a, 0x82, 0x1a, 0x96, 0xbf, 0x85, 0x53, 0xc5, 0x94, 0x8e, 0x94, 0xa3, 0x9b, 0x12, 0x6d, - 0x0a, 0x82, 0xf4, 0xf3, 0x1d, 0x00, 0xc6, 0xdd, 0x58, 0x47, 0x1c, 0xbc, 0x3d, 0xe2, 0x34, 0x7a, - 0x97, 0x7f, 0x57, 0x1f, 0xbf, 0x0d, 0x55, 0xb9, 0x9c, 0xc0, 0x97, 0x1e, 0x5e, 0xc3, 0x15, 0x31, - 0xdc, 0xf7, 0xd1, 0xcf, 0x53, 0x87, 0x6b, 0x48, 0x65, 0x77, 0xaf, 0x31, 0xfa, 0x94, 0xd3, 0xe5, - 0xbc, 0xa4, 0x79, 0xad, 0x97, 0x1c, 0xd0, 0xb3, 0x59, 0x2f, 0xb1, 0xff, 0x0c, 0xca, 0x52, 0x19, - 0xba, 0x0f, 0x96, 0xc8, 0xd4, 0x0e, 0x4f, 0xe2, 0x88, 0xe9, 0xf0, 0x51, 0xa5, 0xaf, 0x29, 0xe8, - 0x03, 0x41, 0x56, 0x11, 0xf4, 0x00, 0x56, 0xdd, 0xc4, 0x0f, 0xe8, 0x14, 0x54, 0x55, 0xc3, 0x96, - 0x64, 0x4c, 0xb0, 0xf7, 0x28, 0x54, 0x94, 0x83, 0x20, 0x04, 0xcd, 0xfe, 0x60, 0x77, 0x70, 0xda, - 0x77, 0x4e, 0xba, 0xc7, 0xcf, 0xf6, 0x8f, 0x9f, 0x5b, 0xb7, 0x72, 0x34, 0x7c, 0x7a, 0x7c, 0x2c, - 0x68, 0x05, 0xb4, 0x0e, 0x96, 0xa6, 0xed, 0xbd, 0x38, 0x3a, 0x39, 0xec, 0x0e, 0xba, 0xcf, 0xac, - 0x22, 0x5a, 0x85, 0x86, 0xa6, 0x7e, 0xb1, 0xbb, 0x7f, 0xd8, 0x7d, 0x66, 0x95, 0xf2, 0xc0, 0xdd, - 0xe3, 0xbd, 0xee, 0xa1, 0xa0, 0x1a, 0x07, 0x86, 0x59, 0xb3, 0xc0, 0xfe, 0xe6, 0x23, 0x80, 0xc9, - 0x6e, 0xd1, 0x03, 0x68, 0xba, 0x9e, 0x97, 0xc4, 0xae, 0x77, 0xe5, 0x30, 0x8f, 0xc6, 0x44, 0xee, - 0xac, 0xd8, 0xbb, 0x85, 0x1b, 0x29, 0xbd, 0x2f, 0xc8, 0x5f, 0x17, 0x0a, 0x68, 0x0b, 0x2c, 0xe1, - 0x80, 0x71, 0x40, 0x22, 0x8f, 0x68, 0x74, 0x51, 0xa2, 0x0b, 0xb8, 0x35, 0xe1, 0x64, 0xf8, 0x4f, - 0xa0, 0xc5, 0x5d, 0xf6, 0xca, 0xf1, 0xe8, 0x68, 0x1c, 0x12, 0x99, 0xf3, 0x4b, 0x12, 0x5e, 0xc4, - 0x4d, 0xc1, 0xd8, 0xcb, 0xe8, 0x02, 0xfd, 0x19, 0x94, 0x18, 0xe7, 0xd2, 0xf1, 0xeb, 0xdb, 0x1f, - 0xbf, 0xf5, 0x9c, 0xb6, 0xfa, 0x83, 0x01, 0x16, 0x12, 0x42, 0x30, 0x0c, 0x47, 0x32, 0x1c, 0x6e, - 0x24, 0x78, 0x78, 0x78, 0x84, 0x85, 0x84, 0x10, 0xe4, 0x9c, 0xe9, 0x5a, 0x72, 0x03, 0xc1, 0xc1, - 0xa0, 0x8f, 0x85, 0x04, 0xc2, 0xb0, 0xe2, 0xd1, 0xe8, 0x35, 0x89, 0x99, 0x84, 0xb5, 0xab, 0x52, - 0xc3, 0xd6, 0xdb, 0x35, 0xec, 0xe5, 0xa4, 0xf0, 0x94, 0x0e, 0xb4, 0x0f, 0x35, 0x9d, 0x78, 0x69, - 0x2c, 0x43, 0xb1, 0xbe, 0xfd, 0xf0, 0x06, 0x46, 0x48, 0x45, 0xf0, 0x44, 0x1a, 0xfd, 0x12, 0xca, - 0xd2, 0xff, 0xda, 0x35, 0x59, 0xf0, 0x7e, 0x7c, 0x83, 0x9d, 0x25, 0x71, 0x84, 0x95, 0x10, 0x7a, - 0x1f, 0xea, 0x17, 0x89, 0x3f, 0x24, 0xea, 0x36, 0x28, 0xe3, 0xbe, 0x86, 0x41, 0x92, 0x44, 0xfe, - 0x0d, 0x27, 0x4e, 0x9e, 0x87, 0xd5, 0x25, 0x4c, 0x39, 0xf9, 0xc1, 0x04, 0xfb, 0x09, 0xa0, 0x73, - 0x97, 0x39, 0x31, 0x19, 0x51, 0x4e, 0xd2, 0x2b, 0xab, 0x0c, 0x6e, 0x13, 0x5b, 0xe7, 0x2e, 0xc3, - 0x92, 0xd1, 0x57, 0x74, 0xf4, 0x00, 0x8a, 0xfc, 0xb1, 0x8e, 0xf1, 0xeb, 0x12, 0x46, 0x91, 0x3f, - 0x46, 0x1f, 0xab, 0x7a, 0x12, 0x30, 0x12, 0x11, 0xa6, 0xc2, 0xbb, 0xd8, 0x2b, 0xe1, 0x3c, 0x51, - 0x78, 0xd5, 0x0e, 0x6c, 0x26, 0x51, 0x44, 0x3c, 0xc2, 0x98, 0x48, 0xf7, 0x9c, 0xd2, 0xd0, 0xf1, - 0xdc, 0x30, 0x54, 0xa5, 0xcd, 0xec, 0x19, 0x78, 0x3d, 0xc7, 0x1f, 0x50, 0x1a, 0xee, 0x09, 0xae, - 0x76, 0xf7, 0x20, 0x7a, 0x49, 0xe3, 0x91, 0xb4, 0x98, 0x13, 0x52, 0xc6, 0x64, 0xc1, 0x33, 0x7b, - 0x65, 0xdc, 0xca, 0x71, 0x0e, 0xa9, 0x9a, 0xea, 0xe7, 0xb0, 0x1e, 0x13, 0x3f, 0x89, 0x7c, 0x57, - 0xdc, 0xce, 0xb9, 0xcb, 0xc9, 0x88, 0x44, 0x9c, 0xc9, 0x52, 0x67, 0xf6, 0x2a, 0x78, 0x2d, 0xe3, - 0xf6, 0x33, 0xa6, 0x72, 0xfc, 0x8d, 0x31, 0xa5, 0xb1, 0xf3, 0xdb, 0x44, 0xdd, 0xdd, 0x9c, 0xdf, - 0x26, 0x6e, 0x18, 0xf0, 0x2b, 0x59, 0x08, 0xcd, 0x5e, 0x15, 0xaf, 0x09, 0xf6, 0x97, 0x9a, 0xfb, - 0xa5, 0x62, 0x0a, 0xc1, 0x3f, 0x84, 0x76, 0xde, 0x85, 0x9c, 0x71, 0x4c, 0x87, 0xb1, 0x36, 0xf1, - 0x9a, 0xb4, 0x87, 0x89, 0x6f, 0xe7, 0x11, 0x27, 0x13, 0xc0, 0xd7, 0x85, 0x82, 0xfd, 0x3f, 0x06, - 0x94, 0xfa, 0x83, 0x01, 0xda, 0x80, 0xd2, 0x25, 0x89, 0xb3, 0xc0, 0x17, 0x03, 0xa1, 0xfe, 0x0e, - 0x94, 0x2f, 0x69, 0xec, 0xab, 0x4a, 0xd7, 0xe8, 0x15, 0xb0, 0x1a, 0x0a, 0xd6, 0x47, 0x50, 0x17, - 0xbf, 0x1d, 0x59, 0x9e, 0x54, 0x25, 0x6b, 0xf4, 0x8a, 0x18, 0x04, 0xb1, 0x2b, 0x69, 0x02, 0xb5, - 0x01, 0x25, 0x8f, 0xa8, 0x52, 0x26, 0x8e, 0x46, 0x0c, 0xb4, 0x5e, 0xef, 0xdc, 0x8d, 0x99, 0xbc, - 0x59, 0x35, 0x7a, 0x06, 0x56, 0x43, 0xad, 0x57, 0xfc, 0x4e, 0xf5, 0x82, 0x04, 0x94, 0x31, 0x08, - 0xe2, 0x44, 0xef, 0xaf, 0xa0, 0xcd, 0x63, 0x37, 0xca, 0x6e, 0x8c, 0x4e, 0xe8, 0x72, 0x71, 0x83, - 0x70, 0x46, 0x4c, 0x46, 0x4e, 0xa3, 0x57, 0xc1, 0x9b, 0x53, 0x88, 0x43, 0x05, 0x38, 0x92, 0xe2, - 0xdb, 0x80, 0x48, 0xc4, 0x03, 0x7e, 0xe5, 0xc4, 0xc4, 0xa3, 0xc3, 0x28, 0x90, 0x31, 0x5c, 0x97, - 0xab, 0xac, 0xe2, 0x55, 0xc5, 0xc3, 0x13, 0x56, 0x9a, 0xfa, 0x04, 0x3d, 0x20, 0xcc, 0x49, 0x38, - 0x27, 0x31, 0x51, 0x25, 0xaa, 0xd1, 0x33, 0x71, 0x2b, 0xe5, 0x9c, 0x2a, 0x86, 0xc0, 0xff, 0x0c, - 0xd6, 0x32, 0xbc, 0x9e, 0xe5, 0x77, 0xc4, 0x97, 0xae, 0xdd, 0xe8, 0xd5, 0x30, 0x4a, 0x99, 0x38, - 0xe3, 0x7d, 0x5d, 0x28, 0x74, 0x2a, 0x60, 0x38, 0x97, 0x24, 0xee, 0x98, 0x50, 0x71, 0xa4, 0xad, - 0x3b, 0x4d, 0x58, 0x71, 0x72, 0x96, 0x96, 0x08, 0x4f, 0x23, 0xa4, 0xd5, 0x24, 0x22, 0x67, 0xb3, - 0xce, 0x3b, 0x70, 0xc7, 0x59, 0x66, 0x9d, 0xce, 0x06, 0xac, 0x39, 0xf3, 0x7b, 0xef, 0xac, 0xc1, - 0xaa, 0x33, 0xbb, 0xbd, 0xce, 0x26, 0xac, 0x3b, 0x0b, 0xf6, 0x70, 0x60, 0x98, 0x65, 0xab, 0x72, - 0x60, 0x98, 0x15, 0xab, 0x7a, 0x60, 0x98, 0x55, 0xcb, 0xc4, 0xcd, 0x57, 0xe4, 0x8a, 0x93, 0x78, - 0x24, 0x50, 0x6e, 0x18, 0x62, 0x4b, 0x8f, 0x33, 0x5d, 0x78, 0x2d, 0xa3, 0x4c, 0x14, 0xd9, 0xdf, - 0x14, 0xa0, 0x74, 0x78, 0x78, 0x84, 0x7e, 0x04, 0x55, 0xce, 0x5f, 0x72, 0x71, 0x7a, 0x05, 0x69, - 0x9f, 0x5b, 0xb8, 0x22, 0x08, 0xea, 0xb4, 0x14, 0x97, 0x09, 0x6e, 0xea, 0x87, 0x82, 0xcb, 0x14, - 0xf7, 0x11, 0xac, 0x72, 0xfa, 0x8a, 0x44, 0xcc, 0x19, 0x93, 0xd8, 0x61, 0xc4, 0xa3, 0x91, 0x9f, - 0x15, 0x99, 0x96, 0x62, 0x9d, 0x90, 0xb8, 0x2f, 0x19, 0xc2, 0xc4, 0x00, 0xa6, 0xa3, 0x67, 0x4b, - 0x7f, 0x0b, 0xdd, 0x9d, 0x75, 0x40, 0xce, 0x9c, 0xa6, 0x03, 0xc3, 0x34, 0xac, 0x32, 0x5e, 0xcd, - 0xe5, 0x14, 0x55, 0xf6, 0xec, 0xff, 0x2e, 0x43, 0x69, 0x30, 0xe8, 0xeb, 0xd5, 0xb9, 0xb3, 0x6b, - 0x77, 0xf3, 0x6b, 0x3f, 0x9b, 0x5d, 0xfb, 0xd9, 0x51, 0x1a, 0x1e, 0x22, 0xec, 0xd2, 0xd5, 0xce, - 0x85, 0x5d, 0x55, 0x8a, 0x94, 0x96, 0x87, 0x9d, 0xa9, 0xe3, 0x67, 0x71, 0xd8, 0xd5, 0xa4, 0xde, - 0xf2, 0x7c, 0xd8, 0x81, 0x0e, 0x91, 0xa5, 0x61, 0x57, 0x97, 0x80, 0xea, 0x6c, 0xd8, 0x3d, 0x86, - 0xd5, 0xc8, 0xe5, 0x49, 0xec, 0x86, 0x13, 0x43, 0xc8, 0xaa, 0x2b, 0xf2, 0x8c, 0x95, 0x63, 0x65, - 0x17, 0x80, 0xc7, 0xb0, 0x4a, 0xa2, 0x24, 0xf2, 0x02, 0x95, 0x9f, 0x94, 0x44, 0x45, 0x4a, 0xd4, - 0xb0, 0x95, 0x63, 0x65, 0x12, 0x8b, 0x63, 0x53, 0x25, 0x77, 0xf8, 0x16, 0xb1, 0xd9, 0x92, 0x5b, - 0xa8, 0x7f, 0x9b, 0xd8, 0xb4, 0xa4, 0xc8, 0xca, 0xb2, 0xd8, 0xd4, 0xce, 0xe2, 0xe6, 0x1c, 0x47, - 0x1c, 0xec, 0xf7, 0x12, 0xb3, 0xc2, 0xf9, 0xe6, 0x4c, 0x2b, 0xa9, 0x73, 0xe6, 0xfb, 0x9e, 0x42, - 0xd8, 0xb0, 0xca, 0x07, 0x86, 0xb9, 0x62, 0x35, 0x0e, 0x0c, 0xb3, 0x61, 0x35, 0x71, 0x8b, 0x8d, - 0x09, 0xf1, 0xce, 0x9d, 0xd8, 0xe5, 0xc4, 0xb9, 0x1c, 0x8f, 0x70, 0xfd, 0x9c, 0xb8, 0xb1, 0xaf, - 0x76, 0x84, 0x6b, 0x9a, 0x3b, 0x62, 0xf6, 0x3f, 0xd5, 0x60, 0x25, 0x7f, 0x8b, 0x91, 0x11, 0x98, - 0xc4, 0x91, 0xc3, 0xdd, 0x57, 0x41, 0x34, 0x9c, 0xb9, 0x43, 0xb6, 0x04, 0x6b, 0x20, 0x39, 0xd9, - 0x11, 0x3f, 0x85, 0xdb, 0x31, 0x61, 0x63, 0x1a, 0x31, 0x92, 0xa5, 0xa6, 0xf1, 0x93, 0xc7, 0x69, - 0x90, 0x94, 0x7b, 0x05, 0xbc, 0x9e, 0x02, 0x74, 0xde, 0x3e, 0x79, 0xf2, 0x58, 0x85, 0xcc, 0x42, - 0xd9, 0x9d, 0x27, 0x42, 0xb6, 0x24, 0x65, 0x8b, 0xf3, 0xb2, 0x3b, 0x4f, 0xae, 0x93, 0xdd, 0x11, - 0xb2, 0x86, 0x94, 0x2d, 0x2d, 0x90, 0xdd, 0x51, 0xb2, 0x9f, 0xc2, 0xda, 0x9c, 0xec, 0x48, 0xdd, - 0x06, 0xca, 0x3d, 0x03, 0xaf, 0xce, 0xc8, 0x29, 0xa1, 0x5f, 0xc0, 0xa6, 0x7a, 0xb5, 0x5d, 0x05, - 0x24, 0xf4, 0xf3, 0x72, 0x65, 0x5d, 0xd7, 0xd6, 0x24, 0xff, 0x37, 0x82, 0x3d, 0x25, 0xf9, 0x39, - 0xdc, 0x26, 0x94, 0x3b, 0xa3, 0x80, 0x8d, 0x63, 0xe2, 0x07, 0xf2, 0x6d, 0xa8, 0x1f, 0x13, 0x15, - 0x1d, 0xbc, 0x1b, 0x84, 0xf2, 0xa3, 0x3c, 0x5f, 0x3e, 0x2a, 0x84, 0xf0, 0x7d, 0x68, 0xd0, 0xd7, - 0x24, 0x0e, 0xdd, 0xb1, 0x38, 0xcd, 0x80, 0xca, 0x3c, 0x22, 0x2a, 0xdb, 0x8a, 0x26, 0x63, 0x41, - 0xd5, 0xc9, 0x33, 0x45, 0x66, 0x07, 0xac, 0x93, 0x8a, 0x89, 0x5b, 0x9a, 0xd5, 0x97, 0x1c, 0xb5, - 0xae, 0x87, 0xd0, 0xe2, 0x94, 0xbb, 0x61, 0x0e, 0x5e, 0xd3, 0x15, 0xad, 0x21, 0x19, 0x79, 0xf0, - 0x67, 0xb0, 0xe1, 0x5e, 0xbe, 0xba, 0x14, 0x5e, 0xc4, 0x82, 0x50, 0x3e, 0x19, 0xd4, 0x16, 0x54, - 0x7a, 0x01, 0xbc, 0xa6, 0xd9, 0x7d, 0xc5, 0xcd, 0x36, 0xb0, 0x05, 0x56, 0x12, 0xb9, 0x11, 0xbb, - 0x14, 0x3e, 0xac, 0x5e, 0x52, 0xba, 0xd6, 0xd6, 0x71, 0x6b, 0xc2, 0x91, 0x4f, 0x29, 0x7d, 0x1d, - 0x78, 0xe9, 0x86, 0x8c, 0x38, 0x41, 0xc4, 0x49, 0x1c, 0x27, 0xe3, 0x9c, 0xb9, 0x1a, 0x3a, 0xa8, - 0x37, 0x25, 0x62, 0x3f, 0x07, 0xc8, 0xa6, 0xeb, 0xc2, 0xbb, 0xea, 0x98, 0x62, 0x32, 0xa6, 0xf2, - 0xb5, 0x4b, 0xb6, 0xa7, 0x4e, 0x59, 0xe5, 0x92, 0x06, 0xbe, 0x23, 0x61, 0x58, 0xa3, 0xba, 0xdb, - 0x53, 0xa7, 0xad, 0x0a, 0xc8, 0x6c, 0x20, 0x74, 0x6c, 0x68, 0x3b, 0x4b, 0xbc, 0x7d, 0x09, 0x4f, - 0x7a, 0xf3, 0x32, 0x9e, 0xf0, 0x56, 0x19, 0xd5, 0x0b, 0xbc, 0xb1, 0x73, 0x07, 0x6e, 0x3b, 0x8b, - 0x1d, 0x4e, 0xaa, 0x5b, 0xe2, 0x51, 0x1d, 0x0b, 0x9a, 0xce, 0x94, 0xc3, 0xc8, 0xad, 0xcc, 0x39, - 0x46, 0x07, 0x81, 0xe5, 0xcc, 0x9c, 0x7e, 0xa7, 0x0d, 0x9b, 0xce, 0xc2, 0x43, 0x96, 0xf9, 0x68, - 0xf6, 0x14, 0xe5, 0xdd, 0x64, 0xd9, 0x51, 0x75, 0xee, 0xc2, 0x7b, 0xce, 0xb5, 0x07, 0x71, 0x60, - 0x98, 0x60, 0xd5, 0x0f, 0x0c, 0xb3, 0x69, 0xb5, 0xb0, 0x95, 0x4e, 0xa7, 0x96, 0x34, 0x62, 0xf8, - 0xa3, 0x05, 0x9a, 0x93, 0x48, 0x64, 0xbd, 0xd7, 0x72, 0x09, 0x72, 0x16, 0xfb, 0xaf, 0x0a, 0x50, - 0xcb, 0x1e, 0x4d, 0xb2, 0x40, 0xb9, 0x71, 0x78, 0xe5, 0x88, 0xcb, 0x49, 0x10, 0xb9, 0xd9, 0xd7, - 0x56, 0xb3, 0x77, 0x0b, 0x5b, 0x92, 0x35, 0x98, 0x70, 0xb4, 0x73, 0x8a, 0x15, 0x4d, 0x09, 0x14, - 0xa5, 0x40, 0x01, 0xb7, 0x04, 0x67, 0x1a, 0xaf, 0x92, 0xf8, 0xec, 0x14, 0xd2, 0x3a, 0xb3, 0x6a, - 0xec, 0x7f, 0x2b, 0x81, 0x21, 0x9c, 0x1a, 0xad, 0x43, 0x39, 0x88, 0x7c, 0xf2, 0x46, 0x5d, 0x29, - 0xb0, 0x1a, 0xa0, 0x87, 0x60, 0xc4, 0x34, 0x24, 0xfa, 0xbb, 0xd3, 0xed, 0x05, 0x5f, 0x94, 0x31, - 0x0d, 0x09, 0x96, 0x20, 0xf4, 0x1e, 0x98, 0xf2, 0x6b, 0x4c, 0x9a, 0x19, 0xc5, 0xc5, 0xa4, 0x2a, - 0x29, 0x2a, 0x38, 0x6d, 0xa8, 0x90, 0xc8, 0x4f, 0x73, 0x9f, 0xbc, 0xdc, 0x93, 0xc8, 0x4f, 0x03, - 0x57, 0x3e, 0xc4, 0xcb, 0xdf, 0xf5, 0x21, 0x5e, 0xf9, 0xae, 0x0f, 0xf1, 0xea, 0xff, 0xf9, 0x21, - 0x6e, 0x7e, 0x0f, 0x0f, 0xf1, 0x99, 0x87, 0x65, 0x4d, 0x5f, 0xcf, 0x66, 0x1e, 0x96, 0x9d, 0x3a, - 0xd4, 0x9c, 0xd4, 0xc4, 0x9d, 0x1a, 0x54, 0x1d, 0x65, 0x4f, 0x55, 0xdb, 0x27, 0xd0, 0xce, 0x2a, - 0xb4, 0x9c, 0xe9, 0x2f, 0x2c, 0xaa, 0x56, 0xcf, 0x7c, 0x48, 0x51, 0xe1, 0x35, 0xfd, 0xb5, 0x64, - 0x4e, 0x97, 0x88, 0xf0, 0xc5, 0xaf, 0x59, 0xa9, 0x73, 0xf6, 0xb5, 0xda, 0xb9, 0x0d, 0x1b, 0xce, - 0xa2, 0x27, 0xa9, 0x8c, 0xdb, 0x85, 0x6f, 0x4e, 0x19, 0xa2, 0xcb, 0x1e, 0x95, 0xf6, 0x5f, 0x1b, - 0x00, 0x93, 0xef, 0xa9, 0x3f, 0xe8, 0xb7, 0xa3, 0x3f, 0x00, 0x94, 0x7d, 0x64, 0x1f, 0xbb, 0x8c, - 0xc9, 0x9b, 0x49, 0x76, 0x57, 0xb6, 0x52, 0xde, 0x89, 0xcb, 0x18, 0x76, 0x39, 0xf9, 0xff, 0x0f, - 0x48, 0x37, 0x76, 0x34, 0x71, 0x81, 0x9c, 0x37, 0xad, 0xfa, 0x3a, 0x98, 0xa5, 0xd8, 0xba, 0xb5, - 0x82, 0xe1, 0x82, 0x9e, 0x31, 0x95, 0x5f, 0x71, 0x43, 0xfe, 0x1e, 0x11, 0x97, 0x25, 0xe2, 0x3d, - 0xb7, 0x2e, 0x87, 0xd9, 0x17, 0x27, 0xe7, 0xa5, 0x9b, 0x84, 0xdc, 0xfe, 0xaf, 0x12, 0x54, 0xf6, - 0x64, 0xd7, 0xc5, 0xfe, 0x8f, 0x22, 0x54, 0x31, 0x91, 0xde, 0x35, 0xd3, 0x52, 0x2a, 0xcc, 0xb6, - 0x94, 0xa6, 0xbb, 0x2d, 0xc5, 0xd9, 0x6e, 0xcb, 0x82, 0xa6, 0x84, 0xb1, 0xb0, 0x29, 0xb1, 0x09, - 0x95, 0x98, 0x0c, 0x85, 0x35, 0x2b, 0xfa, 0xdb, 0xb1, 0x1c, 0xa1, 0xce, 0x5c, 0xbb, 0xa6, 0x7a, - 0x5d, 0xbb, 0x46, 0x78, 0xef, 0x54, 0xc3, 0x46, 0xb8, 0xd6, 0xc7, 0xd3, 0xcd, 0x0b, 0x53, 0xdf, - 0x53, 0xf3, 0x44, 0x75, 0x3f, 0x52, 0x1d, 0x8c, 0xda, 0x0d, 0x3a, 0x18, 0xf2, 0xbc, 0xa6, 0x17, - 0x96, 0xc5, 0xbb, 0x56, 0x79, 0x60, 0x98, 0x25, 0xcb, 0xc0, 0xf3, 0xad, 0x33, 0xfb, 0x2f, 0x0a, - 0x60, 0x62, 0x7d, 0x05, 0x40, 0x0f, 0x60, 0x75, 0x62, 0x1d, 0x27, 0x4e, 0xa2, 0x89, 0x99, 0x5b, - 0x2c, 0xef, 0x48, 0xfb, 0x3e, 0xea, 0xc3, 0xe6, 0x38, 0x26, 0x2c, 0x18, 0x46, 0xc4, 0x77, 0xc6, - 0x94, 0x89, 0x62, 0x2b, 0x4f, 0x49, 0x37, 0x2a, 0x27, 0xfd, 0xbc, 0x93, 0x14, 0x76, 0x42, 0x19, - 0xd7, 0x47, 0x89, 0xd7, 0xc7, 0x0b, 0xa8, 0xf6, 0xdf, 0x16, 0x60, 0x6d, 0x8f, 0x46, 0x2f, 0x83, - 0x78, 0xd4, 0xa7, 0x49, 0xec, 0x91, 0xd3, 0x71, 0x48, 0x5d, 0xdf, 0xfe, 0xf3, 0x1b, 0xfb, 0xc0, - 0xc2, 0x2d, 0x14, 0x17, 0x6f, 0xe1, 0x27, 0xd0, 0xf2, 0xa8, 0x4f, 0xc4, 0xc3, 0x26, 0xbe, 0x1a, - 0xd3, 0x20, 0xe2, 0xba, 0x93, 0xd2, 0x14, 0xe4, 0x6e, 0x46, 0xb5, 0x61, 0x62, 0x23, 0xfb, 0x2f, - 0x0b, 0x50, 0x7a, 0x4e, 0xb8, 0x3d, 0xf8, 0x21, 0x96, 0x64, 0xff, 0x2c, 0x77, 0x1a, 0xf7, 0xa1, - 0x14, 0x27, 0xea, 0x12, 0x31, 0xe5, 0x63, 0x79, 0x11, 0x2c, 0x20, 0xf6, 0x3f, 0x17, 0xc1, 0x38, - 0x0c, 0x18, 0xb7, 0xff, 0xb1, 0x70, 0xe3, 0x55, 0x3d, 0x9d, 0x69, 0x3f, 0x5d, 0xdf, 0x7f, 0xed, - 0xdd, 0x4a, 0x9b, 0x4f, 0xc2, 0x3b, 0x7f, 0x09, 0x30, 0x76, 0x87, 0x44, 0x7d, 0xe6, 0x90, 0x36, - 0xab, 0x6f, 0xb7, 0x33, 0xf9, 0x81, 0xa0, 0x9e, 0xb8, 0x43, 0x7d, 0x1b, 0xe9, 0x15, 0x70, 0x4d, - 0xa0, 0x25, 0x59, 0xd4, 0x3b, 0x51, 0xe2, 0x94, 0xae, 0x4e, 0x03, 0xea, 0xce, 0x44, 0x93, 0xfd, - 0x66, 0xca, 0x17, 0x8d, 0x38, 0x89, 0x58, 0xbb, 0x20, 0xbf, 0x3c, 0x2f, 0xdb, 0xbe, 0xc4, 0xa0, - 0x5f, 0x43, 0x2b, 0x22, 0x6f, 0x78, 0x4e, 0x95, 0x76, 0xc2, 0xa5, 0x8b, 0xc2, 0x0d, 0x21, 0x70, - 0x92, 0x2e, 0xcb, 0xbe, 0x80, 0xca, 0x9e, 0x1b, 0x79, 0x24, 0xfc, 0x81, 0xce, 0x35, 0xef, 0x41, - 0x3f, 0x70, 0x37, 0xe8, 0xf7, 0x85, 0xac, 0x1d, 0x74, 0x07, 0x36, 0xa6, 0xdb, 0x41, 0xce, 0xe9, - 0xc9, 0xe1, 0x8b, 0xdd, 0x67, 0xd6, 0x2d, 0xb4, 0x01, 0xab, 0x9a, 0xf5, 0xbc, 0x7b, 0xdc, 0xc5, - 0xbb, 0x03, 0xd5, 0x18, 0x9a, 0x6f, 0x16, 0x15, 0xd1, 0x26, 0x20, 0x4d, 0xeb, 0x9f, 0x1e, 0x1d, - 0xed, 0xe2, 0xfd, 0xaf, 0x04, 0xbd, 0xb4, 0xb0, 0x89, 0x64, 0xcc, 0x37, 0x91, 0xca, 0x0b, 0x9b, - 0x48, 0x95, 0x03, 0xc3, 0x34, 0xad, 0x1a, 0xae, 0xea, 0x56, 0xe9, 0xbd, 0xdf, 0x97, 0xc0, 0x4c, - 0xd3, 0xe7, 0xa4, 0xef, 0x58, 0xc8, 0xf7, 0x1d, 0x67, 0xdb, 0x9e, 0xc5, 0x05, 0x6d, 0xcf, 0xc5, - 0x0d, 0xce, 0xd2, 0xb2, 0x06, 0xe7, 0x23, 0xdd, 0xca, 0x34, 0xa4, 0x97, 0xbd, 0x33, 0x97, 0xc8, - 0xb7, 0x06, 0xee, 0x90, 0xa9, 0xff, 0x6e, 0xa8, 0x3e, 0xa7, 0x0d, 0x66, 0xc2, 0x48, 0xec, 0xbb, - 0xdc, 0xd5, 0x6d, 0xd3, 0x6c, 0x6c, 0xff, 0x5d, 0x01, 0x56, 0x55, 0xd5, 0xfa, 0x22, 0xa6, 0x23, - 0xdd, 0x8a, 0xb0, 0x7f, 0x73, 0x63, 0x87, 0xca, 0x35, 0x2d, 0x8b, 0x53, 0x4d, 0xcb, 0x49, 0x41, - 0x2a, 0xe5, 0x0b, 0x92, 0xbd, 0x93, 0x8b, 0x97, 0x9f, 0x82, 0x99, 0xd6, 0x00, 0x9d, 0x32, 0x56, - 0xe7, 0x76, 0x83, 0x33, 0x88, 0xfd, 0x19, 0xd4, 0xb2, 0xad, 0x2d, 0xf8, 0xd7, 0xc9, 0x7a, 0xfe, - 0x5f, 0x27, 0xb5, 0xdc, 0x3f, 0x4b, 0xee, 0x0d, 0xa0, 0x31, 0x55, 0xe5, 0x10, 0x02, 0x43, 0xd6, - 0x5b, 0x25, 0x2d, 0x7f, 0xa3, 0x47, 0x50, 0x4b, 0x67, 0x12, 0xc7, 0x54, 0x5a, 0xbc, 0x9a, 0x09, - 0xe6, 0xde, 0x3f, 0x14, 0x00, 0x4d, 0x22, 0xfb, 0x59, 0xc0, 0xc6, 0x2e, 0xf7, 0xce, 0xbf, 0x55, - 0x41, 0xda, 0x80, 0xca, 0x05, 0x3d, 0x9b, 0x18, 0xaf, 0x7c, 0x41, 0xcf, 0xf6, 0xfd, 0x29, 0xbb, - 0x94, 0xde, 0x6a, 0x97, 0xac, 0xf0, 0x1a, 0x37, 0x28, 0xbc, 0x0f, 0x5e, 0x42, 0x73, 0x9a, 0x8e, - 0xde, 0x87, 0x77, 0xfa, 0xfb, 0x47, 0xa7, 0x87, 0xbb, 0x83, 0xfd, 0x17, 0xc7, 0xce, 0xd1, 0x8b, - 0x67, 0x5d, 0xe7, 0xf4, 0xb8, 0x7f, 0xd2, 0xdd, 0xdb, 0xff, 0x62, 0xbf, 0x2b, 0xe2, 0xae, 0x0d, - 0xeb, 0xb3, 0x80, 0x41, 0xf7, 0x4f, 0x06, 0x56, 0x41, 0x06, 0xeb, 0x0c, 0x67, 0xf7, 0xf4, 0xd9, - 0xfe, 0x0b, 0xab, 0xb8, 0xfd, 0x37, 0x65, 0x68, 0xed, 0x0a, 0xdf, 0x9d, 0xcc, 0x86, 0x7c, 0x58, - 0x53, 0xbe, 0x36, 0xfd, 0x2f, 0x9c, 0x65, 0x77, 0x47, 0x85, 0xdd, 0x4a, 0x0b, 0xed, 0x8f, 0xdf, - 0x06, 0xd3, 0x5e, 0xf5, 0x75, 0x01, 0xde, 0x4d, 0x0b, 0x72, 0x06, 0xcc, 0x97, 0x66, 0xb4, 0xbd, - 0x4c, 0xd3, 0x7c, 0x19, 0xcf, 0x66, 0xff, 0xf4, 0x5b, 0xc9, 0xe8, 0xa5, 0xfc, 0x29, 0x58, 0xcf, - 0x09, 0x9f, 0xde, 0xed, 0xbd, 0x25, 0x8a, 0x9e, 0x13, 0x9e, 0x4d, 0xf6, 0xe1, 0xb5, 0x18, 0xad, - 0xdc, 0x01, 0x24, 0x0a, 0xe8, 0x14, 0x82, 0xa1, 0x65, 0xa2, 0x02, 0x9a, 0xe9, 0xff, 0xe8, 0x7a, - 0x90, 0x9e, 0x40, 0x1c, 0x97, 0x2c, 0x30, 0x37, 0x3c, 0x2e, 0x89, 0x7d, 0xfb, 0x71, 0xa5, 0x30, - 0x3d, 0xcb, 0x6b, 0xb8, 0xa3, 0x9d, 0x42, 0xfb, 0x73, 0x2e, 0x11, 0xa1, 0x87, 0xf3, 0xd9, 0x6d, - 0x2e, 0x5b, 0x65, 0x33, 0x7e, 0x72, 0x33, 0xb0, 0x9a, 0xb7, 0xf3, 0xc5, 0x57, 0x1f, 0x0e, 0x03, - 0x7e, 0x9e, 0x9c, 0x6d, 0x79, 0x74, 0x94, 0xfe, 0xbb, 0x50, 0xfd, 0x83, 0xd0, 0xa3, 0x61, 0x4a, - 0xf8, 0xfb, 0x62, 0xe3, 0x30, 0x78, 0x4d, 0xfe, 0x48, 0xde, 0x09, 0x29, 0xa7, 0xff, 0x59, 0x6c, - 0xea, 0xf1, 0xd3, 0xa7, 0x92, 0x70, 0x56, 0x91, 0x22, 0x9f, 0xfe, 0x6f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xd2, 0xd8, 0x04, 0x4a, 0xd0, 0x28, 0x00, 0x00, + // 3376 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x1b, 0x49, + 0x76, 0x37, 0xbf, 0xc9, 0x47, 0x51, 0xa4, 0x4a, 0x1f, 0xa6, 0x7b, 0x76, 0x66, 0x3c, 0x9a, 0x9d, + 0x5d, 0xc3, 0x9e, 0x95, 0x1d, 0xcd, 0x7a, 0x67, 0xe5, 0xd9, 0x5d, 0x44, 0x94, 0x39, 0xa6, 0x1c, + 0x49, 0xd6, 0x14, 0x29, 0x24, 0x3b, 0x41, 0xd0, 0x68, 0x75, 0x97, 0xa9, 0xb6, 0x9b, 0x5d, 0xdc, + 0xae, 0x6a, 0xdb, 0x5a, 0x20, 0xf7, 0x01, 0x72, 0xca, 0x2d, 0xa7, 0x20, 0x97, 0x3d, 0x64, 0xaf, + 0x7b, 0x4c, 0x80, 0xfc, 0x0d, 0x41, 0x80, 0x20, 0x01, 0xf2, 0x17, 0xe4, 0x9e, 0x43, 0x6e, 0x41, + 0xbd, 0xaa, 0x6e, 0x36, 0xbf, 0x64, 0xcd, 0x64, 0x7c, 0xdb, 0x1b, 0xfb, 0xbd, 0xdf, 0x7b, 0x55, + 0xf5, 0xea, 0xf7, 0xea, 0xd5, 0x07, 0xe1, 0x83, 0xc0, 0x7f, 0xc5, 0x5e, 0xfa, 0xd2, 0x76, 0x86, + 0x2c, 0x94, 0xb6, 0xf0, 0x47, 0x71, 0xe0, 0x48, 0x9f, 0x87, 0x3b, 0xe3, 0x88, 0x4b, 0x4e, 0x2a, + 0x46, 0x6f, 0x7d, 0x84, 0x80, 0xfb, 0x33, 0x70, 0x26, 0x44, 0x8a, 0xb5, 0x3e, 0x1c, 0x72, 0x3e, + 0x0c, 0xd8, 0x7d, 0xfc, 0x3a, 0x8f, 0x9f, 0xdf, 0x97, 0xfe, 0x88, 0x09, 0xe9, 0x8c, 0xc6, 0x06, + 0x70, 0x2b, 0xb1, 0x76, 0x03, 0x1e, 0x7b, 0xda, 0x87, 0x51, 0x6d, 0x24, 0xaa, 0x11, 0xf7, 0x58, + 0x20, 0xb4, 0x74, 0xfb, 0x5f, 0x0b, 0xb0, 0xd1, 0x4f, 0xbb, 0x44, 0xe3, 0xb0, 0x1f, 0x8f, 0x46, + 0x4e, 0x74, 0x49, 0xb6, 0xa0, 0x3c, 0x76, 0x84, 0x60, 0x5e, 0x3b, 0x77, 0x3b, 0x77, 0xa7, 0x44, + 0xcd, 0x97, 0x92, 0x3f, 0x77, 0xfc, 0x80, 0x79, 0xed, 0xbc, 0x96, 0xeb, 0x2f, 0xf2, 0x3e, 0xc0, + 0x90, 0xfb, 0xe1, 0xd0, 0x7e, 0xcd, 0x82, 0xa0, 0x5d, 0xb8, 0x9d, 0xbb, 0x53, 0xa3, 0x35, 0x94, + 0xfc, 0x39, 0x0b, 0x02, 0xa5, 0x96, 0xdc, 0xf6, 0x47, 0xe3, 0x88, 0xbf, 0x62, 0xed, 0xa2, 0x56, + 0x4b, 0x7e, 0xa8, 0x05, 0xe4, 0x0b, 0x28, 0xfb, 0x42, 0xc4, 0x4c, 0xb4, 0x4b, 0xb7, 0x0b, 0x77, + 0xea, 0xbb, 0x1f, 0xef, 0x98, 0xde, 0xee, 0x2c, 0xea, 0xdc, 0xce, 0xa1, 0xc2, 0x52, 0x63, 0x42, + 0xbe, 0x82, 0x15, 0xf7, 0xc2, 0x91, 0xf6, 0x85, 0x2f, 0x24, 0x8f, 0x2e, 0xdb, 0x65, 0x74, 0xb1, + 0x73, 0xb5, 0x8b, 0x83, 0x0b, 0x47, 0xf6, 0xb4, 0x41, 0x37, 0x94, 0xd1, 0x25, 0xad, 0xbb, 0x13, + 0x89, 0xf5, 0x35, 0xb4, 0x66, 0x01, 0xa4, 0x05, 0x85, 0x97, 0xec, 0x12, 0xc3, 0x51, 0xa3, 0xea, + 0x27, 0x79, 0x00, 0xa5, 0x57, 0x4e, 0x10, 0x33, 0x0c, 0x45, 0x7d, 0xd7, 0x4a, 0x5b, 0xd4, 0x71, + 0x57, 0x1e, 0x0e, 0x78, 0x28, 0xd9, 0x1b, 0x49, 0x35, 0xf0, 0x51, 0xfe, 0xe7, 0x39, 0xcb, 0x86, + 0x12, 0xf6, 0x9f, 0xdc, 0x86, 0xba, 0xc7, 0x84, 0x1b, 0xf9, 0x63, 0xd5, 0x37, 0xe3, 0x38, 0x2b, + 0x22, 0x1f, 0x00, 0x88, 0x78, 0x38, 0x64, 0x02, 0x01, 0x79, 0x04, 0x64, 0x24, 0x64, 0x03, 0x4a, + 0x81, 0x73, 0xce, 0x92, 0x78, 0xeb, 0x8f, 0xed, 0xdf, 0xff, 0x0a, 0x1a, 0x53, 0x63, 0x26, 0xab, + 0x90, 0xf7, 0x3d, 0xd3, 0x40, 0xde, 0xc7, 0xc9, 0x1a, 0x47, 0xfc, 0x05, 0x73, 0xa5, 0xed, 0x7b, + 0xc6, 0x6f, 0xcd, 0x48, 0x0e, 0x3d, 0xf2, 0x10, 0xca, 0x42, 0x3a, 0x32, 0x16, 0xe8, 0x77, 0x75, + 0xf7, 0xfd, 0xc5, 0xa1, 0xdc, 0xe9, 0x23, 0x88, 0x1a, 0x30, 0xb9, 0x07, 0x6b, 0x9a, 0xb4, 0xd9, + 0x51, 0xe9, 0xa9, 0x6e, 0xa1, 0xe2, 0x71, 0x66, 0x68, 0x1b, 0x50, 0x62, 0x51, 0xc4, 0xa3, 0x76, + 0x49, 0x77, 0x1d, 0x3f, 0xc8, 0x1e, 0x80, 0x1b, 0x31, 0x47, 0x32, 0xcf, 0x76, 0x64, 0xbb, 0x6c, + 0xc2, 0xaa, 0x59, 0xbf, 0x93, 0xb0, 0x7e, 0x67, 0x90, 0xb0, 0x9e, 0xd6, 0x0c, 0x7a, 0x5f, 0x92, + 0x1d, 0x28, 0xbe, 0xe0, 0xe7, 0xa2, 0x5d, 0xc1, 0xd9, 0xb7, 0x96, 0x74, 0xf9, 0x29, 0x3f, 0xa7, + 0x88, 0x53, 0x31, 0xd0, 0xbd, 0x0d, 0x9d, 0x11, 0x6b, 0xd7, 0x74, 0x0c, 0x50, 0x72, 0xe2, 0x8c, + 0x18, 0xf9, 0x25, 0xac, 0x0a, 0x97, 0x85, 0x4e, 0xe4, 0x73, 0x7b, 0x18, 0xf1, 0x78, 0xdc, 0x06, + 0xec, 0xcd, 0xd6, 0xc4, 0xb1, 0x51, 0x3f, 0x51, 0x5a, 0xda, 0x10, 0xd9, 0x4f, 0xf2, 0x10, 0xaa, + 0x2c, 0xf4, 0xf4, 0x30, 0xea, 0x6f, 0x1d, 0x46, 0x05, 0xb1, 0xfb, 0x92, 0xbc, 0x07, 0xb5, 0x17, + 0xfc, 0xdc, 0x76, 0x79, 0x1c, 0xca, 0xf6, 0x0a, 0x26, 0x58, 0xf5, 0x05, 0x3f, 0x3f, 0x50, 0xdf, + 0xe4, 0x23, 0x58, 0xd1, 0x49, 0x68, 0xf4, 0x0d, 0xd4, 0xd7, 0xb5, 0x2c, 0x85, 0xe8, 0x7c, 0x34, + 0x90, 0x55, 0x0d, 0xd1, 0x32, 0x0d, 0xf9, 0x31, 0x34, 0xc3, 0x78, 0x94, 0x59, 0x87, 0x44, 0xbb, + 0x89, 0xa8, 0xd5, 0x30, 0x1e, 0x4d, 0x82, 0x25, 0xc8, 0x2e, 0x94, 0x62, 0xe1, 0x0c, 0x59, 0xbb, + 0x85, 0xfd, 0xff, 0xc1, 0x92, 0x88, 0x9e, 0x29, 0x0c, 0xd5, 0x50, 0x45, 0x69, 0x97, 0x87, 0x6e, + 0x1c, 0x45, 0x2c, 0x74, 0x2f, 0xdb, 0x6b, 0xba, 0xf9, 0x8c, 0x88, 0xdc, 0x83, 0xa2, 0x5a, 0x80, + 0xda, 0x04, 0x99, 0x75, 0x73, 0x81, 0xd3, 0x63, 0xee, 0x31, 0x8a, 0x20, 0xf2, 0x05, 0x54, 0x46, + 0x4c, 0x46, 0xbe, 0x2b, 0xda, 0xeb, 0xd8, 0x89, 0x8f, 0x96, 0x74, 0x82, 0xc6, 0xe1, 0xb1, 0x06, + 0xd2, 0xc4, 0x42, 0xc5, 0x42, 0xe8, 0x64, 0xb7, 0x7f, 0x2b, 0xa4, 0xd7, 0xde, 0xb8, 0x9d, 0xbb, + 0xb3, 0x42, 0xeb, 0x46, 0xf6, 0xb5, 0x90, 0x9e, 0xf5, 0xef, 0x25, 0x28, 0x3c, 0xe5, 0xe7, 0x73, + 0xf9, 0xb1, 0x97, 0x26, 0x40, 0x1e, 0xbb, 0xf9, 0xd1, 0x72, 0x36, 0xcd, 0x26, 0xc1, 0x36, 0xac, + 0xf8, 0xa1, 0x90, 0x51, 0xec, 0xea, 0xd8, 0xea, 0xcc, 0x9c, 0x92, 0x4d, 0xb8, 0x5f, 0xcc, 0x72, + 0xff, 0x27, 0x40, 0x34, 0x21, 0xd9, 0x9b, 0x31, 0x73, 0xa5, 0x99, 0x1b, 0x9d, 0x1e, 0x3a, 0xb1, + 0xba, 0x19, 0xc5, 0x24, 0xf7, 0xcb, 0x99, 0xdc, 0x27, 0x04, 0x8a, 0xd2, 0x19, 0xea, 0x2c, 0xa8, + 0x51, 0xfc, 0xad, 0x48, 0x15, 0x71, 0x3e, 0xd2, 0x44, 0xaf, 0x22, 0xba, 0xaa, 0x04, 0xc8, 0xf3, + 0x3d, 0x00, 0x21, 0x9d, 0xc8, 0x64, 0x1c, 0xbc, 0x3d, 0xe3, 0x0c, 0x7a, 0x5f, 0x7e, 0x57, 0x8e, + 0xdf, 0x84, 0x0a, 0x76, 0xc7, 0xf7, 0x90, 0xe1, 0x35, 0x5a, 0x56, 0x9f, 0x87, 0x1e, 0xf9, 0x59, + 0x42, 0xb8, 0x06, 0x3a, 0xbb, 0x7d, 0x45, 0xd0, 0xa7, 0x48, 0x97, 0x61, 0xc9, 0xea, 0x95, 0x2c, + 0x79, 0xca, 0xcf, 0x67, 0x59, 0x62, 0xfd, 0x15, 0x94, 0xd0, 0x19, 0xb9, 0x03, 0x2d, 0xb5, 0x52, + 0xdb, 0x32, 0x8e, 0x42, 0x61, 0xd2, 0x47, 0x97, 0xbe, 0x55, 0x25, 0x1f, 0x28, 0xb1, 0xce, 0xa0, + 0xbb, 0xb0, 0xe6, 0xc4, 0x9e, 0xcf, 0xa7, 0xa0, 0xba, 0x1a, 0x36, 0x51, 0x31, 0xc1, 0x6e, 0x73, + 0x28, 0x6b, 0x82, 0x10, 0x02, 0xab, 0xfd, 0xc1, 0xfe, 0xe0, 0xac, 0x6f, 0x9f, 0x76, 0x4f, 0x1e, + 0x1f, 0x9e, 0x3c, 0x69, 0xdd, 0xc8, 0xc8, 0xe8, 0xd9, 0xc9, 0x89, 0x92, 0xe5, 0xc8, 0x06, 0xb4, + 0x8c, 0xec, 0xe0, 0xd9, 0xf1, 0xe9, 0x51, 0x77, 0xd0, 0x7d, 0xdc, 0xca, 0x93, 0x35, 0x68, 0x18, + 0xe9, 0x97, 0xfb, 0x87, 0x47, 0xdd, 0xc7, 0xad, 0x42, 0x16, 0xb8, 0x7f, 0x72, 0xd0, 0x3d, 0x52, + 0xd2, 0xe2, 0xd3, 0x62, 0xb5, 0xd6, 0x02, 0xeb, 0x3f, 0xb6, 0x01, 0x26, 0xa3, 0x25, 0x77, 0x61, + 0xd5, 0x71, 0xdd, 0x38, 0x72, 0xdc, 0x4b, 0x5b, 0xb8, 0x3c, 0x62, 0x38, 0xb2, 0x7c, 0xef, 0x06, + 0x6d, 0x24, 0xf2, 0xbe, 0x12, 0x7f, 0x93, 0xcb, 0x91, 0x1d, 0x68, 0x29, 0x02, 0x46, 0x3e, 0x0b, + 0x5d, 0x66, 0xd0, 0x79, 0x44, 0xe7, 0x68, 0x73, 0xa2, 0x49, 0xf1, 0x9f, 0x42, 0x53, 0x3a, 0xe2, + 0xa5, 0xed, 0xf2, 0xd1, 0x38, 0x60, 0xb8, 0xe6, 0x17, 0x10, 0x9e, 0xa7, 0xab, 0x4a, 0x71, 0x90, + 0xca, 0x15, 0xfa, 0x73, 0x28, 0x08, 0x29, 0x91, 0xf8, 0xf5, 0xdd, 0x4f, 0xde, 0x3a, 0x4f, 0x3b, + 0xfd, 0xc1, 0x80, 0x2a, 0x0b, 0x65, 0x18, 0x04, 0x23, 0x4c, 0x87, 0x6b, 0x19, 0x1e, 0x1d, 0x1d, + 0x53, 0x65, 0xa1, 0x0c, 0xa5, 0x14, 0xa6, 0x96, 0x5c, 0xc3, 0x70, 0x30, 0xe8, 0x53, 0x65, 0x41, + 0x28, 0xac, 0xb8, 0x3c, 0x7c, 0xc5, 0x22, 0x81, 0xb0, 0x76, 0x05, 0x3d, 0xec, 0xbc, 0xdd, 0xc3, + 0x41, 0xc6, 0x8a, 0x4e, 0xf9, 0x20, 0x87, 0x50, 0x33, 0x0b, 0x2f, 0x8f, 0x30, 0x15, 0xeb, 0xbb, + 0xf7, 0xae, 0x11, 0x84, 0xc4, 0x84, 0x4e, 0xac, 0xc9, 0x2f, 0xa0, 0x84, 0xfc, 0x6b, 0xd7, 0xb0, + 0xe0, 0xfd, 0xe8, 0x1a, 0x23, 0x8b, 0xa3, 0x90, 0x6a, 0x23, 0xf2, 0x21, 0xd4, 0x5f, 0xc4, 0xde, + 0x90, 0xe9, 0xdd, 0x20, 0xe6, 0x7d, 0x8d, 0x02, 0x8a, 0xd4, 0xfa, 0x1b, 0x4c, 0x48, 0x9e, 0x85, + 0xd5, 0x11, 0xa6, 0x49, 0xfe, 0x74, 0x82, 0xfd, 0x14, 0xc8, 0x85, 0x23, 0xec, 0x88, 0x8d, 0xb8, + 0x64, 0xc9, 0x96, 0x15, 0x93, 0xbb, 0x4a, 0x5b, 0x17, 0x8e, 0xa0, 0xa8, 0xe8, 0x6b, 0x39, 0xb9, + 0x0b, 0x79, 0xf9, 0xc0, 0xe4, 0xf8, 0x55, 0x0b, 0x46, 0x5e, 0x3e, 0x20, 0x9f, 0xe8, 0x7a, 0xe2, + 0x0b, 0x16, 0x32, 0xa1, 0xd3, 0x3b, 0xdf, 0x2b, 0xd0, 0xac, 0x50, 0xb1, 0x6a, 0x0f, 0xb6, 0xe2, + 0x30, 0x64, 0x2e, 0x13, 0x42, 0x2d, 0xf7, 0x92, 0xf3, 0xc0, 0x76, 0x9d, 0x20, 0xd0, 0xa5, 0xad, + 0xda, 0x2b, 0xd2, 0x8d, 0x8c, 0x7e, 0xc0, 0x79, 0x70, 0xa0, 0xb4, 0x86, 0xee, 0x7e, 0xf8, 0x9c, + 0x47, 0x23, 0x8c, 0x98, 0x1d, 0x70, 0x21, 0xb0, 0xe0, 0x55, 0x7b, 0x25, 0xda, 0xcc, 0x68, 0x8e, + 0xb8, 0x6e, 0xea, 0x67, 0xb0, 0x11, 0x31, 0x2f, 0x0e, 0x3d, 0x47, 0xed, 0xce, 0xa5, 0x23, 0xd9, + 0x88, 0x85, 0x52, 0x60, 0xa9, 0xab, 0xf6, 0xca, 0x74, 0x3d, 0xd5, 0xf6, 0x53, 0xa5, 0x26, 0xfe, + 0xe6, 0x98, 0xf3, 0xc8, 0xfe, 0x4d, 0xac, 0xf7, 0x6e, 0xf6, 0x6f, 0x62, 0x27, 0xf0, 0xe5, 0x25, + 0x16, 0xc2, 0x6a, 0xaf, 0x42, 0xd7, 0x95, 0xfa, 0x2b, 0xa3, 0xfd, 0x4a, 0x2b, 0x95, 0xe1, 0xaf, + 0xa0, 0x9d, 0xa5, 0x90, 0x3d, 0x8e, 0xf8, 0x30, 0x32, 0x21, 0x5e, 0xc7, 0x78, 0x54, 0xe9, 0xcd, + 0x2c, 0xe2, 0x74, 0x02, 0xf8, 0x26, 0x97, 0xb3, 0xfe, 0x50, 0x84, 0x42, 0x7f, 0x30, 0x20, 0x9b, + 0x50, 0x78, 0xcd, 0xa2, 0x34, 0xf1, 0xd5, 0x87, 0x72, 0x7f, 0x0b, 0x4a, 0xaf, 0x79, 0xe4, 0xe9, + 0x4a, 0xd7, 0xe8, 0xe5, 0xa8, 0xfe, 0x54, 0xaa, 0x1f, 0x42, 0x5d, 0xfd, 0xb6, 0xb1, 0x3c, 0xe9, + 0x4a, 0xd6, 0xe8, 0xe5, 0x29, 0x28, 0x61, 0x17, 0x65, 0x0a, 0xb5, 0x09, 0x05, 0x97, 0xe9, 0x52, + 0xa6, 0xa6, 0x46, 0x7d, 0x18, 0xbf, 0xee, 0x85, 0x13, 0x09, 0xdc, 0x59, 0x35, 0x7a, 0x45, 0xaa, + 0x3f, 0x8d, 0x5f, 0xf5, 0x3b, 0xf1, 0x0b, 0x08, 0x28, 0x51, 0x50, 0xc2, 0x89, 0xdf, 0x5f, 0x42, + 0x5b, 0x46, 0x4e, 0x98, 0xee, 0x18, 0xed, 0xc0, 0x91, 0x6a, 0x07, 0x61, 0x8f, 0x04, 0x66, 0x4e, + 0xa3, 0x57, 0xa6, 0x5b, 0x53, 0x88, 0x23, 0x0d, 0x38, 0x46, 0xf3, 0x5d, 0x20, 0x2c, 0x94, 0xbe, + 0xbc, 0xb4, 0x23, 0xe6, 0xf2, 0x61, 0xe8, 0x63, 0x0e, 0xd7, 0xb1, 0x97, 0x15, 0xba, 0xa6, 0x75, + 0x74, 0xa2, 0x4a, 0x96, 0x3e, 0x25, 0xf7, 0x99, 0xb0, 0x63, 0x29, 0x59, 0xc4, 0x74, 0x89, 0x6a, + 0xf4, 0xaa, 0xb4, 0x99, 0x68, 0xce, 0xb4, 0x42, 0xe1, 0x7f, 0x0a, 0xeb, 0x29, 0xde, 0xb4, 0xf2, + 0x5b, 0xe6, 0x21, 0xb5, 0x1b, 0xbd, 0x1a, 0x25, 0x89, 0x92, 0xa6, 0xba, 0x6f, 0x72, 0xb9, 0x4e, + 0x19, 0x8a, 0xf6, 0x6b, 0x16, 0x75, 0xaa, 0x50, 0xb6, 0x31, 0xd6, 0x9d, 0x55, 0x58, 0xb1, 0x33, + 0x91, 0x46, 0x84, 0x6b, 0x10, 0x18, 0x35, 0x44, 0x64, 0x62, 0xd6, 0x79, 0x0f, 0x6e, 0xd9, 0xcb, + 0xa2, 0xd3, 0xd9, 0x84, 0x75, 0x7b, 0x7e, 0xec, 0x9d, 0x75, 0x58, 0xb3, 0x67, 0x87, 0xd7, 0xd9, + 0x82, 0x0d, 0x7b, 0xc1, 0x18, 0xac, 0x7f, 0xc8, 0x41, 0xe1, 0xe8, 0xe8, 0x98, 0xfc, 0x00, 0x2a, + 0x52, 0x3e, 0x97, 0x2a, 0xe8, 0x39, 0x1c, 0xd6, 0x0d, 0x5a, 0x56, 0x02, 0x1d, 0x64, 0xad, 0x15, + 0x4a, 0x9b, 0xd0, 0x47, 0x69, 0x85, 0xd6, 0xde, 0x87, 0x35, 0xc9, 0x5f, 0xb2, 0x50, 0xd8, 0x63, + 0x16, 0xd9, 0x82, 0xb9, 0x3c, 0xf4, 0xd2, 0xda, 0xd0, 0xd4, 0xaa, 0x53, 0x16, 0xf5, 0x51, 0xa1, + 0x22, 0x03, 0x50, 0xb5, 0x4d, 0x6b, 0xc9, 0x6f, 0xe5, 0xbb, 0xb3, 0x01, 0xc4, 0x9e, 0xf3, 0x64, + 0xfd, 0x53, 0x09, 0x0a, 0x83, 0x41, 0xdf, 0x74, 0xc2, 0x99, 0xed, 0xa2, 0x93, 0xed, 0xe2, 0xf9, + 0x6c, 0x17, 0xcf, 0x8f, 0x13, 0xf2, 0xaa, 0xa4, 0x48, 0x3a, 0x35, 0x97, 0x14, 0x15, 0x34, 0x29, + 0x2c, 0x4f, 0x8a, 0xaa, 0x61, 0xf7, 0xe2, 0xa4, 0xa8, 0xa1, 0xdf, 0xd2, 0x7c, 0x52, 0x80, 0x21, + 0xf0, 0xd2, 0xa4, 0xa8, 0x23, 0xa0, 0x32, 0x9b, 0x14, 0x0f, 0x60, 0x2d, 0x74, 0x64, 0x1c, 0x39, + 0x81, 0x5a, 0xfa, 0x4c, 0x75, 0x2e, 0x99, 0x55, 0xa0, 0x95, 0x51, 0xa5, 0xe5, 0xf9, 0x01, 0xac, + 0xb1, 0x30, 0x0e, 0x5d, 0x5f, 0xaf, 0x1e, 0xda, 0xa2, 0x8c, 0x16, 0x35, 0xda, 0xca, 0xa8, 0x52, + 0x8b, 0xc5, 0x99, 0xa3, 0x97, 0x5e, 0xf8, 0x16, 0x99, 0xd3, 0xc4, 0x21, 0xd4, 0xbf, 0x4d, 0xe6, + 0xb4, 0xd0, 0x64, 0x65, 0x59, 0xe6, 0x18, 0x4e, 0x38, 0x19, 0x7e, 0xa8, 0x89, 0xfd, 0x5e, 0x32, + 0x4a, 0x71, 0x6c, 0x2e, 0xb4, 0x28, 0x9d, 0x0b, 0xdf, 0xf7, 0x92, 0x60, 0xff, 0x5b, 0x85, 0x95, + 0xec, 0x46, 0x01, 0xb3, 0x25, 0x8e, 0x42, 0x5b, 0x3a, 0x2f, 0xfd, 0x70, 0x38, 0xb3, 0x4d, 0x6b, + 0x2a, 0xd5, 0x00, 0x35, 0xe9, 0x3c, 0x3d, 0x82, 0x9b, 0x11, 0x13, 0x63, 0x1e, 0x0a, 0x96, 0x66, + 0xff, 0xf8, 0xe1, 0x83, 0x84, 0xe9, 0xa5, 0x5e, 0x8e, 0x6e, 0x24, 0x00, 0xb3, 0x34, 0x9e, 0x3e, + 0x7c, 0xa0, 0x79, 0xbf, 0xd0, 0x76, 0xef, 0xa1, 0xb2, 0x2d, 0xa0, 0x6d, 0x7e, 0xde, 0x76, 0xef, + 0xe1, 0x55, 0xb6, 0x7b, 0xca, 0xb6, 0x88, 0xb6, 0x85, 0x05, 0xb6, 0x7b, 0xda, 0xf6, 0x33, 0x58, + 0x9f, 0xb3, 0x1d, 0xe9, 0x82, 0x5b, 0xea, 0x15, 0xe9, 0xda, 0x8c, 0x9d, 0x36, 0xfa, 0x39, 0x6c, + 0xe9, 0x83, 0xd1, 0xa5, 0xcf, 0x02, 0x2f, 0x6b, 0x57, 0x32, 0xa5, 0x63, 0x1d, 0xf5, 0xbf, 0x56, + 0xea, 0x29, 0xcb, 0x2f, 0xe0, 0x26, 0xe3, 0xd2, 0x1e, 0xf9, 0x62, 0x1c, 0x31, 0xcf, 0xc7, 0xe3, + 0x97, 0xd9, 0xaf, 0x97, 0x4d, 0x06, 0x6e, 0x32, 0x2e, 0x8f, 0xb3, 0x7a, 0xdc, 0xb7, 0x2b, 0xe3, + 0x3b, 0xd0, 0xe0, 0xaf, 0x58, 0x14, 0x38, 0x63, 0x3b, 0x52, 0x53, 0x84, 0x8b, 0x81, 0x2a, 0x1e, + 0x2b, 0x46, 0x4c, 0x95, 0xd4, 0x2c, 0x74, 0x09, 0x52, 0x8c, 0x19, 0x73, 0x2f, 0x26, 0x35, 0xaa, + 0x4a, 0x9b, 0x46, 0xd5, 0x47, 0x8d, 0xee, 0xd7, 0x3d, 0x68, 0x4a, 0x2e, 0x9d, 0x20, 0x03, 0xaf, + 0x99, 0xa2, 0xd1, 0x40, 0x45, 0x16, 0xfc, 0x39, 0x6c, 0x3a, 0xaf, 0x5f, 0xbe, 0x76, 0x22, 0xcf, + 0x16, 0x7e, 0x80, 0xbb, 0x72, 0x3d, 0x04, 0xbd, 0x46, 0x00, 0x5d, 0x37, 0xea, 0xbe, 0xd6, 0xa6, + 0x03, 0xd8, 0x81, 0x56, 0x1c, 0x3a, 0xa1, 0x78, 0xad, 0x88, 0xa8, 0x0f, 0x2b, 0xa6, 0x9c, 0xd5, + 0x69, 0x73, 0xa2, 0xc1, 0xd3, 0x8a, 0xa9, 0xb8, 0xcf, 0x9d, 0x40, 0x30, 0xdb, 0x0f, 0x25, 0x8b, + 0xa2, 0x78, 0x9c, 0x09, 0x57, 0xc3, 0x64, 0xe6, 0x16, 0x22, 0x0e, 0x33, 0x80, 0xb4, 0xb9, 0x2e, + 0xbc, 0xaf, 0xa7, 0x29, 0x62, 0x63, 0x8e, 0x07, 0x4a, 0xb6, 0x3b, 0x35, 0xcb, 0x7a, 0x41, 0x68, + 0xd0, 0x5b, 0x08, 0xa3, 0x06, 0xd5, 0xdd, 0x9d, 0x9a, 0x6d, 0xbd, 0xd8, 0xcf, 0x26, 0x42, 0xc7, + 0x82, 0xb6, 0xbd, 0x84, 0xed, 0x4b, 0x74, 0xc8, 0xe6, 0x65, 0x3a, 0xc5, 0x56, 0x4c, 0xcd, 0x05, + 0x6c, 0xec, 0xdc, 0x82, 0x9b, 0xf6, 0x62, 0xc2, 0xa1, 0xbb, 0x25, 0x8c, 0xea, 0xb4, 0x60, 0xd5, + 0x9e, 0x22, 0x0c, 0x0e, 0x65, 0x8e, 0x18, 0x1d, 0x02, 0x2d, 0x7b, 0x66, 0xf6, 0x3b, 0x6d, 0xd8, + 0xb2, 0x17, 0x4e, 0x32, 0x2e, 0x2a, 0xb3, 0xb3, 0x88, 0xe5, 0x7f, 0xd9, 0x54, 0x75, 0x6e, 0xc3, + 0x07, 0xf6, 0x95, 0x13, 0x61, 0xfd, 0x5d, 0x0e, 0x6a, 0xe9, 0x99, 0x02, 0x2b, 0x84, 0x13, 0x05, + 0x97, 0xb6, 0x64, 0xd1, 0xc8, 0x0f, 0x9d, 0xf4, 0x32, 0xb2, 0xda, 0xbb, 0x41, 0x5b, 0xa8, 0x1a, + 0x4c, 0x34, 0x86, 0x58, 0xca, 0xdb, 0x94, 0x41, 0x1e, 0x0d, 0x72, 0xb4, 0xa9, 0x34, 0xd3, 0x78, + 0xbd, 0x8a, 0xce, 0x36, 0x81, 0x23, 0x9b, 0x75, 0x63, 0xfd, 0x5b, 0x01, 0x8a, 0x8a, 0x90, 0x64, + 0x03, 0x4a, 0x7e, 0xe8, 0xb1, 0x37, 0xba, 0xa6, 0x53, 0xfd, 0x41, 0xee, 0x41, 0x31, 0xe2, 0x01, + 0x33, 0xd7, 0x32, 0x37, 0x17, 0x5c, 0xb8, 0x52, 0x1e, 0x30, 0x8a, 0x20, 0xf2, 0x01, 0x54, 0xf1, + 0xb2, 0x22, 0x59, 0xd5, 0xd4, 0xce, 0xa0, 0x82, 0x12, 0x9d, 0x58, 0x16, 0x94, 0x59, 0xe8, 0x25, + 0xeb, 0x16, 0xee, 0x7d, 0x59, 0xe8, 0x25, 0x49, 0x87, 0xe7, 0xd4, 0xd2, 0x77, 0x3d, 0xa7, 0x96, + 0xbf, 0xeb, 0x39, 0xb5, 0xf2, 0xff, 0x3e, 0xa7, 0x56, 0xbf, 0x87, 0x73, 0xea, 0xcc, 0xb9, 0xab, + 0x66, 0xf6, 0x47, 0x33, 0xe7, 0xae, 0x4e, 0x1d, 0x6a, 0x76, 0x12, 0xe2, 0x4e, 0x0d, 0x2a, 0xb6, + 0x8e, 0xa7, 0x2e, 0xae, 0x13, 0x68, 0x67, 0x0d, 0x9a, 0xf6, 0xf4, 0x05, 0x84, 0x2e, 0x96, 0x33, + 0xf7, 0x0c, 0x3a, 0x35, 0xa6, 0x2f, 0x13, 0xe6, 0x7c, 0xa9, 0xec, 0x5c, 0x7c, 0xd8, 0x43, 0x9f, + 0xb3, 0x87, 0xb9, 0xce, 0x4d, 0xd8, 0xb4, 0x17, 0x9d, 0xd8, 0x30, 0xe7, 0x16, 0x1e, 0xc9, 0x30, + 0xbd, 0x96, 0x9d, 0xb9, 0xac, 0xff, 0x2c, 0x00, 0x4c, 0xae, 0x1b, 0xdf, 0xe9, 0xd5, 0xca, 0x9f, + 0x00, 0x49, 0xef, 0xa0, 0xc7, 0x8e, 0x10, 0x6a, 0x59, 0x61, 0xe9, 0x66, 0xb5, 0x95, 0xe8, 0x4e, + 0x1d, 0x21, 0xa8, 0x23, 0xd9, 0x1f, 0xef, 0x57, 0xae, 0x4d, 0x34, 0xb5, 0x83, 0x9b, 0x0f, 0xad, + 0xf5, 0x3f, 0x05, 0x28, 0x1f, 0xe0, 0x8b, 0x82, 0xf5, 0x5f, 0x79, 0xa8, 0x50, 0x86, 0xd4, 0x98, + 0x79, 0x2e, 0xc9, 0xcd, 0x3e, 0x97, 0x4c, 0xbf, 0x24, 0xe4, 0x67, 0x5f, 0x12, 0x16, 0x5c, 0xb8, + 0x17, 0x17, 0x5e, 0xb8, 0x6f, 0x41, 0x39, 0x62, 0x43, 0x15, 0x8a, 0xb2, 0xb9, 0x17, 0xc5, 0x2f, + 0xd2, 0x99, 0x7b, 0x8a, 0xa8, 0x5c, 0xf5, 0x14, 0xa1, 0xa8, 0x37, 0xf5, 0x18, 0xa1, 0x78, 0xf1, + 0xc9, 0xf4, 0xc5, 0x7c, 0xd5, 0x6c, 0x10, 0xb3, 0x42, 0xbd, 0x31, 0xd1, 0xb7, 0xf3, 0xb5, 0x6b, + 0xdc, 0xce, 0x63, 0xb0, 0xa7, 0x3b, 0x96, 0x26, 0xab, 0x71, 0xf9, 0xb4, 0x58, 0x2d, 0xb4, 0x8a, + 0x74, 0xfe, 0x59, 0xc8, 0xfa, 0x9b, 0x1c, 0x54, 0xa9, 0xa9, 0xbd, 0xe4, 0x2e, 0xac, 0x4d, 0xa2, + 0x63, 0x47, 0x71, 0x38, 0x09, 0x73, 0x53, 0x64, 0x59, 0x70, 0xe8, 0x91, 0x3e, 0x6c, 0x8d, 0x23, + 0x26, 0xfc, 0x61, 0xc8, 0x3c, 0x7b, 0xcc, 0x85, 0xaa, 0x72, 0x38, 0x4b, 0xe6, 0x11, 0x6e, 0xf2, + 0x56, 0x75, 0x9a, 0xc0, 0x4e, 0xb9, 0x90, 0x66, 0x2a, 0xe9, 0xc6, 0x78, 0x81, 0x54, 0x9d, 0x76, + 0xd7, 0x0f, 0x78, 0xf8, 0xdc, 0x8f, 0x46, 0x7d, 0x1e, 0x47, 0x2e, 0x3b, 0x1b, 0x07, 0xdc, 0xf1, + 0xac, 0xbf, 0xbe, 0x36, 0x07, 0x16, 0x0e, 0x21, 0xbf, 0x78, 0x08, 0x3f, 0x86, 0xa6, 0xcb, 0x3d, + 0xa6, 0x8e, 0x05, 0xd1, 0xe5, 0x98, 0xfb, 0xa1, 0x34, 0xaf, 0x04, 0xab, 0x4a, 0xdc, 0x4d, 0xa5, + 0x16, 0x4c, 0x62, 0x64, 0xfd, 0x6d, 0x0e, 0x0a, 0x4f, 0x98, 0xb4, 0x06, 0xef, 0xa2, 0x4b, 0xd6, + 0x4f, 0x33, 0xb3, 0x71, 0x07, 0x0a, 0x51, 0xac, 0x77, 0x00, 0x53, 0x1c, 0xcb, 0x9a, 0x50, 0x05, + 0xb1, 0xfe, 0x25, 0x0f, 0xc5, 0x23, 0x5f, 0x48, 0xeb, 0x9f, 0x73, 0xd7, 0xee, 0xd5, 0xa3, 0x99, + 0xa7, 0x95, 0xab, 0xdf, 0x16, 0xd5, 0x59, 0x5e, 0xc3, 0x15, 0x3b, 0x7f, 0x01, 0x30, 0x76, 0x86, + 0x4c, 0xdf, 0x05, 0x60, 0xcc, 0xea, 0xbb, 0xed, 0xd4, 0x7e, 0xa0, 0xa4, 0xa7, 0xce, 0xd0, 0x6c, + 0x25, 0x7a, 0x39, 0x5a, 0x53, 0x68, 0x14, 0xab, 0x62, 0xa5, 0xea, 0x93, 0xf6, 0xd5, 0x69, 0x40, + 0xdd, 0x9e, 0x78, 0xb2, 0xde, 0x4c, 0x71, 0xb1, 0x18, 0xc5, 0xa1, 0x68, 0xe7, 0xf0, 0x56, 0x75, + 0xd9, 0xf0, 0x11, 0x43, 0xfe, 0x14, 0x9a, 0x21, 0x7b, 0x23, 0x33, 0xae, 0x0c, 0x09, 0x97, 0x76, + 0x8a, 0x36, 0x94, 0xc1, 0x69, 0xd2, 0x2d, 0xeb, 0x05, 0x94, 0x0f, 0x9c, 0xd0, 0x65, 0xc1, 0x3b, + 0x9a, 0xd7, 0x2c, 0x83, 0xde, 0xf1, 0x4b, 0xc7, 0xef, 0x72, 0xe9, 0x53, 0xc7, 0x2d, 0xd8, 0x9c, + 0x7e, 0xea, 0xb0, 0xcf, 0x4e, 0x8f, 0x9e, 0xed, 0x3f, 0x6e, 0xdd, 0x20, 0x9b, 0xb0, 0x66, 0x54, + 0x4f, 0xba, 0x27, 0x5d, 0xba, 0x3f, 0xd0, 0x8f, 0x1e, 0xf3, 0x0f, 0x21, 0x79, 0xb2, 0x05, 0xc4, + 0xc8, 0xfa, 0x67, 0xc7, 0xc7, 0xfb, 0xf4, 0xf0, 0x6b, 0x25, 0x2f, 0x2c, 0x7c, 0x20, 0x29, 0xce, + 0x3f, 0x90, 0x94, 0x16, 0x3e, 0x90, 0x94, 0x9f, 0x16, 0xab, 0xd5, 0x56, 0x8d, 0x56, 0xcc, 0x33, + 0xe0, 0xf6, 0xef, 0x0a, 0x50, 0x4d, 0x96, 0xcf, 0xc9, 0x9b, 0x5a, 0x2e, 0xfb, 0xa6, 0x36, 0xfb, + 0xa4, 0x97, 0x5f, 0xf0, 0xa4, 0xb7, 0xf8, 0xf1, 0xae, 0xb0, 0xec, 0xf1, 0xee, 0xbe, 0x79, 0xa6, + 0x2b, 0x22, 0xcb, 0xde, 0x9b, 0x5b, 0xc8, 0x77, 0x06, 0xce, 0x50, 0xe8, 0xff, 0x25, 0xe8, 0x37, + 0x3c, 0x0b, 0xaa, 0xb1, 0x60, 0x91, 0xe7, 0x48, 0xc7, 0x3c, 0x09, 0xa6, 0xdf, 0xd6, 0x3f, 0xe6, + 0x60, 0x4d, 0x57, 0xad, 0x2f, 0x23, 0x3e, 0x32, 0xd7, 0xec, 0xd6, 0xaf, 0xaf, 0x4d, 0xa8, 0xcc, + 0x83, 0x5c, 0x7e, 0xea, 0x41, 0x6e, 0x52, 0x90, 0x0a, 0xd9, 0x82, 0x64, 0xed, 0x65, 0xf2, 0xe5, + 0x27, 0x50, 0x4d, 0x6a, 0x80, 0x59, 0x32, 0xd6, 0xe6, 0x46, 0x43, 0x53, 0x88, 0xf5, 0x39, 0xd4, + 0xd2, 0xa1, 0x2d, 0xf8, 0x47, 0xc5, 0x46, 0xf6, 0x1f, 0x15, 0xb5, 0xcc, 0xbf, 0x26, 0xb6, 0x07, + 0xd0, 0x98, 0xaa, 0x72, 0x84, 0x40, 0x11, 0xeb, 0xad, 0xb6, 0xc6, 0xdf, 0xe4, 0x3e, 0xd4, 0x92, + 0x96, 0xd4, 0x34, 0x15, 0x16, 0xf7, 0x66, 0x82, 0xd9, 0xfe, 0x43, 0x0e, 0xc8, 0x24, 0xb3, 0x1f, + 0xfb, 0x62, 0xec, 0x48, 0xf7, 0xe2, 0x5b, 0x15, 0xa4, 0x4d, 0x28, 0xbf, 0xe0, 0xe7, 0x93, 0xe0, + 0x95, 0x5e, 0xf0, 0xf3, 0x43, 0x6f, 0x2a, 0x2e, 0x85, 0xb7, 0xc6, 0x25, 0x2d, 0xbc, 0xc5, 0x6b, + 0x14, 0xde, 0xbb, 0xcf, 0x61, 0x75, 0x5a, 0x4e, 0x3e, 0x84, 0xf7, 0xfa, 0x87, 0xc7, 0x67, 0x47, + 0xfb, 0x83, 0xc3, 0x67, 0x27, 0xf6, 0xf1, 0xb3, 0xc7, 0x5d, 0xfb, 0xec, 0xa4, 0x7f, 0xda, 0x3d, + 0x38, 0xfc, 0xf2, 0xb0, 0xab, 0xf2, 0xae, 0x0d, 0x1b, 0xb3, 0x80, 0x41, 0xf7, 0x2f, 0x06, 0xad, + 0x1c, 0x26, 0xeb, 0x8c, 0x66, 0xff, 0xec, 0xf1, 0xe1, 0xb3, 0x56, 0x7e, 0xf7, 0xef, 0x4b, 0xd0, + 0xdc, 0x57, 0xdc, 0x9d, 0xb4, 0x46, 0x3c, 0x58, 0xd7, 0x5c, 0x9b, 0xfe, 0x87, 0xc9, 0xb2, 0x8d, + 0x9f, 0xc6, 0xee, 0x24, 0x85, 0xf6, 0x47, 0x6f, 0x83, 0x19, 0x56, 0x7d, 0x93, 0x83, 0xf7, 0x93, + 0x82, 0x9c, 0x02, 0xb3, 0xa5, 0x99, 0xec, 0x2e, 0xf3, 0x34, 0x5f, 0xc6, 0xd3, 0xd6, 0x3f, 0xfb, + 0x56, 0x36, 0xa6, 0x2b, 0x7f, 0x09, 0xad, 0x27, 0x4c, 0x4e, 0x8f, 0x76, 0x7b, 0x89, 0xa3, 0x27, + 0x4c, 0xa6, 0x8d, 0x7d, 0x7c, 0x25, 0xc6, 0x38, 0xb7, 0x81, 0xa8, 0x02, 0x3a, 0x85, 0x10, 0x64, + 0x99, 0xa9, 0x82, 0xa6, 0xfe, 0x7f, 0x78, 0x35, 0xc8, 0x34, 0xa0, 0xa6, 0x0b, 0x0b, 0xcc, 0x35, + 0xa7, 0x0b, 0xb1, 0x6f, 0x9f, 0xae, 0x04, 0x66, 0x5a, 0x79, 0x05, 0xb7, 0x0c, 0x29, 0x0c, 0x9f, + 0x33, 0x0b, 0x11, 0xb9, 0x37, 0xbf, 0xba, 0xcd, 0xad, 0x56, 0x69, 0x8b, 0x9f, 0x5e, 0x0f, 0xac, + 0xdb, 0xed, 0x7c, 0xf9, 0xf5, 0xc7, 0x43, 0x5f, 0x5e, 0xc4, 0xe7, 0x3b, 0x2e, 0x1f, 0x25, 0xff, + 0x9c, 0xd3, 0xff, 0x8e, 0x73, 0x79, 0x90, 0x08, 0x7e, 0x9f, 0x6f, 0x1c, 0xf9, 0xaf, 0xd8, 0x9f, + 0xe1, 0x9e, 0x90, 0x4b, 0xfe, 0xdf, 0xf9, 0x55, 0xf3, 0xfd, 0xe8, 0x11, 0x0a, 0xce, 0xcb, 0x68, + 0xf2, 0xd9, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x87, 0xac, 0x0b, 0x60, 0xac, 0x27, 0x00, 0x00, } From 7667fa0184b757df276746712abb41067198ac70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Sun, 2 Aug 2026 22:01:10 -0700 Subject: [PATCH 15/32] agent-simulation: drop comments the definitions already give Listing a group's fields next to the group only guarantees the list goes stale; jumping to the definition shows them. --- protobufs/livekit_agent_simulation.proto | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/protobufs/livekit_agent_simulation.proto b/protobufs/livekit_agent_simulation.proto index 704bb4c7f..ab44c03fb 100644 --- a/protobufs/livekit_agent_simulation.proto +++ b/protobufs/livekit_agent_simulation.proto @@ -187,12 +187,12 @@ message SimulationRun { optional uint32 end_ms = 4; // audio only // Job groups hold means/pools of these; a field with no per-turn measurement stays unset here. - STT stt = 5; // transcription_latency_ms - LLM llm = 6; // ttft_ms, ttfs_ms, tokens_per_second - TTS tts = 7; // ttfa_ms, ttfb_ms, naturalness_score, enunciation_score - Conversation conversation = 8; // response_latency_ms, agent_yield_latency_ms, agent_reported_e2e_latency_ms, 0/1 counts + STT stt = 5; + LLM llm = 6; + TTS tts = 7; + Conversation conversation = 8; - optional float conciseness = 9; // judged {0, 0.5, 1} + optional float conciseness = 9; } } From f877c9327b39980521f43639eee41c2f7e29b790 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 05:01:53 +0000 Subject: [PATCH 16/32] generated protobuf --- livekit/livekit_agent_simulation.pb.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/livekit/livekit_agent_simulation.pb.go b/livekit/livekit_agent_simulation.pb.go index 629c5ad4e..65d5d2709 100644 --- a/livekit/livekit_agent_simulation.pb.go +++ b/livekit/livekit_agent_simulation.pb.go @@ -1991,11 +1991,11 @@ type SimulationRun_JobMetrics_Turn struct { StartMs *uint32 `protobuf:"varint,3,opt,name=start_ms,json=startMs,proto3,oneof" json:"start_ms,omitempty"` // audio only; relative to t0; unset if the turn could not be aligned to the audio EndMs *uint32 `protobuf:"varint,4,opt,name=end_ms,json=endMs,proto3,oneof" json:"end_ms,omitempty"` // audio only // Job groups hold means/pools of these; a field with no per-turn measurement stays unset here. - Stt *SimulationRun_JobMetrics_STT `protobuf:"bytes,5,opt,name=stt,proto3" json:"stt,omitempty"` // transcription_latency_ms - Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,6,opt,name=llm,proto3" json:"llm,omitempty"` // ttft_ms, ttfs_ms, tokens_per_second - Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,7,opt,name=tts,proto3" json:"tts,omitempty"` // ttfa_ms, ttfb_ms, naturalness_score, enunciation_score - Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,8,opt,name=conversation,proto3" json:"conversation,omitempty"` // response_latency_ms, agent_yield_latency_ms, agent_reported_e2e_latency_ms, 0/1 counts - Conciseness *float32 `protobuf:"fixed32,9,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` // judged {0, 0.5, 1} + Stt *SimulationRun_JobMetrics_STT `protobuf:"bytes,5,opt,name=stt,proto3" json:"stt,omitempty"` + Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,6,opt,name=llm,proto3" json:"llm,omitempty"` + Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,7,opt,name=tts,proto3" json:"tts,omitempty"` + Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,8,opt,name=conversation,proto3" json:"conversation,omitempty"` + Conciseness *float32 `protobuf:"fixed32,9,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } From 6aa08d10907c912b0c57afd43a857800a077b956 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Sun, 2 Aug 2026 22:03:19 -0700 Subject: [PATCH 17/32] agent-simulation: trim the rest of the metrics comments Same rule throughout: say what a field is and when it is available, not how the worker computes it or anything the name already gives. - the three headline scores shared one absence rule, now stated once - dropped the scoring recipes (turn_taking penalties, run-WER pooling) and the per-field aggregation notes the Turn block already covers - dropped 'word error rate' next to wer and friends - stated the 0/1-per-turn rule once instead of on every count - fixed an unfinished sentence and replaced the em dashes --- protobufs/livekit_agent_simulation.proto | 62 ++++++++++++------------ 1 file changed, 30 insertions(+), 32 deletions(-) diff --git a/protobufs/livekit_agent_simulation.proto b/protobufs/livekit_agent_simulation.proto index ab44c03fb..6cdde1a89 100644 --- a/protobufs/livekit_agent_simulation.proto +++ b/protobufs/livekit_agent_simulation.proto @@ -82,12 +82,10 @@ message SimulationRun { } message JobMetrics { - // Headline scores, 0-1, computed by the worker as weighted means over the - // members that ran (a missing member renormalizes the rest). - optional float accuracy_score = 1; // absent when the simulator spoiled the call - optional float experience_score = 2; // absent when the simulator spoiled the call - // The accuracy anchor: the scenario verdict as 1/0, or the fraction of the declared target state the call reached. - optional float task_completion = 3; // absent when the simulator spoiled the call + // Headline scores, 0-1. All absent when the simulator spoiled the call. + optional float accuracy_score = 1; + optional float experience_score = 2; + optional float task_completion = 3; // the scenario verdict as 1/0 STT stt = 4; LLM llm = 5; @@ -95,7 +93,7 @@ message SimulationRun { Conversation conversation = 7; Simulator simulator = 8; - // Conversation timeline: one entry per transcript turn, both speakers. + // One entry per turn, both speakers. repeated Turn turns = 9; string judge_model = 10; // text judge for judged scores; "" if none ran @@ -114,13 +112,13 @@ message SimulationRun { // The agent's perception of the caller. Audio only. message STT { - optional float wer = 1; // needs the RemoteSession; word error rate, pooled: word_errors / words - optional uint32 words = 2; // needs the RemoteSession; pooling stats: run WER = sum errors / sum words + optional float wer = 1; // needs the RemoteSession; word_errors / words + optional uint32 words = 2; // needs the RemoteSession optional uint32 word_errors = 3; // needs the RemoteSession - optional float cer = 4; // needs the RemoteSession; character error rate, pooled + optional float cer = 4; // needs the RemoteSession; char_errors / chars optional uint32 chars = 9; // needs the RemoteSession optional uint32 char_errors = 10; // needs the RemoteSession - optional uint32 transcription_latency_ms = 8; // needs the RemoteSession; agent-reported STT/endpointing delay, mean + optional uint32 transcription_latency_ms = 8; // needs the RemoteSession; agent-reported STT/endpointing delay // Key entities (names, IDs, amounts) the caller said. Needs the text judge. optional float entity_recognition = 11; // recognized / uttered @@ -129,23 +127,23 @@ message SimulationRun { } message LLM { - optional uint32 ttft_ms = 1; // needs the RemoteSession; time to first token, mean (per-turn in turns) - optional uint32 ttfs_ms = 2; // needs the RemoteSession; time to first sentence (the smallest speakable unit) - optional float tokens_per_second = 3; // needs the RemoteSession; decode rate, mean (per-turn in turns.llm) + optional uint32 ttft_ms = 1; // needs the RemoteSession; time to first token + optional uint32 ttfs_ms = 2; // needs the RemoteSession; time to first sentence, the smallest speakable unit + optional float tokens_per_second = 3; // needs the RemoteSession } - // The agent's voice. audio only. + // The agent's voice. Audio only. message TTS { optional uint32 ttfa_ms = 1; // needs the RemoteSession optional uint32 ttfb_ms = 2; // needs the RemoteSession; provider byte-level TTFB - optional float wer = 3; // needs the RemoteSession; word error rate, pooled: word_errors / words + optional float wer = 3; // needs the RemoteSession; word_errors / words optional uint32 words = 7; // needs the RemoteSession optional uint32 word_errors = 8; // needs the RemoteSession - optional float cer = 9; // needs the RemoteSession; character error rate, pooled + optional float cer = 9; // needs the RemoteSession; char_errors / chars optional uint32 chars = 10; // needs the RemoteSession optional uint32 char_errors = 11; // needs the RemoteSession - optional float naturalness_score = 5; // needs the audio judge; judged 0-1: prosody / expressiveness - optional float enunciation_score = 6; // needs the audio judge; judged 0-1: key entities audibly intact + optional float naturalness_score = 5; // needs the audio judge; 0-1, prosody / expressiveness + optional float enunciation_score = 6; // needs the audio judge; 0-1, key entities audibly intact // Key entities the agent said, as the caller heard them. Needs the text judge. optional float entity_recognition = 14; // recognized / uttered @@ -155,38 +153,38 @@ message SimulationRun { // Audio only. message Conversation { - optional float turn_taking_score = 1; // 0-1: latency curve + cut-in/barge-in/missed-turn penalties + optional float turn_taking_score = 1; // 0-1 optional int32 response_latency_p50_ms = 2; // floor-transfer offset; a gap is > 0, an overlap < 0 optional int32 response_latency_p95_ms = 3; optional int32 response_latency_p99_ms = 4; - optional int32 response_latency_ms = 16; // one turn's floor-transfer offset, cut-in if negative; job/run serve the percentiles - optional uint32 agent_yield_latency_ms = 5; // agent audio continuing past a barge-in — per turn: on the barging persona row (presence = barge-in); job: mean - optional uint32 eot_misprediction_count = 6; // agent started before the caller's turn ended; 0/1 per turn + optional int32 response_latency_ms = 16; // one turn's floor-transfer offset, cut-in if negative + optional uint32 agent_yield_latency_ms = 5; // agent audio continuing past a barge-in + optional uint32 eot_misprediction_count = 6; // agent started before the caller's turn ended optional float overlap_ratio = 7; // overlapping speech / total speech optional uint32 overlap_speech_ms = 8; // pooling stats for overlap_ratio optional uint32 total_speech_ms = 9; - optional uint32 awkward_silence_count = 11; // gaps past the natural-pause threshold; 0/1 per turn - optional uint32 unanswered_turns = 12; // the simulated party spoke, the agent never responded; 0/1 per turn + optional uint32 awkward_silence_count = 11; // gaps past the natural-pause threshold + optional uint32 unanswered_turns = 12; // the simulated party spoke, the agent never responded optional uint32 false_interruption_count = 13; // needs the RemoteSession; agent paused for a non-interruption - optional uint32 agent_reported_e2e_latency_ms = 15; // needs the RemoteSession; the agent's own claim, mean + optional uint32 agent_reported_e2e_latency_ms = 15; // needs the RemoteSession; the agent's own claim } - // Was the call spoiled by the simulator, not the agent? Diagnostic only — - // never folded into the scores; run aggregation excludes flagged calls - // from the two headline scores. + // Was the call spoiled by the simulator, not the agent? Diagnostic only, + // never folded into the scores. message Simulator { optional bool early_termination = 1; // simulator ended a still-progressing call optional bool late_termination = 2; // simulator dragged on after the goal was met } - // Rows exist for text and audio; + // Rows exist for text and audio. message Turn { uint32 index = 1; // 1-based, conversation order - livekit.agent.ChatRole role = 2; // ASSISTANT — the agent under test, USER — simulator persona. + livekit.agent.ChatRole role = 2; // ASSISTANT = the agent under test, USER = simulator persona optional uint32 start_ms = 3; // audio only; relative to t0; unset if the turn could not be aligned to the audio optional uint32 end_ms = 4; // audio only - // Job groups hold means/pools of these; a field with no per-turn measurement stays unset here. + // Job groups hold the means/pools of these; counts here are 0/1. A field + // with no per-turn measurement stays unset. STT stt = 5; LLM llm = 6; TTS tts = 7; From 81fce83b85b54556bd73b5d4ef8c388a2b5829fc Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 05:04:09 +0000 Subject: [PATCH 18/32] generated protobuf --- livekit/livekit_agent_simulation.pb.go | 72 +++++++++++++------------- 1 file changed, 35 insertions(+), 37 deletions(-) diff --git a/livekit/livekit_agent_simulation.pb.go b/livekit/livekit_agent_simulation.pb.go index 65d5d2709..c73afcf91 100644 --- a/livekit/livekit_agent_simulation.pb.go +++ b/livekit/livekit_agent_simulation.pb.go @@ -890,18 +890,16 @@ func (x *SimulationRun_Job) GetMetrics() *SimulationRun_JobMetrics { type SimulationRun_JobMetrics struct { state protoimpl.MessageState `protogen:"open.v1"` - // Headline scores, 0-1, computed by the worker as weighted means over the - // members that ran (a missing member renormalizes the rest). - AccuracyScore *float32 `protobuf:"fixed32,1,opt,name=accuracy_score,json=accuracyScore,proto3,oneof" json:"accuracy_score,omitempty"` // absent when the simulator spoiled the call - ExperienceScore *float32 `protobuf:"fixed32,2,opt,name=experience_score,json=experienceScore,proto3,oneof" json:"experience_score,omitempty"` // absent when the simulator spoiled the call - // The accuracy anchor: the scenario verdict as 1/0, or the fraction of the declared target state the call reached. - TaskCompletion *float32 `protobuf:"fixed32,3,opt,name=task_completion,json=taskCompletion,proto3,oneof" json:"task_completion,omitempty"` // absent when the simulator spoiled the call - Stt *SimulationRun_JobMetrics_STT `protobuf:"bytes,4,opt,name=stt,proto3" json:"stt,omitempty"` - Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,5,opt,name=llm,proto3" json:"llm,omitempty"` - Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,6,opt,name=tts,proto3" json:"tts,omitempty"` - Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,7,opt,name=conversation,proto3" json:"conversation,omitempty"` - Simulator *SimulationRun_JobMetrics_Simulator `protobuf:"bytes,8,opt,name=simulator,proto3" json:"simulator,omitempty"` - // Conversation timeline: one entry per transcript turn, both speakers. + // Headline scores, 0-1. All absent when the simulator spoiled the call. + AccuracyScore *float32 `protobuf:"fixed32,1,opt,name=accuracy_score,json=accuracyScore,proto3,oneof" json:"accuracy_score,omitempty"` + ExperienceScore *float32 `protobuf:"fixed32,2,opt,name=experience_score,json=experienceScore,proto3,oneof" json:"experience_score,omitempty"` + TaskCompletion *float32 `protobuf:"fixed32,3,opt,name=task_completion,json=taskCompletion,proto3,oneof" json:"task_completion,omitempty"` // the scenario verdict as 1/0 + Stt *SimulationRun_JobMetrics_STT `protobuf:"bytes,4,opt,name=stt,proto3" json:"stt,omitempty"` + Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,5,opt,name=llm,proto3" json:"llm,omitempty"` + Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,6,opt,name=tts,proto3" json:"tts,omitempty"` + Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,7,opt,name=conversation,proto3" json:"conversation,omitempty"` + Simulator *SimulationRun_JobMetrics_Simulator `protobuf:"bytes,8,opt,name=simulator,proto3" json:"simulator,omitempty"` + // One entry per turn, both speakers. Turns []*SimulationRun_JobMetrics_Turn `protobuf:"bytes,9,rep,name=turns,proto3" json:"turns,omitempty"` JudgeModel string `protobuf:"bytes,10,opt,name=judge_model,json=judgeModel,proto3" json:"judge_model,omitempty"` // text judge for judged scores; "" if none ran AudioJudgeModel string `protobuf:"bytes,11,opt,name=audio_judge_model,json=audioJudgeModel,proto3" json:"audio_judge_model,omitempty"` // audio (LALM) judge; "" if none ran @@ -1462,13 +1460,13 @@ func (x *SimulationRun_Job_Usage) GetAudioTurnsCount() int32 { // The agent's perception of the caller. Audio only. type SimulationRun_JobMetrics_STT struct { state protoimpl.MessageState `protogen:"open.v1"` - Wer *float32 `protobuf:"fixed32,1,opt,name=wer,proto3,oneof" json:"wer,omitempty"` // needs the RemoteSession; word error rate, pooled: word_errors / words - Words *uint32 `protobuf:"varint,2,opt,name=words,proto3,oneof" json:"words,omitempty"` // needs the RemoteSession; pooling stats: run WER = sum errors / sum words + Wer *float32 `protobuf:"fixed32,1,opt,name=wer,proto3,oneof" json:"wer,omitempty"` // needs the RemoteSession; word_errors / words + Words *uint32 `protobuf:"varint,2,opt,name=words,proto3,oneof" json:"words,omitempty"` // needs the RemoteSession WordErrors *uint32 `protobuf:"varint,3,opt,name=word_errors,json=wordErrors,proto3,oneof" json:"word_errors,omitempty"` // needs the RemoteSession - Cer *float32 `protobuf:"fixed32,4,opt,name=cer,proto3,oneof" json:"cer,omitempty"` // needs the RemoteSession; character error rate, pooled + Cer *float32 `protobuf:"fixed32,4,opt,name=cer,proto3,oneof" json:"cer,omitempty"` // needs the RemoteSession; char_errors / chars Chars *uint32 `protobuf:"varint,9,opt,name=chars,proto3,oneof" json:"chars,omitempty"` // needs the RemoteSession CharErrors *uint32 `protobuf:"varint,10,opt,name=char_errors,json=charErrors,proto3,oneof" json:"char_errors,omitempty"` // needs the RemoteSession - TranscriptionLatencyMs *uint32 `protobuf:"varint,8,opt,name=transcription_latency_ms,json=transcriptionLatencyMs,proto3,oneof" json:"transcription_latency_ms,omitempty"` // needs the RemoteSession; agent-reported STT/endpointing delay, mean + TranscriptionLatencyMs *uint32 `protobuf:"varint,8,opt,name=transcription_latency_ms,json=transcriptionLatencyMs,proto3,oneof" json:"transcription_latency_ms,omitempty"` // needs the RemoteSession; agent-reported STT/endpointing delay // Key entities (names, IDs, amounts) the caller said. Needs the text judge. EntityRecognition *float32 `protobuf:"fixed32,11,opt,name=entity_recognition,json=entityRecognition,proto3,oneof" json:"entity_recognition,omitempty"` // recognized / uttered EntitiesUttered *uint32 `protobuf:"varint,12,opt,name=entities_uttered,json=entitiesUttered,proto3,oneof" json:"entities_uttered,omitempty"` @@ -1579,9 +1577,9 @@ func (x *SimulationRun_JobMetrics_STT) GetEntitiesRecognized() uint32 { type SimulationRun_JobMetrics_LLM struct { state protoimpl.MessageState `protogen:"open.v1"` - TtftMs *uint32 `protobuf:"varint,1,opt,name=ttft_ms,json=ttftMs,proto3,oneof" json:"ttft_ms,omitempty"` // needs the RemoteSession; time to first token, mean (per-turn in turns) - TtfsMs *uint32 `protobuf:"varint,2,opt,name=ttfs_ms,json=ttfsMs,proto3,oneof" json:"ttfs_ms,omitempty"` // needs the RemoteSession; time to first sentence (the smallest speakable unit) - TokensPerSecond *float32 `protobuf:"fixed32,3,opt,name=tokens_per_second,json=tokensPerSecond,proto3,oneof" json:"tokens_per_second,omitempty"` // needs the RemoteSession; decode rate, mean (per-turn in turns.llm) + TtftMs *uint32 `protobuf:"varint,1,opt,name=ttft_ms,json=ttftMs,proto3,oneof" json:"ttft_ms,omitempty"` // needs the RemoteSession; time to first token + TtfsMs *uint32 `protobuf:"varint,2,opt,name=ttfs_ms,json=ttfsMs,proto3,oneof" json:"ttfs_ms,omitempty"` // needs the RemoteSession; time to first sentence, the smallest speakable unit + TokensPerSecond *float32 `protobuf:"fixed32,3,opt,name=tokens_per_second,json=tokensPerSecond,proto3,oneof" json:"tokens_per_second,omitempty"` // needs the RemoteSession unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1637,19 +1635,19 @@ func (x *SimulationRun_JobMetrics_LLM) GetTokensPerSecond() float32 { return 0 } -// The agent's voice. audio only. +// The agent's voice. Audio only. type SimulationRun_JobMetrics_TTS struct { state protoimpl.MessageState `protogen:"open.v1"` TtfaMs *uint32 `protobuf:"varint,1,opt,name=ttfa_ms,json=ttfaMs,proto3,oneof" json:"ttfa_ms,omitempty"` // needs the RemoteSession TtfbMs *uint32 `protobuf:"varint,2,opt,name=ttfb_ms,json=ttfbMs,proto3,oneof" json:"ttfb_ms,omitempty"` // needs the RemoteSession; provider byte-level TTFB - Wer *float32 `protobuf:"fixed32,3,opt,name=wer,proto3,oneof" json:"wer,omitempty"` // needs the RemoteSession; word error rate, pooled: word_errors / words + Wer *float32 `protobuf:"fixed32,3,opt,name=wer,proto3,oneof" json:"wer,omitempty"` // needs the RemoteSession; word_errors / words Words *uint32 `protobuf:"varint,7,opt,name=words,proto3,oneof" json:"words,omitempty"` // needs the RemoteSession WordErrors *uint32 `protobuf:"varint,8,opt,name=word_errors,json=wordErrors,proto3,oneof" json:"word_errors,omitempty"` // needs the RemoteSession - Cer *float32 `protobuf:"fixed32,9,opt,name=cer,proto3,oneof" json:"cer,omitempty"` // needs the RemoteSession; character error rate, pooled + Cer *float32 `protobuf:"fixed32,9,opt,name=cer,proto3,oneof" json:"cer,omitempty"` // needs the RemoteSession; char_errors / chars Chars *uint32 `protobuf:"varint,10,opt,name=chars,proto3,oneof" json:"chars,omitempty"` // needs the RemoteSession CharErrors *uint32 `protobuf:"varint,11,opt,name=char_errors,json=charErrors,proto3,oneof" json:"char_errors,omitempty"` // needs the RemoteSession - NaturalnessScore *float32 `protobuf:"fixed32,5,opt,name=naturalness_score,json=naturalnessScore,proto3,oneof" json:"naturalness_score,omitempty"` // needs the audio judge; judged 0-1: prosody / expressiveness - EnunciationScore *float32 `protobuf:"fixed32,6,opt,name=enunciation_score,json=enunciationScore,proto3,oneof" json:"enunciation_score,omitempty"` // needs the audio judge; judged 0-1: key entities audibly intact + NaturalnessScore *float32 `protobuf:"fixed32,5,opt,name=naturalness_score,json=naturalnessScore,proto3,oneof" json:"naturalness_score,omitempty"` // needs the audio judge; 0-1, prosody / expressiveness + EnunciationScore *float32 `protobuf:"fixed32,6,opt,name=enunciation_score,json=enunciationScore,proto3,oneof" json:"enunciation_score,omitempty"` // needs the audio judge; 0-1, key entities audibly intact // Key entities the agent said, as the caller heard them. Needs the text judge. EntityRecognition *float32 `protobuf:"fixed32,14,opt,name=entity_recognition,json=entityRecognition,proto3,oneof" json:"entity_recognition,omitempty"` // recognized / uttered EntitiesUttered *uint32 `protobuf:"varint,15,opt,name=entities_uttered,json=entitiesUttered,proto3,oneof" json:"entities_uttered,omitempty"` @@ -1782,20 +1780,20 @@ func (x *SimulationRun_JobMetrics_TTS) GetEntitiesRecognized() uint32 { // Audio only. type SimulationRun_JobMetrics_Conversation struct { state protoimpl.MessageState `protogen:"open.v1"` - TurnTakingScore *float32 `protobuf:"fixed32,1,opt,name=turn_taking_score,json=turnTakingScore,proto3,oneof" json:"turn_taking_score,omitempty"` // 0-1: latency curve + cut-in/barge-in/missed-turn penalties + TurnTakingScore *float32 `protobuf:"fixed32,1,opt,name=turn_taking_score,json=turnTakingScore,proto3,oneof" json:"turn_taking_score,omitempty"` // 0-1 ResponseLatencyP50Ms *int32 `protobuf:"varint,2,opt,name=response_latency_p50_ms,json=responseLatencyP50Ms,proto3,oneof" json:"response_latency_p50_ms,omitempty"` // floor-transfer offset; a gap is > 0, an overlap < 0 ResponseLatencyP95Ms *int32 `protobuf:"varint,3,opt,name=response_latency_p95_ms,json=responseLatencyP95Ms,proto3,oneof" json:"response_latency_p95_ms,omitempty"` ResponseLatencyP99Ms *int32 `protobuf:"varint,4,opt,name=response_latency_p99_ms,json=responseLatencyP99Ms,proto3,oneof" json:"response_latency_p99_ms,omitempty"` - ResponseLatencyMs *int32 `protobuf:"varint,16,opt,name=response_latency_ms,json=responseLatencyMs,proto3,oneof" json:"response_latency_ms,omitempty"` // one turn's floor-transfer offset, cut-in if negative; job/run serve the percentiles - AgentYieldLatencyMs *uint32 `protobuf:"varint,5,opt,name=agent_yield_latency_ms,json=agentYieldLatencyMs,proto3,oneof" json:"agent_yield_latency_ms,omitempty"` // agent audio continuing past a barge-in — per turn: on the barging persona row (presence = barge-in); job: mean - EotMispredictionCount *uint32 `protobuf:"varint,6,opt,name=eot_misprediction_count,json=eotMispredictionCount,proto3,oneof" json:"eot_misprediction_count,omitempty"` // agent started before the caller's turn ended; 0/1 per turn + ResponseLatencyMs *int32 `protobuf:"varint,16,opt,name=response_latency_ms,json=responseLatencyMs,proto3,oneof" json:"response_latency_ms,omitempty"` // one turn's floor-transfer offset, cut-in if negative + AgentYieldLatencyMs *uint32 `protobuf:"varint,5,opt,name=agent_yield_latency_ms,json=agentYieldLatencyMs,proto3,oneof" json:"agent_yield_latency_ms,omitempty"` // agent audio continuing past a barge-in + EotMispredictionCount *uint32 `protobuf:"varint,6,opt,name=eot_misprediction_count,json=eotMispredictionCount,proto3,oneof" json:"eot_misprediction_count,omitempty"` // agent started before the caller's turn ended OverlapRatio *float32 `protobuf:"fixed32,7,opt,name=overlap_ratio,json=overlapRatio,proto3,oneof" json:"overlap_ratio,omitempty"` // overlapping speech / total speech OverlapSpeechMs *uint32 `protobuf:"varint,8,opt,name=overlap_speech_ms,json=overlapSpeechMs,proto3,oneof" json:"overlap_speech_ms,omitempty"` // pooling stats for overlap_ratio TotalSpeechMs *uint32 `protobuf:"varint,9,opt,name=total_speech_ms,json=totalSpeechMs,proto3,oneof" json:"total_speech_ms,omitempty"` - AwkwardSilenceCount *uint32 `protobuf:"varint,11,opt,name=awkward_silence_count,json=awkwardSilenceCount,proto3,oneof" json:"awkward_silence_count,omitempty"` // gaps past the natural-pause threshold; 0/1 per turn - UnansweredTurns *uint32 `protobuf:"varint,12,opt,name=unanswered_turns,json=unansweredTurns,proto3,oneof" json:"unanswered_turns,omitempty"` // the simulated party spoke, the agent never responded; 0/1 per turn + AwkwardSilenceCount *uint32 `protobuf:"varint,11,opt,name=awkward_silence_count,json=awkwardSilenceCount,proto3,oneof" json:"awkward_silence_count,omitempty"` // gaps past the natural-pause threshold + UnansweredTurns *uint32 `protobuf:"varint,12,opt,name=unanswered_turns,json=unansweredTurns,proto3,oneof" json:"unanswered_turns,omitempty"` // the simulated party spoke, the agent never responded FalseInterruptionCount *uint32 `protobuf:"varint,13,opt,name=false_interruption_count,json=falseInterruptionCount,proto3,oneof" json:"false_interruption_count,omitempty"` // needs the RemoteSession; agent paused for a non-interruption - AgentReportedE2ELatencyMs *uint32 `protobuf:"varint,15,opt,name=agent_reported_e2e_latency_ms,json=agentReportedE2eLatencyMs,proto3,oneof" json:"agent_reported_e2e_latency_ms,omitempty"` // needs the RemoteSession; the agent's own claim, mean + AgentReportedE2ELatencyMs *uint32 `protobuf:"varint,15,opt,name=agent_reported_e2e_latency_ms,json=agentReportedE2eLatencyMs,proto3,oneof" json:"agent_reported_e2e_latency_ms,omitempty"` // needs the RemoteSession; the agent's own claim unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1928,9 +1926,8 @@ func (x *SimulationRun_JobMetrics_Conversation) GetAgentReportedE2ELatencyMs() u return 0 } -// Was the call spoiled by the simulator, not the agent? Diagnostic only — -// never folded into the scores; run aggregation excludes flagged calls -// from the two headline scores. +// Was the call spoiled by the simulator, not the agent? Diagnostic only, +// never folded into the scores. type SimulationRun_JobMetrics_Simulator struct { state protoimpl.MessageState `protogen:"open.v1"` EarlyTermination *bool `protobuf:"varint,1,opt,name=early_termination,json=earlyTermination,proto3,oneof" json:"early_termination,omitempty"` // simulator ended a still-progressing call @@ -1983,14 +1980,15 @@ func (x *SimulationRun_JobMetrics_Simulator) GetLateTermination() bool { return false } -// Rows exist for text and audio; +// Rows exist for text and audio. type SimulationRun_JobMetrics_Turn struct { state protoimpl.MessageState `protogen:"open.v1"` Index uint32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` // 1-based, conversation order - Role agent.ChatRole `protobuf:"varint,2,opt,name=role,proto3,enum=livekit.agent.ChatRole" json:"role,omitempty"` // ASSISTANT — the agent under test, USER — simulator persona. + Role agent.ChatRole `protobuf:"varint,2,opt,name=role,proto3,enum=livekit.agent.ChatRole" json:"role,omitempty"` // ASSISTANT = the agent under test, USER = simulator persona StartMs *uint32 `protobuf:"varint,3,opt,name=start_ms,json=startMs,proto3,oneof" json:"start_ms,omitempty"` // audio only; relative to t0; unset if the turn could not be aligned to the audio EndMs *uint32 `protobuf:"varint,4,opt,name=end_ms,json=endMs,proto3,oneof" json:"end_ms,omitempty"` // audio only - // Job groups hold means/pools of these; a field with no per-turn measurement stays unset here. + // Job groups hold the means/pools of these; counts here are 0/1. A field + // with no per-turn measurement stays unset. Stt *SimulationRun_JobMetrics_STT `protobuf:"bytes,5,opt,name=stt,proto3" json:"stt,omitempty"` Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,6,opt,name=llm,proto3" json:"llm,omitempty"` Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,7,opt,name=tts,proto3" json:"tts,omitempty"` From f66f8cbbb617e3560c371b1c556c996f6d65e6e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Sun, 2 Aug 2026 22:14:22 -0700 Subject: [PATCH 19/32] agent-simulation: flatten Turn, drop the run aggregate Turn carried four group submessages where 28 of 40 fields were structurally always empty: a turn has no wer, no overlap_ratio, no percentiles. It now carries the flat set a turn actually measures, and the 0/1 counts become bools. response_latency_ms moves onto Turn, which is the only scope that ever set it, leaving Conversation a pure aggregate. RunMetrics goes with it. A per-job worker cannot compute a cross-job aggregate, so it existed only because the service recomputed it on every read - from the very jobs it returns in the same response. The client can take those means itself; the worker sends metrics and the service stores them. --- protobufs/livekit_agent_simulation.proto | 42 ++++++++++-------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/protobufs/livekit_agent_simulation.proto b/protobufs/livekit_agent_simulation.proto index 6cdde1a89..bddce15d3 100644 --- a/protobufs/livekit_agent_simulation.proto +++ b/protobufs/livekit_agent_simulation.proto @@ -157,7 +157,6 @@ message SimulationRun { optional int32 response_latency_p50_ms = 2; // floor-transfer offset; a gap is > 0, an overlap < 0 optional int32 response_latency_p95_ms = 3; optional int32 response_latency_p99_ms = 4; - optional int32 response_latency_ms = 16; // one turn's floor-transfer offset, cut-in if negative optional uint32 agent_yield_latency_ms = 5; // agent audio continuing past a barge-in optional uint32 eot_misprediction_count = 6; // agent started before the caller's turn ended optional float overlap_ratio = 7; // overlapping speech / total speech @@ -176,36 +175,32 @@ message SimulationRun { optional bool late_termination = 2; // simulator dragged on after the goal was met } - // Rows exist for text and audio. + // Rows exist for text and audio. The groups above hold the means and pools + // over these; anything not measured for a turn stays unset. message Turn { uint32 index = 1; // 1-based, conversation order livekit.agent.ChatRole role = 2; // ASSISTANT = the agent under test, USER = simulator persona optional uint32 start_ms = 3; // audio only; relative to t0; unset if the turn could not be aligned to the audio optional uint32 end_ms = 4; // audio only - // Job groups hold the means/pools of these; counts here are 0/1. A field - // with no per-turn measurement stays unset. - STT stt = 5; - LLM llm = 6; - TTS tts = 7; - Conversation conversation = 8; - - optional float conciseness = 9; + optional uint32 transcription_delay_ms = 5; // needs the RemoteSession; simulator turns + optional uint32 llm_ttft_ms = 6; // needs the RemoteSession + optional uint32 llm_ttfs_ms = 7; // needs the RemoteSession + optional float tokens_per_second = 8; // needs the RemoteSession + optional uint32 tts_ttfb_ms = 9; // needs the RemoteSession + optional uint32 agent_reported_e2e_latency_ms = 10; // needs the RemoteSession + + optional int32 response_latency_ms = 11; // floor-transfer offset, cut-in if negative + optional uint32 agent_yield_latency_ms = 12; // agent audio continuing past a barge-in + optional float turn_taking_score = 13; // 0-1 + optional float conciseness = 14; // needs the text judge + + optional bool eot_misprediction = 15; // agent started before the caller's turn ended + optional bool awkward_silence = 16; // gap past the natural-pause threshold + optional bool unanswered = 17; // the caller spoke, the agent never responded } } - // Aggregates over this run's jobs. Reuses the JobMetrics group shapes. - message RunMetrics { - optional float accuracy_score = 1; // mean over scored jobs - optional float experience_score = 2; - optional float scenario_pass_rate = 3; // share of jobs whose scenario verdict passed - - JobMetrics.STT stt = 4; - JobMetrics.LLM llm = 5; - JobMetrics.TTS tts = 6; - JobMetrics.Conversation conversation = 7; - } - message Create { message Request { reserved 3; // was agent_description (input never consumed; description is derived from source) @@ -294,9 +289,6 @@ message SimulationRun { int32 concurrency = 17; // Conversation mode for every job in this run; unspecified = TEXT. SimulationMode mode = 18; - // Run-level metric aggregates. - RunMetrics metrics = 19; - // zstd-compressed SimulationRunSummary: decompress, then proto.Unmarshal. // Compressed by default so the blob ships as-is on every hop. bytes summary_zstd = 20; From 16c001b4f27062769407c289a3fa1a7db0180e63 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 05:15:38 +0000 Subject: [PATCH 20/32] generated protobuf --- livekit/livekit_agent_simulation.pb.go | 639 ++++++++++------------ livekit/livekit_agent_simulation.twirp.go | 430 ++++++++------- 2 files changed, 513 insertions(+), 556 deletions(-) diff --git a/livekit/livekit_agent_simulation.pb.go b/livekit/livekit_agent_simulation.pb.go index c73afcf91..a03af43a4 100644 --- a/livekit/livekit_agent_simulation.pb.go +++ b/livekit/livekit_agent_simulation.pb.go @@ -311,8 +311,6 @@ type SimulationRun struct { Concurrency int32 `protobuf:"varint,17,opt,name=concurrency,proto3" json:"concurrency,omitempty"` // Conversation mode for every job in this run; unspecified = TEXT. Mode SimulationMode `protobuf:"varint,18,opt,name=mode,proto3,enum=livekit.SimulationMode" json:"mode,omitempty"` - // Run-level metric aggregates. - Metrics *SimulationRun_RunMetrics `protobuf:"bytes,19,opt,name=metrics,proto3" json:"metrics,omitempty"` // zstd-compressed SimulationRunSummary: decompress, then proto.Unmarshal. // Compressed by default so the blob ships as-is on every hop. SummaryZstd []byte `protobuf:"bytes,20,opt,name=summary_zstd,json=summaryZstd,proto3" json:"summary_zstd,omitempty"` @@ -469,13 +467,6 @@ func (x *SimulationRun) GetMode() SimulationMode { return SimulationMode_SIMULATION_MODE_UNSPECIFIED } -func (x *SimulationRun) GetMetrics() *SimulationRun_RunMetrics { - if x != nil { - return x.Metrics - } - return nil -} - func (x *SimulationRun) GetSummaryZstd() []byte { if x != nil { return x.SummaryZstd @@ -1080,99 +1071,6 @@ func (x *SimulationRun_JobMetrics) GetConversationProgression() float32 { return 0 } -// Aggregates over this run's jobs. Reuses the JobMetrics group shapes. -type SimulationRun_RunMetrics struct { - state protoimpl.MessageState `protogen:"open.v1"` - AccuracyScore *float32 `protobuf:"fixed32,1,opt,name=accuracy_score,json=accuracyScore,proto3,oneof" json:"accuracy_score,omitempty"` // mean over scored jobs - ExperienceScore *float32 `protobuf:"fixed32,2,opt,name=experience_score,json=experienceScore,proto3,oneof" json:"experience_score,omitempty"` - ScenarioPassRate *float32 `protobuf:"fixed32,3,opt,name=scenario_pass_rate,json=scenarioPassRate,proto3,oneof" json:"scenario_pass_rate,omitempty"` // share of jobs whose scenario verdict passed - Stt *SimulationRun_JobMetrics_STT `protobuf:"bytes,4,opt,name=stt,proto3" json:"stt,omitempty"` - Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,5,opt,name=llm,proto3" json:"llm,omitempty"` - Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,6,opt,name=tts,proto3" json:"tts,omitempty"` - Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,7,opt,name=conversation,proto3" json:"conversation,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SimulationRun_RunMetrics) Reset() { - *x = SimulationRun_RunMetrics{} - mi := &file_livekit_agent_simulation_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SimulationRun_RunMetrics) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SimulationRun_RunMetrics) ProtoMessage() {} - -func (x *SimulationRun_RunMetrics) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SimulationRun_RunMetrics.ProtoReflect.Descriptor instead. -func (*SimulationRun_RunMetrics) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 2} -} - -func (x *SimulationRun_RunMetrics) GetAccuracyScore() float32 { - if x != nil && x.AccuracyScore != nil { - return *x.AccuracyScore - } - return 0 -} - -func (x *SimulationRun_RunMetrics) GetExperienceScore() float32 { - if x != nil && x.ExperienceScore != nil { - return *x.ExperienceScore - } - return 0 -} - -func (x *SimulationRun_RunMetrics) GetScenarioPassRate() float32 { - if x != nil && x.ScenarioPassRate != nil { - return *x.ScenarioPassRate - } - return 0 -} - -func (x *SimulationRun_RunMetrics) GetStt() *SimulationRun_JobMetrics_STT { - if x != nil { - return x.Stt - } - return nil -} - -func (x *SimulationRun_RunMetrics) GetLlm() *SimulationRun_JobMetrics_LLM { - if x != nil { - return x.Llm - } - return nil -} - -func (x *SimulationRun_RunMetrics) GetTts() *SimulationRun_JobMetrics_TTS { - if x != nil { - return x.Tts - } - return nil -} - -func (x *SimulationRun_RunMetrics) GetConversation() *SimulationRun_JobMetrics_Conversation { - if x != nil { - return x.Conversation - } - return nil -} - type SimulationRun_Create struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -1181,7 +1079,7 @@ type SimulationRun_Create struct { func (x *SimulationRun_Create) Reset() { *x = SimulationRun_Create{} - mi := &file_livekit_agent_simulation_proto_msgTypes[10] + mi := &file_livekit_agent_simulation_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1193,7 +1091,7 @@ func (x *SimulationRun_Create) String() string { func (*SimulationRun_Create) ProtoMessage() {} func (x *SimulationRun_Create) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[10] + mi := &file_livekit_agent_simulation_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1206,7 +1104,7 @@ func (x *SimulationRun_Create) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Create.ProtoReflect.Descriptor instead. func (*SimulationRun_Create) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 3} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 2} } type SimulationRun_ConfirmSourceUpload struct { @@ -1217,7 +1115,7 @@ type SimulationRun_ConfirmSourceUpload struct { func (x *SimulationRun_ConfirmSourceUpload) Reset() { *x = SimulationRun_ConfirmSourceUpload{} - mi := &file_livekit_agent_simulation_proto_msgTypes[11] + mi := &file_livekit_agent_simulation_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1229,7 +1127,7 @@ func (x *SimulationRun_ConfirmSourceUpload) String() string { func (*SimulationRun_ConfirmSourceUpload) ProtoMessage() {} func (x *SimulationRun_ConfirmSourceUpload) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[11] + mi := &file_livekit_agent_simulation_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1242,7 +1140,7 @@ func (x *SimulationRun_ConfirmSourceUpload) ProtoReflect() protoreflect.Message // Deprecated: Use SimulationRun_ConfirmSourceUpload.ProtoReflect.Descriptor instead. func (*SimulationRun_ConfirmSourceUpload) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 4} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 3} } type SimulationRun_Get struct { @@ -1253,7 +1151,7 @@ type SimulationRun_Get struct { func (x *SimulationRun_Get) Reset() { *x = SimulationRun_Get{} - mi := &file_livekit_agent_simulation_proto_msgTypes[12] + mi := &file_livekit_agent_simulation_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1265,7 +1163,7 @@ func (x *SimulationRun_Get) String() string { func (*SimulationRun_Get) ProtoMessage() {} func (x *SimulationRun_Get) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[12] + mi := &file_livekit_agent_simulation_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1278,7 +1176,7 @@ func (x *SimulationRun_Get) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Get.ProtoReflect.Descriptor instead. func (*SimulationRun_Get) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 5} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 4} } type SimulationRun_List struct { @@ -1289,7 +1187,7 @@ type SimulationRun_List struct { func (x *SimulationRun_List) Reset() { *x = SimulationRun_List{} - mi := &file_livekit_agent_simulation_proto_msgTypes[13] + mi := &file_livekit_agent_simulation_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1301,7 +1199,7 @@ func (x *SimulationRun_List) String() string { func (*SimulationRun_List) ProtoMessage() {} func (x *SimulationRun_List) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[13] + mi := &file_livekit_agent_simulation_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1314,7 +1212,7 @@ func (x *SimulationRun_List) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_List.ProtoReflect.Descriptor instead. func (*SimulationRun_List) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 6} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 5} } type SimulationRun_Cancel struct { @@ -1325,7 +1223,7 @@ type SimulationRun_Cancel struct { func (x *SimulationRun_Cancel) Reset() { *x = SimulationRun_Cancel{} - mi := &file_livekit_agent_simulation_proto_msgTypes[14] + mi := &file_livekit_agent_simulation_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1337,7 +1235,7 @@ func (x *SimulationRun_Cancel) String() string { func (*SimulationRun_Cancel) ProtoMessage() {} func (x *SimulationRun_Cancel) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[14] + mi := &file_livekit_agent_simulation_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1350,7 +1248,7 @@ func (x *SimulationRun_Cancel) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Cancel.ProtoReflect.Descriptor instead. func (*SimulationRun_Cancel) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 7} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 6} } type SimulationRun_Usage struct { @@ -1363,7 +1261,7 @@ type SimulationRun_Usage struct { func (x *SimulationRun_Usage) Reset() { *x = SimulationRun_Usage{} - mi := &file_livekit_agent_simulation_proto_msgTypes[15] + mi := &file_livekit_agent_simulation_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1375,7 +1273,7 @@ func (x *SimulationRun_Usage) String() string { func (*SimulationRun_Usage) ProtoMessage() {} func (x *SimulationRun_Usage) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[15] + mi := &file_livekit_agent_simulation_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1388,7 +1286,7 @@ func (x *SimulationRun_Usage) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Usage.ProtoReflect.Descriptor instead. func (*SimulationRun_Usage) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 8} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 7} } func (x *SimulationRun_Usage) GetTextTurnsCount() int32 { @@ -1415,7 +1313,7 @@ type SimulationRun_Job_Usage struct { func (x *SimulationRun_Job_Usage) Reset() { *x = SimulationRun_Job_Usage{} - mi := &file_livekit_agent_simulation_proto_msgTypes[16] + mi := &file_livekit_agent_simulation_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1427,7 +1325,7 @@ func (x *SimulationRun_Job_Usage) String() string { func (*SimulationRun_Job_Usage) ProtoMessage() {} func (x *SimulationRun_Job_Usage) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[16] + mi := &file_livekit_agent_simulation_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1477,7 +1375,7 @@ type SimulationRun_JobMetrics_STT struct { func (x *SimulationRun_JobMetrics_STT) Reset() { *x = SimulationRun_JobMetrics_STT{} - mi := &file_livekit_agent_simulation_proto_msgTypes[17] + mi := &file_livekit_agent_simulation_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1489,7 +1387,7 @@ func (x *SimulationRun_JobMetrics_STT) String() string { func (*SimulationRun_JobMetrics_STT) ProtoMessage() {} func (x *SimulationRun_JobMetrics_STT) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[17] + mi := &file_livekit_agent_simulation_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1586,7 +1484,7 @@ type SimulationRun_JobMetrics_LLM struct { func (x *SimulationRun_JobMetrics_LLM) Reset() { *x = SimulationRun_JobMetrics_LLM{} - mi := &file_livekit_agent_simulation_proto_msgTypes[18] + mi := &file_livekit_agent_simulation_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1598,7 +1496,7 @@ func (x *SimulationRun_JobMetrics_LLM) String() string { func (*SimulationRun_JobMetrics_LLM) ProtoMessage() {} func (x *SimulationRun_JobMetrics_LLM) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[18] + mi := &file_livekit_agent_simulation_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1658,7 +1556,7 @@ type SimulationRun_JobMetrics_TTS struct { func (x *SimulationRun_JobMetrics_TTS) Reset() { *x = SimulationRun_JobMetrics_TTS{} - mi := &file_livekit_agent_simulation_proto_msgTypes[19] + mi := &file_livekit_agent_simulation_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1670,7 +1568,7 @@ func (x *SimulationRun_JobMetrics_TTS) String() string { func (*SimulationRun_JobMetrics_TTS) ProtoMessage() {} func (x *SimulationRun_JobMetrics_TTS) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[19] + mi := &file_livekit_agent_simulation_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1784,7 +1682,6 @@ type SimulationRun_JobMetrics_Conversation struct { ResponseLatencyP50Ms *int32 `protobuf:"varint,2,opt,name=response_latency_p50_ms,json=responseLatencyP50Ms,proto3,oneof" json:"response_latency_p50_ms,omitempty"` // floor-transfer offset; a gap is > 0, an overlap < 0 ResponseLatencyP95Ms *int32 `protobuf:"varint,3,opt,name=response_latency_p95_ms,json=responseLatencyP95Ms,proto3,oneof" json:"response_latency_p95_ms,omitempty"` ResponseLatencyP99Ms *int32 `protobuf:"varint,4,opt,name=response_latency_p99_ms,json=responseLatencyP99Ms,proto3,oneof" json:"response_latency_p99_ms,omitempty"` - ResponseLatencyMs *int32 `protobuf:"varint,16,opt,name=response_latency_ms,json=responseLatencyMs,proto3,oneof" json:"response_latency_ms,omitempty"` // one turn's floor-transfer offset, cut-in if negative AgentYieldLatencyMs *uint32 `protobuf:"varint,5,opt,name=agent_yield_latency_ms,json=agentYieldLatencyMs,proto3,oneof" json:"agent_yield_latency_ms,omitempty"` // agent audio continuing past a barge-in EotMispredictionCount *uint32 `protobuf:"varint,6,opt,name=eot_misprediction_count,json=eotMispredictionCount,proto3,oneof" json:"eot_misprediction_count,omitempty"` // agent started before the caller's turn ended OverlapRatio *float32 `protobuf:"fixed32,7,opt,name=overlap_ratio,json=overlapRatio,proto3,oneof" json:"overlap_ratio,omitempty"` // overlapping speech / total speech @@ -1800,7 +1697,7 @@ type SimulationRun_JobMetrics_Conversation struct { func (x *SimulationRun_JobMetrics_Conversation) Reset() { *x = SimulationRun_JobMetrics_Conversation{} - mi := &file_livekit_agent_simulation_proto_msgTypes[20] + mi := &file_livekit_agent_simulation_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1812,7 +1709,7 @@ func (x *SimulationRun_JobMetrics_Conversation) String() string { func (*SimulationRun_JobMetrics_Conversation) ProtoMessage() {} func (x *SimulationRun_JobMetrics_Conversation) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[20] + mi := &file_livekit_agent_simulation_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1856,13 +1753,6 @@ func (x *SimulationRun_JobMetrics_Conversation) GetResponseLatencyP99Ms() int32 return 0 } -func (x *SimulationRun_JobMetrics_Conversation) GetResponseLatencyMs() int32 { - if x != nil && x.ResponseLatencyMs != nil { - return *x.ResponseLatencyMs - } - return 0 -} - func (x *SimulationRun_JobMetrics_Conversation) GetAgentYieldLatencyMs() uint32 { if x != nil && x.AgentYieldLatencyMs != nil { return *x.AgentYieldLatencyMs @@ -1938,7 +1828,7 @@ type SimulationRun_JobMetrics_Simulator struct { func (x *SimulationRun_JobMetrics_Simulator) Reset() { *x = SimulationRun_JobMetrics_Simulator{} - mi := &file_livekit_agent_simulation_proto_msgTypes[21] + mi := &file_livekit_agent_simulation_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1950,7 +1840,7 @@ func (x *SimulationRun_JobMetrics_Simulator) String() string { func (*SimulationRun_JobMetrics_Simulator) ProtoMessage() {} func (x *SimulationRun_JobMetrics_Simulator) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[21] + mi := &file_livekit_agent_simulation_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1980,27 +1870,34 @@ func (x *SimulationRun_JobMetrics_Simulator) GetLateTermination() bool { return false } -// Rows exist for text and audio. +// Rows exist for text and audio. The groups above hold the means and pools +// over these; anything not measured for a turn stays unset. type SimulationRun_JobMetrics_Turn struct { - state protoimpl.MessageState `protogen:"open.v1"` - Index uint32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` // 1-based, conversation order - Role agent.ChatRole `protobuf:"varint,2,opt,name=role,proto3,enum=livekit.agent.ChatRole" json:"role,omitempty"` // ASSISTANT = the agent under test, USER = simulator persona - StartMs *uint32 `protobuf:"varint,3,opt,name=start_ms,json=startMs,proto3,oneof" json:"start_ms,omitempty"` // audio only; relative to t0; unset if the turn could not be aligned to the audio - EndMs *uint32 `protobuf:"varint,4,opt,name=end_ms,json=endMs,proto3,oneof" json:"end_ms,omitempty"` // audio only - // Job groups hold the means/pools of these; counts here are 0/1. A field - // with no per-turn measurement stays unset. - Stt *SimulationRun_JobMetrics_STT `protobuf:"bytes,5,opt,name=stt,proto3" json:"stt,omitempty"` - Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,6,opt,name=llm,proto3" json:"llm,omitempty"` - Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,7,opt,name=tts,proto3" json:"tts,omitempty"` - Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,8,opt,name=conversation,proto3" json:"conversation,omitempty"` - Conciseness *float32 `protobuf:"fixed32,9,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Index uint32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` // 1-based, conversation order + Role agent.ChatRole `protobuf:"varint,2,opt,name=role,proto3,enum=livekit.agent.ChatRole" json:"role,omitempty"` // ASSISTANT = the agent under test, USER = simulator persona + StartMs *uint32 `protobuf:"varint,3,opt,name=start_ms,json=startMs,proto3,oneof" json:"start_ms,omitempty"` // audio only; relative to t0; unset if the turn could not be aligned to the audio + EndMs *uint32 `protobuf:"varint,4,opt,name=end_ms,json=endMs,proto3,oneof" json:"end_ms,omitempty"` // audio only + TranscriptionDelayMs *uint32 `protobuf:"varint,5,opt,name=transcription_delay_ms,json=transcriptionDelayMs,proto3,oneof" json:"transcription_delay_ms,omitempty"` // needs the RemoteSession; simulator turns + LlmTtftMs *uint32 `protobuf:"varint,6,opt,name=llm_ttft_ms,json=llmTtftMs,proto3,oneof" json:"llm_ttft_ms,omitempty"` // needs the RemoteSession + LlmTtfsMs *uint32 `protobuf:"varint,7,opt,name=llm_ttfs_ms,json=llmTtfsMs,proto3,oneof" json:"llm_ttfs_ms,omitempty"` // needs the RemoteSession + TokensPerSecond *float32 `protobuf:"fixed32,8,opt,name=tokens_per_second,json=tokensPerSecond,proto3,oneof" json:"tokens_per_second,omitempty"` // needs the RemoteSession + TtsTtfbMs *uint32 `protobuf:"varint,9,opt,name=tts_ttfb_ms,json=ttsTtfbMs,proto3,oneof" json:"tts_ttfb_ms,omitempty"` // needs the RemoteSession + AgentReportedE2ELatencyMs *uint32 `protobuf:"varint,10,opt,name=agent_reported_e2e_latency_ms,json=agentReportedE2eLatencyMs,proto3,oneof" json:"agent_reported_e2e_latency_ms,omitempty"` // needs the RemoteSession + ResponseLatencyMs *int32 `protobuf:"varint,11,opt,name=response_latency_ms,json=responseLatencyMs,proto3,oneof" json:"response_latency_ms,omitempty"` // floor-transfer offset, cut-in if negative + AgentYieldLatencyMs *uint32 `protobuf:"varint,12,opt,name=agent_yield_latency_ms,json=agentYieldLatencyMs,proto3,oneof" json:"agent_yield_latency_ms,omitempty"` // agent audio continuing past a barge-in + TurnTakingScore *float32 `protobuf:"fixed32,13,opt,name=turn_taking_score,json=turnTakingScore,proto3,oneof" json:"turn_taking_score,omitempty"` // 0-1 + Conciseness *float32 `protobuf:"fixed32,14,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` // needs the text judge + EotMisprediction *bool `protobuf:"varint,15,opt,name=eot_misprediction,json=eotMisprediction,proto3,oneof" json:"eot_misprediction,omitempty"` // agent started before the caller's turn ended + AwkwardSilence *bool `protobuf:"varint,16,opt,name=awkward_silence,json=awkwardSilence,proto3,oneof" json:"awkward_silence,omitempty"` // gap past the natural-pause threshold + Unanswered *bool `protobuf:"varint,17,opt,name=unanswered,proto3,oneof" json:"unanswered,omitempty"` // the caller spoke, the agent never responded + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimulationRun_JobMetrics_Turn) Reset() { *x = SimulationRun_JobMetrics_Turn{} - mi := &file_livekit_agent_simulation_proto_msgTypes[22] + mi := &file_livekit_agent_simulation_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2012,7 +1909,7 @@ func (x *SimulationRun_JobMetrics_Turn) String() string { func (*SimulationRun_JobMetrics_Turn) ProtoMessage() {} func (x *SimulationRun_JobMetrics_Turn) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[22] + mi := &file_livekit_agent_simulation_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2056,32 +1953,67 @@ func (x *SimulationRun_JobMetrics_Turn) GetEndMs() uint32 { return 0 } -func (x *SimulationRun_JobMetrics_Turn) GetStt() *SimulationRun_JobMetrics_STT { - if x != nil { - return x.Stt +func (x *SimulationRun_JobMetrics_Turn) GetTranscriptionDelayMs() uint32 { + if x != nil && x.TranscriptionDelayMs != nil { + return *x.TranscriptionDelayMs } - return nil + return 0 } -func (x *SimulationRun_JobMetrics_Turn) GetLlm() *SimulationRun_JobMetrics_LLM { - if x != nil { - return x.Llm +func (x *SimulationRun_JobMetrics_Turn) GetLlmTtftMs() uint32 { + if x != nil && x.LlmTtftMs != nil { + return *x.LlmTtftMs } - return nil + return 0 } -func (x *SimulationRun_JobMetrics_Turn) GetTts() *SimulationRun_JobMetrics_TTS { - if x != nil { - return x.Tts +func (x *SimulationRun_JobMetrics_Turn) GetLlmTtfsMs() uint32 { + if x != nil && x.LlmTtfsMs != nil { + return *x.LlmTtfsMs } - return nil + return 0 } -func (x *SimulationRun_JobMetrics_Turn) GetConversation() *SimulationRun_JobMetrics_Conversation { - if x != nil { - return x.Conversation +func (x *SimulationRun_JobMetrics_Turn) GetTokensPerSecond() float32 { + if x != nil && x.TokensPerSecond != nil { + return *x.TokensPerSecond } - return nil + return 0 +} + +func (x *SimulationRun_JobMetrics_Turn) GetTtsTtfbMs() uint32 { + if x != nil && x.TtsTtfbMs != nil { + return *x.TtsTtfbMs + } + return 0 +} + +func (x *SimulationRun_JobMetrics_Turn) GetAgentReportedE2ELatencyMs() uint32 { + if x != nil && x.AgentReportedE2ELatencyMs != nil { + return *x.AgentReportedE2ELatencyMs + } + return 0 +} + +func (x *SimulationRun_JobMetrics_Turn) GetResponseLatencyMs() int32 { + if x != nil && x.ResponseLatencyMs != nil { + return *x.ResponseLatencyMs + } + return 0 +} + +func (x *SimulationRun_JobMetrics_Turn) GetAgentYieldLatencyMs() uint32 { + if x != nil && x.AgentYieldLatencyMs != nil { + return *x.AgentYieldLatencyMs + } + return 0 +} + +func (x *SimulationRun_JobMetrics_Turn) GetTurnTakingScore() float32 { + if x != nil && x.TurnTakingScore != nil { + return *x.TurnTakingScore + } + return 0 } func (x *SimulationRun_JobMetrics_Turn) GetConciseness() float32 { @@ -2091,6 +2023,27 @@ func (x *SimulationRun_JobMetrics_Turn) GetConciseness() float32 { return 0 } +func (x *SimulationRun_JobMetrics_Turn) GetEotMisprediction() bool { + if x != nil && x.EotMisprediction != nil { + return *x.EotMisprediction + } + return false +} + +func (x *SimulationRun_JobMetrics_Turn) GetAwkwardSilence() bool { + if x != nil && x.AwkwardSilence != nil { + return *x.AwkwardSilence + } + return false +} + +func (x *SimulationRun_JobMetrics_Turn) GetUnanswered() bool { + if x != nil && x.Unanswered != nil { + return *x.Unanswered + } + return false +} + type SimulationRun_Create_Request struct { state protoimpl.MessageState `protogen:"open.v1"` ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` @@ -2111,7 +2064,7 @@ type SimulationRun_Create_Request struct { func (x *SimulationRun_Create_Request) Reset() { *x = SimulationRun_Create_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[23] + mi := &file_livekit_agent_simulation_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2123,7 +2076,7 @@ func (x *SimulationRun_Create_Request) String() string { func (*SimulationRun_Create_Request) ProtoMessage() {} func (x *SimulationRun_Create_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[23] + mi := &file_livekit_agent_simulation_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2136,7 +2089,7 @@ func (x *SimulationRun_Create_Request) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Create_Request.ProtoReflect.Descriptor instead. func (*SimulationRun_Create_Request) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 3, 0} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 2, 0} } func (x *SimulationRun_Create_Request) GetProjectId() string { @@ -2198,7 +2151,7 @@ type SimulationRun_Create_Response struct { func (x *SimulationRun_Create_Response) Reset() { *x = SimulationRun_Create_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[24] + mi := &file_livekit_agent_simulation_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2210,7 +2163,7 @@ func (x *SimulationRun_Create_Response) String() string { func (*SimulationRun_Create_Response) ProtoMessage() {} func (x *SimulationRun_Create_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[24] + mi := &file_livekit_agent_simulation_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2223,7 +2176,7 @@ func (x *SimulationRun_Create_Response) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Create_Response.ProtoReflect.Descriptor instead. func (*SimulationRun_Create_Response) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 3, 1} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 2, 1} } func (x *SimulationRun_Create_Response) GetSimulationRunId() string { @@ -2251,7 +2204,7 @@ type SimulationRun_ConfirmSourceUpload_Request struct { func (x *SimulationRun_ConfirmSourceUpload_Request) Reset() { *x = SimulationRun_ConfirmSourceUpload_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[25] + mi := &file_livekit_agent_simulation_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2263,7 +2216,7 @@ func (x *SimulationRun_ConfirmSourceUpload_Request) String() string { func (*SimulationRun_ConfirmSourceUpload_Request) ProtoMessage() {} func (x *SimulationRun_ConfirmSourceUpload_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[25] + mi := &file_livekit_agent_simulation_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2276,7 +2229,7 @@ func (x *SimulationRun_ConfirmSourceUpload_Request) ProtoReflect() protoreflect. // Deprecated: Use SimulationRun_ConfirmSourceUpload_Request.ProtoReflect.Descriptor instead. func (*SimulationRun_ConfirmSourceUpload_Request) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 4, 0} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 3, 0} } func (x *SimulationRun_ConfirmSourceUpload_Request) GetProjectId() string { @@ -2308,7 +2261,7 @@ type SimulationRun_ConfirmSourceUpload_Response struct { func (x *SimulationRun_ConfirmSourceUpload_Response) Reset() { *x = SimulationRun_ConfirmSourceUpload_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[26] + mi := &file_livekit_agent_simulation_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2320,7 +2273,7 @@ func (x *SimulationRun_ConfirmSourceUpload_Response) String() string { func (*SimulationRun_ConfirmSourceUpload_Response) ProtoMessage() {} func (x *SimulationRun_ConfirmSourceUpload_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[26] + mi := &file_livekit_agent_simulation_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2333,7 +2286,7 @@ func (x *SimulationRun_ConfirmSourceUpload_Response) ProtoReflect() protoreflect // Deprecated: Use SimulationRun_ConfirmSourceUpload_Response.ProtoReflect.Descriptor instead. func (*SimulationRun_ConfirmSourceUpload_Response) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 4, 1} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 3, 1} } type SimulationRun_Get_Request struct { @@ -2346,7 +2299,7 @@ type SimulationRun_Get_Request struct { func (x *SimulationRun_Get_Request) Reset() { *x = SimulationRun_Get_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[27] + mi := &file_livekit_agent_simulation_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2358,7 +2311,7 @@ func (x *SimulationRun_Get_Request) String() string { func (*SimulationRun_Get_Request) ProtoMessage() {} func (x *SimulationRun_Get_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[27] + mi := &file_livekit_agent_simulation_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2371,7 +2324,7 @@ func (x *SimulationRun_Get_Request) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Get_Request.ProtoReflect.Descriptor instead. func (*SimulationRun_Get_Request) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 5, 0} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 4, 0} } func (x *SimulationRun_Get_Request) GetProjectId() string { @@ -2397,7 +2350,7 @@ type SimulationRun_Get_Response struct { func (x *SimulationRun_Get_Response) Reset() { *x = SimulationRun_Get_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[28] + mi := &file_livekit_agent_simulation_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2409,7 +2362,7 @@ func (x *SimulationRun_Get_Response) String() string { func (*SimulationRun_Get_Response) ProtoMessage() {} func (x *SimulationRun_Get_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[28] + mi := &file_livekit_agent_simulation_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2422,7 +2375,7 @@ func (x *SimulationRun_Get_Response) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Get_Response.ProtoReflect.Descriptor instead. func (*SimulationRun_Get_Response) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 5, 1} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 4, 1} } func (x *SimulationRun_Get_Response) GetRun() *SimulationRun { @@ -2443,7 +2396,7 @@ type SimulationRun_List_Request struct { func (x *SimulationRun_List_Request) Reset() { *x = SimulationRun_List_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[29] + mi := &file_livekit_agent_simulation_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2455,7 +2408,7 @@ func (x *SimulationRun_List_Request) String() string { func (*SimulationRun_List_Request) ProtoMessage() {} func (x *SimulationRun_List_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[29] + mi := &file_livekit_agent_simulation_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2468,7 +2421,7 @@ func (x *SimulationRun_List_Request) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_List_Request.ProtoReflect.Descriptor instead. func (*SimulationRun_List_Request) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 6, 0} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 5, 0} } func (x *SimulationRun_List_Request) GetProjectId() string { @@ -2502,7 +2455,7 @@ type SimulationRun_List_Response struct { func (x *SimulationRun_List_Response) Reset() { *x = SimulationRun_List_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[30] + mi := &file_livekit_agent_simulation_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2514,7 +2467,7 @@ func (x *SimulationRun_List_Response) String() string { func (*SimulationRun_List_Response) ProtoMessage() {} func (x *SimulationRun_List_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[30] + mi := &file_livekit_agent_simulation_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2527,7 +2480,7 @@ func (x *SimulationRun_List_Response) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_List_Response.ProtoReflect.Descriptor instead. func (*SimulationRun_List_Response) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 6, 1} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 5, 1} } func (x *SimulationRun_List_Response) GetRuns() []*SimulationRun { @@ -2554,7 +2507,7 @@ type SimulationRun_Cancel_Request struct { func (x *SimulationRun_Cancel_Request) Reset() { *x = SimulationRun_Cancel_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[31] + mi := &file_livekit_agent_simulation_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2566,7 +2519,7 @@ func (x *SimulationRun_Cancel_Request) String() string { func (*SimulationRun_Cancel_Request) ProtoMessage() {} func (x *SimulationRun_Cancel_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[31] + mi := &file_livekit_agent_simulation_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2579,7 +2532,7 @@ func (x *SimulationRun_Cancel_Request) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Cancel_Request.ProtoReflect.Descriptor instead. func (*SimulationRun_Cancel_Request) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 7, 0} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 6, 0} } func (x *SimulationRun_Cancel_Request) GetProjectId() string { @@ -2604,7 +2557,7 @@ type SimulationRun_Cancel_Response struct { func (x *SimulationRun_Cancel_Response) Reset() { *x = SimulationRun_Cancel_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[32] + mi := &file_livekit_agent_simulation_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2616,7 +2569,7 @@ func (x *SimulationRun_Cancel_Response) String() string { func (*SimulationRun_Cancel_Response) ProtoMessage() {} func (x *SimulationRun_Cancel_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[32] + mi := &file_livekit_agent_simulation_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2629,7 +2582,7 @@ func (x *SimulationRun_Cancel_Response) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Cancel_Response.ProtoReflect.Descriptor instead. func (*SimulationRun_Cancel_Response) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 7, 1} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 6, 1} } type Scenario_CreateFromSession struct { @@ -2640,7 +2593,7 @@ type Scenario_CreateFromSession struct { func (x *Scenario_CreateFromSession) Reset() { *x = Scenario_CreateFromSession{} - mi := &file_livekit_agent_simulation_proto_msgTypes[33] + mi := &file_livekit_agent_simulation_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2652,7 +2605,7 @@ func (x *Scenario_CreateFromSession) String() string { func (*Scenario_CreateFromSession) ProtoMessage() {} func (x *Scenario_CreateFromSession) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[33] + mi := &file_livekit_agent_simulation_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2679,7 +2632,7 @@ type Scenario_CreateFromSession_Request struct { func (x *Scenario_CreateFromSession_Request) Reset() { *x = Scenario_CreateFromSession_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[35] + mi := &file_livekit_agent_simulation_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2691,7 +2644,7 @@ func (x *Scenario_CreateFromSession_Request) String() string { func (*Scenario_CreateFromSession_Request) ProtoMessage() {} func (x *Scenario_CreateFromSession_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[35] + mi := &file_livekit_agent_simulation_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2737,7 +2690,7 @@ type Scenario_CreateFromSession_Response struct { func (x *Scenario_CreateFromSession_Response) Reset() { *x = Scenario_CreateFromSession_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[36] + mi := &file_livekit_agent_simulation_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2749,7 +2702,7 @@ func (x *Scenario_CreateFromSession_Response) String() string { func (*Scenario_CreateFromSession_Response) ProtoMessage() {} func (x *Scenario_CreateFromSession_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[36] + mi := &file_livekit_agent_simulation_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2794,7 +2747,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\n" + "suggestion\x18\x02 \x01(\tR\n" + "suggestion\x12\x14\n" + - "\x05label\x18\x03 \x01(\tR\x05label\"\xaa>\n" + + "\x05label\x18\x03 \x01(\tR\x05label\"\x91>\n" + "\rSimulationRun\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + "\n" + @@ -2816,8 +2769,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x0fnum_simulations\x18\x0f \x01(\x05R\x0enumSimulations\x122\n" + "\x05usage\x18\x10 \x01(\v2\x1c.livekit.SimulationRun.UsageR\x05usage\x12 \n" + "\vconcurrency\x18\x11 \x01(\x05R\vconcurrency\x12+\n" + - "\x04mode\x18\x12 \x01(\x0e2\x17.livekit.SimulationModeR\x04mode\x12;\n" + - "\ametrics\x18\x13 \x01(\v2!.livekit.SimulationRun.RunMetricsR\ametrics\x12!\n" + + "\x04mode\x18\x12 \x01(\x0e2\x17.livekit.SimulationModeR\x04mode\x12!\n" + "\fsummary_zstd\x18\x14 \x01(\fR\vsummaryZstd\x1a\xd6\x05\n" + "\x03Job\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x129\n" + @@ -2844,7 +2796,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x10STATUS_COMPLETED\x10\x02\x12\x11\n" + "\rSTATUS_FAILED\x10\x03\x12\x14\n" + "\x10STATUS_CANCELLED\x10\x04J\x04\b\t\x10\n" + - "\x1a\xd8\"\n" + + "\x1a\xd8&\n" + "\n" + "JobMetrics\x12*\n" + "\x0eaccuracy_score\x18\x01 \x01(\x02H\x00R\raccuracyScore\x88\x01\x01\x12.\n" + @@ -2933,28 +2885,26 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x12_enunciation_scoreB\x15\n" + "\x13_entity_recognitionB\x13\n" + "\x11_entities_utteredB\x16\n" + - "\x14_entities_recognized\x1a\xf9\b\n" + + "\x14_entities_recognized\x1a\xac\b\n" + "\fConversation\x12/\n" + "\x11turn_taking_score\x18\x01 \x01(\x02H\x00R\x0fturnTakingScore\x88\x01\x01\x12:\n" + "\x17response_latency_p50_ms\x18\x02 \x01(\x05H\x01R\x14responseLatencyP50Ms\x88\x01\x01\x12:\n" + "\x17response_latency_p95_ms\x18\x03 \x01(\x05H\x02R\x14responseLatencyP95Ms\x88\x01\x01\x12:\n" + - "\x17response_latency_p99_ms\x18\x04 \x01(\x05H\x03R\x14responseLatencyP99Ms\x88\x01\x01\x123\n" + - "\x13response_latency_ms\x18\x10 \x01(\x05H\x04R\x11responseLatencyMs\x88\x01\x01\x128\n" + - "\x16agent_yield_latency_ms\x18\x05 \x01(\rH\x05R\x13agentYieldLatencyMs\x88\x01\x01\x12;\n" + - "\x17eot_misprediction_count\x18\x06 \x01(\rH\x06R\x15eotMispredictionCount\x88\x01\x01\x12(\n" + - "\roverlap_ratio\x18\a \x01(\x02H\aR\foverlapRatio\x88\x01\x01\x12/\n" + - "\x11overlap_speech_ms\x18\b \x01(\rH\bR\x0foverlapSpeechMs\x88\x01\x01\x12+\n" + - "\x0ftotal_speech_ms\x18\t \x01(\rH\tR\rtotalSpeechMs\x88\x01\x01\x127\n" + - "\x15awkward_silence_count\x18\v \x01(\rH\n" + - "R\x13awkwardSilenceCount\x88\x01\x01\x12.\n" + - "\x10unanswered_turns\x18\f \x01(\rH\vR\x0funansweredTurns\x88\x01\x01\x12=\n" + - "\x18false_interruption_count\x18\r \x01(\rH\fR\x16falseInterruptionCount\x88\x01\x01\x12E\n" + - "\x1dagent_reported_e2e_latency_ms\x18\x0f \x01(\rH\rR\x19agentReportedE2eLatencyMs\x88\x01\x01B\x14\n" + + "\x17response_latency_p99_ms\x18\x04 \x01(\x05H\x03R\x14responseLatencyP99Ms\x88\x01\x01\x128\n" + + "\x16agent_yield_latency_ms\x18\x05 \x01(\rH\x04R\x13agentYieldLatencyMs\x88\x01\x01\x12;\n" + + "\x17eot_misprediction_count\x18\x06 \x01(\rH\x05R\x15eotMispredictionCount\x88\x01\x01\x12(\n" + + "\roverlap_ratio\x18\a \x01(\x02H\x06R\foverlapRatio\x88\x01\x01\x12/\n" + + "\x11overlap_speech_ms\x18\b \x01(\rH\aR\x0foverlapSpeechMs\x88\x01\x01\x12+\n" + + "\x0ftotal_speech_ms\x18\t \x01(\rH\bR\rtotalSpeechMs\x88\x01\x01\x127\n" + + "\x15awkward_silence_count\x18\v \x01(\rH\tR\x13awkwardSilenceCount\x88\x01\x01\x12.\n" + + "\x10unanswered_turns\x18\f \x01(\rH\n" + + "R\x0funansweredTurns\x88\x01\x01\x12=\n" + + "\x18false_interruption_count\x18\r \x01(\rH\vR\x16falseInterruptionCount\x88\x01\x01\x12E\n" + + "\x1dagent_reported_e2e_latency_ms\x18\x0f \x01(\rH\fR\x19agentReportedE2eLatencyMs\x88\x01\x01B\x14\n" + "\x12_turn_taking_scoreB\x1a\n" + "\x18_response_latency_p50_msB\x1a\n" + "\x18_response_latency_p95_msB\x1a\n" + - "\x18_response_latency_p99_msB\x16\n" + - "\x14_response_latency_msB\x19\n" + + "\x18_response_latency_p99_msB\x19\n" + "\x17_agent_yield_latency_msB\x1a\n" + "\x18_eot_misprediction_countB\x10\n" + "\x0e_overlap_ratioB\x14\n" + @@ -2968,20 +2918,44 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x11early_termination\x18\x01 \x01(\bH\x00R\x10earlyTermination\x88\x01\x01\x12.\n" + "\x10late_termination\x18\x02 \x01(\bH\x01R\x0flateTermination\x88\x01\x01B\x14\n" + "\x12_early_terminationB\x13\n" + - "\x11_late_termination\x1a\xd3\x03\n" + + "\x11_late_termination\x1a\xa0\b\n" + "\x04Turn\x12\x14\n" + "\x05index\x18\x01 \x01(\rR\x05index\x12+\n" + "\x04role\x18\x02 \x01(\x0e2\x17.livekit.agent.ChatRoleR\x04role\x12\x1e\n" + "\bstart_ms\x18\x03 \x01(\rH\x00R\astartMs\x88\x01\x01\x12\x1a\n" + - "\x06end_ms\x18\x04 \x01(\rH\x01R\x05endMs\x88\x01\x01\x127\n" + - "\x03stt\x18\x05 \x01(\v2%.livekit.SimulationRun.JobMetrics.STTR\x03stt\x127\n" + - "\x03llm\x18\x06 \x01(\v2%.livekit.SimulationRun.JobMetrics.LLMR\x03llm\x127\n" + - "\x03tts\x18\a \x01(\v2%.livekit.SimulationRun.JobMetrics.TTSR\x03tts\x12R\n" + - "\fconversation\x18\b \x01(\v2..livekit.SimulationRun.JobMetrics.ConversationR\fconversation\x12%\n" + - "\vconciseness\x18\t \x01(\x02H\x02R\vconciseness\x88\x01\x01B\v\n" + + "\x06end_ms\x18\x04 \x01(\rH\x01R\x05endMs\x88\x01\x01\x129\n" + + "\x16transcription_delay_ms\x18\x05 \x01(\rH\x02R\x14transcriptionDelayMs\x88\x01\x01\x12#\n" + + "\vllm_ttft_ms\x18\x06 \x01(\rH\x03R\tllmTtftMs\x88\x01\x01\x12#\n" + + "\vllm_ttfs_ms\x18\a \x01(\rH\x04R\tllmTtfsMs\x88\x01\x01\x12/\n" + + "\x11tokens_per_second\x18\b \x01(\x02H\x05R\x0ftokensPerSecond\x88\x01\x01\x12#\n" + + "\vtts_ttfb_ms\x18\t \x01(\rH\x06R\tttsTtfbMs\x88\x01\x01\x12E\n" + + "\x1dagent_reported_e2e_latency_ms\x18\n" + + " \x01(\rH\aR\x19agentReportedE2eLatencyMs\x88\x01\x01\x123\n" + + "\x13response_latency_ms\x18\v \x01(\x05H\bR\x11responseLatencyMs\x88\x01\x01\x128\n" + + "\x16agent_yield_latency_ms\x18\f \x01(\rH\tR\x13agentYieldLatencyMs\x88\x01\x01\x12/\n" + + "\x11turn_taking_score\x18\r \x01(\x02H\n" + + "R\x0fturnTakingScore\x88\x01\x01\x12%\n" + + "\vconciseness\x18\x0e \x01(\x02H\vR\vconciseness\x88\x01\x01\x120\n" + + "\x11eot_misprediction\x18\x0f \x01(\bH\fR\x10eotMisprediction\x88\x01\x01\x12,\n" + + "\x0fawkward_silence\x18\x10 \x01(\bH\rR\x0eawkwardSilence\x88\x01\x01\x12#\n" + + "\n" + + "unanswered\x18\x11 \x01(\bH\x0eR\n" + + "unanswered\x88\x01\x01B\v\n" + "\t_start_msB\t\n" + - "\a_end_msB\x0e\n" + - "\f_concisenessB\x11\n" + + "\a_end_msB\x19\n" + + "\x17_transcription_delay_msB\x0e\n" + + "\f_llm_ttft_msB\x0e\n" + + "\f_llm_ttfs_msB\x14\n" + + "\x12_tokens_per_secondB\x0e\n" + + "\f_tts_ttfb_msB \n" + + "\x1e_agent_reported_e2e_latency_msB\x16\n" + + "\x14_response_latency_msB\x19\n" + + "\x17_agent_yield_latency_msB\x14\n" + + "\x12_turn_taking_scoreB\x0e\n" + + "\f_concisenessB\x14\n" + + "\x12_eot_mispredictionB\x12\n" + + "\x10_awkward_silenceB\r\n" + + "\v_unansweredB\x11\n" + "\x0f_accuracy_scoreB\x13\n" + "\x11_experience_scoreB\x12\n" + "\x10_task_completionB\x0e\n" + @@ -2990,19 +2964,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x11_information_lossB\x17\n" + "\x15_redundant_statementsB\x18\n" + "\x16_poor_question_qualityB\x1b\n" + - "\x19_conversation_progression\x1a\xd9\x03\n" + - "\n" + - "RunMetrics\x12*\n" + - "\x0eaccuracy_score\x18\x01 \x01(\x02H\x00R\raccuracyScore\x88\x01\x01\x12.\n" + - "\x10experience_score\x18\x02 \x01(\x02H\x01R\x0fexperienceScore\x88\x01\x01\x121\n" + - "\x12scenario_pass_rate\x18\x03 \x01(\x02H\x02R\x10scenarioPassRate\x88\x01\x01\x127\n" + - "\x03stt\x18\x04 \x01(\v2%.livekit.SimulationRun.JobMetrics.STTR\x03stt\x127\n" + - "\x03llm\x18\x05 \x01(\v2%.livekit.SimulationRun.JobMetrics.LLMR\x03llm\x127\n" + - "\x03tts\x18\x06 \x01(\v2%.livekit.SimulationRun.JobMetrics.TTSR\x03tts\x12R\n" + - "\fconversation\x18\a \x01(\v2..livekit.SimulationRun.JobMetrics.ConversationR\fconversationB\x11\n" + - "\x0f_accuracy_scoreB\x13\n" + - "\x11_experience_scoreB\x15\n" + - "\x13_scenario_pass_rate\x1a\xf5\x03\n" + + "\x19_conversation_progression\x1a\xf5\x03\n" + "\x06Create\x1a\xdc\x02\n" + "\aRequest\x12\x1d\n" + "\n" + @@ -3114,7 +3076,7 @@ func file_livekit_agent_simulation_proto_rawDescGZIP() []byte { } var file_livekit_agent_simulation_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_livekit_agent_simulation_proto_msgTypes = make([]protoimpl.MessageInfo, 37) +var file_livekit_agent_simulation_proto_msgTypes = make([]protoimpl.MessageInfo, 36) var file_livekit_agent_simulation_proto_goTypes = []any{ (SimulationMode)(0), // 0: livekit.SimulationMode (SimulationRun_Status)(0), // 1: livekit.SimulationRun.Status @@ -3128,103 +3090,93 @@ var file_livekit_agent_simulation_proto_goTypes = []any{ (*SimulationRunSummary_Issue)(nil), // 9: livekit.SimulationRunSummary.Issue (*SimulationRun_Job)(nil), // 10: livekit.SimulationRun.Job (*SimulationRun_JobMetrics)(nil), // 11: livekit.SimulationRun.JobMetrics - (*SimulationRun_RunMetrics)(nil), // 12: livekit.SimulationRun.RunMetrics - (*SimulationRun_Create)(nil), // 13: livekit.SimulationRun.Create - (*SimulationRun_ConfirmSourceUpload)(nil), // 14: livekit.SimulationRun.ConfirmSourceUpload - (*SimulationRun_Get)(nil), // 15: livekit.SimulationRun.Get - (*SimulationRun_List)(nil), // 16: livekit.SimulationRun.List - (*SimulationRun_Cancel)(nil), // 17: livekit.SimulationRun.Cancel - (*SimulationRun_Usage)(nil), // 18: livekit.SimulationRun.Usage - (*SimulationRun_Job_Usage)(nil), // 19: livekit.SimulationRun.Job.Usage - (*SimulationRun_JobMetrics_STT)(nil), // 20: livekit.SimulationRun.JobMetrics.STT - (*SimulationRun_JobMetrics_LLM)(nil), // 21: livekit.SimulationRun.JobMetrics.LLM - (*SimulationRun_JobMetrics_TTS)(nil), // 22: livekit.SimulationRun.JobMetrics.TTS - (*SimulationRun_JobMetrics_Conversation)(nil), // 23: livekit.SimulationRun.JobMetrics.Conversation - (*SimulationRun_JobMetrics_Simulator)(nil), // 24: livekit.SimulationRun.JobMetrics.Simulator - (*SimulationRun_JobMetrics_Turn)(nil), // 25: livekit.SimulationRun.JobMetrics.Turn - (*SimulationRun_Create_Request)(nil), // 26: livekit.SimulationRun.Create.Request - (*SimulationRun_Create_Response)(nil), // 27: livekit.SimulationRun.Create.Response - (*SimulationRun_ConfirmSourceUpload_Request)(nil), // 28: livekit.SimulationRun.ConfirmSourceUpload.Request - (*SimulationRun_ConfirmSourceUpload_Response)(nil), // 29: livekit.SimulationRun.ConfirmSourceUpload.Response - (*SimulationRun_Get_Request)(nil), // 30: livekit.SimulationRun.Get.Request - (*SimulationRun_Get_Response)(nil), // 31: livekit.SimulationRun.Get.Response - (*SimulationRun_List_Request)(nil), // 32: livekit.SimulationRun.List.Request - (*SimulationRun_List_Response)(nil), // 33: livekit.SimulationRun.List.Response - (*SimulationRun_Cancel_Request)(nil), // 34: livekit.SimulationRun.Cancel.Request - (*SimulationRun_Cancel_Response)(nil), // 35: livekit.SimulationRun.Cancel.Response - (*Scenario_CreateFromSession)(nil), // 36: livekit.Scenario.CreateFromSession - nil, // 37: livekit.Scenario.TagsEntry - (*Scenario_CreateFromSession_Request)(nil), // 38: livekit.Scenario.CreateFromSession.Request - (*Scenario_CreateFromSession_Response)(nil), // 39: livekit.Scenario.CreateFromSession.Response - (*timestamppb.Timestamp)(nil), // 40: google.protobuf.Timestamp - (*agent.ChatContext)(nil), // 41: livekit.agent.ChatContext - (agent.ChatRole)(0), // 42: livekit.agent.ChatRole - (*PresignedPostRequest)(nil), // 43: livekit.PresignedPostRequest - (*TokenPagination)(nil), // 44: livekit.TokenPagination + (*SimulationRun_Create)(nil), // 12: livekit.SimulationRun.Create + (*SimulationRun_ConfirmSourceUpload)(nil), // 13: livekit.SimulationRun.ConfirmSourceUpload + (*SimulationRun_Get)(nil), // 14: livekit.SimulationRun.Get + (*SimulationRun_List)(nil), // 15: livekit.SimulationRun.List + (*SimulationRun_Cancel)(nil), // 16: livekit.SimulationRun.Cancel + (*SimulationRun_Usage)(nil), // 17: livekit.SimulationRun.Usage + (*SimulationRun_Job_Usage)(nil), // 18: livekit.SimulationRun.Job.Usage + (*SimulationRun_JobMetrics_STT)(nil), // 19: livekit.SimulationRun.JobMetrics.STT + (*SimulationRun_JobMetrics_LLM)(nil), // 20: livekit.SimulationRun.JobMetrics.LLM + (*SimulationRun_JobMetrics_TTS)(nil), // 21: livekit.SimulationRun.JobMetrics.TTS + (*SimulationRun_JobMetrics_Conversation)(nil), // 22: livekit.SimulationRun.JobMetrics.Conversation + (*SimulationRun_JobMetrics_Simulator)(nil), // 23: livekit.SimulationRun.JobMetrics.Simulator + (*SimulationRun_JobMetrics_Turn)(nil), // 24: livekit.SimulationRun.JobMetrics.Turn + (*SimulationRun_Create_Request)(nil), // 25: livekit.SimulationRun.Create.Request + (*SimulationRun_Create_Response)(nil), // 26: livekit.SimulationRun.Create.Response + (*SimulationRun_ConfirmSourceUpload_Request)(nil), // 27: livekit.SimulationRun.ConfirmSourceUpload.Request + (*SimulationRun_ConfirmSourceUpload_Response)(nil), // 28: livekit.SimulationRun.ConfirmSourceUpload.Response + (*SimulationRun_Get_Request)(nil), // 29: livekit.SimulationRun.Get.Request + (*SimulationRun_Get_Response)(nil), // 30: livekit.SimulationRun.Get.Response + (*SimulationRun_List_Request)(nil), // 31: livekit.SimulationRun.List.Request + (*SimulationRun_List_Response)(nil), // 32: livekit.SimulationRun.List.Response + (*SimulationRun_Cancel_Request)(nil), // 33: livekit.SimulationRun.Cancel.Request + (*SimulationRun_Cancel_Response)(nil), // 34: livekit.SimulationRun.Cancel.Response + (*Scenario_CreateFromSession)(nil), // 35: livekit.Scenario.CreateFromSession + nil, // 36: livekit.Scenario.TagsEntry + (*Scenario_CreateFromSession_Request)(nil), // 37: livekit.Scenario.CreateFromSession.Request + (*Scenario_CreateFromSession_Response)(nil), // 38: livekit.Scenario.CreateFromSession.Response + (*timestamppb.Timestamp)(nil), // 39: google.protobuf.Timestamp + (*agent.ChatContext)(nil), // 40: livekit.agent.ChatContext + (agent.ChatRole)(0), // 41: livekit.agent.ChatRole + (*PresignedPostRequest)(nil), // 42: livekit.PresignedPostRequest + (*TokenPagination)(nil), // 43: livekit.TokenPagination } var file_livekit_agent_simulation_proto_depIdxs = []int32{ 9, // 0: livekit.SimulationRunSummary.issues:type_name -> livekit.SimulationRunSummary.Issue 8, // 1: livekit.SimulationRunSummary.chat_history:type_name -> livekit.SimulationRunSummary.ChatHistoryEntry 1, // 2: livekit.SimulationRun.status:type_name -> livekit.SimulationRun.Status - 40, // 3: livekit.SimulationRun.created_at:type_name -> google.protobuf.Timestamp + 39, // 3: livekit.SimulationRun.created_at:type_name -> google.protobuf.Timestamp 10, // 4: livekit.SimulationRun.jobs:type_name -> livekit.SimulationRun.Job 6, // 5: livekit.SimulationRun.scenario_group:type_name -> livekit.ScenarioGroup - 40, // 6: livekit.SimulationRun.ended_at:type_name -> google.protobuf.Timestamp - 18, // 7: livekit.SimulationRun.usage:type_name -> livekit.SimulationRun.Usage + 39, // 6: livekit.SimulationRun.ended_at:type_name -> google.protobuf.Timestamp + 17, // 7: livekit.SimulationRun.usage:type_name -> livekit.SimulationRun.Usage 0, // 8: livekit.SimulationRun.mode:type_name -> livekit.SimulationMode - 12, // 9: livekit.SimulationRun.metrics:type_name -> livekit.SimulationRun.RunMetrics - 37, // 10: livekit.Scenario.tags:type_name -> livekit.Scenario.TagsEntry - 5, // 11: livekit.ScenarioGroup.scenarios:type_name -> livekit.Scenario - 5, // 12: livekit.SimulationDispatch.scenario:type_name -> livekit.Scenario - 0, // 13: livekit.SimulationDispatch.mode:type_name -> livekit.SimulationMode - 41, // 14: livekit.SimulationRunSummary.ChatHistoryEntry.value:type_name -> livekit.agent.ChatContext - 2, // 15: livekit.SimulationRun.Job.status:type_name -> livekit.SimulationRun.Job.Status - 40, // 16: livekit.SimulationRun.Job.started_at:type_name -> google.protobuf.Timestamp - 40, // 17: livekit.SimulationRun.Job.ended_at:type_name -> google.protobuf.Timestamp - 19, // 18: livekit.SimulationRun.Job.usage:type_name -> livekit.SimulationRun.Job.Usage - 11, // 19: livekit.SimulationRun.Job.metrics:type_name -> livekit.SimulationRun.JobMetrics - 20, // 20: livekit.SimulationRun.JobMetrics.stt:type_name -> livekit.SimulationRun.JobMetrics.STT - 21, // 21: livekit.SimulationRun.JobMetrics.llm:type_name -> livekit.SimulationRun.JobMetrics.LLM - 22, // 22: livekit.SimulationRun.JobMetrics.tts:type_name -> livekit.SimulationRun.JobMetrics.TTS - 23, // 23: livekit.SimulationRun.JobMetrics.conversation:type_name -> livekit.SimulationRun.JobMetrics.Conversation - 24, // 24: livekit.SimulationRun.JobMetrics.simulator:type_name -> livekit.SimulationRun.JobMetrics.Simulator - 25, // 25: livekit.SimulationRun.JobMetrics.turns:type_name -> livekit.SimulationRun.JobMetrics.Turn - 40, // 26: livekit.SimulationRun.JobMetrics.t0:type_name -> google.protobuf.Timestamp - 20, // 27: livekit.SimulationRun.RunMetrics.stt:type_name -> livekit.SimulationRun.JobMetrics.STT - 21, // 28: livekit.SimulationRun.RunMetrics.llm:type_name -> livekit.SimulationRun.JobMetrics.LLM - 22, // 29: livekit.SimulationRun.RunMetrics.tts:type_name -> livekit.SimulationRun.JobMetrics.TTS - 23, // 30: livekit.SimulationRun.RunMetrics.conversation:type_name -> livekit.SimulationRun.JobMetrics.Conversation - 42, // 31: livekit.SimulationRun.JobMetrics.Turn.role:type_name -> livekit.agent.ChatRole - 20, // 32: livekit.SimulationRun.JobMetrics.Turn.stt:type_name -> livekit.SimulationRun.JobMetrics.STT - 21, // 33: livekit.SimulationRun.JobMetrics.Turn.llm:type_name -> livekit.SimulationRun.JobMetrics.LLM - 22, // 34: livekit.SimulationRun.JobMetrics.Turn.tts:type_name -> livekit.SimulationRun.JobMetrics.TTS - 23, // 35: livekit.SimulationRun.JobMetrics.Turn.conversation:type_name -> livekit.SimulationRun.JobMetrics.Conversation - 6, // 36: livekit.SimulationRun.Create.Request.scenario_group:type_name -> livekit.ScenarioGroup - 0, // 37: livekit.SimulationRun.Create.Request.mode:type_name -> livekit.SimulationMode - 43, // 38: livekit.SimulationRun.Create.Response.presigned_post_request:type_name -> livekit.PresignedPostRequest - 4, // 39: livekit.SimulationRun.Get.Response.run:type_name -> livekit.SimulationRun - 1, // 40: livekit.SimulationRun.List.Request.status:type_name -> livekit.SimulationRun.Status - 44, // 41: livekit.SimulationRun.List.Request.page_token:type_name -> livekit.TokenPagination - 4, // 42: livekit.SimulationRun.List.Response.runs:type_name -> livekit.SimulationRun - 44, // 43: livekit.SimulationRun.List.Response.next_page_token:type_name -> livekit.TokenPagination - 5, // 44: livekit.Scenario.CreateFromSession.Response.scenario:type_name -> livekit.Scenario - 26, // 45: livekit.AgentSimulation.CreateSimulationRun:input_type -> livekit.SimulationRun.Create.Request - 28, // 46: livekit.AgentSimulation.ConfirmSimulationSourceUpload:input_type -> livekit.SimulationRun.ConfirmSourceUpload.Request - 30, // 47: livekit.AgentSimulation.GetSimulationRun:input_type -> livekit.SimulationRun.Get.Request - 32, // 48: livekit.AgentSimulation.ListSimulationRuns:input_type -> livekit.SimulationRun.List.Request - 34, // 49: livekit.AgentSimulation.CancelSimulationRun:input_type -> livekit.SimulationRun.Cancel.Request - 38, // 50: livekit.AgentSimulation.CreateScenarioFromSession:input_type -> livekit.Scenario.CreateFromSession.Request - 27, // 51: livekit.AgentSimulation.CreateSimulationRun:output_type -> livekit.SimulationRun.Create.Response - 29, // 52: livekit.AgentSimulation.ConfirmSimulationSourceUpload:output_type -> livekit.SimulationRun.ConfirmSourceUpload.Response - 31, // 53: livekit.AgentSimulation.GetSimulationRun:output_type -> livekit.SimulationRun.Get.Response - 33, // 54: livekit.AgentSimulation.ListSimulationRuns:output_type -> livekit.SimulationRun.List.Response - 35, // 55: livekit.AgentSimulation.CancelSimulationRun:output_type -> livekit.SimulationRun.Cancel.Response - 39, // 56: livekit.AgentSimulation.CreateScenarioFromSession:output_type -> livekit.Scenario.CreateFromSession.Response - 51, // [51:57] is the sub-list for method output_type - 45, // [45:51] is the sub-list for method input_type - 45, // [45:45] is the sub-list for extension type_name - 45, // [45:45] is the sub-list for extension extendee - 0, // [0:45] is the sub-list for field type_name + 36, // 9: livekit.Scenario.tags:type_name -> livekit.Scenario.TagsEntry + 5, // 10: livekit.ScenarioGroup.scenarios:type_name -> livekit.Scenario + 5, // 11: livekit.SimulationDispatch.scenario:type_name -> livekit.Scenario + 0, // 12: livekit.SimulationDispatch.mode:type_name -> livekit.SimulationMode + 40, // 13: livekit.SimulationRunSummary.ChatHistoryEntry.value:type_name -> livekit.agent.ChatContext + 2, // 14: livekit.SimulationRun.Job.status:type_name -> livekit.SimulationRun.Job.Status + 39, // 15: livekit.SimulationRun.Job.started_at:type_name -> google.protobuf.Timestamp + 39, // 16: livekit.SimulationRun.Job.ended_at:type_name -> google.protobuf.Timestamp + 18, // 17: livekit.SimulationRun.Job.usage:type_name -> livekit.SimulationRun.Job.Usage + 11, // 18: livekit.SimulationRun.Job.metrics:type_name -> livekit.SimulationRun.JobMetrics + 19, // 19: livekit.SimulationRun.JobMetrics.stt:type_name -> livekit.SimulationRun.JobMetrics.STT + 20, // 20: livekit.SimulationRun.JobMetrics.llm:type_name -> livekit.SimulationRun.JobMetrics.LLM + 21, // 21: livekit.SimulationRun.JobMetrics.tts:type_name -> livekit.SimulationRun.JobMetrics.TTS + 22, // 22: livekit.SimulationRun.JobMetrics.conversation:type_name -> livekit.SimulationRun.JobMetrics.Conversation + 23, // 23: livekit.SimulationRun.JobMetrics.simulator:type_name -> livekit.SimulationRun.JobMetrics.Simulator + 24, // 24: livekit.SimulationRun.JobMetrics.turns:type_name -> livekit.SimulationRun.JobMetrics.Turn + 39, // 25: livekit.SimulationRun.JobMetrics.t0:type_name -> google.protobuf.Timestamp + 41, // 26: livekit.SimulationRun.JobMetrics.Turn.role:type_name -> livekit.agent.ChatRole + 6, // 27: livekit.SimulationRun.Create.Request.scenario_group:type_name -> livekit.ScenarioGroup + 0, // 28: livekit.SimulationRun.Create.Request.mode:type_name -> livekit.SimulationMode + 42, // 29: livekit.SimulationRun.Create.Response.presigned_post_request:type_name -> livekit.PresignedPostRequest + 4, // 30: livekit.SimulationRun.Get.Response.run:type_name -> livekit.SimulationRun + 1, // 31: livekit.SimulationRun.List.Request.status:type_name -> livekit.SimulationRun.Status + 43, // 32: livekit.SimulationRun.List.Request.page_token:type_name -> livekit.TokenPagination + 4, // 33: livekit.SimulationRun.List.Response.runs:type_name -> livekit.SimulationRun + 43, // 34: livekit.SimulationRun.List.Response.next_page_token:type_name -> livekit.TokenPagination + 5, // 35: livekit.Scenario.CreateFromSession.Response.scenario:type_name -> livekit.Scenario + 25, // 36: livekit.AgentSimulation.CreateSimulationRun:input_type -> livekit.SimulationRun.Create.Request + 27, // 37: livekit.AgentSimulation.ConfirmSimulationSourceUpload:input_type -> livekit.SimulationRun.ConfirmSourceUpload.Request + 29, // 38: livekit.AgentSimulation.GetSimulationRun:input_type -> livekit.SimulationRun.Get.Request + 31, // 39: livekit.AgentSimulation.ListSimulationRuns:input_type -> livekit.SimulationRun.List.Request + 33, // 40: livekit.AgentSimulation.CancelSimulationRun:input_type -> livekit.SimulationRun.Cancel.Request + 37, // 41: livekit.AgentSimulation.CreateScenarioFromSession:input_type -> livekit.Scenario.CreateFromSession.Request + 26, // 42: livekit.AgentSimulation.CreateSimulationRun:output_type -> livekit.SimulationRun.Create.Response + 28, // 43: livekit.AgentSimulation.ConfirmSimulationSourceUpload:output_type -> livekit.SimulationRun.ConfirmSourceUpload.Response + 30, // 44: livekit.AgentSimulation.GetSimulationRun:output_type -> livekit.SimulationRun.Get.Response + 32, // 45: livekit.AgentSimulation.ListSimulationRuns:output_type -> livekit.SimulationRun.List.Response + 34, // 46: livekit.AgentSimulation.CancelSimulationRun:output_type -> livekit.SimulationRun.Cancel.Response + 38, // 47: livekit.AgentSimulation.CreateScenarioFromSession:output_type -> livekit.Scenario.CreateFromSession.Response + 42, // [42:48] is the sub-list for method output_type + 36, // [36:42] is the sub-list for method input_type + 36, // [36:36] is the sub-list for extension type_name + 36, // [36:36] is the sub-list for extension extendee + 0, // [0:36] is the sub-list for field type_name } func init() { file_livekit_agent_simulation_proto_init() } @@ -3235,22 +3187,21 @@ func file_livekit_agent_simulation_proto_init() { file_livekit_cloud_agent_proto_init() file_livekit_models_proto_init() file_livekit_agent_simulation_proto_msgTypes[8].OneofWrappers = []any{} - file_livekit_agent_simulation_proto_msgTypes[9].OneofWrappers = []any{} + file_livekit_agent_simulation_proto_msgTypes[16].OneofWrappers = []any{} file_livekit_agent_simulation_proto_msgTypes[17].OneofWrappers = []any{} file_livekit_agent_simulation_proto_msgTypes[18].OneofWrappers = []any{} file_livekit_agent_simulation_proto_msgTypes[19].OneofWrappers = []any{} file_livekit_agent_simulation_proto_msgTypes[20].OneofWrappers = []any{} file_livekit_agent_simulation_proto_msgTypes[21].OneofWrappers = []any{} file_livekit_agent_simulation_proto_msgTypes[22].OneofWrappers = []any{} - file_livekit_agent_simulation_proto_msgTypes[23].OneofWrappers = []any{} - file_livekit_agent_simulation_proto_msgTypes[29].OneofWrappers = []any{} + file_livekit_agent_simulation_proto_msgTypes[28].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_livekit_agent_simulation_proto_rawDesc), len(file_livekit_agent_simulation_proto_rawDesc)), NumEnums: 3, - NumMessages: 37, + NumMessages: 36, NumExtensions: 0, NumServices: 1, }, diff --git a/livekit/livekit_agent_simulation.twirp.go b/livekit/livekit_agent_simulation.twirp.go index df559a3ae..74b824b7e 100644 --- a/livekit/livekit_agent_simulation.twirp.go +++ b/livekit/livekit_agent_simulation.twirp.go @@ -1912,216 +1912,222 @@ func (s *agentSimulationServer) PathPrefix() string { } var twirpFileDescriptor9 = []byte{ - // 3376 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x1b, 0x49, - 0x76, 0x37, 0xbf, 0xc9, 0x47, 0x51, 0xa4, 0x4a, 0x1f, 0xa6, 0x7b, 0x76, 0x66, 0x3c, 0x9a, 0x9d, - 0x5d, 0xc3, 0x9e, 0x95, 0x1d, 0xcd, 0x7a, 0x67, 0xe5, 0xd9, 0x5d, 0x44, 0x94, 0x39, 0xa6, 0x1c, - 0x49, 0xd6, 0x14, 0x29, 0x24, 0x3b, 0x41, 0xd0, 0x68, 0x75, 0x97, 0xa9, 0xb6, 0x9b, 0x5d, 0xdc, - 0xae, 0x6a, 0xdb, 0x5a, 0x20, 0xf7, 0x01, 0x72, 0xca, 0x2d, 0xa7, 0x20, 0x97, 0x3d, 0x64, 0xaf, - 0x7b, 0x4c, 0x80, 0xfc, 0x0d, 0x41, 0x80, 0x20, 0x01, 0xf2, 0x17, 0xe4, 0x9e, 0x43, 0x6e, 0x41, - 0xbd, 0xaa, 0x6e, 0x36, 0xbf, 0x64, 0xcd, 0x64, 0x7c, 0xdb, 0x1b, 0xfb, 0xbd, 0xdf, 0x7b, 0x55, - 0xf5, 0xea, 0xf7, 0xea, 0xd5, 0x07, 0xe1, 0x83, 0xc0, 0x7f, 0xc5, 0x5e, 0xfa, 0xd2, 0x76, 0x86, - 0x2c, 0x94, 0xb6, 0xf0, 0x47, 0x71, 0xe0, 0x48, 0x9f, 0x87, 0x3b, 0xe3, 0x88, 0x4b, 0x4e, 0x2a, - 0x46, 0x6f, 0x7d, 0x84, 0x80, 0xfb, 0x33, 0x70, 0x26, 0x44, 0x8a, 0xb5, 0x3e, 0x1c, 0x72, 0x3e, - 0x0c, 0xd8, 0x7d, 0xfc, 0x3a, 0x8f, 0x9f, 0xdf, 0x97, 0xfe, 0x88, 0x09, 0xe9, 0x8c, 0xc6, 0x06, - 0x70, 0x2b, 0xb1, 0x76, 0x03, 0x1e, 0x7b, 0xda, 0x87, 0x51, 0x6d, 0x24, 0xaa, 0x11, 0xf7, 0x58, - 0x20, 0xb4, 0x74, 0xfb, 0x5f, 0x0b, 0xb0, 0xd1, 0x4f, 0xbb, 0x44, 0xe3, 0xb0, 0x1f, 0x8f, 0x46, - 0x4e, 0x74, 0x49, 0xb6, 0xa0, 0x3c, 0x76, 0x84, 0x60, 0x5e, 0x3b, 0x77, 0x3b, 0x77, 0xa7, 0x44, - 0xcd, 0x97, 0x92, 0x3f, 0x77, 0xfc, 0x80, 0x79, 0xed, 0xbc, 0x96, 0xeb, 0x2f, 0xf2, 0x3e, 0xc0, - 0x90, 0xfb, 0xe1, 0xd0, 0x7e, 0xcd, 0x82, 0xa0, 0x5d, 0xb8, 0x9d, 0xbb, 0x53, 0xa3, 0x35, 0x94, - 0xfc, 0x39, 0x0b, 0x02, 0xa5, 0x96, 0xdc, 0xf6, 0x47, 0xe3, 0x88, 0xbf, 0x62, 0xed, 0xa2, 0x56, - 0x4b, 0x7e, 0xa8, 0x05, 0xe4, 0x0b, 0x28, 0xfb, 0x42, 0xc4, 0x4c, 0xb4, 0x4b, 0xb7, 0x0b, 0x77, - 0xea, 0xbb, 0x1f, 0xef, 0x98, 0xde, 0xee, 0x2c, 0xea, 0xdc, 0xce, 0xa1, 0xc2, 0x52, 0x63, 0x42, - 0xbe, 0x82, 0x15, 0xf7, 0xc2, 0x91, 0xf6, 0x85, 0x2f, 0x24, 0x8f, 0x2e, 0xdb, 0x65, 0x74, 0xb1, - 0x73, 0xb5, 0x8b, 0x83, 0x0b, 0x47, 0xf6, 0xb4, 0x41, 0x37, 0x94, 0xd1, 0x25, 0xad, 0xbb, 0x13, - 0x89, 0xf5, 0x35, 0xb4, 0x66, 0x01, 0xa4, 0x05, 0x85, 0x97, 0xec, 0x12, 0xc3, 0x51, 0xa3, 0xea, - 0x27, 0x79, 0x00, 0xa5, 0x57, 0x4e, 0x10, 0x33, 0x0c, 0x45, 0x7d, 0xd7, 0x4a, 0x5b, 0xd4, 0x71, - 0x57, 0x1e, 0x0e, 0x78, 0x28, 0xd9, 0x1b, 0x49, 0x35, 0xf0, 0x51, 0xfe, 0xe7, 0x39, 0xcb, 0x86, - 0x12, 0xf6, 0x9f, 0xdc, 0x86, 0xba, 0xc7, 0x84, 0x1b, 0xf9, 0x63, 0xd5, 0x37, 0xe3, 0x38, 0x2b, - 0x22, 0x1f, 0x00, 0x88, 0x78, 0x38, 0x64, 0x02, 0x01, 0x79, 0x04, 0x64, 0x24, 0x64, 0x03, 0x4a, - 0x81, 0x73, 0xce, 0x92, 0x78, 0xeb, 0x8f, 0xed, 0xdf, 0xff, 0x0a, 0x1a, 0x53, 0x63, 0x26, 0xab, - 0x90, 0xf7, 0x3d, 0xd3, 0x40, 0xde, 0xc7, 0xc9, 0x1a, 0x47, 0xfc, 0x05, 0x73, 0xa5, 0xed, 0x7b, - 0xc6, 0x6f, 0xcd, 0x48, 0x0e, 0x3d, 0xf2, 0x10, 0xca, 0x42, 0x3a, 0x32, 0x16, 0xe8, 0x77, 0x75, - 0xf7, 0xfd, 0xc5, 0xa1, 0xdc, 0xe9, 0x23, 0x88, 0x1a, 0x30, 0xb9, 0x07, 0x6b, 0x9a, 0xb4, 0xd9, - 0x51, 0xe9, 0xa9, 0x6e, 0xa1, 0xe2, 0x71, 0x66, 0x68, 0x1b, 0x50, 0x62, 0x51, 0xc4, 0xa3, 0x76, - 0x49, 0x77, 0x1d, 0x3f, 0xc8, 0x1e, 0x80, 0x1b, 0x31, 0x47, 0x32, 0xcf, 0x76, 0x64, 0xbb, 0x6c, - 0xc2, 0xaa, 0x59, 0xbf, 0x93, 0xb0, 0x7e, 0x67, 0x90, 0xb0, 0x9e, 0xd6, 0x0c, 0x7a, 0x5f, 0x92, - 0x1d, 0x28, 0xbe, 0xe0, 0xe7, 0xa2, 0x5d, 0xc1, 0xd9, 0xb7, 0x96, 0x74, 0xf9, 0x29, 0x3f, 0xa7, - 0x88, 0x53, 0x31, 0xd0, 0xbd, 0x0d, 0x9d, 0x11, 0x6b, 0xd7, 0x74, 0x0c, 0x50, 0x72, 0xe2, 0x8c, - 0x18, 0xf9, 0x25, 0xac, 0x0a, 0x97, 0x85, 0x4e, 0xe4, 0x73, 0x7b, 0x18, 0xf1, 0x78, 0xdc, 0x06, - 0xec, 0xcd, 0xd6, 0xc4, 0xb1, 0x51, 0x3f, 0x51, 0x5a, 0xda, 0x10, 0xd9, 0x4f, 0xf2, 0x10, 0xaa, - 0x2c, 0xf4, 0xf4, 0x30, 0xea, 0x6f, 0x1d, 0x46, 0x05, 0xb1, 0xfb, 0x92, 0xbc, 0x07, 0xb5, 0x17, - 0xfc, 0xdc, 0x76, 0x79, 0x1c, 0xca, 0xf6, 0x0a, 0x26, 0x58, 0xf5, 0x05, 0x3f, 0x3f, 0x50, 0xdf, - 0xe4, 0x23, 0x58, 0xd1, 0x49, 0x68, 0xf4, 0x0d, 0xd4, 0xd7, 0xb5, 0x2c, 0x85, 0xe8, 0x7c, 0x34, - 0x90, 0x55, 0x0d, 0xd1, 0x32, 0x0d, 0xf9, 0x31, 0x34, 0xc3, 0x78, 0x94, 0x59, 0x87, 0x44, 0xbb, - 0x89, 0xa8, 0xd5, 0x30, 0x1e, 0x4d, 0x82, 0x25, 0xc8, 0x2e, 0x94, 0x62, 0xe1, 0x0c, 0x59, 0xbb, - 0x85, 0xfd, 0xff, 0xc1, 0x92, 0x88, 0x9e, 0x29, 0x0c, 0xd5, 0x50, 0x45, 0x69, 0x97, 0x87, 0x6e, - 0x1c, 0x45, 0x2c, 0x74, 0x2f, 0xdb, 0x6b, 0xba, 0xf9, 0x8c, 0x88, 0xdc, 0x83, 0xa2, 0x5a, 0x80, - 0xda, 0x04, 0x99, 0x75, 0x73, 0x81, 0xd3, 0x63, 0xee, 0x31, 0x8a, 0x20, 0xf2, 0x05, 0x54, 0x46, - 0x4c, 0x46, 0xbe, 0x2b, 0xda, 0xeb, 0xd8, 0x89, 0x8f, 0x96, 0x74, 0x82, 0xc6, 0xe1, 0xb1, 0x06, - 0xd2, 0xc4, 0x42, 0xc5, 0x42, 0xe8, 0x64, 0xb7, 0x7f, 0x2b, 0xa4, 0xd7, 0xde, 0xb8, 0x9d, 0xbb, - 0xb3, 0x42, 0xeb, 0x46, 0xf6, 0xb5, 0x90, 0x9e, 0xf5, 0xef, 0x25, 0x28, 0x3c, 0xe5, 0xe7, 0x73, - 0xf9, 0xb1, 0x97, 0x26, 0x40, 0x1e, 0xbb, 0xf9, 0xd1, 0x72, 0x36, 0xcd, 0x26, 0xc1, 0x36, 0xac, - 0xf8, 0xa1, 0x90, 0x51, 0xec, 0xea, 0xd8, 0xea, 0xcc, 0x9c, 0x92, 0x4d, 0xb8, 0x5f, 0xcc, 0x72, - 0xff, 0x27, 0x40, 0x34, 0x21, 0xd9, 0x9b, 0x31, 0x73, 0xa5, 0x99, 0x1b, 0x9d, 0x1e, 0x3a, 0xb1, - 0xba, 0x19, 0xc5, 0x24, 0xf7, 0xcb, 0x99, 0xdc, 0x27, 0x04, 0x8a, 0xd2, 0x19, 0xea, 0x2c, 0xa8, - 0x51, 0xfc, 0xad, 0x48, 0x15, 0x71, 0x3e, 0xd2, 0x44, 0xaf, 0x22, 0xba, 0xaa, 0x04, 0xc8, 0xf3, - 0x3d, 0x00, 0x21, 0x9d, 0xc8, 0x64, 0x1c, 0xbc, 0x3d, 0xe3, 0x0c, 0x7a, 0x5f, 0x7e, 0x57, 0x8e, - 0xdf, 0x84, 0x0a, 0x76, 0xc7, 0xf7, 0x90, 0xe1, 0x35, 0x5a, 0x56, 0x9f, 0x87, 0x1e, 0xf9, 0x59, - 0x42, 0xb8, 0x06, 0x3a, 0xbb, 0x7d, 0x45, 0xd0, 0xa7, 0x48, 0x97, 0x61, 0xc9, 0xea, 0x95, 0x2c, - 0x79, 0xca, 0xcf, 0x67, 0x59, 0x62, 0xfd, 0x15, 0x94, 0xd0, 0x19, 0xb9, 0x03, 0x2d, 0xb5, 0x52, - 0xdb, 0x32, 0x8e, 0x42, 0x61, 0xd2, 0x47, 0x97, 0xbe, 0x55, 0x25, 0x1f, 0x28, 0xb1, 0xce, 0xa0, - 0xbb, 0xb0, 0xe6, 0xc4, 0x9e, 0xcf, 0xa7, 0xa0, 0xba, 0x1a, 0x36, 0x51, 0x31, 0xc1, 0x6e, 0x73, - 0x28, 0x6b, 0x82, 0x10, 0x02, 0xab, 0xfd, 0xc1, 0xfe, 0xe0, 0xac, 0x6f, 0x9f, 0x76, 0x4f, 0x1e, - 0x1f, 0x9e, 0x3c, 0x69, 0xdd, 0xc8, 0xc8, 0xe8, 0xd9, 0xc9, 0x89, 0x92, 0xe5, 0xc8, 0x06, 0xb4, - 0x8c, 0xec, 0xe0, 0xd9, 0xf1, 0xe9, 0x51, 0x77, 0xd0, 0x7d, 0xdc, 0xca, 0x93, 0x35, 0x68, 0x18, - 0xe9, 0x97, 0xfb, 0x87, 0x47, 0xdd, 0xc7, 0xad, 0x42, 0x16, 0xb8, 0x7f, 0x72, 0xd0, 0x3d, 0x52, - 0xd2, 0xe2, 0xd3, 0x62, 0xb5, 0xd6, 0x02, 0xeb, 0x3f, 0xb6, 0x01, 0x26, 0xa3, 0x25, 0x77, 0x61, - 0xd5, 0x71, 0xdd, 0x38, 0x72, 0xdc, 0x4b, 0x5b, 0xb8, 0x3c, 0x62, 0x38, 0xb2, 0x7c, 0xef, 0x06, - 0x6d, 0x24, 0xf2, 0xbe, 0x12, 0x7f, 0x93, 0xcb, 0x91, 0x1d, 0x68, 0x29, 0x02, 0x46, 0x3e, 0x0b, - 0x5d, 0x66, 0xd0, 0x79, 0x44, 0xe7, 0x68, 0x73, 0xa2, 0x49, 0xf1, 0x9f, 0x42, 0x53, 0x3a, 0xe2, - 0xa5, 0xed, 0xf2, 0xd1, 0x38, 0x60, 0xb8, 0xe6, 0x17, 0x10, 0x9e, 0xa7, 0xab, 0x4a, 0x71, 0x90, - 0xca, 0x15, 0xfa, 0x73, 0x28, 0x08, 0x29, 0x91, 0xf8, 0xf5, 0xdd, 0x4f, 0xde, 0x3a, 0x4f, 0x3b, - 0xfd, 0xc1, 0x80, 0x2a, 0x0b, 0x65, 0x18, 0x04, 0x23, 0x4c, 0x87, 0x6b, 0x19, 0x1e, 0x1d, 0x1d, - 0x53, 0x65, 0xa1, 0x0c, 0xa5, 0x14, 0xa6, 0x96, 0x5c, 0xc3, 0x70, 0x30, 0xe8, 0x53, 0x65, 0x41, - 0x28, 0xac, 0xb8, 0x3c, 0x7c, 0xc5, 0x22, 0x81, 0xb0, 0x76, 0x05, 0x3d, 0xec, 0xbc, 0xdd, 0xc3, - 0x41, 0xc6, 0x8a, 0x4e, 0xf9, 0x20, 0x87, 0x50, 0x33, 0x0b, 0x2f, 0x8f, 0x30, 0x15, 0xeb, 0xbb, - 0xf7, 0xae, 0x11, 0x84, 0xc4, 0x84, 0x4e, 0xac, 0xc9, 0x2f, 0xa0, 0x84, 0xfc, 0x6b, 0xd7, 0xb0, - 0xe0, 0xfd, 0xe8, 0x1a, 0x23, 0x8b, 0xa3, 0x90, 0x6a, 0x23, 0xf2, 0x21, 0xd4, 0x5f, 0xc4, 0xde, - 0x90, 0xe9, 0xdd, 0x20, 0xe6, 0x7d, 0x8d, 0x02, 0x8a, 0xd4, 0xfa, 0x1b, 0x4c, 0x48, 0x9e, 0x85, - 0xd5, 0x11, 0xa6, 0x49, 0xfe, 0x74, 0x82, 0xfd, 0x14, 0xc8, 0x85, 0x23, 0xec, 0x88, 0x8d, 0xb8, - 0x64, 0xc9, 0x96, 0x15, 0x93, 0xbb, 0x4a, 0x5b, 0x17, 0x8e, 0xa0, 0xa8, 0xe8, 0x6b, 0x39, 0xb9, - 0x0b, 0x79, 0xf9, 0xc0, 0xe4, 0xf8, 0x55, 0x0b, 0x46, 0x5e, 0x3e, 0x20, 0x9f, 0xe8, 0x7a, 0xe2, - 0x0b, 0x16, 0x32, 0xa1, 0xd3, 0x3b, 0xdf, 0x2b, 0xd0, 0xac, 0x50, 0xb1, 0x6a, 0x0f, 0xb6, 0xe2, - 0x30, 0x64, 0x2e, 0x13, 0x42, 0x2d, 0xf7, 0x92, 0xf3, 0xc0, 0x76, 0x9d, 0x20, 0xd0, 0xa5, 0xad, - 0xda, 0x2b, 0xd2, 0x8d, 0x8c, 0x7e, 0xc0, 0x79, 0x70, 0xa0, 0xb4, 0x86, 0xee, 0x7e, 0xf8, 0x9c, - 0x47, 0x23, 0x8c, 0x98, 0x1d, 0x70, 0x21, 0xb0, 0xe0, 0x55, 0x7b, 0x25, 0xda, 0xcc, 0x68, 0x8e, - 0xb8, 0x6e, 0xea, 0x67, 0xb0, 0x11, 0x31, 0x2f, 0x0e, 0x3d, 0x47, 0xed, 0xce, 0xa5, 0x23, 0xd9, - 0x88, 0x85, 0x52, 0x60, 0xa9, 0xab, 0xf6, 0xca, 0x74, 0x3d, 0xd5, 0xf6, 0x53, 0xa5, 0x26, 0xfe, - 0xe6, 0x98, 0xf3, 0xc8, 0xfe, 0x4d, 0xac, 0xf7, 0x6e, 0xf6, 0x6f, 0x62, 0x27, 0xf0, 0xe5, 0x25, - 0x16, 0xc2, 0x6a, 0xaf, 0x42, 0xd7, 0x95, 0xfa, 0x2b, 0xa3, 0xfd, 0x4a, 0x2b, 0x95, 0xe1, 0xaf, - 0xa0, 0x9d, 0xa5, 0x90, 0x3d, 0x8e, 0xf8, 0x30, 0x32, 0x21, 0x5e, 0xc7, 0x78, 0x54, 0xe9, 0xcd, - 0x2c, 0xe2, 0x74, 0x02, 0xf8, 0x26, 0x97, 0xb3, 0xfe, 0x50, 0x84, 0x42, 0x7f, 0x30, 0x20, 0x9b, - 0x50, 0x78, 0xcd, 0xa2, 0x34, 0xf1, 0xd5, 0x87, 0x72, 0x7f, 0x0b, 0x4a, 0xaf, 0x79, 0xe4, 0xe9, - 0x4a, 0xd7, 0xe8, 0xe5, 0xa8, 0xfe, 0x54, 0xaa, 0x1f, 0x42, 0x5d, 0xfd, 0xb6, 0xb1, 0x3c, 0xe9, - 0x4a, 0xd6, 0xe8, 0xe5, 0x29, 0x28, 0x61, 0x17, 0x65, 0x0a, 0xb5, 0x09, 0x05, 0x97, 0xe9, 0x52, - 0xa6, 0xa6, 0x46, 0x7d, 0x18, 0xbf, 0xee, 0x85, 0x13, 0x09, 0xdc, 0x59, 0x35, 0x7a, 0x45, 0xaa, - 0x3f, 0x8d, 0x5f, 0xf5, 0x3b, 0xf1, 0x0b, 0x08, 0x28, 0x51, 0x50, 0xc2, 0x89, 0xdf, 0x5f, 0x42, - 0x5b, 0x46, 0x4e, 0x98, 0xee, 0x18, 0xed, 0xc0, 0x91, 0x6a, 0x07, 0x61, 0x8f, 0x04, 0x66, 0x4e, - 0xa3, 0x57, 0xa6, 0x5b, 0x53, 0x88, 0x23, 0x0d, 0x38, 0x46, 0xf3, 0x5d, 0x20, 0x2c, 0x94, 0xbe, - 0xbc, 0xb4, 0x23, 0xe6, 0xf2, 0x61, 0xe8, 0x63, 0x0e, 0xd7, 0xb1, 0x97, 0x15, 0xba, 0xa6, 0x75, - 0x74, 0xa2, 0x4a, 0x96, 0x3e, 0x25, 0xf7, 0x99, 0xb0, 0x63, 0x29, 0x59, 0xc4, 0x74, 0x89, 0x6a, - 0xf4, 0xaa, 0xb4, 0x99, 0x68, 0xce, 0xb4, 0x42, 0xe1, 0x7f, 0x0a, 0xeb, 0x29, 0xde, 0xb4, 0xf2, - 0x5b, 0xe6, 0x21, 0xb5, 0x1b, 0xbd, 0x1a, 0x25, 0x89, 0x92, 0xa6, 0xba, 0x6f, 0x72, 0xb9, 0x4e, - 0x19, 0x8a, 0xf6, 0x6b, 0x16, 0x75, 0xaa, 0x50, 0xb6, 0x31, 0xd6, 0x9d, 0x55, 0x58, 0xb1, 0x33, - 0x91, 0x46, 0x84, 0x6b, 0x10, 0x18, 0x35, 0x44, 0x64, 0x62, 0xd6, 0x79, 0x0f, 0x6e, 0xd9, 0xcb, - 0xa2, 0xd3, 0xd9, 0x84, 0x75, 0x7b, 0x7e, 0xec, 0x9d, 0x75, 0x58, 0xb3, 0x67, 0x87, 0xd7, 0xd9, - 0x82, 0x0d, 0x7b, 0xc1, 0x18, 0xac, 0x7f, 0xc8, 0x41, 0xe1, 0xe8, 0xe8, 0x98, 0xfc, 0x00, 0x2a, - 0x52, 0x3e, 0x97, 0x2a, 0xe8, 0x39, 0x1c, 0xd6, 0x0d, 0x5a, 0x56, 0x02, 0x1d, 0x64, 0xad, 0x15, - 0x4a, 0x9b, 0xd0, 0x47, 0x69, 0x85, 0xd6, 0xde, 0x87, 0x35, 0xc9, 0x5f, 0xb2, 0x50, 0xd8, 0x63, - 0x16, 0xd9, 0x82, 0xb9, 0x3c, 0xf4, 0xd2, 0xda, 0xd0, 0xd4, 0xaa, 0x53, 0x16, 0xf5, 0x51, 0xa1, - 0x22, 0x03, 0x50, 0xb5, 0x4d, 0x6b, 0xc9, 0x6f, 0xe5, 0xbb, 0xb3, 0x01, 0xc4, 0x9e, 0xf3, 0x64, - 0xfd, 0x53, 0x09, 0x0a, 0x83, 0x41, 0xdf, 0x74, 0xc2, 0x99, 0xed, 0xa2, 0x93, 0xed, 0xe2, 0xf9, - 0x6c, 0x17, 0xcf, 0x8f, 0x13, 0xf2, 0xaa, 0xa4, 0x48, 0x3a, 0x35, 0x97, 0x14, 0x15, 0x34, 0x29, - 0x2c, 0x4f, 0x8a, 0xaa, 0x61, 0xf7, 0xe2, 0xa4, 0xa8, 0xa1, 0xdf, 0xd2, 0x7c, 0x52, 0x80, 0x21, - 0xf0, 0xd2, 0xa4, 0xa8, 0x23, 0xa0, 0x32, 0x9b, 0x14, 0x0f, 0x60, 0x2d, 0x74, 0x64, 0x1c, 0x39, - 0x81, 0x5a, 0xfa, 0x4c, 0x75, 0x2e, 0x99, 0x55, 0xa0, 0x95, 0x51, 0xa5, 0xe5, 0xf9, 0x01, 0xac, - 0xb1, 0x30, 0x0e, 0x5d, 0x5f, 0xaf, 0x1e, 0xda, 0xa2, 0x8c, 0x16, 0x35, 0xda, 0xca, 0xa8, 0x52, - 0x8b, 0xc5, 0x99, 0xa3, 0x97, 0x5e, 0xf8, 0x16, 0x99, 0xd3, 0xc4, 0x21, 0xd4, 0xbf, 0x4d, 0xe6, - 0xb4, 0xd0, 0x64, 0x65, 0x59, 0xe6, 0x18, 0x4e, 0x38, 0x19, 0x7e, 0xa8, 0x89, 0xfd, 0x5e, 0x32, - 0x4a, 0x71, 0x6c, 0x2e, 0xb4, 0x28, 0x9d, 0x0b, 0xdf, 0xf7, 0x92, 0x60, 0xff, 0x5b, 0x85, 0x95, - 0xec, 0x46, 0x01, 0xb3, 0x25, 0x8e, 0x42, 0x5b, 0x3a, 0x2f, 0xfd, 0x70, 0x38, 0xb3, 0x4d, 0x6b, - 0x2a, 0xd5, 0x00, 0x35, 0xe9, 0x3c, 0x3d, 0x82, 0x9b, 0x11, 0x13, 0x63, 0x1e, 0x0a, 0x96, 0x66, - 0xff, 0xf8, 0xe1, 0x83, 0x84, 0xe9, 0xa5, 0x5e, 0x8e, 0x6e, 0x24, 0x00, 0xb3, 0x34, 0x9e, 0x3e, - 0x7c, 0xa0, 0x79, 0xbf, 0xd0, 0x76, 0xef, 0xa1, 0xb2, 0x2d, 0xa0, 0x6d, 0x7e, 0xde, 0x76, 0xef, - 0xe1, 0x55, 0xb6, 0x7b, 0xca, 0xb6, 0x88, 0xb6, 0x85, 0x05, 0xb6, 0x7b, 0xda, 0xf6, 0x33, 0x58, - 0x9f, 0xb3, 0x1d, 0xe9, 0x82, 0x5b, 0xea, 0x15, 0xe9, 0xda, 0x8c, 0x9d, 0x36, 0xfa, 0x39, 0x6c, - 0xe9, 0x83, 0xd1, 0xa5, 0xcf, 0x02, 0x2f, 0x6b, 0x57, 0x32, 0xa5, 0x63, 0x1d, 0xf5, 0xbf, 0x56, - 0xea, 0x29, 0xcb, 0x2f, 0xe0, 0x26, 0xe3, 0xd2, 0x1e, 0xf9, 0x62, 0x1c, 0x31, 0xcf, 0xc7, 0xe3, - 0x97, 0xd9, 0xaf, 0x97, 0x4d, 0x06, 0x6e, 0x32, 0x2e, 0x8f, 0xb3, 0x7a, 0xdc, 0xb7, 0x2b, 0xe3, - 0x3b, 0xd0, 0xe0, 0xaf, 0x58, 0x14, 0x38, 0x63, 0x3b, 0x52, 0x53, 0x84, 0x8b, 0x81, 0x2a, 0x1e, - 0x2b, 0x46, 0x4c, 0x95, 0xd4, 0x2c, 0x74, 0x09, 0x52, 0x8c, 0x19, 0x73, 0x2f, 0x26, 0x35, 0xaa, - 0x4a, 0x9b, 0x46, 0xd5, 0x47, 0x8d, 0xee, 0xd7, 0x3d, 0x68, 0x4a, 0x2e, 0x9d, 0x20, 0x03, 0xaf, - 0x99, 0xa2, 0xd1, 0x40, 0x45, 0x16, 0xfc, 0x39, 0x6c, 0x3a, 0xaf, 0x5f, 0xbe, 0x76, 0x22, 0xcf, - 0x16, 0x7e, 0x80, 0xbb, 0x72, 0x3d, 0x04, 0xbd, 0x46, 0x00, 0x5d, 0x37, 0xea, 0xbe, 0xd6, 0xa6, - 0x03, 0xd8, 0x81, 0x56, 0x1c, 0x3a, 0xa1, 0x78, 0xad, 0x88, 0xa8, 0x0f, 0x2b, 0xa6, 0x9c, 0xd5, - 0x69, 0x73, 0xa2, 0xc1, 0xd3, 0x8a, 0xa9, 0xb8, 0xcf, 0x9d, 0x40, 0x30, 0xdb, 0x0f, 0x25, 0x8b, - 0xa2, 0x78, 0x9c, 0x09, 0x57, 0xc3, 0x64, 0xe6, 0x16, 0x22, 0x0e, 0x33, 0x80, 0xb4, 0xb9, 0x2e, - 0xbc, 0xaf, 0xa7, 0x29, 0x62, 0x63, 0x8e, 0x07, 0x4a, 0xb6, 0x3b, 0x35, 0xcb, 0x7a, 0x41, 0x68, - 0xd0, 0x5b, 0x08, 0xa3, 0x06, 0xd5, 0xdd, 0x9d, 0x9a, 0x6d, 0xbd, 0xd8, 0xcf, 0x26, 0x42, 0xc7, - 0x82, 0xb6, 0xbd, 0x84, 0xed, 0x4b, 0x74, 0xc8, 0xe6, 0x65, 0x3a, 0xc5, 0x56, 0x4c, 0xcd, 0x05, - 0x6c, 0xec, 0xdc, 0x82, 0x9b, 0xf6, 0x62, 0xc2, 0xa1, 0xbb, 0x25, 0x8c, 0xea, 0xb4, 0x60, 0xd5, - 0x9e, 0x22, 0x0c, 0x0e, 0x65, 0x8e, 0x18, 0x1d, 0x02, 0x2d, 0x7b, 0x66, 0xf6, 0x3b, 0x6d, 0xd8, - 0xb2, 0x17, 0x4e, 0x32, 0x2e, 0x2a, 0xb3, 0xb3, 0x88, 0xe5, 0x7f, 0xd9, 0x54, 0x75, 0x6e, 0xc3, - 0x07, 0xf6, 0x95, 0x13, 0x61, 0xfd, 0x5d, 0x0e, 0x6a, 0xe9, 0x99, 0x02, 0x2b, 0x84, 0x13, 0x05, - 0x97, 0xb6, 0x64, 0xd1, 0xc8, 0x0f, 0x9d, 0xf4, 0x32, 0xb2, 0xda, 0xbb, 0x41, 0x5b, 0xa8, 0x1a, - 0x4c, 0x34, 0x86, 0x58, 0xca, 0xdb, 0x94, 0x41, 0x1e, 0x0d, 0x72, 0xb4, 0xa9, 0x34, 0xd3, 0x78, - 0xbd, 0x8a, 0xce, 0x36, 0x81, 0x23, 0x9b, 0x75, 0x63, 0xfd, 0x5b, 0x01, 0x8a, 0x8a, 0x90, 0x64, - 0x03, 0x4a, 0x7e, 0xe8, 0xb1, 0x37, 0xba, 0xa6, 0x53, 0xfd, 0x41, 0xee, 0x41, 0x31, 0xe2, 0x01, - 0x33, 0xd7, 0x32, 0x37, 0x17, 0x5c, 0xb8, 0x52, 0x1e, 0x30, 0x8a, 0x20, 0xf2, 0x01, 0x54, 0xf1, - 0xb2, 0x22, 0x59, 0xd5, 0xd4, 0xce, 0xa0, 0x82, 0x12, 0x9d, 0x58, 0x16, 0x94, 0x59, 0xe8, 0x25, - 0xeb, 0x16, 0xee, 0x7d, 0x59, 0xe8, 0x25, 0x49, 0x87, 0xe7, 0xd4, 0xd2, 0x77, 0x3d, 0xa7, 0x96, - 0xbf, 0xeb, 0x39, 0xb5, 0xf2, 0xff, 0x3e, 0xa7, 0x56, 0xbf, 0x87, 0x73, 0xea, 0xcc, 0xb9, 0xab, - 0x66, 0xf6, 0x47, 0x33, 0xe7, 0xae, 0x4e, 0x1d, 0x6a, 0x76, 0x12, 0xe2, 0x4e, 0x0d, 0x2a, 0xb6, - 0x8e, 0xa7, 0x2e, 0xae, 0x13, 0x68, 0x67, 0x0d, 0x9a, 0xf6, 0xf4, 0x05, 0x84, 0x2e, 0x96, 0x33, - 0xf7, 0x0c, 0x3a, 0x35, 0xa6, 0x2f, 0x13, 0xe6, 0x7c, 0xa9, 0xec, 0x5c, 0x7c, 0xd8, 0x43, 0x9f, - 0xb3, 0x87, 0xb9, 0xce, 0x4d, 0xd8, 0xb4, 0x17, 0x9d, 0xd8, 0x30, 0xe7, 0x16, 0x1e, 0xc9, 0x30, - 0xbd, 0x96, 0x9d, 0xb9, 0xac, 0xff, 0x2c, 0x00, 0x4c, 0xae, 0x1b, 0xdf, 0xe9, 0xd5, 0xca, 0x9f, - 0x00, 0x49, 0xef, 0xa0, 0xc7, 0x8e, 0x10, 0x6a, 0x59, 0x61, 0xe9, 0x66, 0xb5, 0x95, 0xe8, 0x4e, - 0x1d, 0x21, 0xa8, 0x23, 0xd9, 0x1f, 0xef, 0x57, 0xae, 0x4d, 0x34, 0xb5, 0x83, 0x9b, 0x0f, 0xad, - 0xf5, 0x3f, 0x05, 0x28, 0x1f, 0xe0, 0x8b, 0x82, 0xf5, 0x5f, 0x79, 0xa8, 0x50, 0x86, 0xd4, 0x98, - 0x79, 0x2e, 0xc9, 0xcd, 0x3e, 0x97, 0x4c, 0xbf, 0x24, 0xe4, 0x67, 0x5f, 0x12, 0x16, 0x5c, 0xb8, - 0x17, 0x17, 0x5e, 0xb8, 0x6f, 0x41, 0x39, 0x62, 0x43, 0x15, 0x8a, 0xb2, 0xb9, 0x17, 0xc5, 0x2f, - 0xd2, 0x99, 0x7b, 0x8a, 0xa8, 0x5c, 0xf5, 0x14, 0xa1, 0xa8, 0x37, 0xf5, 0x18, 0xa1, 0x78, 0xf1, - 0xc9, 0xf4, 0xc5, 0x7c, 0xd5, 0x6c, 0x10, 0xb3, 0x42, 0xbd, 0x31, 0xd1, 0xb7, 0xf3, 0xb5, 0x6b, - 0xdc, 0xce, 0x63, 0xb0, 0xa7, 0x3b, 0x96, 0x26, 0xab, 0x71, 0xf9, 0xb4, 0x58, 0x2d, 0xb4, 0x8a, - 0x74, 0xfe, 0x59, 0xc8, 0xfa, 0x9b, 0x1c, 0x54, 0xa9, 0xa9, 0xbd, 0xe4, 0x2e, 0xac, 0x4d, 0xa2, - 0x63, 0x47, 0x71, 0x38, 0x09, 0x73, 0x53, 0x64, 0x59, 0x70, 0xe8, 0x91, 0x3e, 0x6c, 0x8d, 0x23, - 0x26, 0xfc, 0x61, 0xc8, 0x3c, 0x7b, 0xcc, 0x85, 0xaa, 0x72, 0x38, 0x4b, 0xe6, 0x11, 0x6e, 0xf2, - 0x56, 0x75, 0x9a, 0xc0, 0x4e, 0xb9, 0x90, 0x66, 0x2a, 0xe9, 0xc6, 0x78, 0x81, 0x54, 0x9d, 0x76, - 0xd7, 0x0f, 0x78, 0xf8, 0xdc, 0x8f, 0x46, 0x7d, 0x1e, 0x47, 0x2e, 0x3b, 0x1b, 0x07, 0xdc, 0xf1, - 0xac, 0xbf, 0xbe, 0x36, 0x07, 0x16, 0x0e, 0x21, 0xbf, 0x78, 0x08, 0x3f, 0x86, 0xa6, 0xcb, 0x3d, - 0xa6, 0x8e, 0x05, 0xd1, 0xe5, 0x98, 0xfb, 0xa1, 0x34, 0xaf, 0x04, 0xab, 0x4a, 0xdc, 0x4d, 0xa5, - 0x16, 0x4c, 0x62, 0x64, 0xfd, 0x6d, 0x0e, 0x0a, 0x4f, 0x98, 0xb4, 0x06, 0xef, 0xa2, 0x4b, 0xd6, - 0x4f, 0x33, 0xb3, 0x71, 0x07, 0x0a, 0x51, 0xac, 0x77, 0x00, 0x53, 0x1c, 0xcb, 0x9a, 0x50, 0x05, - 0xb1, 0xfe, 0x25, 0x0f, 0xc5, 0x23, 0x5f, 0x48, 0xeb, 0x9f, 0x73, 0xd7, 0xee, 0xd5, 0xa3, 0x99, - 0xa7, 0x95, 0xab, 0xdf, 0x16, 0xd5, 0x59, 0x5e, 0xc3, 0x15, 0x3b, 0x7f, 0x01, 0x30, 0x76, 0x86, - 0x4c, 0xdf, 0x05, 0x60, 0xcc, 0xea, 0xbb, 0xed, 0xd4, 0x7e, 0xa0, 0xa4, 0xa7, 0xce, 0xd0, 0x6c, - 0x25, 0x7a, 0x39, 0x5a, 0x53, 0x68, 0x14, 0xab, 0x62, 0xa5, 0xea, 0x93, 0xf6, 0xd5, 0x69, 0x40, - 0xdd, 0x9e, 0x78, 0xb2, 0xde, 0x4c, 0x71, 0xb1, 0x18, 0xc5, 0xa1, 0x68, 0xe7, 0xf0, 0x56, 0x75, - 0xd9, 0xf0, 0x11, 0x43, 0xfe, 0x14, 0x9a, 0x21, 0x7b, 0x23, 0x33, 0xae, 0x0c, 0x09, 0x97, 0x76, - 0x8a, 0x36, 0x94, 0xc1, 0x69, 0xd2, 0x2d, 0xeb, 0x05, 0x94, 0x0f, 0x9c, 0xd0, 0x65, 0xc1, 0x3b, - 0x9a, 0xd7, 0x2c, 0x83, 0xde, 0xf1, 0x4b, 0xc7, 0xef, 0x72, 0xe9, 0x53, 0xc7, 0x2d, 0xd8, 0x9c, - 0x7e, 0xea, 0xb0, 0xcf, 0x4e, 0x8f, 0x9e, 0xed, 0x3f, 0x6e, 0xdd, 0x20, 0x9b, 0xb0, 0x66, 0x54, - 0x4f, 0xba, 0x27, 0x5d, 0xba, 0x3f, 0xd0, 0x8f, 0x1e, 0xf3, 0x0f, 0x21, 0x79, 0xb2, 0x05, 0xc4, - 0xc8, 0xfa, 0x67, 0xc7, 0xc7, 0xfb, 0xf4, 0xf0, 0x6b, 0x25, 0x2f, 0x2c, 0x7c, 0x20, 0x29, 0xce, - 0x3f, 0x90, 0x94, 0x16, 0x3e, 0x90, 0x94, 0x9f, 0x16, 0xab, 0xd5, 0x56, 0x8d, 0x56, 0xcc, 0x33, - 0xe0, 0xf6, 0xef, 0x0a, 0x50, 0x4d, 0x96, 0xcf, 0xc9, 0x9b, 0x5a, 0x2e, 0xfb, 0xa6, 0x36, 0xfb, - 0xa4, 0x97, 0x5f, 0xf0, 0xa4, 0xb7, 0xf8, 0xf1, 0xae, 0xb0, 0xec, 0xf1, 0xee, 0xbe, 0x79, 0xa6, - 0x2b, 0x22, 0xcb, 0xde, 0x9b, 0x5b, 0xc8, 0x77, 0x06, 0xce, 0x50, 0xe8, 0xff, 0x25, 0xe8, 0x37, - 0x3c, 0x0b, 0xaa, 0xb1, 0x60, 0x91, 0xe7, 0x48, 0xc7, 0x3c, 0x09, 0xa6, 0xdf, 0xd6, 0x3f, 0xe6, - 0x60, 0x4d, 0x57, 0xad, 0x2f, 0x23, 0x3e, 0x32, 0xd7, 0xec, 0xd6, 0xaf, 0xaf, 0x4d, 0xa8, 0xcc, - 0x83, 0x5c, 0x7e, 0xea, 0x41, 0x6e, 0x52, 0x90, 0x0a, 0xd9, 0x82, 0x64, 0xed, 0x65, 0xf2, 0xe5, - 0x27, 0x50, 0x4d, 0x6a, 0x80, 0x59, 0x32, 0xd6, 0xe6, 0x46, 0x43, 0x53, 0x88, 0xf5, 0x39, 0xd4, - 0xd2, 0xa1, 0x2d, 0xf8, 0x47, 0xc5, 0x46, 0xf6, 0x1f, 0x15, 0xb5, 0xcc, 0xbf, 0x26, 0xb6, 0x07, - 0xd0, 0x98, 0xaa, 0x72, 0x84, 0x40, 0x11, 0xeb, 0xad, 0xb6, 0xc6, 0xdf, 0xe4, 0x3e, 0xd4, 0x92, - 0x96, 0xd4, 0x34, 0x15, 0x16, 0xf7, 0x66, 0x82, 0xd9, 0xfe, 0x43, 0x0e, 0xc8, 0x24, 0xb3, 0x1f, - 0xfb, 0x62, 0xec, 0x48, 0xf7, 0xe2, 0x5b, 0x15, 0xa4, 0x4d, 0x28, 0xbf, 0xe0, 0xe7, 0x93, 0xe0, - 0x95, 0x5e, 0xf0, 0xf3, 0x43, 0x6f, 0x2a, 0x2e, 0x85, 0xb7, 0xc6, 0x25, 0x2d, 0xbc, 0xc5, 0x6b, - 0x14, 0xde, 0xbb, 0xcf, 0x61, 0x75, 0x5a, 0x4e, 0x3e, 0x84, 0xf7, 0xfa, 0x87, 0xc7, 0x67, 0x47, - 0xfb, 0x83, 0xc3, 0x67, 0x27, 0xf6, 0xf1, 0xb3, 0xc7, 0x5d, 0xfb, 0xec, 0xa4, 0x7f, 0xda, 0x3d, - 0x38, 0xfc, 0xf2, 0xb0, 0xab, 0xf2, 0xae, 0x0d, 0x1b, 0xb3, 0x80, 0x41, 0xf7, 0x2f, 0x06, 0xad, - 0x1c, 0x26, 0xeb, 0x8c, 0x66, 0xff, 0xec, 0xf1, 0xe1, 0xb3, 0x56, 0x7e, 0xf7, 0xef, 0x4b, 0xd0, - 0xdc, 0x57, 0xdc, 0x9d, 0xb4, 0x46, 0x3c, 0x58, 0xd7, 0x5c, 0x9b, 0xfe, 0x87, 0xc9, 0xb2, 0x8d, - 0x9f, 0xc6, 0xee, 0x24, 0x85, 0xf6, 0x47, 0x6f, 0x83, 0x19, 0x56, 0x7d, 0x93, 0x83, 0xf7, 0x93, - 0x82, 0x9c, 0x02, 0xb3, 0xa5, 0x99, 0xec, 0x2e, 0xf3, 0x34, 0x5f, 0xc6, 0xd3, 0xd6, 0x3f, 0xfb, - 0x56, 0x36, 0xa6, 0x2b, 0x7f, 0x09, 0xad, 0x27, 0x4c, 0x4e, 0x8f, 0x76, 0x7b, 0x89, 0xa3, 0x27, - 0x4c, 0xa6, 0x8d, 0x7d, 0x7c, 0x25, 0xc6, 0x38, 0xb7, 0x81, 0xa8, 0x02, 0x3a, 0x85, 0x10, 0x64, - 0x99, 0xa9, 0x82, 0xa6, 0xfe, 0x7f, 0x78, 0x35, 0xc8, 0x34, 0xa0, 0xa6, 0x0b, 0x0b, 0xcc, 0x35, - 0xa7, 0x0b, 0xb1, 0x6f, 0x9f, 0xae, 0x04, 0x66, 0x5a, 0x79, 0x05, 0xb7, 0x0c, 0x29, 0x0c, 0x9f, - 0x33, 0x0b, 0x11, 0xb9, 0x37, 0xbf, 0xba, 0xcd, 0xad, 0x56, 0x69, 0x8b, 0x9f, 0x5e, 0x0f, 0xac, - 0xdb, 0xed, 0x7c, 0xf9, 0xf5, 0xc7, 0x43, 0x5f, 0x5e, 0xc4, 0xe7, 0x3b, 0x2e, 0x1f, 0x25, 0xff, - 0x9c, 0xd3, 0xff, 0x8e, 0x73, 0x79, 0x90, 0x08, 0x7e, 0x9f, 0x6f, 0x1c, 0xf9, 0xaf, 0xd8, 0x9f, - 0xe1, 0x9e, 0x90, 0x4b, 0xfe, 0xdf, 0xf9, 0x55, 0xf3, 0xfd, 0xe8, 0x11, 0x0a, 0xce, 0xcb, 0x68, - 0xf2, 0xd9, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x87, 0xac, 0x0b, 0x60, 0xac, 0x27, 0x00, 0x00, + // 3466 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x5a, 0x4f, 0x73, 0x1b, 0xc9, + 0x75, 0x17, 0xfe, 0x03, 0x0f, 0x04, 0x01, 0x36, 0xff, 0x08, 0xc2, 0x7a, 0x77, 0xb5, 0x5a, 0x7b, + 0xad, 0x92, 0xd6, 0x94, 0x8a, 0x6b, 0x79, 0x4d, 0xad, 0xed, 0x0a, 0x41, 0x62, 0x05, 0x2a, 0x24, + 0xc5, 0x6d, 0x80, 0x95, 0x78, 0x53, 0xa9, 0xa9, 0xe1, 0x4c, 0x0b, 0x1c, 0x69, 0x30, 0x0d, 0x4f, + 0xf7, 0x48, 0xa2, 0xab, 0x72, 0xdf, 0xaa, 0x9c, 0x7c, 0xcb, 0x29, 0xe5, 0x8b, 0x0f, 0x49, 0xe5, + 0xe6, 0x63, 0x52, 0x95, 0xcf, 0x90, 0x4b, 0x2a, 0x87, 0x7c, 0x82, 0xdc, 0x73, 0x4f, 0xf5, 0xeb, + 0x9e, 0xc1, 0x00, 0x18, 0x90, 0x54, 0x6a, 0xf7, 0x86, 0x79, 0xef, 0xf7, 0x7a, 0xba, 0x5f, 0xff, + 0xde, 0x7b, 0xdd, 0xf3, 0x00, 0x1f, 0xf9, 0xde, 0x1b, 0xf6, 0xda, 0x93, 0x96, 0x3d, 0x62, 0x81, + 0xb4, 0x84, 0x37, 0x8e, 0x7c, 0x5b, 0x7a, 0x3c, 0xd8, 0x9e, 0x84, 0x5c, 0x72, 0x52, 0x31, 0xfa, + 0xce, 0x27, 0x08, 0x78, 0x34, 0x07, 0x67, 0x42, 0x24, 0xd8, 0xce, 0xc7, 0x23, 0xce, 0x47, 0x3e, + 0x7b, 0x84, 0x4f, 0xe7, 0xd1, 0xcb, 0x47, 0xd2, 0x1b, 0x33, 0x21, 0xed, 0xf1, 0xc4, 0x00, 0xee, + 0xc4, 0xd6, 0x8e, 0xcf, 0x23, 0x57, 0x8f, 0x61, 0x54, 0x1b, 0xb1, 0x6a, 0xcc, 0x5d, 0xe6, 0x0b, + 0x2d, 0xbd, 0xf7, 0x1f, 0x05, 0xd8, 0x18, 0x24, 0x53, 0xa2, 0x51, 0x30, 0x88, 0xc6, 0x63, 0x3b, + 0xbc, 0x24, 0x5b, 0x50, 0x9e, 0xd8, 0x42, 0x30, 0xb7, 0x9d, 0xbb, 0x9b, 0xbb, 0x5f, 0xa2, 0xe6, + 0x49, 0xc9, 0x5f, 0xda, 0x9e, 0xcf, 0xdc, 0x76, 0x5e, 0xcb, 0xf5, 0x13, 0xf9, 0x10, 0x60, 0xc4, + 0xbd, 0x60, 0x64, 0xbd, 0x65, 0xbe, 0xdf, 0x2e, 0xdc, 0xcd, 0xdd, 0xaf, 0xd1, 0x1a, 0x4a, 0xfe, + 0x8a, 0xf9, 0xbe, 0x52, 0x4b, 0x6e, 0x79, 0xe3, 0x49, 0xc8, 0xdf, 0xb0, 0x76, 0x51, 0xab, 0x25, + 0x3f, 0xd4, 0x02, 0xf2, 0x15, 0x94, 0x3d, 0x21, 0x22, 0x26, 0xda, 0xa5, 0xbb, 0x85, 0xfb, 0xf5, + 0x9d, 0x4f, 0xb7, 0xcd, 0x6c, 0xb7, 0xb3, 0x26, 0xb7, 0x7d, 0xa8, 0xb0, 0xd4, 0x98, 0x90, 0x6f, + 0x60, 0xc5, 0xb9, 0xb0, 0xa5, 0x75, 0xe1, 0x09, 0xc9, 0xc3, 0xcb, 0x76, 0x19, 0x87, 0xd8, 0xbe, + 0x7a, 0x88, 0xfd, 0x0b, 0x5b, 0xf6, 0xb5, 0x41, 0x2f, 0x90, 0xe1, 0x25, 0xad, 0x3b, 0x53, 0x49, + 0xe7, 0x5b, 0x68, 0xcd, 0x03, 0x48, 0x0b, 0x0a, 0xaf, 0xd9, 0x25, 0xba, 0xa3, 0x46, 0xd5, 0x4f, + 0xf2, 0x18, 0x4a, 0x6f, 0x6c, 0x3f, 0x62, 0xe8, 0x8a, 0xfa, 0x4e, 0x27, 0x79, 0xa3, 0xf6, 0xbb, + 0x1a, 0x61, 0x9f, 0x07, 0x92, 0xbd, 0x93, 0x54, 0x03, 0x9f, 0xe6, 0x7f, 0x99, 0xeb, 0x58, 0x50, + 0xc2, 0xf9, 0x93, 0xbb, 0x50, 0x77, 0x99, 0x70, 0x42, 0x6f, 0xa2, 0xe6, 0x66, 0x06, 0x4e, 0x8b, + 0xc8, 0x47, 0x00, 0x22, 0x1a, 0x8d, 0x98, 0x40, 0x40, 0x1e, 0x01, 0x29, 0x09, 0xd9, 0x80, 0x92, + 0x6f, 0x9f, 0xb3, 0xd8, 0xdf, 0xfa, 0xe1, 0xde, 0x1f, 0x7e, 0x03, 0x8d, 0x99, 0x35, 0x93, 0x55, + 0xc8, 0x7b, 0xae, 0x79, 0x41, 0xde, 0xc3, 0xcd, 0x9a, 0x84, 0xfc, 0x15, 0x73, 0xa4, 0xe5, 0xb9, + 0x66, 0xdc, 0x9a, 0x91, 0x1c, 0xba, 0xe4, 0x09, 0x94, 0x85, 0xb4, 0x65, 0x24, 0x70, 0xdc, 0xd5, + 0x9d, 0x0f, 0xb3, 0x5d, 0xb9, 0x3d, 0x40, 0x10, 0x35, 0x60, 0xf2, 0x10, 0xd6, 0x34, 0x69, 0xd3, + 0xab, 0xd2, 0x5b, 0xdd, 0x42, 0xc5, 0x41, 0x6a, 0x69, 0x1b, 0x50, 0x62, 0x61, 0xc8, 0xc3, 0x76, + 0x49, 0x4f, 0x1d, 0x1f, 0xc8, 0x2e, 0x80, 0x13, 0x32, 0x5b, 0x32, 0xd7, 0xb2, 0x65, 0xbb, 0x6c, + 0xdc, 0xaa, 0x59, 0xbf, 0x1d, 0xb3, 0x7e, 0x7b, 0x18, 0xb3, 0x9e, 0xd6, 0x0c, 0x7a, 0x4f, 0x92, + 0x6d, 0x28, 0xbe, 0xe2, 0xe7, 0xa2, 0x5d, 0xc1, 0xdd, 0xef, 0x2c, 0x99, 0xf2, 0x73, 0x7e, 0x4e, + 0x11, 0xa7, 0x7c, 0xa0, 0x67, 0x1b, 0xd8, 0x63, 0xd6, 0xae, 0x69, 0x1f, 0xa0, 0xe4, 0xc4, 0x1e, + 0x33, 0xf2, 0x6b, 0x58, 0x15, 0x0e, 0x0b, 0xec, 0xd0, 0xe3, 0xd6, 0x28, 0xe4, 0xd1, 0xa4, 0x0d, + 0x38, 0x9b, 0xad, 0xe9, 0xc0, 0x46, 0xfd, 0x4c, 0x69, 0x69, 0x43, 0xa4, 0x1f, 0xc9, 0x13, 0xa8, + 0xb2, 0xc0, 0xd5, 0xcb, 0xa8, 0x5f, 0xbb, 0x8c, 0x0a, 0x62, 0xf7, 0x24, 0xf9, 0x00, 0x6a, 0xaf, + 0xf8, 0xb9, 0xe5, 0xf0, 0x28, 0x90, 0xed, 0x15, 0x0c, 0xb0, 0xea, 0x2b, 0x7e, 0xbe, 0xaf, 0x9e, + 0xc9, 0x27, 0xb0, 0xa2, 0x83, 0xd0, 0xe8, 0x1b, 0xa8, 0xaf, 0x6b, 0x59, 0x02, 0xd1, 0xf1, 0x68, + 0x20, 0xab, 0x1a, 0xa2, 0x65, 0x1a, 0xf2, 0x53, 0x68, 0x06, 0xd1, 0x38, 0x95, 0x87, 0x44, 0xbb, + 0x89, 0xa8, 0xd5, 0x20, 0x1a, 0x4f, 0x9d, 0x25, 0xc8, 0x0e, 0x94, 0x22, 0x61, 0x8f, 0x58, 0xbb, + 0x85, 0xf3, 0xff, 0xd1, 0x12, 0x8f, 0x9e, 0x29, 0x0c, 0xd5, 0x50, 0x45, 0x69, 0x87, 0x07, 0x4e, + 0x14, 0x86, 0x2c, 0x70, 0x2e, 0xdb, 0x6b, 0xfa, 0xf5, 0x29, 0x11, 0x79, 0x08, 0x45, 0x95, 0x80, + 0xda, 0x04, 0x99, 0x75, 0x3b, 0x63, 0xd0, 0x63, 0xee, 0x32, 0x8a, 0x20, 0xb5, 0x1c, 0xa1, 0xe3, + 0xd5, 0xfa, 0xbd, 0x90, 0x6e, 0x7b, 0xe3, 0x6e, 0xee, 0xfe, 0x0a, 0xad, 0x1b, 0xd9, 0xb7, 0x42, + 0xba, 0x9d, 0xff, 0x2c, 0x41, 0xe1, 0x39, 0x3f, 0x5f, 0xa0, 0xf8, 0x6e, 0xc2, 0xe1, 0x3c, 0xbe, + 0xe9, 0x93, 0xe5, 0x84, 0x98, 0xe7, 0xf1, 0x3d, 0x58, 0xf1, 0x02, 0x21, 0xc3, 0xc8, 0xd1, 0xee, + 0xd1, 0xc1, 0x35, 0x23, 0x9b, 0xd2, 0xb7, 0x98, 0xa6, 0xef, 0xcf, 0x80, 0x68, 0x4e, 0xb1, 0x77, + 0x13, 0xe6, 0x48, 0xe3, 0x5e, 0xcd, 0x70, 0x1d, 0x1b, 0xbd, 0x94, 0x62, 0x1a, 0xbe, 0xe5, 0x54, + 0xf8, 0x12, 0x02, 0x45, 0x69, 0x8f, 0x34, 0x91, 0x6b, 0x14, 0x7f, 0x2b, 0x5e, 0x84, 0x9c, 0x8f, + 0x35, 0x57, 0xab, 0x88, 0xae, 0x2a, 0x01, 0x52, 0x75, 0x17, 0x40, 0x48, 0x3b, 0x34, 0x41, 0x03, + 0xd7, 0x07, 0x8d, 0x41, 0xef, 0xc9, 0xff, 0x2f, 0x4d, 0x6f, 0x43, 0x05, 0xa7, 0xe3, 0xb9, 0x48, + 0xd2, 0x1a, 0x2d, 0xab, 0xc7, 0x43, 0x97, 0xfc, 0x22, 0xe6, 0x4c, 0x03, 0x07, 0xbb, 0x7b, 0x85, + 0xd3, 0x67, 0x78, 0xf3, 0x15, 0x54, 0xc6, 0x4c, 0x86, 0x9e, 0x23, 0x90, 0xb2, 0xf5, 0xab, 0xb6, + 0xeb, 0x58, 0x03, 0x69, 0x6c, 0xd1, 0xf9, 0x5b, 0x28, 0xe1, 0x60, 0xe4, 0x3e, 0xb4, 0x54, 0xb2, + 0xb5, 0x64, 0x14, 0x06, 0xc2, 0x44, 0x80, 0xae, 0x5e, 0xab, 0x4a, 0x3e, 0x54, 0x62, 0x1d, 0x04, + 0x0f, 0x60, 0xcd, 0x8e, 0x5c, 0x8f, 0xcf, 0x40, 0x75, 0x41, 0x6b, 0xa2, 0x62, 0x8a, 0xbd, 0xc7, + 0xa1, 0xac, 0x09, 0x42, 0x08, 0xac, 0x0e, 0x86, 0x7b, 0xc3, 0xb3, 0x81, 0x75, 0xda, 0x3b, 0x39, + 0x38, 0x3c, 0x79, 0xd6, 0xba, 0x95, 0x92, 0xd1, 0xb3, 0x93, 0x13, 0x25, 0xcb, 0x91, 0x0d, 0x68, + 0x19, 0xd9, 0xfe, 0x8b, 0xe3, 0xd3, 0xa3, 0xde, 0xb0, 0x77, 0xd0, 0xca, 0x93, 0x35, 0x68, 0x18, + 0xe9, 0xd7, 0x7b, 0x87, 0x47, 0xbd, 0x83, 0x56, 0x21, 0x0d, 0xdc, 0x3b, 0xd9, 0xef, 0x1d, 0x29, + 0x69, 0xf1, 0x79, 0xb1, 0x5a, 0x6b, 0x41, 0xe7, 0xbf, 0x3e, 0x03, 0x98, 0xae, 0x96, 0x3c, 0x80, + 0x55, 0xdb, 0x71, 0xa2, 0xd0, 0x76, 0x2e, 0x2d, 0xe1, 0xf0, 0x90, 0xe1, 0xca, 0xf2, 0xfd, 0x5b, + 0xb4, 0x11, 0xcb, 0x07, 0x4a, 0xfc, 0x5d, 0x2e, 0x47, 0xb6, 0xa1, 0xa5, 0x08, 0x18, 0x7a, 0x2c, + 0x70, 0x98, 0x41, 0xe7, 0x11, 0x9d, 0xa3, 0xcd, 0xa9, 0x26, 0xc1, 0x7f, 0x0e, 0x4d, 0x69, 0x8b, + 0xd7, 0x96, 0xc3, 0xc7, 0x13, 0x9f, 0x61, 0xda, 0x2e, 0x20, 0x3c, 0x4f, 0x57, 0x95, 0x62, 0x3f, + 0x91, 0x2b, 0xf4, 0x97, 0x50, 0x10, 0x52, 0x22, 0xf1, 0xeb, 0x3b, 0x3f, 0xb9, 0x76, 0x9f, 0xb6, + 0x07, 0xc3, 0x21, 0x55, 0x16, 0xca, 0xd0, 0xf7, 0xc7, 0x18, 0x0e, 0x37, 0x32, 0x3c, 0x3a, 0x3a, + 0xa6, 0xca, 0x42, 0x19, 0x4a, 0x29, 0x4c, 0x39, 0xb8, 0x81, 0xe1, 0x70, 0x38, 0xa0, 0xca, 0x82, + 0x50, 0x58, 0x71, 0x78, 0xf0, 0x86, 0x85, 0x02, 0x61, 0xed, 0x0a, 0x8e, 0xb0, 0x7d, 0xfd, 0x08, + 0xfb, 0x29, 0x2b, 0x3a, 0x33, 0x06, 0x39, 0x84, 0x9a, 0xc9, 0x9d, 0x3c, 0xc4, 0x50, 0xac, 0xef, + 0x3c, 0xbc, 0x81, 0x13, 0x62, 0x13, 0x3a, 0xb5, 0x26, 0xbf, 0x82, 0x12, 0xf2, 0xaf, 0x5d, 0xc3, + 0x9a, 0xf5, 0xd9, 0x0d, 0x56, 0x16, 0x85, 0x01, 0xd5, 0x46, 0xe4, 0x63, 0xa8, 0xbf, 0x8a, 0xdc, + 0x11, 0xd3, 0x07, 0x3a, 0x8c, 0xfb, 0x1a, 0x05, 0x14, 0xa9, 0x14, 0xea, 0x4f, 0x49, 0x9e, 0x86, + 0xd5, 0x11, 0xa6, 0x49, 0xfe, 0x7c, 0x8a, 0xfd, 0x1c, 0xc8, 0x85, 0x2d, 0xac, 0x90, 0x8d, 0xb9, + 0x64, 0xf1, 0xa9, 0x13, 0x83, 0xbb, 0x4a, 0x5b, 0x17, 0xb6, 0xa0, 0xa8, 0x18, 0x68, 0x39, 0x79, + 0x00, 0x79, 0xf9, 0xd8, 0xc4, 0xf8, 0x55, 0x09, 0x23, 0x2f, 0x1f, 0x93, 0x9f, 0xe8, 0x92, 0xe0, + 0x09, 0x16, 0x30, 0xa1, 0xc3, 0x3b, 0xdf, 0x2f, 0xd0, 0xb4, 0x50, 0xb1, 0x6a, 0x17, 0xb6, 0xa2, + 0x20, 0x60, 0x0e, 0x13, 0x42, 0xa5, 0x7b, 0xc9, 0xb9, 0x6f, 0x39, 0xb6, 0xef, 0xeb, 0xea, 0x54, + 0xed, 0x17, 0xe9, 0x46, 0x4a, 0x3f, 0xe4, 0xdc, 0xdf, 0x57, 0x5a, 0x43, 0x77, 0x2f, 0x78, 0xc9, + 0xc3, 0x31, 0x7a, 0xcc, 0xf2, 0xb9, 0x10, 0x58, 0xb3, 0xaa, 0xfd, 0x12, 0x6d, 0xa6, 0x34, 0x47, + 0x5c, 0xbf, 0xea, 0x17, 0xb0, 0x11, 0x32, 0x37, 0x0a, 0x5c, 0x5b, 0x1d, 0xb0, 0xa5, 0x2d, 0xd9, + 0x98, 0x05, 0x52, 0x60, 0xb5, 0xaa, 0xf6, 0xcb, 0x74, 0x3d, 0xd1, 0x0e, 0x12, 0xa5, 0x26, 0xfe, + 0xe6, 0x84, 0xf3, 0xd0, 0xfa, 0x5d, 0xa4, 0x8f, 0x5f, 0xd6, 0xef, 0x22, 0xdb, 0xf7, 0xe4, 0x25, + 0xd6, 0xb2, 0x6a, 0xbf, 0x42, 0xd7, 0x95, 0xfa, 0x1b, 0xa3, 0xfd, 0x46, 0x2b, 0x95, 0xe1, 0x6f, + 0xa0, 0x9d, 0xa6, 0x90, 0x35, 0x09, 0xf9, 0x28, 0x34, 0x2e, 0x5e, 0x47, 0x7f, 0x54, 0xe9, 0xed, + 0x34, 0xe2, 0x74, 0x0a, 0xf8, 0x2e, 0x97, 0xeb, 0xfc, 0xb9, 0x08, 0x85, 0xc1, 0x70, 0x48, 0x36, + 0xa1, 0xf0, 0x96, 0x85, 0x49, 0xe0, 0xab, 0x07, 0x35, 0xfc, 0x1d, 0x28, 0xbd, 0xe5, 0xa1, 0xab, + 0x2b, 0x5d, 0xa3, 0x9f, 0xa3, 0xfa, 0x51, 0xa9, 0x7e, 0x0c, 0x75, 0xf5, 0xdb, 0xc2, 0xf2, 0xa4, + 0x2b, 0x59, 0xa3, 0x9f, 0xa7, 0xa0, 0x84, 0x3d, 0x94, 0x29, 0xd4, 0x26, 0x14, 0x1c, 0xa6, 0x4b, + 0x99, 0xda, 0x1a, 0xf5, 0x60, 0xc6, 0x75, 0x2e, 0xec, 0x50, 0xe0, 0xe1, 0xa8, 0xd1, 0x2f, 0x52, + 0xfd, 0x68, 0xc6, 0x55, 0xbf, 0xe3, 0x71, 0x01, 0x01, 0x25, 0x0a, 0x4a, 0x38, 0x1d, 0xf7, 0xd7, + 0xd0, 0x96, 0xa1, 0x1d, 0x24, 0x87, 0x3e, 0xcb, 0xb7, 0xa5, 0x3a, 0x04, 0x58, 0x63, 0x81, 0x91, + 0xd3, 0xe8, 0x97, 0xe9, 0xd6, 0x0c, 0xe2, 0x48, 0x03, 0x8e, 0xd1, 0x7c, 0x07, 0x08, 0x0b, 0xa4, + 0x27, 0x2f, 0xad, 0x90, 0x39, 0x7c, 0x14, 0x78, 0x18, 0xc3, 0x75, 0x9c, 0x65, 0x85, 0xae, 0x69, + 0x1d, 0x9d, 0xaa, 0xe2, 0xd4, 0xa7, 0xe4, 0x1e, 0x13, 0x56, 0x24, 0x25, 0x0b, 0x99, 0x2e, 0x51, + 0x8d, 0x7e, 0x95, 0x36, 0x63, 0xcd, 0x99, 0x56, 0x28, 0xfc, 0xcf, 0x61, 0x3d, 0xc1, 0x9b, 0xb7, + 0xfc, 0x9e, 0xb9, 0x48, 0xed, 0x46, 0xbf, 0x46, 0x49, 0xac, 0xa4, 0x89, 0xee, 0xbb, 0x5c, 0xae, + 0x5b, 0x86, 0xa2, 0xf5, 0x96, 0x85, 0xdd, 0x2a, 0x94, 0x2d, 0xf4, 0x75, 0x77, 0x15, 0x56, 0xac, + 0x94, 0xa7, 0x11, 0xe1, 0x18, 0x04, 0x7a, 0x0d, 0x11, 0x29, 0x9f, 0x75, 0x3f, 0x80, 0x3b, 0xd6, + 0x32, 0xef, 0x74, 0x37, 0x61, 0xdd, 0x5a, 0x5c, 0x7b, 0x77, 0x1d, 0xd6, 0xac, 0xf9, 0xe5, 0x75, + 0xb7, 0x60, 0xc3, 0xca, 0x58, 0x43, 0xe7, 0x8f, 0x39, 0x28, 0x1c, 0x1d, 0x1d, 0x93, 0x1f, 0x41, + 0x45, 0xca, 0x97, 0x52, 0x39, 0x3d, 0x87, 0xcb, 0xba, 0x45, 0xcb, 0x4a, 0xa0, 0x9d, 0xac, 0xb5, + 0x42, 0x69, 0x63, 0xfa, 0x28, 0xad, 0xd0, 0xda, 0x47, 0xb0, 0x26, 0xf9, 0x6b, 0x16, 0x08, 0x6b, + 0xc2, 0x42, 0x4b, 0x30, 0x87, 0x07, 0x6e, 0x52, 0x1b, 0x9a, 0x5a, 0x75, 0xca, 0xc2, 0x01, 0x2a, + 0x94, 0x67, 0x00, 0xaa, 0x96, 0x79, 0x5b, 0xfc, 0x5b, 0x8d, 0xdd, 0xdd, 0x00, 0x62, 0x2d, 0x8c, + 0xd4, 0xf9, 0xd7, 0x12, 0x14, 0x86, 0xc3, 0x81, 0x99, 0x84, 0x3d, 0x3f, 0x45, 0x3b, 0x3d, 0xc5, + 0xf3, 0xf9, 0x29, 0x9e, 0x1f, 0xc7, 0xe4, 0x55, 0x41, 0x11, 0x4f, 0x6a, 0x21, 0x28, 0x2a, 0x68, + 0x52, 0x58, 0x1e, 0x14, 0x55, 0xc3, 0xee, 0xec, 0xa0, 0xa8, 0xe1, 0xb8, 0xa5, 0xc5, 0xa0, 0x00, + 0x43, 0xe0, 0xa5, 0x41, 0x51, 0x47, 0x40, 0x65, 0x3e, 0x28, 0x1e, 0xc3, 0x5a, 0x60, 0xcb, 0x28, + 0xb4, 0x7d, 0x95, 0xfa, 0x4c, 0x75, 0x2e, 0x99, 0x2c, 0xd0, 0x4a, 0xa9, 0x92, 0xf2, 0xfc, 0x18, + 0xd6, 0x58, 0x10, 0x05, 0x8e, 0xa7, 0xb3, 0x87, 0xb6, 0x28, 0xa3, 0x45, 0x8d, 0xb6, 0x52, 0xaa, + 0xc4, 0x22, 0x3b, 0x72, 0x74, 0xea, 0x85, 0xf7, 0x88, 0x9c, 0x26, 0x2e, 0xa1, 0xfe, 0x3e, 0x91, + 0xd3, 0x42, 0x93, 0x95, 0x65, 0x91, 0x63, 0x38, 0x61, 0xa7, 0xf8, 0xa1, 0x36, 0xf6, 0x7b, 0x89, + 0x28, 0xc5, 0xb1, 0x05, 0xd7, 0xa2, 0x74, 0xc1, 0x7d, 0xdf, 0x4b, 0x80, 0xfd, 0x4b, 0x15, 0x56, + 0xd2, 0x07, 0x05, 0x8c, 0x96, 0x28, 0x0c, 0x2c, 0x69, 0xbf, 0xf6, 0x82, 0xd1, 0xdc, 0x31, 0xad, + 0xa9, 0x54, 0x43, 0xd4, 0x24, 0xfb, 0xf4, 0x14, 0x6e, 0x87, 0x4c, 0x4c, 0x78, 0x20, 0x58, 0x12, + 0xfd, 0x93, 0x27, 0x8f, 0x63, 0xa6, 0x97, 0xfa, 0x39, 0xba, 0x11, 0x03, 0x4c, 0x6a, 0x3c, 0x7d, + 0xf2, 0x58, 0xf3, 0x3e, 0xd3, 0x76, 0xf7, 0x89, 0xb2, 0x2d, 0xa0, 0x6d, 0x7e, 0xd1, 0x76, 0xf7, + 0xc9, 0x55, 0xb6, 0xbb, 0xca, 0xb6, 0x88, 0xb6, 0x85, 0x0c, 0xdb, 0x5d, 0x6d, 0xfb, 0x4b, 0xd8, + 0xd2, 0x77, 0x9c, 0x4b, 0x8f, 0xf9, 0x6e, 0x3a, 0xa5, 0x97, 0x4c, 0x20, 0xad, 0xa3, 0xfe, 0xb7, + 0x4a, 0x3d, 0x93, 0xcf, 0xbf, 0x82, 0xdb, 0x8c, 0x4b, 0x6b, 0xec, 0x89, 0x49, 0xc8, 0x5c, 0x0f, + 0x6f, 0x52, 0xe6, 0xe8, 0x5d, 0x36, 0x05, 0x64, 0x93, 0x71, 0x79, 0x9c, 0xd6, 0xe3, 0x11, 0x5c, + 0x19, 0xdf, 0x87, 0x06, 0x7f, 0xc3, 0x42, 0xdf, 0x9e, 0x58, 0xa1, 0xf2, 0x36, 0xc6, 0x75, 0xbe, + 0x5f, 0xa6, 0x2b, 0x46, 0x4c, 0x95, 0xd4, 0xe4, 0xac, 0x18, 0x29, 0x26, 0x8c, 0x39, 0x17, 0xd3, + 0x72, 0x53, 0xa1, 0x4d, 0xa3, 0x1a, 0xa0, 0x46, 0xcf, 0xeb, 0x21, 0x34, 0x25, 0x97, 0xb6, 0x9f, + 0x82, 0xd7, 0x4c, 0xc9, 0x68, 0xa0, 0x22, 0x0d, 0xfe, 0x12, 0x36, 0xed, 0xb7, 0xaf, 0xdf, 0xda, + 0xa1, 0x6b, 0x09, 0xcf, 0xc7, 0x03, 0xb6, 0x5e, 0x42, 0xdd, 0x94, 0x8c, 0x75, 0xa3, 0x1e, 0x68, + 0x6d, 0xb2, 0x80, 0x6d, 0x68, 0x45, 0x81, 0x1d, 0x88, 0xb7, 0x8a, 0x53, 0xfa, 0xde, 0x61, 0x2a, + 0x13, 0xd0, 0xe6, 0x54, 0x83, 0x17, 0x0f, 0x53, 0x3c, 0x5f, 0xda, 0xbe, 0x60, 0x96, 0x17, 0x48, + 0x16, 0x86, 0xd1, 0x24, 0xe5, 0xae, 0x86, 0x89, 0xcb, 0x2d, 0x44, 0x1c, 0xa6, 0x00, 0xc9, 0xeb, + 0x7a, 0xf0, 0xa1, 0xde, 0xa6, 0x90, 0x4d, 0x38, 0xde, 0x0d, 0xd9, 0x0e, 0x4b, 0xef, 0x56, 0xd3, + 0x04, 0xea, 0x1d, 0x84, 0x51, 0x83, 0xea, 0xed, 0xb0, 0xf4, 0x9e, 0xe9, 0xbc, 0x3d, 0xcf, 0xe9, + 0x6e, 0x07, 0xda, 0xd6, 0x12, 0xe2, 0x2e, 0xd1, 0x21, 0x31, 0x97, 0xe9, 0x14, 0xf1, 0xba, 0x77, + 0xe0, 0xb6, 0x95, 0x4d, 0x2c, 0x34, 0x5b, 0xc2, 0x9c, 0x6e, 0x0b, 0x56, 0xad, 0x19, 0x62, 0xe0, + 0x94, 0x17, 0x08, 0xd0, 0x25, 0xd0, 0xb2, 0xe6, 0x76, 0xb9, 0xdb, 0x86, 0x2d, 0x2b, 0x73, 0x33, + 0x31, 0x0f, 0xcc, 0xef, 0x16, 0x56, 0xec, 0x65, 0x5b, 0xd2, 0xbd, 0x0b, 0x1f, 0x59, 0x57, 0x3a, + 0xbc, 0xf3, 0x0f, 0x39, 0xa8, 0x25, 0xd7, 0x00, 0x4c, 0xea, 0x76, 0xe8, 0x5f, 0x5a, 0x92, 0x85, + 0x63, 0x2f, 0xb0, 0x93, 0x4f, 0x80, 0xd5, 0xfe, 0x2d, 0xda, 0x42, 0xd5, 0x70, 0xaa, 0x31, 0x04, + 0x52, 0xa3, 0xcd, 0x18, 0xe4, 0xd1, 0x20, 0x47, 0x9b, 0x4a, 0x33, 0x8b, 0xd7, 0x89, 0x6f, 0xfe, + 0x15, 0xb8, 0xb2, 0xf9, 0x61, 0x3a, 0x7f, 0xac, 0x42, 0x51, 0x11, 0x8f, 0x6c, 0x40, 0xc9, 0x0b, + 0x5c, 0xf6, 0x4e, 0x97, 0x61, 0xaa, 0x1f, 0xc8, 0x43, 0x28, 0x86, 0xdc, 0x67, 0xe6, 0x4b, 0xca, + 0xed, 0x8c, 0xcf, 0x9c, 0x94, 0xfb, 0x8c, 0x22, 0x88, 0x7c, 0x04, 0x55, 0xfc, 0xbe, 0x10, 0x27, + 0x22, 0x55, 0xcc, 0x2b, 0x28, 0xd1, 0x01, 0xd4, 0x81, 0x32, 0x0b, 0xdc, 0x38, 0xd5, 0xe0, 0x71, + 0x95, 0x05, 0xee, 0x71, 0x7c, 0x09, 0x98, 0x3d, 0x12, 0xb9, 0xcc, 0xb7, 0x53, 0xb9, 0x25, 0x4f, + 0x37, 0x66, 0xf4, 0x07, 0x4a, 0xad, 0x4d, 0x3f, 0x85, 0xba, 0xef, 0x8f, 0xe3, 0xb3, 0x87, 0x49, + 0x28, 0x05, 0x5a, 0xf3, 0xfd, 0xf1, 0x30, 0x39, 0xec, 0x4c, 0x41, 0x78, 0xe0, 0xa9, 0x98, 0x84, + 0x65, 0x40, 0x57, 0x9d, 0x79, 0xaa, 0xe6, 0x18, 0x90, 0x71, 0xe6, 0x51, 0xa3, 0x4a, 0x29, 0xe2, + 0x52, 0x66, 0x72, 0x47, 0x99, 0xd6, 0xa4, 0x14, 0xc3, 0xe4, 0x98, 0x72, 0x6d, 0x3c, 0x82, 0xc9, + 0x50, 0x57, 0xc6, 0x23, 0xf9, 0x02, 0xd6, 0x17, 0x02, 0x68, 0xac, 0xcf, 0x1a, 0xa5, 0x7e, 0x95, + 0xae, 0xcd, 0x65, 0xed, 0xeb, 0x52, 0xf6, 0x4a, 0x92, 0xb4, 0xb2, 0x53, 0x76, 0x66, 0x45, 0x6b, + 0x98, 0x73, 0x44, 0x56, 0x45, 0xcb, 0xbc, 0xed, 0xd5, 0x17, 0x6e, 0x7b, 0x8a, 0xfd, 0xf3, 0x01, + 0x6d, 0x2e, 0x7a, 0x2b, 0xb4, 0x35, 0x5f, 0x04, 0xcc, 0x37, 0x8a, 0xb9, 0x50, 0x35, 0x77, 0xbc, + 0x06, 0x5d, 0x9d, 0xcd, 0xb8, 0x7a, 0x4b, 0x60, 0x1a, 0xbe, 0xe6, 0x62, 0xb7, 0x4a, 0x53, 0x32, + 0x15, 0x20, 0x75, 0xa8, 0x59, 0x31, 0x55, 0xbb, 0x35, 0xa8, 0x58, 0x9a, 0x97, 0x98, 0x89, 0xb2, + 0x69, 0x88, 0x47, 0x8e, 0x14, 0xcd, 0xd2, 0xcf, 0xcb, 0x8f, 0xb9, 0x88, 0x4a, 0x31, 0xe4, 0xfa, + 0x5c, 0x81, 0x47, 0x8e, 0x8c, 0x7d, 0xbe, 0x2a, 0x49, 0x66, 0x67, 0x6a, 0x3c, 0x23, 0x4d, 0x7d, + 0xaf, 0x93, 0xc2, 0xbc, 0xe7, 0x31, 0x39, 0xce, 0x79, 0xb7, 0xdb, 0x80, 0x7a, 0x2a, 0x05, 0x76, + 0xd7, 0xa0, 0x69, 0xcd, 0x7e, 0x80, 0xd2, 0x87, 0xa5, 0xb9, 0xef, 0x4c, 0x3a, 0xcf, 0xce, 0x7e, + 0x4c, 0x5a, 0x98, 0x84, 0x5a, 0x45, 0xf6, 0x65, 0x1f, 0xc7, 0x9c, 0xbf, 0xcc, 0x77, 0x6f, 0xc3, + 0xa6, 0x95, 0x75, 0x63, 0xc7, 0x04, 0x9e, 0x79, 0x25, 0xc7, 0x5c, 0xbd, 0xec, 0xce, 0xdd, 0xf9, + 0xdf, 0x02, 0x94, 0xf7, 0xb1, 0x71, 0xd0, 0xf9, 0xef, 0x3c, 0x54, 0x28, 0x43, 0xf3, 0xb9, 0xae, + 0x48, 0x6e, 0xbe, 0x2b, 0x32, 0xdb, 0x30, 0xc8, 0xcf, 0x37, 0x0c, 0x32, 0xbe, 0xab, 0x17, 0x33, + 0xbf, 0xab, 0x6f, 0x41, 0x39, 0x64, 0x23, 0x45, 0xf8, 0xb2, 0xf9, 0x76, 0x8a, 0x4f, 0xa4, 0xbb, + 0xd0, 0x71, 0xa8, 0x5c, 0xd5, 0x71, 0xe8, 0xdf, 0x9a, 0xeb, 0x39, 0xa4, 0xc2, 0x2f, 0xfe, 0xfe, + 0x5e, 0x35, 0x87, 0xc8, 0xb4, 0x50, 0x9f, 0x78, 0xf4, 0x47, 0xf8, 0xda, 0x0d, 0x3e, 0xc2, 0xe3, + 0xce, 0xcf, 0x4e, 0x2c, 0xd9, 0x50, 0x33, 0xe4, 0xf3, 0x62, 0xb5, 0xd0, 0x2a, 0xd2, 0xc5, 0xee, + 0x4f, 0xe7, 0xef, 0x73, 0x50, 0xa5, 0x86, 0xc7, 0xe4, 0x01, 0xac, 0x4d, 0xbd, 0x63, 0x85, 0x51, + 0x30, 0x75, 0x73, 0x53, 0xa4, 0xbf, 0x78, 0x1d, 0xba, 0x64, 0x00, 0x5b, 0x93, 0x90, 0x09, 0x6f, + 0x14, 0x30, 0xd7, 0x9a, 0x70, 0xa1, 0x42, 0x05, 0x77, 0xc9, 0xf4, 0xda, 0xa6, 0x2d, 0xa9, 0xd3, + 0x18, 0x76, 0xca, 0x85, 0x34, 0x5b, 0x49, 0x37, 0x26, 0x19, 0x52, 0x75, 0x23, 0x5e, 0xdf, 0xe7, + 0xc1, 0x4b, 0x2f, 0x1c, 0x0f, 0x78, 0x14, 0x3a, 0xec, 0x6c, 0xe2, 0x73, 0xdb, 0xed, 0xfc, 0xdd, + 0x8d, 0x39, 0x90, 0xb9, 0x84, 0x7c, 0xf6, 0x12, 0x7e, 0x0a, 0x4d, 0x87, 0xbb, 0x4c, 0x5d, 0x1d, + 0xc2, 0xcb, 0x09, 0xf7, 0x02, 0x69, 0x3a, 0x09, 0xab, 0x4a, 0xdc, 0x4b, 0xa4, 0x1d, 0x98, 0xfa, + 0xa8, 0xf3, 0x87, 0x1c, 0x14, 0x9e, 0x31, 0xd9, 0x19, 0xfe, 0x10, 0x53, 0xea, 0xfc, 0x3c, 0xb5, + 0x1b, 0xf7, 0xa1, 0x10, 0x46, 0xfa, 0xc8, 0x31, 0xc3, 0xb1, 0xb4, 0x09, 0x55, 0x90, 0xce, 0xbf, + 0xe7, 0xa1, 0x78, 0xe4, 0x09, 0xd9, 0xf9, 0xb7, 0xdc, 0x8d, 0x67, 0xf5, 0x74, 0xae, 0xfd, 0x72, + 0x75, 0x0b, 0x51, 0xdd, 0xf7, 0x35, 0x5c, 0xb1, 0xf3, 0x57, 0x00, 0x13, 0x7b, 0xc4, 0x74, 0x22, + 0x45, 0x9f, 0xd5, 0x77, 0xda, 0x89, 0xfd, 0x50, 0x49, 0x4f, 0xed, 0x91, 0x39, 0xbb, 0xf4, 0x73, + 0xb4, 0xa6, 0xd0, 0x28, 0x56, 0x59, 0x5d, 0x25, 0x72, 0x3d, 0x16, 0xa6, 0xb0, 0xe9, 0x48, 0x9d, + 0x77, 0x33, 0x5c, 0x2c, 0x86, 0x51, 0x20, 0xda, 0x39, 0xfc, 0xf2, 0xba, 0x6c, 0xf9, 0x88, 0x21, + 0x7f, 0x01, 0xcd, 0x80, 0xbd, 0x93, 0xa9, 0xa1, 0x0c, 0x09, 0x97, 0x4e, 0x8a, 0x36, 0x94, 0xc1, + 0x69, 0x3c, 0xad, 0xce, 0x2b, 0x28, 0xef, 0xdb, 0x81, 0xc3, 0xfc, 0x1f, 0x68, 0x5f, 0xd3, 0x0c, + 0xfa, 0x81, 0xbb, 0x21, 0x7f, 0xca, 0x25, 0xed, 0x90, 0x3b, 0xb0, 0x39, 0xdb, 0x0e, 0xb1, 0xce, + 0x4e, 0x8f, 0x5e, 0xec, 0x1d, 0xb4, 0x6e, 0x91, 0x4d, 0x58, 0x33, 0xaa, 0x67, 0xbd, 0x93, 0x1e, + 0xdd, 0x1b, 0xea, 0xc6, 0xc8, 0x62, 0xb3, 0x24, 0x4f, 0xb6, 0x80, 0x18, 0xd9, 0xe0, 0xec, 0xf8, + 0x78, 0x8f, 0x1e, 0x7e, 0xab, 0xe4, 0x85, 0xcc, 0x26, 0x4a, 0x71, 0xb1, 0x89, 0x52, 0xca, 0x6c, + 0xa2, 0x94, 0x9f, 0x17, 0xab, 0xd5, 0x56, 0x8d, 0x56, 0x4c, 0xab, 0xf0, 0xde, 0x9f, 0x0a, 0x50, + 0x8d, 0xd3, 0xe7, 0xb4, 0xef, 0x96, 0x4b, 0xf7, 0xdd, 0xe6, 0xdb, 0x7e, 0xf9, 0x8c, 0xb6, 0x5f, + 0x76, 0x83, 0xaf, 0xb0, 0xac, 0xc1, 0xf7, 0xc8, 0xb4, 0xf2, 0x8a, 0xc8, 0xb2, 0x0f, 0x16, 0x12, + 0xf9, 0xf6, 0xd0, 0x1e, 0x09, 0xfd, 0xf7, 0x03, 0xdd, 0xe7, 0xeb, 0x40, 0x35, 0x12, 0x2c, 0x74, + 0x6d, 0x69, 0x9b, 0xb6, 0x61, 0xf2, 0xdc, 0xf9, 0xa7, 0x1c, 0xac, 0xe9, 0xaa, 0xf5, 0x75, 0xc8, + 0xc7, 0xe6, 0x53, 0x7c, 0xe7, 0xb7, 0x37, 0x26, 0x54, 0xaa, 0x69, 0x97, 0x9f, 0x69, 0xda, 0x4d, + 0x0b, 0x52, 0x21, 0x5d, 0x90, 0x3a, 0xbb, 0xa9, 0x78, 0xf9, 0x19, 0x54, 0xe3, 0x1a, 0x60, 0x52, + 0xc6, 0xda, 0xc2, 0x6a, 0x68, 0x02, 0xe9, 0x7c, 0x09, 0xb5, 0x64, 0x69, 0x19, 0x7f, 0x9c, 0xd8, + 0x48, 0xff, 0x71, 0xa2, 0x96, 0xfa, 0x73, 0xc4, 0xbd, 0x21, 0x34, 0x66, 0xaa, 0x1c, 0x21, 0x50, + 0xc4, 0x7a, 0xab, 0xad, 0xf1, 0x37, 0x79, 0x04, 0xb5, 0xf8, 0x4d, 0x6a, 0x9b, 0x0a, 0xd9, 0xb3, + 0x99, 0x62, 0xee, 0xfd, 0x39, 0x07, 0x64, 0x1a, 0xd9, 0x07, 0x9e, 0x98, 0xd8, 0xd2, 0xb9, 0x78, + 0xaf, 0x82, 0xb4, 0x09, 0xe5, 0x57, 0xfc, 0x7c, 0xea, 0xbc, 0xd2, 0x2b, 0x7e, 0x7e, 0xe8, 0xce, + 0xf8, 0xa5, 0x70, 0xad, 0x5f, 0x92, 0xc2, 0x5b, 0xbc, 0x41, 0xe1, 0x7d, 0xf0, 0x12, 0x56, 0x67, + 0xe5, 0xe4, 0x63, 0xf8, 0x60, 0x70, 0x78, 0x7c, 0x76, 0xb4, 0x37, 0x3c, 0x7c, 0x71, 0x62, 0x1d, + 0xbf, 0x38, 0xe8, 0x59, 0x67, 0x27, 0x83, 0xd3, 0xde, 0xfe, 0xe1, 0xd7, 0x87, 0x3d, 0x15, 0x77, + 0x6d, 0xd8, 0x98, 0x07, 0x0c, 0x7b, 0x7f, 0x3d, 0x6c, 0xe5, 0x30, 0x58, 0xe7, 0x34, 0x7b, 0x67, + 0x07, 0x87, 0x2f, 0x5a, 0xf9, 0x9d, 0x7f, 0x2c, 0x41, 0x73, 0x4f, 0x71, 0x77, 0xfa, 0x36, 0xe2, + 0xc2, 0xba, 0xe6, 0xda, 0xec, 0x1f, 0x49, 0x96, 0x35, 0xdf, 0x34, 0x76, 0x3b, 0x2e, 0xb4, 0x9f, + 0x5d, 0x07, 0x33, 0xac, 0xfa, 0x2e, 0x07, 0x1f, 0xc6, 0x05, 0x39, 0x01, 0xa6, 0x4b, 0x33, 0xd9, + 0x59, 0x36, 0xd2, 0x62, 0x19, 0x4f, 0xde, 0xfe, 0xc5, 0x7b, 0xd9, 0x98, 0xa9, 0xfc, 0x0d, 0xb4, + 0x9e, 0x31, 0x39, 0xbb, 0xda, 0x7b, 0x4b, 0x06, 0x7a, 0xc6, 0x64, 0xf2, 0xb2, 0x4f, 0xaf, 0xc4, + 0x98, 0xc1, 0x2d, 0x20, 0xaa, 0x80, 0xce, 0x20, 0x04, 0x59, 0x66, 0xaa, 0xa0, 0xc9, 0xf8, 0x3f, + 0xbe, 0x1a, 0x64, 0x5e, 0xa0, 0xb6, 0x0b, 0x0b, 0xcc, 0x0d, 0xb7, 0x0b, 0xb1, 0xd7, 0x6f, 0x57, + 0x0c, 0x33, 0x6f, 0x79, 0x03, 0x77, 0x0c, 0x29, 0x0c, 0x9f, 0x53, 0x89, 0x88, 0x3c, 0x5c, 0xcc, + 0x6e, 0x0b, 0xd9, 0x2a, 0x79, 0xe3, 0xe7, 0x37, 0x03, 0xeb, 0xf7, 0x76, 0xbf, 0xfe, 0xf6, 0xd3, + 0x91, 0x27, 0x2f, 0xa2, 0xf3, 0x6d, 0x87, 0x8f, 0xe3, 0x3f, 0xc8, 0xe9, 0x3f, 0xc1, 0x39, 0xdc, + 0x8f, 0x05, 0xff, 0x9c, 0x6f, 0x1c, 0x79, 0x6f, 0xd8, 0x5f, 0xe2, 0x99, 0x90, 0x4b, 0xfe, 0x3f, + 0xf9, 0x55, 0xf3, 0xfc, 0xf4, 0x29, 0x0a, 0xce, 0xcb, 0x68, 0xf2, 0xc5, 0xff, 0x05, 0x00, 0x00, + 0xff, 0xff, 0x4c, 0x43, 0x79, 0x5c, 0x93, 0x27, 0x00, 0x00, } From 79f9e9e5d2a7fb54f6ca463fe8a9ff6e84947ea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Sun, 2 Aug 2026 22:21:17 -0700 Subject: [PATCH 21/32] agent-simulation: restore RunMetrics A run summary should not have to pull every job and every turn to show one number. Now that Turn is flat, the reused groups are pure aggregates, so the message no longer drags per-turn fields with it. --- protobufs/livekit_agent_simulation.proto | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/protobufs/livekit_agent_simulation.proto b/protobufs/livekit_agent_simulation.proto index bddce15d3..aed0f52ef 100644 --- a/protobufs/livekit_agent_simulation.proto +++ b/protobufs/livekit_agent_simulation.proto @@ -201,6 +201,19 @@ message SimulationRun { } } + // Aggregates over this run's jobs, so a run summary does not have to pull + // every job and turn. Reuses the JobMetrics group shapes. + message RunMetrics { + optional float accuracy_score = 1; // mean over scored jobs + optional float experience_score = 2; + optional float scenario_pass_rate = 3; // share of jobs whose scenario verdict passed + + JobMetrics.STT stt = 4; + JobMetrics.LLM llm = 5; + JobMetrics.TTS tts = 6; + JobMetrics.Conversation conversation = 7; + } + message Create { message Request { reserved 3; // was agent_description (input never consumed; description is derived from source) @@ -289,6 +302,8 @@ message SimulationRun { int32 concurrency = 17; // Conversation mode for every job in this run; unspecified = TEXT. SimulationMode mode = 18; + // Run-level aggregates over this run's jobs. + RunMetrics metrics = 19; // zstd-compressed SimulationRunSummary: decompress, then proto.Unmarshal. // Compressed by default so the blob ships as-is on every hop. bytes summary_zstd = 20; From c041732907c3d9ee92ebcea44c2a179904a13be2 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 05:22:07 +0000 Subject: [PATCH 22/32] generated protobuf --- livekit/livekit_agent_simulation.pb.go | 431 +++++++++++++-------- livekit/livekit_agent_simulation.twirp.go | 440 +++++++++++----------- 2 files changed, 499 insertions(+), 372 deletions(-) diff --git a/livekit/livekit_agent_simulation.pb.go b/livekit/livekit_agent_simulation.pb.go index a03af43a4..cf51218bc 100644 --- a/livekit/livekit_agent_simulation.pb.go +++ b/livekit/livekit_agent_simulation.pb.go @@ -311,6 +311,8 @@ type SimulationRun struct { Concurrency int32 `protobuf:"varint,17,opt,name=concurrency,proto3" json:"concurrency,omitempty"` // Conversation mode for every job in this run; unspecified = TEXT. Mode SimulationMode `protobuf:"varint,18,opt,name=mode,proto3,enum=livekit.SimulationMode" json:"mode,omitempty"` + // Run-level aggregates over this run's jobs. + Metrics *SimulationRun_RunMetrics `protobuf:"bytes,19,opt,name=metrics,proto3" json:"metrics,omitempty"` // zstd-compressed SimulationRunSummary: decompress, then proto.Unmarshal. // Compressed by default so the blob ships as-is on every hop. SummaryZstd []byte `protobuf:"bytes,20,opt,name=summary_zstd,json=summaryZstd,proto3" json:"summary_zstd,omitempty"` @@ -467,6 +469,13 @@ func (x *SimulationRun) GetMode() SimulationMode { return SimulationMode_SIMULATION_MODE_UNSPECIFIED } +func (x *SimulationRun) GetMetrics() *SimulationRun_RunMetrics { + if x != nil { + return x.Metrics + } + return nil +} + func (x *SimulationRun) GetSummaryZstd() []byte { if x != nil { return x.SummaryZstd @@ -1071,6 +1080,100 @@ func (x *SimulationRun_JobMetrics) GetConversationProgression() float32 { return 0 } +// Aggregates over this run's jobs, so a run summary does not have to pull +// every job and turn. Reuses the JobMetrics group shapes. +type SimulationRun_RunMetrics struct { + state protoimpl.MessageState `protogen:"open.v1"` + AccuracyScore *float32 `protobuf:"fixed32,1,opt,name=accuracy_score,json=accuracyScore,proto3,oneof" json:"accuracy_score,omitempty"` // mean over scored jobs + ExperienceScore *float32 `protobuf:"fixed32,2,opt,name=experience_score,json=experienceScore,proto3,oneof" json:"experience_score,omitempty"` + ScenarioPassRate *float32 `protobuf:"fixed32,3,opt,name=scenario_pass_rate,json=scenarioPassRate,proto3,oneof" json:"scenario_pass_rate,omitempty"` // share of jobs whose scenario verdict passed + Stt *SimulationRun_JobMetrics_STT `protobuf:"bytes,4,opt,name=stt,proto3" json:"stt,omitempty"` + Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,5,opt,name=llm,proto3" json:"llm,omitempty"` + Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,6,opt,name=tts,proto3" json:"tts,omitempty"` + Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,7,opt,name=conversation,proto3" json:"conversation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SimulationRun_RunMetrics) Reset() { + *x = SimulationRun_RunMetrics{} + mi := &file_livekit_agent_simulation_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SimulationRun_RunMetrics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SimulationRun_RunMetrics) ProtoMessage() {} + +func (x *SimulationRun_RunMetrics) ProtoReflect() protoreflect.Message { + mi := &file_livekit_agent_simulation_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SimulationRun_RunMetrics.ProtoReflect.Descriptor instead. +func (*SimulationRun_RunMetrics) Descriptor() ([]byte, []int) { + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 2} +} + +func (x *SimulationRun_RunMetrics) GetAccuracyScore() float32 { + if x != nil && x.AccuracyScore != nil { + return *x.AccuracyScore + } + return 0 +} + +func (x *SimulationRun_RunMetrics) GetExperienceScore() float32 { + if x != nil && x.ExperienceScore != nil { + return *x.ExperienceScore + } + return 0 +} + +func (x *SimulationRun_RunMetrics) GetScenarioPassRate() float32 { + if x != nil && x.ScenarioPassRate != nil { + return *x.ScenarioPassRate + } + return 0 +} + +func (x *SimulationRun_RunMetrics) GetStt() *SimulationRun_JobMetrics_STT { + if x != nil { + return x.Stt + } + return nil +} + +func (x *SimulationRun_RunMetrics) GetLlm() *SimulationRun_JobMetrics_LLM { + if x != nil { + return x.Llm + } + return nil +} + +func (x *SimulationRun_RunMetrics) GetTts() *SimulationRun_JobMetrics_TTS { + if x != nil { + return x.Tts + } + return nil +} + +func (x *SimulationRun_RunMetrics) GetConversation() *SimulationRun_JobMetrics_Conversation { + if x != nil { + return x.Conversation + } + return nil +} + type SimulationRun_Create struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -1079,7 +1182,7 @@ type SimulationRun_Create struct { func (x *SimulationRun_Create) Reset() { *x = SimulationRun_Create{} - mi := &file_livekit_agent_simulation_proto_msgTypes[9] + mi := &file_livekit_agent_simulation_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1091,7 +1194,7 @@ func (x *SimulationRun_Create) String() string { func (*SimulationRun_Create) ProtoMessage() {} func (x *SimulationRun_Create) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[9] + mi := &file_livekit_agent_simulation_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1104,7 +1207,7 @@ func (x *SimulationRun_Create) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Create.ProtoReflect.Descriptor instead. func (*SimulationRun_Create) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 2} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 3} } type SimulationRun_ConfirmSourceUpload struct { @@ -1115,7 +1218,7 @@ type SimulationRun_ConfirmSourceUpload struct { func (x *SimulationRun_ConfirmSourceUpload) Reset() { *x = SimulationRun_ConfirmSourceUpload{} - mi := &file_livekit_agent_simulation_proto_msgTypes[10] + mi := &file_livekit_agent_simulation_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1127,7 +1230,7 @@ func (x *SimulationRun_ConfirmSourceUpload) String() string { func (*SimulationRun_ConfirmSourceUpload) ProtoMessage() {} func (x *SimulationRun_ConfirmSourceUpload) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[10] + mi := &file_livekit_agent_simulation_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1140,7 +1243,7 @@ func (x *SimulationRun_ConfirmSourceUpload) ProtoReflect() protoreflect.Message // Deprecated: Use SimulationRun_ConfirmSourceUpload.ProtoReflect.Descriptor instead. func (*SimulationRun_ConfirmSourceUpload) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 3} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 4} } type SimulationRun_Get struct { @@ -1151,7 +1254,7 @@ type SimulationRun_Get struct { func (x *SimulationRun_Get) Reset() { *x = SimulationRun_Get{} - mi := &file_livekit_agent_simulation_proto_msgTypes[11] + mi := &file_livekit_agent_simulation_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1163,7 +1266,7 @@ func (x *SimulationRun_Get) String() string { func (*SimulationRun_Get) ProtoMessage() {} func (x *SimulationRun_Get) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[11] + mi := &file_livekit_agent_simulation_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1176,7 +1279,7 @@ func (x *SimulationRun_Get) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Get.ProtoReflect.Descriptor instead. func (*SimulationRun_Get) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 4} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 5} } type SimulationRun_List struct { @@ -1187,7 +1290,7 @@ type SimulationRun_List struct { func (x *SimulationRun_List) Reset() { *x = SimulationRun_List{} - mi := &file_livekit_agent_simulation_proto_msgTypes[12] + mi := &file_livekit_agent_simulation_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1199,7 +1302,7 @@ func (x *SimulationRun_List) String() string { func (*SimulationRun_List) ProtoMessage() {} func (x *SimulationRun_List) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[12] + mi := &file_livekit_agent_simulation_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1212,7 +1315,7 @@ func (x *SimulationRun_List) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_List.ProtoReflect.Descriptor instead. func (*SimulationRun_List) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 5} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 6} } type SimulationRun_Cancel struct { @@ -1223,7 +1326,7 @@ type SimulationRun_Cancel struct { func (x *SimulationRun_Cancel) Reset() { *x = SimulationRun_Cancel{} - mi := &file_livekit_agent_simulation_proto_msgTypes[13] + mi := &file_livekit_agent_simulation_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1235,7 +1338,7 @@ func (x *SimulationRun_Cancel) String() string { func (*SimulationRun_Cancel) ProtoMessage() {} func (x *SimulationRun_Cancel) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[13] + mi := &file_livekit_agent_simulation_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1248,7 +1351,7 @@ func (x *SimulationRun_Cancel) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Cancel.ProtoReflect.Descriptor instead. func (*SimulationRun_Cancel) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 6} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 7} } type SimulationRun_Usage struct { @@ -1261,7 +1364,7 @@ type SimulationRun_Usage struct { func (x *SimulationRun_Usage) Reset() { *x = SimulationRun_Usage{} - mi := &file_livekit_agent_simulation_proto_msgTypes[14] + mi := &file_livekit_agent_simulation_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1273,7 +1376,7 @@ func (x *SimulationRun_Usage) String() string { func (*SimulationRun_Usage) ProtoMessage() {} func (x *SimulationRun_Usage) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[14] + mi := &file_livekit_agent_simulation_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1286,7 +1389,7 @@ func (x *SimulationRun_Usage) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Usage.ProtoReflect.Descriptor instead. func (*SimulationRun_Usage) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 7} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 8} } func (x *SimulationRun_Usage) GetTextTurnsCount() int32 { @@ -1313,7 +1416,7 @@ type SimulationRun_Job_Usage struct { func (x *SimulationRun_Job_Usage) Reset() { *x = SimulationRun_Job_Usage{} - mi := &file_livekit_agent_simulation_proto_msgTypes[15] + mi := &file_livekit_agent_simulation_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1325,7 +1428,7 @@ func (x *SimulationRun_Job_Usage) String() string { func (*SimulationRun_Job_Usage) ProtoMessage() {} func (x *SimulationRun_Job_Usage) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[15] + mi := &file_livekit_agent_simulation_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1375,7 +1478,7 @@ type SimulationRun_JobMetrics_STT struct { func (x *SimulationRun_JobMetrics_STT) Reset() { *x = SimulationRun_JobMetrics_STT{} - mi := &file_livekit_agent_simulation_proto_msgTypes[16] + mi := &file_livekit_agent_simulation_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1387,7 +1490,7 @@ func (x *SimulationRun_JobMetrics_STT) String() string { func (*SimulationRun_JobMetrics_STT) ProtoMessage() {} func (x *SimulationRun_JobMetrics_STT) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[16] + mi := &file_livekit_agent_simulation_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1484,7 +1587,7 @@ type SimulationRun_JobMetrics_LLM struct { func (x *SimulationRun_JobMetrics_LLM) Reset() { *x = SimulationRun_JobMetrics_LLM{} - mi := &file_livekit_agent_simulation_proto_msgTypes[17] + mi := &file_livekit_agent_simulation_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1496,7 +1599,7 @@ func (x *SimulationRun_JobMetrics_LLM) String() string { func (*SimulationRun_JobMetrics_LLM) ProtoMessage() {} func (x *SimulationRun_JobMetrics_LLM) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[17] + mi := &file_livekit_agent_simulation_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1556,7 +1659,7 @@ type SimulationRun_JobMetrics_TTS struct { func (x *SimulationRun_JobMetrics_TTS) Reset() { *x = SimulationRun_JobMetrics_TTS{} - mi := &file_livekit_agent_simulation_proto_msgTypes[18] + mi := &file_livekit_agent_simulation_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1568,7 +1671,7 @@ func (x *SimulationRun_JobMetrics_TTS) String() string { func (*SimulationRun_JobMetrics_TTS) ProtoMessage() {} func (x *SimulationRun_JobMetrics_TTS) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[18] + mi := &file_livekit_agent_simulation_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1697,7 +1800,7 @@ type SimulationRun_JobMetrics_Conversation struct { func (x *SimulationRun_JobMetrics_Conversation) Reset() { *x = SimulationRun_JobMetrics_Conversation{} - mi := &file_livekit_agent_simulation_proto_msgTypes[19] + mi := &file_livekit_agent_simulation_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1709,7 +1812,7 @@ func (x *SimulationRun_JobMetrics_Conversation) String() string { func (*SimulationRun_JobMetrics_Conversation) ProtoMessage() {} func (x *SimulationRun_JobMetrics_Conversation) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[19] + mi := &file_livekit_agent_simulation_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1828,7 +1931,7 @@ type SimulationRun_JobMetrics_Simulator struct { func (x *SimulationRun_JobMetrics_Simulator) Reset() { *x = SimulationRun_JobMetrics_Simulator{} - mi := &file_livekit_agent_simulation_proto_msgTypes[20] + mi := &file_livekit_agent_simulation_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1840,7 +1943,7 @@ func (x *SimulationRun_JobMetrics_Simulator) String() string { func (*SimulationRun_JobMetrics_Simulator) ProtoMessage() {} func (x *SimulationRun_JobMetrics_Simulator) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[20] + mi := &file_livekit_agent_simulation_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1897,7 +2000,7 @@ type SimulationRun_JobMetrics_Turn struct { func (x *SimulationRun_JobMetrics_Turn) Reset() { *x = SimulationRun_JobMetrics_Turn{} - mi := &file_livekit_agent_simulation_proto_msgTypes[21] + mi := &file_livekit_agent_simulation_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1909,7 +2012,7 @@ func (x *SimulationRun_JobMetrics_Turn) String() string { func (*SimulationRun_JobMetrics_Turn) ProtoMessage() {} func (x *SimulationRun_JobMetrics_Turn) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[21] + mi := &file_livekit_agent_simulation_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2064,7 +2167,7 @@ type SimulationRun_Create_Request struct { func (x *SimulationRun_Create_Request) Reset() { *x = SimulationRun_Create_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[22] + mi := &file_livekit_agent_simulation_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2076,7 +2179,7 @@ func (x *SimulationRun_Create_Request) String() string { func (*SimulationRun_Create_Request) ProtoMessage() {} func (x *SimulationRun_Create_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[22] + mi := &file_livekit_agent_simulation_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2089,7 +2192,7 @@ func (x *SimulationRun_Create_Request) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Create_Request.ProtoReflect.Descriptor instead. func (*SimulationRun_Create_Request) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 2, 0} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 3, 0} } func (x *SimulationRun_Create_Request) GetProjectId() string { @@ -2151,7 +2254,7 @@ type SimulationRun_Create_Response struct { func (x *SimulationRun_Create_Response) Reset() { *x = SimulationRun_Create_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[23] + mi := &file_livekit_agent_simulation_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2163,7 +2266,7 @@ func (x *SimulationRun_Create_Response) String() string { func (*SimulationRun_Create_Response) ProtoMessage() {} func (x *SimulationRun_Create_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[23] + mi := &file_livekit_agent_simulation_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2176,7 +2279,7 @@ func (x *SimulationRun_Create_Response) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Create_Response.ProtoReflect.Descriptor instead. func (*SimulationRun_Create_Response) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 2, 1} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 3, 1} } func (x *SimulationRun_Create_Response) GetSimulationRunId() string { @@ -2204,7 +2307,7 @@ type SimulationRun_ConfirmSourceUpload_Request struct { func (x *SimulationRun_ConfirmSourceUpload_Request) Reset() { *x = SimulationRun_ConfirmSourceUpload_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[24] + mi := &file_livekit_agent_simulation_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2216,7 +2319,7 @@ func (x *SimulationRun_ConfirmSourceUpload_Request) String() string { func (*SimulationRun_ConfirmSourceUpload_Request) ProtoMessage() {} func (x *SimulationRun_ConfirmSourceUpload_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[24] + mi := &file_livekit_agent_simulation_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2229,7 +2332,7 @@ func (x *SimulationRun_ConfirmSourceUpload_Request) ProtoReflect() protoreflect. // Deprecated: Use SimulationRun_ConfirmSourceUpload_Request.ProtoReflect.Descriptor instead. func (*SimulationRun_ConfirmSourceUpload_Request) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 3, 0} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 4, 0} } func (x *SimulationRun_ConfirmSourceUpload_Request) GetProjectId() string { @@ -2261,7 +2364,7 @@ type SimulationRun_ConfirmSourceUpload_Response struct { func (x *SimulationRun_ConfirmSourceUpload_Response) Reset() { *x = SimulationRun_ConfirmSourceUpload_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[25] + mi := &file_livekit_agent_simulation_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2273,7 +2376,7 @@ func (x *SimulationRun_ConfirmSourceUpload_Response) String() string { func (*SimulationRun_ConfirmSourceUpload_Response) ProtoMessage() {} func (x *SimulationRun_ConfirmSourceUpload_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[25] + mi := &file_livekit_agent_simulation_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2286,7 +2389,7 @@ func (x *SimulationRun_ConfirmSourceUpload_Response) ProtoReflect() protoreflect // Deprecated: Use SimulationRun_ConfirmSourceUpload_Response.ProtoReflect.Descriptor instead. func (*SimulationRun_ConfirmSourceUpload_Response) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 3, 1} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 4, 1} } type SimulationRun_Get_Request struct { @@ -2299,7 +2402,7 @@ type SimulationRun_Get_Request struct { func (x *SimulationRun_Get_Request) Reset() { *x = SimulationRun_Get_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[26] + mi := &file_livekit_agent_simulation_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2311,7 +2414,7 @@ func (x *SimulationRun_Get_Request) String() string { func (*SimulationRun_Get_Request) ProtoMessage() {} func (x *SimulationRun_Get_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[26] + mi := &file_livekit_agent_simulation_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2324,7 +2427,7 @@ func (x *SimulationRun_Get_Request) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Get_Request.ProtoReflect.Descriptor instead. func (*SimulationRun_Get_Request) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 4, 0} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 5, 0} } func (x *SimulationRun_Get_Request) GetProjectId() string { @@ -2350,7 +2453,7 @@ type SimulationRun_Get_Response struct { func (x *SimulationRun_Get_Response) Reset() { *x = SimulationRun_Get_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[27] + mi := &file_livekit_agent_simulation_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2362,7 +2465,7 @@ func (x *SimulationRun_Get_Response) String() string { func (*SimulationRun_Get_Response) ProtoMessage() {} func (x *SimulationRun_Get_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[27] + mi := &file_livekit_agent_simulation_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2375,7 +2478,7 @@ func (x *SimulationRun_Get_Response) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Get_Response.ProtoReflect.Descriptor instead. func (*SimulationRun_Get_Response) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 4, 1} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 5, 1} } func (x *SimulationRun_Get_Response) GetRun() *SimulationRun { @@ -2396,7 +2499,7 @@ type SimulationRun_List_Request struct { func (x *SimulationRun_List_Request) Reset() { *x = SimulationRun_List_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[28] + mi := &file_livekit_agent_simulation_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2408,7 +2511,7 @@ func (x *SimulationRun_List_Request) String() string { func (*SimulationRun_List_Request) ProtoMessage() {} func (x *SimulationRun_List_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[28] + mi := &file_livekit_agent_simulation_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2421,7 +2524,7 @@ func (x *SimulationRun_List_Request) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_List_Request.ProtoReflect.Descriptor instead. func (*SimulationRun_List_Request) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 5, 0} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 6, 0} } func (x *SimulationRun_List_Request) GetProjectId() string { @@ -2455,7 +2558,7 @@ type SimulationRun_List_Response struct { func (x *SimulationRun_List_Response) Reset() { *x = SimulationRun_List_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[29] + mi := &file_livekit_agent_simulation_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2467,7 +2570,7 @@ func (x *SimulationRun_List_Response) String() string { func (*SimulationRun_List_Response) ProtoMessage() {} func (x *SimulationRun_List_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[29] + mi := &file_livekit_agent_simulation_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2480,7 +2583,7 @@ func (x *SimulationRun_List_Response) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_List_Response.ProtoReflect.Descriptor instead. func (*SimulationRun_List_Response) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 5, 1} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 6, 1} } func (x *SimulationRun_List_Response) GetRuns() []*SimulationRun { @@ -2507,7 +2610,7 @@ type SimulationRun_Cancel_Request struct { func (x *SimulationRun_Cancel_Request) Reset() { *x = SimulationRun_Cancel_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[30] + mi := &file_livekit_agent_simulation_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2519,7 +2622,7 @@ func (x *SimulationRun_Cancel_Request) String() string { func (*SimulationRun_Cancel_Request) ProtoMessage() {} func (x *SimulationRun_Cancel_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[30] + mi := &file_livekit_agent_simulation_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2532,7 +2635,7 @@ func (x *SimulationRun_Cancel_Request) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Cancel_Request.ProtoReflect.Descriptor instead. func (*SimulationRun_Cancel_Request) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 6, 0} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 7, 0} } func (x *SimulationRun_Cancel_Request) GetProjectId() string { @@ -2557,7 +2660,7 @@ type SimulationRun_Cancel_Response struct { func (x *SimulationRun_Cancel_Response) Reset() { *x = SimulationRun_Cancel_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[31] + mi := &file_livekit_agent_simulation_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2569,7 +2672,7 @@ func (x *SimulationRun_Cancel_Response) String() string { func (*SimulationRun_Cancel_Response) ProtoMessage() {} func (x *SimulationRun_Cancel_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[31] + mi := &file_livekit_agent_simulation_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2582,7 +2685,7 @@ func (x *SimulationRun_Cancel_Response) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_Cancel_Response.ProtoReflect.Descriptor instead. func (*SimulationRun_Cancel_Response) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 6, 1} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 7, 1} } type Scenario_CreateFromSession struct { @@ -2593,7 +2696,7 @@ type Scenario_CreateFromSession struct { func (x *Scenario_CreateFromSession) Reset() { *x = Scenario_CreateFromSession{} - mi := &file_livekit_agent_simulation_proto_msgTypes[32] + mi := &file_livekit_agent_simulation_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2605,7 +2708,7 @@ func (x *Scenario_CreateFromSession) String() string { func (*Scenario_CreateFromSession) ProtoMessage() {} func (x *Scenario_CreateFromSession) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[32] + mi := &file_livekit_agent_simulation_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2632,7 +2735,7 @@ type Scenario_CreateFromSession_Request struct { func (x *Scenario_CreateFromSession_Request) Reset() { *x = Scenario_CreateFromSession_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[34] + mi := &file_livekit_agent_simulation_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2644,7 +2747,7 @@ func (x *Scenario_CreateFromSession_Request) String() string { func (*Scenario_CreateFromSession_Request) ProtoMessage() {} func (x *Scenario_CreateFromSession_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[34] + mi := &file_livekit_agent_simulation_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2690,7 +2793,7 @@ type Scenario_CreateFromSession_Response struct { func (x *Scenario_CreateFromSession_Response) Reset() { *x = Scenario_CreateFromSession_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[35] + mi := &file_livekit_agent_simulation_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2702,7 +2805,7 @@ func (x *Scenario_CreateFromSession_Response) String() string { func (*Scenario_CreateFromSession_Response) ProtoMessage() {} func (x *Scenario_CreateFromSession_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[35] + mi := &file_livekit_agent_simulation_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2747,7 +2850,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\n" + "suggestion\x18\x02 \x01(\tR\n" + "suggestion\x12\x14\n" + - "\x05label\x18\x03 \x01(\tR\x05label\"\x91>\n" + + "\x05label\x18\x03 \x01(\tR\x05label\"\xaaB\n" + "\rSimulationRun\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + "\n" + @@ -2769,7 +2872,8 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x0fnum_simulations\x18\x0f \x01(\x05R\x0enumSimulations\x122\n" + "\x05usage\x18\x10 \x01(\v2\x1c.livekit.SimulationRun.UsageR\x05usage\x12 \n" + "\vconcurrency\x18\x11 \x01(\x05R\vconcurrency\x12+\n" + - "\x04mode\x18\x12 \x01(\x0e2\x17.livekit.SimulationModeR\x04mode\x12!\n" + + "\x04mode\x18\x12 \x01(\x0e2\x17.livekit.SimulationModeR\x04mode\x12;\n" + + "\ametrics\x18\x13 \x01(\v2!.livekit.SimulationRun.RunMetricsR\ametrics\x12!\n" + "\fsummary_zstd\x18\x14 \x01(\fR\vsummaryZstd\x1a\xd6\x05\n" + "\x03Job\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x129\n" + @@ -2964,7 +3068,19 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x11_information_lossB\x17\n" + "\x15_redundant_statementsB\x18\n" + "\x16_poor_question_qualityB\x1b\n" + - "\x19_conversation_progression\x1a\xf5\x03\n" + + "\x19_conversation_progression\x1a\xd9\x03\n" + + "\n" + + "RunMetrics\x12*\n" + + "\x0eaccuracy_score\x18\x01 \x01(\x02H\x00R\raccuracyScore\x88\x01\x01\x12.\n" + + "\x10experience_score\x18\x02 \x01(\x02H\x01R\x0fexperienceScore\x88\x01\x01\x121\n" + + "\x12scenario_pass_rate\x18\x03 \x01(\x02H\x02R\x10scenarioPassRate\x88\x01\x01\x127\n" + + "\x03stt\x18\x04 \x01(\v2%.livekit.SimulationRun.JobMetrics.STTR\x03stt\x127\n" + + "\x03llm\x18\x05 \x01(\v2%.livekit.SimulationRun.JobMetrics.LLMR\x03llm\x127\n" + + "\x03tts\x18\x06 \x01(\v2%.livekit.SimulationRun.JobMetrics.TTSR\x03tts\x12R\n" + + "\fconversation\x18\a \x01(\v2..livekit.SimulationRun.JobMetrics.ConversationR\fconversationB\x11\n" + + "\x0f_accuracy_scoreB\x13\n" + + "\x11_experience_scoreB\x15\n" + + "\x13_scenario_pass_rate\x1a\xf5\x03\n" + "\x06Create\x1a\xdc\x02\n" + "\aRequest\x12\x1d\n" + "\n" + @@ -3076,7 +3192,7 @@ func file_livekit_agent_simulation_proto_rawDescGZIP() []byte { } var file_livekit_agent_simulation_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_livekit_agent_simulation_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_livekit_agent_simulation_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_livekit_agent_simulation_proto_goTypes = []any{ (SimulationMode)(0), // 0: livekit.SimulationMode (SimulationRun_Status)(0), // 1: livekit.SimulationRun.Status @@ -3090,93 +3206,99 @@ var file_livekit_agent_simulation_proto_goTypes = []any{ (*SimulationRunSummary_Issue)(nil), // 9: livekit.SimulationRunSummary.Issue (*SimulationRun_Job)(nil), // 10: livekit.SimulationRun.Job (*SimulationRun_JobMetrics)(nil), // 11: livekit.SimulationRun.JobMetrics - (*SimulationRun_Create)(nil), // 12: livekit.SimulationRun.Create - (*SimulationRun_ConfirmSourceUpload)(nil), // 13: livekit.SimulationRun.ConfirmSourceUpload - (*SimulationRun_Get)(nil), // 14: livekit.SimulationRun.Get - (*SimulationRun_List)(nil), // 15: livekit.SimulationRun.List - (*SimulationRun_Cancel)(nil), // 16: livekit.SimulationRun.Cancel - (*SimulationRun_Usage)(nil), // 17: livekit.SimulationRun.Usage - (*SimulationRun_Job_Usage)(nil), // 18: livekit.SimulationRun.Job.Usage - (*SimulationRun_JobMetrics_STT)(nil), // 19: livekit.SimulationRun.JobMetrics.STT - (*SimulationRun_JobMetrics_LLM)(nil), // 20: livekit.SimulationRun.JobMetrics.LLM - (*SimulationRun_JobMetrics_TTS)(nil), // 21: livekit.SimulationRun.JobMetrics.TTS - (*SimulationRun_JobMetrics_Conversation)(nil), // 22: livekit.SimulationRun.JobMetrics.Conversation - (*SimulationRun_JobMetrics_Simulator)(nil), // 23: livekit.SimulationRun.JobMetrics.Simulator - (*SimulationRun_JobMetrics_Turn)(nil), // 24: livekit.SimulationRun.JobMetrics.Turn - (*SimulationRun_Create_Request)(nil), // 25: livekit.SimulationRun.Create.Request - (*SimulationRun_Create_Response)(nil), // 26: livekit.SimulationRun.Create.Response - (*SimulationRun_ConfirmSourceUpload_Request)(nil), // 27: livekit.SimulationRun.ConfirmSourceUpload.Request - (*SimulationRun_ConfirmSourceUpload_Response)(nil), // 28: livekit.SimulationRun.ConfirmSourceUpload.Response - (*SimulationRun_Get_Request)(nil), // 29: livekit.SimulationRun.Get.Request - (*SimulationRun_Get_Response)(nil), // 30: livekit.SimulationRun.Get.Response - (*SimulationRun_List_Request)(nil), // 31: livekit.SimulationRun.List.Request - (*SimulationRun_List_Response)(nil), // 32: livekit.SimulationRun.List.Response - (*SimulationRun_Cancel_Request)(nil), // 33: livekit.SimulationRun.Cancel.Request - (*SimulationRun_Cancel_Response)(nil), // 34: livekit.SimulationRun.Cancel.Response - (*Scenario_CreateFromSession)(nil), // 35: livekit.Scenario.CreateFromSession - nil, // 36: livekit.Scenario.TagsEntry - (*Scenario_CreateFromSession_Request)(nil), // 37: livekit.Scenario.CreateFromSession.Request - (*Scenario_CreateFromSession_Response)(nil), // 38: livekit.Scenario.CreateFromSession.Response - (*timestamppb.Timestamp)(nil), // 39: google.protobuf.Timestamp - (*agent.ChatContext)(nil), // 40: livekit.agent.ChatContext - (agent.ChatRole)(0), // 41: livekit.agent.ChatRole - (*PresignedPostRequest)(nil), // 42: livekit.PresignedPostRequest - (*TokenPagination)(nil), // 43: livekit.TokenPagination + (*SimulationRun_RunMetrics)(nil), // 12: livekit.SimulationRun.RunMetrics + (*SimulationRun_Create)(nil), // 13: livekit.SimulationRun.Create + (*SimulationRun_ConfirmSourceUpload)(nil), // 14: livekit.SimulationRun.ConfirmSourceUpload + (*SimulationRun_Get)(nil), // 15: livekit.SimulationRun.Get + (*SimulationRun_List)(nil), // 16: livekit.SimulationRun.List + (*SimulationRun_Cancel)(nil), // 17: livekit.SimulationRun.Cancel + (*SimulationRun_Usage)(nil), // 18: livekit.SimulationRun.Usage + (*SimulationRun_Job_Usage)(nil), // 19: livekit.SimulationRun.Job.Usage + (*SimulationRun_JobMetrics_STT)(nil), // 20: livekit.SimulationRun.JobMetrics.STT + (*SimulationRun_JobMetrics_LLM)(nil), // 21: livekit.SimulationRun.JobMetrics.LLM + (*SimulationRun_JobMetrics_TTS)(nil), // 22: livekit.SimulationRun.JobMetrics.TTS + (*SimulationRun_JobMetrics_Conversation)(nil), // 23: livekit.SimulationRun.JobMetrics.Conversation + (*SimulationRun_JobMetrics_Simulator)(nil), // 24: livekit.SimulationRun.JobMetrics.Simulator + (*SimulationRun_JobMetrics_Turn)(nil), // 25: livekit.SimulationRun.JobMetrics.Turn + (*SimulationRun_Create_Request)(nil), // 26: livekit.SimulationRun.Create.Request + (*SimulationRun_Create_Response)(nil), // 27: livekit.SimulationRun.Create.Response + (*SimulationRun_ConfirmSourceUpload_Request)(nil), // 28: livekit.SimulationRun.ConfirmSourceUpload.Request + (*SimulationRun_ConfirmSourceUpload_Response)(nil), // 29: livekit.SimulationRun.ConfirmSourceUpload.Response + (*SimulationRun_Get_Request)(nil), // 30: livekit.SimulationRun.Get.Request + (*SimulationRun_Get_Response)(nil), // 31: livekit.SimulationRun.Get.Response + (*SimulationRun_List_Request)(nil), // 32: livekit.SimulationRun.List.Request + (*SimulationRun_List_Response)(nil), // 33: livekit.SimulationRun.List.Response + (*SimulationRun_Cancel_Request)(nil), // 34: livekit.SimulationRun.Cancel.Request + (*SimulationRun_Cancel_Response)(nil), // 35: livekit.SimulationRun.Cancel.Response + (*Scenario_CreateFromSession)(nil), // 36: livekit.Scenario.CreateFromSession + nil, // 37: livekit.Scenario.TagsEntry + (*Scenario_CreateFromSession_Request)(nil), // 38: livekit.Scenario.CreateFromSession.Request + (*Scenario_CreateFromSession_Response)(nil), // 39: livekit.Scenario.CreateFromSession.Response + (*timestamppb.Timestamp)(nil), // 40: google.protobuf.Timestamp + (*agent.ChatContext)(nil), // 41: livekit.agent.ChatContext + (agent.ChatRole)(0), // 42: livekit.agent.ChatRole + (*PresignedPostRequest)(nil), // 43: livekit.PresignedPostRequest + (*TokenPagination)(nil), // 44: livekit.TokenPagination } var file_livekit_agent_simulation_proto_depIdxs = []int32{ 9, // 0: livekit.SimulationRunSummary.issues:type_name -> livekit.SimulationRunSummary.Issue 8, // 1: livekit.SimulationRunSummary.chat_history:type_name -> livekit.SimulationRunSummary.ChatHistoryEntry 1, // 2: livekit.SimulationRun.status:type_name -> livekit.SimulationRun.Status - 39, // 3: livekit.SimulationRun.created_at:type_name -> google.protobuf.Timestamp + 40, // 3: livekit.SimulationRun.created_at:type_name -> google.protobuf.Timestamp 10, // 4: livekit.SimulationRun.jobs:type_name -> livekit.SimulationRun.Job 6, // 5: livekit.SimulationRun.scenario_group:type_name -> livekit.ScenarioGroup - 39, // 6: livekit.SimulationRun.ended_at:type_name -> google.protobuf.Timestamp - 17, // 7: livekit.SimulationRun.usage:type_name -> livekit.SimulationRun.Usage + 40, // 6: livekit.SimulationRun.ended_at:type_name -> google.protobuf.Timestamp + 18, // 7: livekit.SimulationRun.usage:type_name -> livekit.SimulationRun.Usage 0, // 8: livekit.SimulationRun.mode:type_name -> livekit.SimulationMode - 36, // 9: livekit.Scenario.tags:type_name -> livekit.Scenario.TagsEntry - 5, // 10: livekit.ScenarioGroup.scenarios:type_name -> livekit.Scenario - 5, // 11: livekit.SimulationDispatch.scenario:type_name -> livekit.Scenario - 0, // 12: livekit.SimulationDispatch.mode:type_name -> livekit.SimulationMode - 40, // 13: livekit.SimulationRunSummary.ChatHistoryEntry.value:type_name -> livekit.agent.ChatContext - 2, // 14: livekit.SimulationRun.Job.status:type_name -> livekit.SimulationRun.Job.Status - 39, // 15: livekit.SimulationRun.Job.started_at:type_name -> google.protobuf.Timestamp - 39, // 16: livekit.SimulationRun.Job.ended_at:type_name -> google.protobuf.Timestamp - 18, // 17: livekit.SimulationRun.Job.usage:type_name -> livekit.SimulationRun.Job.Usage - 11, // 18: livekit.SimulationRun.Job.metrics:type_name -> livekit.SimulationRun.JobMetrics - 19, // 19: livekit.SimulationRun.JobMetrics.stt:type_name -> livekit.SimulationRun.JobMetrics.STT - 20, // 20: livekit.SimulationRun.JobMetrics.llm:type_name -> livekit.SimulationRun.JobMetrics.LLM - 21, // 21: livekit.SimulationRun.JobMetrics.tts:type_name -> livekit.SimulationRun.JobMetrics.TTS - 22, // 22: livekit.SimulationRun.JobMetrics.conversation:type_name -> livekit.SimulationRun.JobMetrics.Conversation - 23, // 23: livekit.SimulationRun.JobMetrics.simulator:type_name -> livekit.SimulationRun.JobMetrics.Simulator - 24, // 24: livekit.SimulationRun.JobMetrics.turns:type_name -> livekit.SimulationRun.JobMetrics.Turn - 39, // 25: livekit.SimulationRun.JobMetrics.t0:type_name -> google.protobuf.Timestamp - 41, // 26: livekit.SimulationRun.JobMetrics.Turn.role:type_name -> livekit.agent.ChatRole - 6, // 27: livekit.SimulationRun.Create.Request.scenario_group:type_name -> livekit.ScenarioGroup - 0, // 28: livekit.SimulationRun.Create.Request.mode:type_name -> livekit.SimulationMode - 42, // 29: livekit.SimulationRun.Create.Response.presigned_post_request:type_name -> livekit.PresignedPostRequest - 4, // 30: livekit.SimulationRun.Get.Response.run:type_name -> livekit.SimulationRun - 1, // 31: livekit.SimulationRun.List.Request.status:type_name -> livekit.SimulationRun.Status - 43, // 32: livekit.SimulationRun.List.Request.page_token:type_name -> livekit.TokenPagination - 4, // 33: livekit.SimulationRun.List.Response.runs:type_name -> livekit.SimulationRun - 43, // 34: livekit.SimulationRun.List.Response.next_page_token:type_name -> livekit.TokenPagination - 5, // 35: livekit.Scenario.CreateFromSession.Response.scenario:type_name -> livekit.Scenario - 25, // 36: livekit.AgentSimulation.CreateSimulationRun:input_type -> livekit.SimulationRun.Create.Request - 27, // 37: livekit.AgentSimulation.ConfirmSimulationSourceUpload:input_type -> livekit.SimulationRun.ConfirmSourceUpload.Request - 29, // 38: livekit.AgentSimulation.GetSimulationRun:input_type -> livekit.SimulationRun.Get.Request - 31, // 39: livekit.AgentSimulation.ListSimulationRuns:input_type -> livekit.SimulationRun.List.Request - 33, // 40: livekit.AgentSimulation.CancelSimulationRun:input_type -> livekit.SimulationRun.Cancel.Request - 37, // 41: livekit.AgentSimulation.CreateScenarioFromSession:input_type -> livekit.Scenario.CreateFromSession.Request - 26, // 42: livekit.AgentSimulation.CreateSimulationRun:output_type -> livekit.SimulationRun.Create.Response - 28, // 43: livekit.AgentSimulation.ConfirmSimulationSourceUpload:output_type -> livekit.SimulationRun.ConfirmSourceUpload.Response - 30, // 44: livekit.AgentSimulation.GetSimulationRun:output_type -> livekit.SimulationRun.Get.Response - 32, // 45: livekit.AgentSimulation.ListSimulationRuns:output_type -> livekit.SimulationRun.List.Response - 34, // 46: livekit.AgentSimulation.CancelSimulationRun:output_type -> livekit.SimulationRun.Cancel.Response - 38, // 47: livekit.AgentSimulation.CreateScenarioFromSession:output_type -> livekit.Scenario.CreateFromSession.Response - 42, // [42:48] is the sub-list for method output_type - 36, // [36:42] is the sub-list for method input_type - 36, // [36:36] is the sub-list for extension type_name - 36, // [36:36] is the sub-list for extension extendee - 0, // [0:36] is the sub-list for field type_name + 12, // 9: livekit.SimulationRun.metrics:type_name -> livekit.SimulationRun.RunMetrics + 37, // 10: livekit.Scenario.tags:type_name -> livekit.Scenario.TagsEntry + 5, // 11: livekit.ScenarioGroup.scenarios:type_name -> livekit.Scenario + 5, // 12: livekit.SimulationDispatch.scenario:type_name -> livekit.Scenario + 0, // 13: livekit.SimulationDispatch.mode:type_name -> livekit.SimulationMode + 41, // 14: livekit.SimulationRunSummary.ChatHistoryEntry.value:type_name -> livekit.agent.ChatContext + 2, // 15: livekit.SimulationRun.Job.status:type_name -> livekit.SimulationRun.Job.Status + 40, // 16: livekit.SimulationRun.Job.started_at:type_name -> google.protobuf.Timestamp + 40, // 17: livekit.SimulationRun.Job.ended_at:type_name -> google.protobuf.Timestamp + 19, // 18: livekit.SimulationRun.Job.usage:type_name -> livekit.SimulationRun.Job.Usage + 11, // 19: livekit.SimulationRun.Job.metrics:type_name -> livekit.SimulationRun.JobMetrics + 20, // 20: livekit.SimulationRun.JobMetrics.stt:type_name -> livekit.SimulationRun.JobMetrics.STT + 21, // 21: livekit.SimulationRun.JobMetrics.llm:type_name -> livekit.SimulationRun.JobMetrics.LLM + 22, // 22: livekit.SimulationRun.JobMetrics.tts:type_name -> livekit.SimulationRun.JobMetrics.TTS + 23, // 23: livekit.SimulationRun.JobMetrics.conversation:type_name -> livekit.SimulationRun.JobMetrics.Conversation + 24, // 24: livekit.SimulationRun.JobMetrics.simulator:type_name -> livekit.SimulationRun.JobMetrics.Simulator + 25, // 25: livekit.SimulationRun.JobMetrics.turns:type_name -> livekit.SimulationRun.JobMetrics.Turn + 40, // 26: livekit.SimulationRun.JobMetrics.t0:type_name -> google.protobuf.Timestamp + 20, // 27: livekit.SimulationRun.RunMetrics.stt:type_name -> livekit.SimulationRun.JobMetrics.STT + 21, // 28: livekit.SimulationRun.RunMetrics.llm:type_name -> livekit.SimulationRun.JobMetrics.LLM + 22, // 29: livekit.SimulationRun.RunMetrics.tts:type_name -> livekit.SimulationRun.JobMetrics.TTS + 23, // 30: livekit.SimulationRun.RunMetrics.conversation:type_name -> livekit.SimulationRun.JobMetrics.Conversation + 42, // 31: livekit.SimulationRun.JobMetrics.Turn.role:type_name -> livekit.agent.ChatRole + 6, // 32: livekit.SimulationRun.Create.Request.scenario_group:type_name -> livekit.ScenarioGroup + 0, // 33: livekit.SimulationRun.Create.Request.mode:type_name -> livekit.SimulationMode + 43, // 34: livekit.SimulationRun.Create.Response.presigned_post_request:type_name -> livekit.PresignedPostRequest + 4, // 35: livekit.SimulationRun.Get.Response.run:type_name -> livekit.SimulationRun + 1, // 36: livekit.SimulationRun.List.Request.status:type_name -> livekit.SimulationRun.Status + 44, // 37: livekit.SimulationRun.List.Request.page_token:type_name -> livekit.TokenPagination + 4, // 38: livekit.SimulationRun.List.Response.runs:type_name -> livekit.SimulationRun + 44, // 39: livekit.SimulationRun.List.Response.next_page_token:type_name -> livekit.TokenPagination + 5, // 40: livekit.Scenario.CreateFromSession.Response.scenario:type_name -> livekit.Scenario + 26, // 41: livekit.AgentSimulation.CreateSimulationRun:input_type -> livekit.SimulationRun.Create.Request + 28, // 42: livekit.AgentSimulation.ConfirmSimulationSourceUpload:input_type -> livekit.SimulationRun.ConfirmSourceUpload.Request + 30, // 43: livekit.AgentSimulation.GetSimulationRun:input_type -> livekit.SimulationRun.Get.Request + 32, // 44: livekit.AgentSimulation.ListSimulationRuns:input_type -> livekit.SimulationRun.List.Request + 34, // 45: livekit.AgentSimulation.CancelSimulationRun:input_type -> livekit.SimulationRun.Cancel.Request + 38, // 46: livekit.AgentSimulation.CreateScenarioFromSession:input_type -> livekit.Scenario.CreateFromSession.Request + 27, // 47: livekit.AgentSimulation.CreateSimulationRun:output_type -> livekit.SimulationRun.Create.Response + 29, // 48: livekit.AgentSimulation.ConfirmSimulationSourceUpload:output_type -> livekit.SimulationRun.ConfirmSourceUpload.Response + 31, // 49: livekit.AgentSimulation.GetSimulationRun:output_type -> livekit.SimulationRun.Get.Response + 33, // 50: livekit.AgentSimulation.ListSimulationRuns:output_type -> livekit.SimulationRun.List.Response + 35, // 51: livekit.AgentSimulation.CancelSimulationRun:output_type -> livekit.SimulationRun.Cancel.Response + 39, // 52: livekit.AgentSimulation.CreateScenarioFromSession:output_type -> livekit.Scenario.CreateFromSession.Response + 47, // [47:53] is the sub-list for method output_type + 41, // [41:47] is the sub-list for method input_type + 41, // [41:41] is the sub-list for extension type_name + 41, // [41:41] is the sub-list for extension extendee + 0, // [0:41] is the sub-list for field type_name } func init() { file_livekit_agent_simulation_proto_init() } @@ -3187,21 +3309,22 @@ func file_livekit_agent_simulation_proto_init() { file_livekit_cloud_agent_proto_init() file_livekit_models_proto_init() file_livekit_agent_simulation_proto_msgTypes[8].OneofWrappers = []any{} - file_livekit_agent_simulation_proto_msgTypes[16].OneofWrappers = []any{} + file_livekit_agent_simulation_proto_msgTypes[9].OneofWrappers = []any{} file_livekit_agent_simulation_proto_msgTypes[17].OneofWrappers = []any{} file_livekit_agent_simulation_proto_msgTypes[18].OneofWrappers = []any{} file_livekit_agent_simulation_proto_msgTypes[19].OneofWrappers = []any{} file_livekit_agent_simulation_proto_msgTypes[20].OneofWrappers = []any{} file_livekit_agent_simulation_proto_msgTypes[21].OneofWrappers = []any{} file_livekit_agent_simulation_proto_msgTypes[22].OneofWrappers = []any{} - file_livekit_agent_simulation_proto_msgTypes[28].OneofWrappers = []any{} + file_livekit_agent_simulation_proto_msgTypes[23].OneofWrappers = []any{} + file_livekit_agent_simulation_proto_msgTypes[29].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_livekit_agent_simulation_proto_rawDesc), len(file_livekit_agent_simulation_proto_rawDesc)), NumEnums: 3, - NumMessages: 36, + NumMessages: 37, NumExtensions: 0, NumServices: 1, }, diff --git a/livekit/livekit_agent_simulation.twirp.go b/livekit/livekit_agent_simulation.twirp.go index 74b824b7e..72b583d91 100644 --- a/livekit/livekit_agent_simulation.twirp.go +++ b/livekit/livekit_agent_simulation.twirp.go @@ -1912,222 +1912,226 @@ func (s *agentSimulationServer) PathPrefix() string { } var twirpFileDescriptor9 = []byte{ - // 3466 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x5a, 0x4f, 0x73, 0x1b, 0xc9, - 0x75, 0x17, 0xfe, 0x03, 0x0f, 0x04, 0x01, 0x36, 0xff, 0x08, 0xc2, 0x7a, 0x77, 0xb5, 0x5a, 0x7b, - 0xad, 0x92, 0xd6, 0x94, 0x8a, 0x6b, 0x79, 0x4d, 0xad, 0xed, 0x0a, 0x41, 0x62, 0x05, 0x2a, 0x24, - 0xc5, 0x6d, 0x80, 0x95, 0x78, 0x53, 0xa9, 0xa9, 0xe1, 0x4c, 0x0b, 0x1c, 0x69, 0x30, 0x0d, 0x4f, - 0xf7, 0x48, 0xa2, 0xab, 0x72, 0xdf, 0xaa, 0x9c, 0x7c, 0xcb, 0x29, 0xe5, 0x8b, 0x0f, 0x49, 0xe5, - 0xe6, 0x63, 0x52, 0x95, 0xcf, 0x90, 0x4b, 0x2a, 0x87, 0x7c, 0x82, 0xdc, 0x73, 0x4f, 0xf5, 0xeb, - 0x9e, 0xc1, 0x00, 0x18, 0x90, 0x54, 0x6a, 0xf7, 0x86, 0x79, 0xef, 0xf7, 0x7a, 0xba, 0x5f, 0xff, - 0xde, 0x7b, 0xdd, 0xf3, 0x00, 0x1f, 0xf9, 0xde, 0x1b, 0xf6, 0xda, 0x93, 0x96, 0x3d, 0x62, 0x81, - 0xb4, 0x84, 0x37, 0x8e, 0x7c, 0x5b, 0x7a, 0x3c, 0xd8, 0x9e, 0x84, 0x5c, 0x72, 0x52, 0x31, 0xfa, - 0xce, 0x27, 0x08, 0x78, 0x34, 0x07, 0x67, 0x42, 0x24, 0xd8, 0xce, 0xc7, 0x23, 0xce, 0x47, 0x3e, - 0x7b, 0x84, 0x4f, 0xe7, 0xd1, 0xcb, 0x47, 0xd2, 0x1b, 0x33, 0x21, 0xed, 0xf1, 0xc4, 0x00, 0xee, - 0xc4, 0xd6, 0x8e, 0xcf, 0x23, 0x57, 0x8f, 0x61, 0x54, 0x1b, 0xb1, 0x6a, 0xcc, 0x5d, 0xe6, 0x0b, - 0x2d, 0xbd, 0xf7, 0x1f, 0x05, 0xd8, 0x18, 0x24, 0x53, 0xa2, 0x51, 0x30, 0x88, 0xc6, 0x63, 0x3b, - 0xbc, 0x24, 0x5b, 0x50, 0x9e, 0xd8, 0x42, 0x30, 0xb7, 0x9d, 0xbb, 0x9b, 0xbb, 0x5f, 0xa2, 0xe6, - 0x49, 0xc9, 0x5f, 0xda, 0x9e, 0xcf, 0xdc, 0x76, 0x5e, 0xcb, 0xf5, 0x13, 0xf9, 0x10, 0x60, 0xc4, - 0xbd, 0x60, 0x64, 0xbd, 0x65, 0xbe, 0xdf, 0x2e, 0xdc, 0xcd, 0xdd, 0xaf, 0xd1, 0x1a, 0x4a, 0xfe, - 0x8a, 0xf9, 0xbe, 0x52, 0x4b, 0x6e, 0x79, 0xe3, 0x49, 0xc8, 0xdf, 0xb0, 0x76, 0x51, 0xab, 0x25, - 0x3f, 0xd4, 0x02, 0xf2, 0x15, 0x94, 0x3d, 0x21, 0x22, 0x26, 0xda, 0xa5, 0xbb, 0x85, 0xfb, 0xf5, - 0x9d, 0x4f, 0xb7, 0xcd, 0x6c, 0xb7, 0xb3, 0x26, 0xb7, 0x7d, 0xa8, 0xb0, 0xd4, 0x98, 0x90, 0x6f, - 0x60, 0xc5, 0xb9, 0xb0, 0xa5, 0x75, 0xe1, 0x09, 0xc9, 0xc3, 0xcb, 0x76, 0x19, 0x87, 0xd8, 0xbe, - 0x7a, 0x88, 0xfd, 0x0b, 0x5b, 0xf6, 0xb5, 0x41, 0x2f, 0x90, 0xe1, 0x25, 0xad, 0x3b, 0x53, 0x49, - 0xe7, 0x5b, 0x68, 0xcd, 0x03, 0x48, 0x0b, 0x0a, 0xaf, 0xd9, 0x25, 0xba, 0xa3, 0x46, 0xd5, 0x4f, - 0xf2, 0x18, 0x4a, 0x6f, 0x6c, 0x3f, 0x62, 0xe8, 0x8a, 0xfa, 0x4e, 0x27, 0x79, 0xa3, 0xf6, 0xbb, - 0x1a, 0x61, 0x9f, 0x07, 0x92, 0xbd, 0x93, 0x54, 0x03, 0x9f, 0xe6, 0x7f, 0x99, 0xeb, 0x58, 0x50, - 0xc2, 0xf9, 0x93, 0xbb, 0x50, 0x77, 0x99, 0x70, 0x42, 0x6f, 0xa2, 0xe6, 0x66, 0x06, 0x4e, 0x8b, - 0xc8, 0x47, 0x00, 0x22, 0x1a, 0x8d, 0x98, 0x40, 0x40, 0x1e, 0x01, 0x29, 0x09, 0xd9, 0x80, 0x92, - 0x6f, 0x9f, 0xb3, 0xd8, 0xdf, 0xfa, 0xe1, 0xde, 0x1f, 0x7e, 0x03, 0x8d, 0x99, 0x35, 0x93, 0x55, - 0xc8, 0x7b, 0xae, 0x79, 0x41, 0xde, 0xc3, 0xcd, 0x9a, 0x84, 0xfc, 0x15, 0x73, 0xa4, 0xe5, 0xb9, - 0x66, 0xdc, 0x9a, 0x91, 0x1c, 0xba, 0xe4, 0x09, 0x94, 0x85, 0xb4, 0x65, 0x24, 0x70, 0xdc, 0xd5, - 0x9d, 0x0f, 0xb3, 0x5d, 0xb9, 0x3d, 0x40, 0x10, 0x35, 0x60, 0xf2, 0x10, 0xd6, 0x34, 0x69, 0xd3, - 0xab, 0xd2, 0x5b, 0xdd, 0x42, 0xc5, 0x41, 0x6a, 0x69, 0x1b, 0x50, 0x62, 0x61, 0xc8, 0xc3, 0x76, - 0x49, 0x4f, 0x1d, 0x1f, 0xc8, 0x2e, 0x80, 0x13, 0x32, 0x5b, 0x32, 0xd7, 0xb2, 0x65, 0xbb, 0x6c, - 0xdc, 0xaa, 0x59, 0xbf, 0x1d, 0xb3, 0x7e, 0x7b, 0x18, 0xb3, 0x9e, 0xd6, 0x0c, 0x7a, 0x4f, 0x92, - 0x6d, 0x28, 0xbe, 0xe2, 0xe7, 0xa2, 0x5d, 0xc1, 0xdd, 0xef, 0x2c, 0x99, 0xf2, 0x73, 0x7e, 0x4e, - 0x11, 0xa7, 0x7c, 0xa0, 0x67, 0x1b, 0xd8, 0x63, 0xd6, 0xae, 0x69, 0x1f, 0xa0, 0xe4, 0xc4, 0x1e, - 0x33, 0xf2, 0x6b, 0x58, 0x15, 0x0e, 0x0b, 0xec, 0xd0, 0xe3, 0xd6, 0x28, 0xe4, 0xd1, 0xa4, 0x0d, - 0x38, 0x9b, 0xad, 0xe9, 0xc0, 0x46, 0xfd, 0x4c, 0x69, 0x69, 0x43, 0xa4, 0x1f, 0xc9, 0x13, 0xa8, - 0xb2, 0xc0, 0xd5, 0xcb, 0xa8, 0x5f, 0xbb, 0x8c, 0x0a, 0x62, 0xf7, 0x24, 0xf9, 0x00, 0x6a, 0xaf, - 0xf8, 0xb9, 0xe5, 0xf0, 0x28, 0x90, 0xed, 0x15, 0x0c, 0xb0, 0xea, 0x2b, 0x7e, 0xbe, 0xaf, 0x9e, - 0xc9, 0x27, 0xb0, 0xa2, 0x83, 0xd0, 0xe8, 0x1b, 0xa8, 0xaf, 0x6b, 0x59, 0x02, 0xd1, 0xf1, 0x68, - 0x20, 0xab, 0x1a, 0xa2, 0x65, 0x1a, 0xf2, 0x53, 0x68, 0x06, 0xd1, 0x38, 0x95, 0x87, 0x44, 0xbb, - 0x89, 0xa8, 0xd5, 0x20, 0x1a, 0x4f, 0x9d, 0x25, 0xc8, 0x0e, 0x94, 0x22, 0x61, 0x8f, 0x58, 0xbb, - 0x85, 0xf3, 0xff, 0xd1, 0x12, 0x8f, 0x9e, 0x29, 0x0c, 0xd5, 0x50, 0x45, 0x69, 0x87, 0x07, 0x4e, - 0x14, 0x86, 0x2c, 0x70, 0x2e, 0xdb, 0x6b, 0xfa, 0xf5, 0x29, 0x11, 0x79, 0x08, 0x45, 0x95, 0x80, - 0xda, 0x04, 0x99, 0x75, 0x3b, 0x63, 0xd0, 0x63, 0xee, 0x32, 0x8a, 0x20, 0xb5, 0x1c, 0xa1, 0xe3, - 0xd5, 0xfa, 0xbd, 0x90, 0x6e, 0x7b, 0xe3, 0x6e, 0xee, 0xfe, 0x0a, 0xad, 0x1b, 0xd9, 0xb7, 0x42, - 0xba, 0x9d, 0xff, 0x2c, 0x41, 0xe1, 0x39, 0x3f, 0x5f, 0xa0, 0xf8, 0x6e, 0xc2, 0xe1, 0x3c, 0xbe, - 0xe9, 0x93, 0xe5, 0x84, 0x98, 0xe7, 0xf1, 0x3d, 0x58, 0xf1, 0x02, 0x21, 0xc3, 0xc8, 0xd1, 0xee, - 0xd1, 0xc1, 0x35, 0x23, 0x9b, 0xd2, 0xb7, 0x98, 0xa6, 0xef, 0xcf, 0x80, 0x68, 0x4e, 0xb1, 0x77, - 0x13, 0xe6, 0x48, 0xe3, 0x5e, 0xcd, 0x70, 0x1d, 0x1b, 0xbd, 0x94, 0x62, 0x1a, 0xbe, 0xe5, 0x54, - 0xf8, 0x12, 0x02, 0x45, 0x69, 0x8f, 0x34, 0x91, 0x6b, 0x14, 0x7f, 0x2b, 0x5e, 0x84, 0x9c, 0x8f, - 0x35, 0x57, 0xab, 0x88, 0xae, 0x2a, 0x01, 0x52, 0x75, 0x17, 0x40, 0x48, 0x3b, 0x34, 0x41, 0x03, - 0xd7, 0x07, 0x8d, 0x41, 0xef, 0xc9, 0xff, 0x2f, 0x4d, 0x6f, 0x43, 0x05, 0xa7, 0xe3, 0xb9, 0x48, - 0xd2, 0x1a, 0x2d, 0xab, 0xc7, 0x43, 0x97, 0xfc, 0x22, 0xe6, 0x4c, 0x03, 0x07, 0xbb, 0x7b, 0x85, - 0xd3, 0x67, 0x78, 0xf3, 0x15, 0x54, 0xc6, 0x4c, 0x86, 0x9e, 0x23, 0x90, 0xb2, 0xf5, 0xab, 0xb6, - 0xeb, 0x58, 0x03, 0x69, 0x6c, 0xd1, 0xf9, 0x5b, 0x28, 0xe1, 0x60, 0xe4, 0x3e, 0xb4, 0x54, 0xb2, - 0xb5, 0x64, 0x14, 0x06, 0xc2, 0x44, 0x80, 0xae, 0x5e, 0xab, 0x4a, 0x3e, 0x54, 0x62, 0x1d, 0x04, - 0x0f, 0x60, 0xcd, 0x8e, 0x5c, 0x8f, 0xcf, 0x40, 0x75, 0x41, 0x6b, 0xa2, 0x62, 0x8a, 0xbd, 0xc7, - 0xa1, 0xac, 0x09, 0x42, 0x08, 0xac, 0x0e, 0x86, 0x7b, 0xc3, 0xb3, 0x81, 0x75, 0xda, 0x3b, 0x39, - 0x38, 0x3c, 0x79, 0xd6, 0xba, 0x95, 0x92, 0xd1, 0xb3, 0x93, 0x13, 0x25, 0xcb, 0x91, 0x0d, 0x68, - 0x19, 0xd9, 0xfe, 0x8b, 0xe3, 0xd3, 0xa3, 0xde, 0xb0, 0x77, 0xd0, 0xca, 0x93, 0x35, 0x68, 0x18, - 0xe9, 0xd7, 0x7b, 0x87, 0x47, 0xbd, 0x83, 0x56, 0x21, 0x0d, 0xdc, 0x3b, 0xd9, 0xef, 0x1d, 0x29, - 0x69, 0xf1, 0x79, 0xb1, 0x5a, 0x6b, 0x41, 0xe7, 0xbf, 0x3e, 0x03, 0x98, 0xae, 0x96, 0x3c, 0x80, - 0x55, 0xdb, 0x71, 0xa2, 0xd0, 0x76, 0x2e, 0x2d, 0xe1, 0xf0, 0x90, 0xe1, 0xca, 0xf2, 0xfd, 0x5b, - 0xb4, 0x11, 0xcb, 0x07, 0x4a, 0xfc, 0x5d, 0x2e, 0x47, 0xb6, 0xa1, 0xa5, 0x08, 0x18, 0x7a, 0x2c, - 0x70, 0x98, 0x41, 0xe7, 0x11, 0x9d, 0xa3, 0xcd, 0xa9, 0x26, 0xc1, 0x7f, 0x0e, 0x4d, 0x69, 0x8b, - 0xd7, 0x96, 0xc3, 0xc7, 0x13, 0x9f, 0x61, 0xda, 0x2e, 0x20, 0x3c, 0x4f, 0x57, 0x95, 0x62, 0x3f, - 0x91, 0x2b, 0xf4, 0x97, 0x50, 0x10, 0x52, 0x22, 0xf1, 0xeb, 0x3b, 0x3f, 0xb9, 0x76, 0x9f, 0xb6, - 0x07, 0xc3, 0x21, 0x55, 0x16, 0xca, 0xd0, 0xf7, 0xc7, 0x18, 0x0e, 0x37, 0x32, 0x3c, 0x3a, 0x3a, - 0xa6, 0xca, 0x42, 0x19, 0x4a, 0x29, 0x4c, 0x39, 0xb8, 0x81, 0xe1, 0x70, 0x38, 0xa0, 0xca, 0x82, - 0x50, 0x58, 0x71, 0x78, 0xf0, 0x86, 0x85, 0x02, 0x61, 0xed, 0x0a, 0x8e, 0xb0, 0x7d, 0xfd, 0x08, - 0xfb, 0x29, 0x2b, 0x3a, 0x33, 0x06, 0x39, 0x84, 0x9a, 0xc9, 0x9d, 0x3c, 0xc4, 0x50, 0xac, 0xef, - 0x3c, 0xbc, 0x81, 0x13, 0x62, 0x13, 0x3a, 0xb5, 0x26, 0xbf, 0x82, 0x12, 0xf2, 0xaf, 0x5d, 0xc3, - 0x9a, 0xf5, 0xd9, 0x0d, 0x56, 0x16, 0x85, 0x01, 0xd5, 0x46, 0xe4, 0x63, 0xa8, 0xbf, 0x8a, 0xdc, - 0x11, 0xd3, 0x07, 0x3a, 0x8c, 0xfb, 0x1a, 0x05, 0x14, 0xa9, 0x14, 0xea, 0x4f, 0x49, 0x9e, 0x86, - 0xd5, 0x11, 0xa6, 0x49, 0xfe, 0x7c, 0x8a, 0xfd, 0x1c, 0xc8, 0x85, 0x2d, 0xac, 0x90, 0x8d, 0xb9, - 0x64, 0xf1, 0xa9, 0x13, 0x83, 0xbb, 0x4a, 0x5b, 0x17, 0xb6, 0xa0, 0xa8, 0x18, 0x68, 0x39, 0x79, - 0x00, 0x79, 0xf9, 0xd8, 0xc4, 0xf8, 0x55, 0x09, 0x23, 0x2f, 0x1f, 0x93, 0x9f, 0xe8, 0x92, 0xe0, - 0x09, 0x16, 0x30, 0xa1, 0xc3, 0x3b, 0xdf, 0x2f, 0xd0, 0xb4, 0x50, 0xb1, 0x6a, 0x17, 0xb6, 0xa2, - 0x20, 0x60, 0x0e, 0x13, 0x42, 0xa5, 0x7b, 0xc9, 0xb9, 0x6f, 0x39, 0xb6, 0xef, 0xeb, 0xea, 0x54, - 0xed, 0x17, 0xe9, 0x46, 0x4a, 0x3f, 0xe4, 0xdc, 0xdf, 0x57, 0x5a, 0x43, 0x77, 0x2f, 0x78, 0xc9, - 0xc3, 0x31, 0x7a, 0xcc, 0xf2, 0xb9, 0x10, 0x58, 0xb3, 0xaa, 0xfd, 0x12, 0x6d, 0xa6, 0x34, 0x47, - 0x5c, 0xbf, 0xea, 0x17, 0xb0, 0x11, 0x32, 0x37, 0x0a, 0x5c, 0x5b, 0x1d, 0xb0, 0xa5, 0x2d, 0xd9, - 0x98, 0x05, 0x52, 0x60, 0xb5, 0xaa, 0xf6, 0xcb, 0x74, 0x3d, 0xd1, 0x0e, 0x12, 0xa5, 0x26, 0xfe, - 0xe6, 0x84, 0xf3, 0xd0, 0xfa, 0x5d, 0xa4, 0x8f, 0x5f, 0xd6, 0xef, 0x22, 0xdb, 0xf7, 0xe4, 0x25, - 0xd6, 0xb2, 0x6a, 0xbf, 0x42, 0xd7, 0x95, 0xfa, 0x1b, 0xa3, 0xfd, 0x46, 0x2b, 0x95, 0xe1, 0x6f, - 0xa0, 0x9d, 0xa6, 0x90, 0x35, 0x09, 0xf9, 0x28, 0x34, 0x2e, 0x5e, 0x47, 0x7f, 0x54, 0xe9, 0xed, - 0x34, 0xe2, 0x74, 0x0a, 0xf8, 0x2e, 0x97, 0xeb, 0xfc, 0xb9, 0x08, 0x85, 0xc1, 0x70, 0x48, 0x36, - 0xa1, 0xf0, 0x96, 0x85, 0x49, 0xe0, 0xab, 0x07, 0x35, 0xfc, 0x1d, 0x28, 0xbd, 0xe5, 0xa1, 0xab, - 0x2b, 0x5d, 0xa3, 0x9f, 0xa3, 0xfa, 0x51, 0xa9, 0x7e, 0x0c, 0x75, 0xf5, 0xdb, 0xc2, 0xf2, 0xa4, - 0x2b, 0x59, 0xa3, 0x9f, 0xa7, 0xa0, 0x84, 0x3d, 0x94, 0x29, 0xd4, 0x26, 0x14, 0x1c, 0xa6, 0x4b, - 0x99, 0xda, 0x1a, 0xf5, 0x60, 0xc6, 0x75, 0x2e, 0xec, 0x50, 0xe0, 0xe1, 0xa8, 0xd1, 0x2f, 0x52, - 0xfd, 0x68, 0xc6, 0x55, 0xbf, 0xe3, 0x71, 0x01, 0x01, 0x25, 0x0a, 0x4a, 0x38, 0x1d, 0xf7, 0xd7, - 0xd0, 0x96, 0xa1, 0x1d, 0x24, 0x87, 0x3e, 0xcb, 0xb7, 0xa5, 0x3a, 0x04, 0x58, 0x63, 0x81, 0x91, - 0xd3, 0xe8, 0x97, 0xe9, 0xd6, 0x0c, 0xe2, 0x48, 0x03, 0x8e, 0xd1, 0x7c, 0x07, 0x08, 0x0b, 0xa4, - 0x27, 0x2f, 0xad, 0x90, 0x39, 0x7c, 0x14, 0x78, 0x18, 0xc3, 0x75, 0x9c, 0x65, 0x85, 0xae, 0x69, - 0x1d, 0x9d, 0xaa, 0xe2, 0xd4, 0xa7, 0xe4, 0x1e, 0x13, 0x56, 0x24, 0x25, 0x0b, 0x99, 0x2e, 0x51, - 0x8d, 0x7e, 0x95, 0x36, 0x63, 0xcd, 0x99, 0x56, 0x28, 0xfc, 0xcf, 0x61, 0x3d, 0xc1, 0x9b, 0xb7, - 0xfc, 0x9e, 0xb9, 0x48, 0xed, 0x46, 0xbf, 0x46, 0x49, 0xac, 0xa4, 0x89, 0xee, 0xbb, 0x5c, 0xae, - 0x5b, 0x86, 0xa2, 0xf5, 0x96, 0x85, 0xdd, 0x2a, 0x94, 0x2d, 0xf4, 0x75, 0x77, 0x15, 0x56, 0xac, - 0x94, 0xa7, 0x11, 0xe1, 0x18, 0x04, 0x7a, 0x0d, 0x11, 0x29, 0x9f, 0x75, 0x3f, 0x80, 0x3b, 0xd6, - 0x32, 0xef, 0x74, 0x37, 0x61, 0xdd, 0x5a, 0x5c, 0x7b, 0x77, 0x1d, 0xd6, 0xac, 0xf9, 0xe5, 0x75, - 0xb7, 0x60, 0xc3, 0xca, 0x58, 0x43, 0xe7, 0x8f, 0x39, 0x28, 0x1c, 0x1d, 0x1d, 0x93, 0x1f, 0x41, - 0x45, 0xca, 0x97, 0x52, 0x39, 0x3d, 0x87, 0xcb, 0xba, 0x45, 0xcb, 0x4a, 0xa0, 0x9d, 0xac, 0xb5, - 0x42, 0x69, 0x63, 0xfa, 0x28, 0xad, 0xd0, 0xda, 0x47, 0xb0, 0x26, 0xf9, 0x6b, 0x16, 0x08, 0x6b, - 0xc2, 0x42, 0x4b, 0x30, 0x87, 0x07, 0x6e, 0x52, 0x1b, 0x9a, 0x5a, 0x75, 0xca, 0xc2, 0x01, 0x2a, - 0x94, 0x67, 0x00, 0xaa, 0x96, 0x79, 0x5b, 0xfc, 0x5b, 0x8d, 0xdd, 0xdd, 0x00, 0x62, 0x2d, 0x8c, - 0xd4, 0xf9, 0xd7, 0x12, 0x14, 0x86, 0xc3, 0x81, 0x99, 0x84, 0x3d, 0x3f, 0x45, 0x3b, 0x3d, 0xc5, - 0xf3, 0xf9, 0x29, 0x9e, 0x1f, 0xc7, 0xe4, 0x55, 0x41, 0x11, 0x4f, 0x6a, 0x21, 0x28, 0x2a, 0x68, - 0x52, 0x58, 0x1e, 0x14, 0x55, 0xc3, 0xee, 0xec, 0xa0, 0xa8, 0xe1, 0xb8, 0xa5, 0xc5, 0xa0, 0x00, - 0x43, 0xe0, 0xa5, 0x41, 0x51, 0x47, 0x40, 0x65, 0x3e, 0x28, 0x1e, 0xc3, 0x5a, 0x60, 0xcb, 0x28, - 0xb4, 0x7d, 0x95, 0xfa, 0x4c, 0x75, 0x2e, 0x99, 0x2c, 0xd0, 0x4a, 0xa9, 0x92, 0xf2, 0xfc, 0x18, - 0xd6, 0x58, 0x10, 0x05, 0x8e, 0xa7, 0xb3, 0x87, 0xb6, 0x28, 0xa3, 0x45, 0x8d, 0xb6, 0x52, 0xaa, - 0xc4, 0x22, 0x3b, 0x72, 0x74, 0xea, 0x85, 0xf7, 0x88, 0x9c, 0x26, 0x2e, 0xa1, 0xfe, 0x3e, 0x91, - 0xd3, 0x42, 0x93, 0x95, 0x65, 0x91, 0x63, 0x38, 0x61, 0xa7, 0xf8, 0xa1, 0x36, 0xf6, 0x7b, 0x89, - 0x28, 0xc5, 0xb1, 0x05, 0xd7, 0xa2, 0x74, 0xc1, 0x7d, 0xdf, 0x4b, 0x80, 0xfd, 0x4b, 0x15, 0x56, - 0xd2, 0x07, 0x05, 0x8c, 0x96, 0x28, 0x0c, 0x2c, 0x69, 0xbf, 0xf6, 0x82, 0xd1, 0xdc, 0x31, 0xad, - 0xa9, 0x54, 0x43, 0xd4, 0x24, 0xfb, 0xf4, 0x14, 0x6e, 0x87, 0x4c, 0x4c, 0x78, 0x20, 0x58, 0x12, - 0xfd, 0x93, 0x27, 0x8f, 0x63, 0xa6, 0x97, 0xfa, 0x39, 0xba, 0x11, 0x03, 0x4c, 0x6a, 0x3c, 0x7d, - 0xf2, 0x58, 0xf3, 0x3e, 0xd3, 0x76, 0xf7, 0x89, 0xb2, 0x2d, 0xa0, 0x6d, 0x7e, 0xd1, 0x76, 0xf7, - 0xc9, 0x55, 0xb6, 0xbb, 0xca, 0xb6, 0x88, 0xb6, 0x85, 0x0c, 0xdb, 0x5d, 0x6d, 0xfb, 0x4b, 0xd8, - 0xd2, 0x77, 0x9c, 0x4b, 0x8f, 0xf9, 0x6e, 0x3a, 0xa5, 0x97, 0x4c, 0x20, 0xad, 0xa3, 0xfe, 0xb7, - 0x4a, 0x3d, 0x93, 0xcf, 0xbf, 0x82, 0xdb, 0x8c, 0x4b, 0x6b, 0xec, 0x89, 0x49, 0xc8, 0x5c, 0x0f, - 0x6f, 0x52, 0xe6, 0xe8, 0x5d, 0x36, 0x05, 0x64, 0x93, 0x71, 0x79, 0x9c, 0xd6, 0xe3, 0x11, 0x5c, - 0x19, 0xdf, 0x87, 0x06, 0x7f, 0xc3, 0x42, 0xdf, 0x9e, 0x58, 0xa1, 0xf2, 0x36, 0xc6, 0x75, 0xbe, - 0x5f, 0xa6, 0x2b, 0x46, 0x4c, 0x95, 0xd4, 0xe4, 0xac, 0x18, 0x29, 0x26, 0x8c, 0x39, 0x17, 0xd3, - 0x72, 0x53, 0xa1, 0x4d, 0xa3, 0x1a, 0xa0, 0x46, 0xcf, 0xeb, 0x21, 0x34, 0x25, 0x97, 0xb6, 0x9f, - 0x82, 0xd7, 0x4c, 0xc9, 0x68, 0xa0, 0x22, 0x0d, 0xfe, 0x12, 0x36, 0xed, 0xb7, 0xaf, 0xdf, 0xda, - 0xa1, 0x6b, 0x09, 0xcf, 0xc7, 0x03, 0xb6, 0x5e, 0x42, 0xdd, 0x94, 0x8c, 0x75, 0xa3, 0x1e, 0x68, - 0x6d, 0xb2, 0x80, 0x6d, 0x68, 0x45, 0x81, 0x1d, 0x88, 0xb7, 0x8a, 0x53, 0xfa, 0xde, 0x61, 0x2a, - 0x13, 0xd0, 0xe6, 0x54, 0x83, 0x17, 0x0f, 0x53, 0x3c, 0x5f, 0xda, 0xbe, 0x60, 0x96, 0x17, 0x48, - 0x16, 0x86, 0xd1, 0x24, 0xe5, 0xae, 0x86, 0x89, 0xcb, 0x2d, 0x44, 0x1c, 0xa6, 0x00, 0xc9, 0xeb, - 0x7a, 0xf0, 0xa1, 0xde, 0xa6, 0x90, 0x4d, 0x38, 0xde, 0x0d, 0xd9, 0x0e, 0x4b, 0xef, 0x56, 0xd3, - 0x04, 0xea, 0x1d, 0x84, 0x51, 0x83, 0xea, 0xed, 0xb0, 0xf4, 0x9e, 0xe9, 0xbc, 0x3d, 0xcf, 0xe9, - 0x6e, 0x07, 0xda, 0xd6, 0x12, 0xe2, 0x2e, 0xd1, 0x21, 0x31, 0x97, 0xe9, 0x14, 0xf1, 0xba, 0x77, - 0xe0, 0xb6, 0x95, 0x4d, 0x2c, 0x34, 0x5b, 0xc2, 0x9c, 0x6e, 0x0b, 0x56, 0xad, 0x19, 0x62, 0xe0, - 0x94, 0x17, 0x08, 0xd0, 0x25, 0xd0, 0xb2, 0xe6, 0x76, 0xb9, 0xdb, 0x86, 0x2d, 0x2b, 0x73, 0x33, - 0x31, 0x0f, 0xcc, 0xef, 0x16, 0x56, 0xec, 0x65, 0x5b, 0xd2, 0xbd, 0x0b, 0x1f, 0x59, 0x57, 0x3a, - 0xbc, 0xf3, 0x0f, 0x39, 0xa8, 0x25, 0xd7, 0x00, 0x4c, 0xea, 0x76, 0xe8, 0x5f, 0x5a, 0x92, 0x85, - 0x63, 0x2f, 0xb0, 0x93, 0x4f, 0x80, 0xd5, 0xfe, 0x2d, 0xda, 0x42, 0xd5, 0x70, 0xaa, 0x31, 0x04, - 0x52, 0xa3, 0xcd, 0x18, 0xe4, 0xd1, 0x20, 0x47, 0x9b, 0x4a, 0x33, 0x8b, 0xd7, 0x89, 0x6f, 0xfe, - 0x15, 0xb8, 0xb2, 0xf9, 0x61, 0x3a, 0x7f, 0xac, 0x42, 0x51, 0x11, 0x8f, 0x6c, 0x40, 0xc9, 0x0b, - 0x5c, 0xf6, 0x4e, 0x97, 0x61, 0xaa, 0x1f, 0xc8, 0x43, 0x28, 0x86, 0xdc, 0x67, 0xe6, 0x4b, 0xca, - 0xed, 0x8c, 0xcf, 0x9c, 0x94, 0xfb, 0x8c, 0x22, 0x88, 0x7c, 0x04, 0x55, 0xfc, 0xbe, 0x10, 0x27, - 0x22, 0x55, 0xcc, 0x2b, 0x28, 0xd1, 0x01, 0xd4, 0x81, 0x32, 0x0b, 0xdc, 0x38, 0xd5, 0xe0, 0x71, - 0x95, 0x05, 0xee, 0x71, 0x7c, 0x09, 0x98, 0x3d, 0x12, 0xb9, 0xcc, 0xb7, 0x53, 0xb9, 0x25, 0x4f, - 0x37, 0x66, 0xf4, 0x07, 0x4a, 0xad, 0x4d, 0x3f, 0x85, 0xba, 0xef, 0x8f, 0xe3, 0xb3, 0x87, 0x49, - 0x28, 0x05, 0x5a, 0xf3, 0xfd, 0xf1, 0x30, 0x39, 0xec, 0x4c, 0x41, 0x78, 0xe0, 0xa9, 0x98, 0x84, - 0x65, 0x40, 0x57, 0x9d, 0x79, 0xaa, 0xe6, 0x18, 0x90, 0x71, 0xe6, 0x51, 0xa3, 0x4a, 0x29, 0xe2, - 0x52, 0x66, 0x72, 0x47, 0x99, 0xd6, 0xa4, 0x14, 0xc3, 0xe4, 0x98, 0x72, 0x6d, 0x3c, 0x82, 0xc9, - 0x50, 0x57, 0xc6, 0x23, 0xf9, 0x02, 0xd6, 0x17, 0x02, 0x68, 0xac, 0xcf, 0x1a, 0xa5, 0x7e, 0x95, - 0xae, 0xcd, 0x65, 0xed, 0xeb, 0x52, 0xf6, 0x4a, 0x92, 0xb4, 0xb2, 0x53, 0x76, 0x66, 0x45, 0x6b, - 0x98, 0x73, 0x44, 0x56, 0x45, 0xcb, 0xbc, 0xed, 0xd5, 0x17, 0x6e, 0x7b, 0x8a, 0xfd, 0xf3, 0x01, - 0x6d, 0x2e, 0x7a, 0x2b, 0xb4, 0x35, 0x5f, 0x04, 0xcc, 0x37, 0x8a, 0xb9, 0x50, 0x35, 0x77, 0xbc, - 0x06, 0x5d, 0x9d, 0xcd, 0xb8, 0x7a, 0x4b, 0x60, 0x1a, 0xbe, 0xe6, 0x62, 0xb7, 0x4a, 0x53, 0x32, - 0x15, 0x20, 0x75, 0xa8, 0x59, 0x31, 0x55, 0xbb, 0x35, 0xa8, 0x58, 0x9a, 0x97, 0x98, 0x89, 0xb2, - 0x69, 0x88, 0x47, 0x8e, 0x14, 0xcd, 0xd2, 0xcf, 0xcb, 0x8f, 0xb9, 0x88, 0x4a, 0x31, 0xe4, 0xfa, - 0x5c, 0x81, 0x47, 0x8e, 0x8c, 0x7d, 0xbe, 0x2a, 0x49, 0x66, 0x67, 0x6a, 0x3c, 0x23, 0x4d, 0x7d, - 0xaf, 0x93, 0xc2, 0xbc, 0xe7, 0x31, 0x39, 0xce, 0x79, 0xb7, 0xdb, 0x80, 0x7a, 0x2a, 0x05, 0x76, - 0xd7, 0xa0, 0x69, 0xcd, 0x7e, 0x80, 0xd2, 0x87, 0xa5, 0xb9, 0xef, 0x4c, 0x3a, 0xcf, 0xce, 0x7e, - 0x4c, 0x5a, 0x98, 0x84, 0x5a, 0x45, 0xf6, 0x65, 0x1f, 0xc7, 0x9c, 0xbf, 0xcc, 0x77, 0x6f, 0xc3, - 0xa6, 0x95, 0x75, 0x63, 0xc7, 0x04, 0x9e, 0x79, 0x25, 0xc7, 0x5c, 0xbd, 0xec, 0xce, 0xdd, 0xf9, - 0xdf, 0x02, 0x94, 0xf7, 0xb1, 0x71, 0xd0, 0xf9, 0xef, 0x3c, 0x54, 0x28, 0x43, 0xf3, 0xb9, 0xae, - 0x48, 0x6e, 0xbe, 0x2b, 0x32, 0xdb, 0x30, 0xc8, 0xcf, 0x37, 0x0c, 0x32, 0xbe, 0xab, 0x17, 0x33, - 0xbf, 0xab, 0x6f, 0x41, 0x39, 0x64, 0x23, 0x45, 0xf8, 0xb2, 0xf9, 0x76, 0x8a, 0x4f, 0xa4, 0xbb, - 0xd0, 0x71, 0xa8, 0x5c, 0xd5, 0x71, 0xe8, 0xdf, 0x9a, 0xeb, 0x39, 0xa4, 0xc2, 0x2f, 0xfe, 0xfe, - 0x5e, 0x35, 0x87, 0xc8, 0xb4, 0x50, 0x9f, 0x78, 0xf4, 0x47, 0xf8, 0xda, 0x0d, 0x3e, 0xc2, 0xe3, - 0xce, 0xcf, 0x4e, 0x2c, 0xd9, 0x50, 0x33, 0xe4, 0xf3, 0x62, 0xb5, 0xd0, 0x2a, 0xd2, 0xc5, 0xee, - 0x4f, 0xe7, 0xef, 0x73, 0x50, 0xa5, 0x86, 0xc7, 0xe4, 0x01, 0xac, 0x4d, 0xbd, 0x63, 0x85, 0x51, - 0x30, 0x75, 0x73, 0x53, 0xa4, 0xbf, 0x78, 0x1d, 0xba, 0x64, 0x00, 0x5b, 0x93, 0x90, 0x09, 0x6f, - 0x14, 0x30, 0xd7, 0x9a, 0x70, 0xa1, 0x42, 0x05, 0x77, 0xc9, 0xf4, 0xda, 0xa6, 0x2d, 0xa9, 0xd3, - 0x18, 0x76, 0xca, 0x85, 0x34, 0x5b, 0x49, 0x37, 0x26, 0x19, 0x52, 0x75, 0x23, 0x5e, 0xdf, 0xe7, - 0xc1, 0x4b, 0x2f, 0x1c, 0x0f, 0x78, 0x14, 0x3a, 0xec, 0x6c, 0xe2, 0x73, 0xdb, 0xed, 0xfc, 0xdd, - 0x8d, 0x39, 0x90, 0xb9, 0x84, 0x7c, 0xf6, 0x12, 0x7e, 0x0a, 0x4d, 0x87, 0xbb, 0x4c, 0x5d, 0x1d, - 0xc2, 0xcb, 0x09, 0xf7, 0x02, 0x69, 0x3a, 0x09, 0xab, 0x4a, 0xdc, 0x4b, 0xa4, 0x1d, 0x98, 0xfa, - 0xa8, 0xf3, 0x87, 0x1c, 0x14, 0x9e, 0x31, 0xd9, 0x19, 0xfe, 0x10, 0x53, 0xea, 0xfc, 0x3c, 0xb5, - 0x1b, 0xf7, 0xa1, 0x10, 0x46, 0xfa, 0xc8, 0x31, 0xc3, 0xb1, 0xb4, 0x09, 0x55, 0x90, 0xce, 0xbf, - 0xe7, 0xa1, 0x78, 0xe4, 0x09, 0xd9, 0xf9, 0xb7, 0xdc, 0x8d, 0x67, 0xf5, 0x74, 0xae, 0xfd, 0x72, - 0x75, 0x0b, 0x51, 0xdd, 0xf7, 0x35, 0x5c, 0xb1, 0xf3, 0x57, 0x00, 0x13, 0x7b, 0xc4, 0x74, 0x22, - 0x45, 0x9f, 0xd5, 0x77, 0xda, 0x89, 0xfd, 0x50, 0x49, 0x4f, 0xed, 0x91, 0x39, 0xbb, 0xf4, 0x73, - 0xb4, 0xa6, 0xd0, 0x28, 0x56, 0x59, 0x5d, 0x25, 0x72, 0x3d, 0x16, 0xa6, 0xb0, 0xe9, 0x48, 0x9d, - 0x77, 0x33, 0x5c, 0x2c, 0x86, 0x51, 0x20, 0xda, 0x39, 0xfc, 0xf2, 0xba, 0x6c, 0xf9, 0x88, 0x21, - 0x7f, 0x01, 0xcd, 0x80, 0xbd, 0x93, 0xa9, 0xa1, 0x0c, 0x09, 0x97, 0x4e, 0x8a, 0x36, 0x94, 0xc1, - 0x69, 0x3c, 0xad, 0xce, 0x2b, 0x28, 0xef, 0xdb, 0x81, 0xc3, 0xfc, 0x1f, 0x68, 0x5f, 0xd3, 0x0c, - 0xfa, 0x81, 0xbb, 0x21, 0x7f, 0xca, 0x25, 0xed, 0x90, 0x3b, 0xb0, 0x39, 0xdb, 0x0e, 0xb1, 0xce, - 0x4e, 0x8f, 0x5e, 0xec, 0x1d, 0xb4, 0x6e, 0x91, 0x4d, 0x58, 0x33, 0xaa, 0x67, 0xbd, 0x93, 0x1e, - 0xdd, 0x1b, 0xea, 0xc6, 0xc8, 0x62, 0xb3, 0x24, 0x4f, 0xb6, 0x80, 0x18, 0xd9, 0xe0, 0xec, 0xf8, - 0x78, 0x8f, 0x1e, 0x7e, 0xab, 0xe4, 0x85, 0xcc, 0x26, 0x4a, 0x71, 0xb1, 0x89, 0x52, 0xca, 0x6c, - 0xa2, 0x94, 0x9f, 0x17, 0xab, 0xd5, 0x56, 0x8d, 0x56, 0x4c, 0xab, 0xf0, 0xde, 0x9f, 0x0a, 0x50, - 0x8d, 0xd3, 0xe7, 0xb4, 0xef, 0x96, 0x4b, 0xf7, 0xdd, 0xe6, 0xdb, 0x7e, 0xf9, 0x8c, 0xb6, 0x5f, - 0x76, 0x83, 0xaf, 0xb0, 0xac, 0xc1, 0xf7, 0xc8, 0xb4, 0xf2, 0x8a, 0xc8, 0xb2, 0x0f, 0x16, 0x12, - 0xf9, 0xf6, 0xd0, 0x1e, 0x09, 0xfd, 0xf7, 0x03, 0xdd, 0xe7, 0xeb, 0x40, 0x35, 0x12, 0x2c, 0x74, - 0x6d, 0x69, 0x9b, 0xb6, 0x61, 0xf2, 0xdc, 0xf9, 0xa7, 0x1c, 0xac, 0xe9, 0xaa, 0xf5, 0x75, 0xc8, - 0xc7, 0xe6, 0x53, 0x7c, 0xe7, 0xb7, 0x37, 0x26, 0x54, 0xaa, 0x69, 0x97, 0x9f, 0x69, 0xda, 0x4d, - 0x0b, 0x52, 0x21, 0x5d, 0x90, 0x3a, 0xbb, 0xa9, 0x78, 0xf9, 0x19, 0x54, 0xe3, 0x1a, 0x60, 0x52, - 0xc6, 0xda, 0xc2, 0x6a, 0x68, 0x02, 0xe9, 0x7c, 0x09, 0xb5, 0x64, 0x69, 0x19, 0x7f, 0x9c, 0xd8, - 0x48, 0xff, 0x71, 0xa2, 0x96, 0xfa, 0x73, 0xc4, 0xbd, 0x21, 0x34, 0x66, 0xaa, 0x1c, 0x21, 0x50, - 0xc4, 0x7a, 0xab, 0xad, 0xf1, 0x37, 0x79, 0x04, 0xb5, 0xf8, 0x4d, 0x6a, 0x9b, 0x0a, 0xd9, 0xb3, - 0x99, 0x62, 0xee, 0xfd, 0x39, 0x07, 0x64, 0x1a, 0xd9, 0x07, 0x9e, 0x98, 0xd8, 0xd2, 0xb9, 0x78, - 0xaf, 0x82, 0xb4, 0x09, 0xe5, 0x57, 0xfc, 0x7c, 0xea, 0xbc, 0xd2, 0x2b, 0x7e, 0x7e, 0xe8, 0xce, - 0xf8, 0xa5, 0x70, 0xad, 0x5f, 0x92, 0xc2, 0x5b, 0xbc, 0x41, 0xe1, 0x7d, 0xf0, 0x12, 0x56, 0x67, - 0xe5, 0xe4, 0x63, 0xf8, 0x60, 0x70, 0x78, 0x7c, 0x76, 0xb4, 0x37, 0x3c, 0x7c, 0x71, 0x62, 0x1d, - 0xbf, 0x38, 0xe8, 0x59, 0x67, 0x27, 0x83, 0xd3, 0xde, 0xfe, 0xe1, 0xd7, 0x87, 0x3d, 0x15, 0x77, - 0x6d, 0xd8, 0x98, 0x07, 0x0c, 0x7b, 0x7f, 0x3d, 0x6c, 0xe5, 0x30, 0x58, 0xe7, 0x34, 0x7b, 0x67, - 0x07, 0x87, 0x2f, 0x5a, 0xf9, 0x9d, 0x7f, 0x2c, 0x41, 0x73, 0x4f, 0x71, 0x77, 0xfa, 0x36, 0xe2, - 0xc2, 0xba, 0xe6, 0xda, 0xec, 0x1f, 0x49, 0x96, 0x35, 0xdf, 0x34, 0x76, 0x3b, 0x2e, 0xb4, 0x9f, - 0x5d, 0x07, 0x33, 0xac, 0xfa, 0x2e, 0x07, 0x1f, 0xc6, 0x05, 0x39, 0x01, 0xa6, 0x4b, 0x33, 0xd9, - 0x59, 0x36, 0xd2, 0x62, 0x19, 0x4f, 0xde, 0xfe, 0xc5, 0x7b, 0xd9, 0x98, 0xa9, 0xfc, 0x0d, 0xb4, - 0x9e, 0x31, 0x39, 0xbb, 0xda, 0x7b, 0x4b, 0x06, 0x7a, 0xc6, 0x64, 0xf2, 0xb2, 0x4f, 0xaf, 0xc4, - 0x98, 0xc1, 0x2d, 0x20, 0xaa, 0x80, 0xce, 0x20, 0x04, 0x59, 0x66, 0xaa, 0xa0, 0xc9, 0xf8, 0x3f, - 0xbe, 0x1a, 0x64, 0x5e, 0xa0, 0xb6, 0x0b, 0x0b, 0xcc, 0x0d, 0xb7, 0x0b, 0xb1, 0xd7, 0x6f, 0x57, - 0x0c, 0x33, 0x6f, 0x79, 0x03, 0x77, 0x0c, 0x29, 0x0c, 0x9f, 0x53, 0x89, 0x88, 0x3c, 0x5c, 0xcc, - 0x6e, 0x0b, 0xd9, 0x2a, 0x79, 0xe3, 0xe7, 0x37, 0x03, 0xeb, 0xf7, 0x76, 0xbf, 0xfe, 0xf6, 0xd3, - 0x91, 0x27, 0x2f, 0xa2, 0xf3, 0x6d, 0x87, 0x8f, 0xe3, 0x3f, 0xc8, 0xe9, 0x3f, 0xc1, 0x39, 0xdc, - 0x8f, 0x05, 0xff, 0x9c, 0x6f, 0x1c, 0x79, 0x6f, 0xd8, 0x5f, 0xe2, 0x99, 0x90, 0x4b, 0xfe, 0x3f, - 0xf9, 0x55, 0xf3, 0xfc, 0xf4, 0x29, 0x0a, 0xce, 0xcb, 0x68, 0xf2, 0xc5, 0xff, 0x05, 0x00, 0x00, - 0xff, 0xff, 0x4c, 0x43, 0x79, 0x5c, 0x93, 0x27, 0x00, 0x00, + // 3527 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x73, 0x1b, 0x47, + 0x76, 0x17, 0xbe, 0x81, 0x07, 0x82, 0x00, 0x9b, 0x1f, 0x82, 0xc6, 0x6b, 0x5b, 0x96, 0x77, 0xbd, + 0x2a, 0xc9, 0x4b, 0x29, 0xf4, 0x6a, 0xbd, 0x94, 0x77, 0x53, 0x21, 0x48, 0x58, 0xa0, 0x42, 0x52, + 0x74, 0x03, 0xac, 0x64, 0x9d, 0x4a, 0x4d, 0x0d, 0x67, 0x5a, 0xe0, 0x48, 0x83, 0x69, 0xec, 0x74, + 0x8f, 0x24, 0x6e, 0x55, 0xee, 0xae, 0xca, 0x29, 0xb7, 0x9c, 0x52, 0xbe, 0xec, 0x21, 0x5b, 0xb9, + 0xed, 0x31, 0xa9, 0xca, 0xdf, 0x90, 0x4b, 0x2a, 0xa9, 0xca, 0x5f, 0x90, 0x7b, 0xee, 0xa9, 0x7e, + 0xdd, 0x33, 0x18, 0x7c, 0x91, 0x74, 0xca, 0xbe, 0xe5, 0x86, 0x79, 0xef, 0xf7, 0x7a, 0xba, 0x5f, + 0xff, 0xde, 0x7b, 0xdd, 0xf3, 0x00, 0x1f, 0x04, 0xfe, 0x1b, 0xf6, 0xda, 0x97, 0xb6, 0x33, 0x64, + 0xa1, 0xb4, 0x85, 0x3f, 0x8a, 0x03, 0x47, 0xfa, 0x3c, 0xdc, 0x1e, 0x47, 0x5c, 0x72, 0x52, 0x31, + 0x7a, 0xeb, 0x23, 0x04, 0x3c, 0x9a, 0x81, 0x33, 0x21, 0x52, 0xac, 0xf5, 0xe1, 0x90, 0xf3, 0x61, + 0xc0, 0x1e, 0xe1, 0xd3, 0x79, 0xfc, 0xf2, 0x91, 0xf4, 0x47, 0x4c, 0x48, 0x67, 0x34, 0x36, 0x80, + 0x3b, 0x89, 0xb5, 0x1b, 0xf0, 0xd8, 0xd3, 0x63, 0x18, 0xd5, 0x46, 0xa2, 0x1a, 0x71, 0x8f, 0x05, + 0x42, 0x4b, 0xef, 0xfd, 0x5b, 0x01, 0x36, 0xfa, 0xe9, 0x94, 0x68, 0x1c, 0xf6, 0xe3, 0xd1, 0xc8, + 0x89, 0x2e, 0xc9, 0x16, 0x94, 0xc7, 0x8e, 0x10, 0xcc, 0x6b, 0xe7, 0xee, 0xe6, 0xee, 0x97, 0xa8, + 0x79, 0x52, 0xf2, 0x97, 0x8e, 0x1f, 0x30, 0xaf, 0x9d, 0xd7, 0x72, 0xfd, 0x44, 0xde, 0x07, 0x18, + 0x72, 0x3f, 0x1c, 0xda, 0x6f, 0x59, 0x10, 0xb4, 0x0b, 0x77, 0x73, 0xf7, 0x6b, 0xb4, 0x86, 0x92, + 0xbf, 0x60, 0x41, 0xa0, 0xd4, 0x92, 0xdb, 0xfe, 0x68, 0x1c, 0xf1, 0x37, 0xac, 0x5d, 0xd4, 0x6a, + 0xc9, 0x0f, 0xb5, 0x80, 0x7c, 0x01, 0x65, 0x5f, 0x88, 0x98, 0x89, 0x76, 0xe9, 0x6e, 0xe1, 0x7e, + 0x7d, 0xe7, 0xe3, 0x6d, 0x33, 0xdb, 0xed, 0x45, 0x93, 0xdb, 0x3e, 0x54, 0x58, 0x6a, 0x4c, 0xc8, + 0x57, 0xb0, 0xe2, 0x5e, 0x38, 0xd2, 0xbe, 0xf0, 0x85, 0xe4, 0xd1, 0x65, 0xbb, 0x8c, 0x43, 0x6c, + 0x5f, 0x3d, 0xc4, 0xfe, 0x85, 0x23, 0x7b, 0xda, 0xa0, 0x1b, 0xca, 0xe8, 0x92, 0xd6, 0xdd, 0x89, + 0xc4, 0xfa, 0x1a, 0x5a, 0xb3, 0x00, 0xd2, 0x82, 0xc2, 0x6b, 0x76, 0x89, 0xee, 0xa8, 0x51, 0xf5, + 0x93, 0x3c, 0x86, 0xd2, 0x1b, 0x27, 0x88, 0x19, 0xba, 0xa2, 0xbe, 0x63, 0xa5, 0x6f, 0xd4, 0x7e, + 0x57, 0x23, 0xec, 0xf3, 0x50, 0xb2, 0x77, 0x92, 0x6a, 0xe0, 0xd3, 0xfc, 0x2f, 0x73, 0x96, 0x0d, + 0x25, 0x9c, 0x3f, 0xb9, 0x0b, 0x75, 0x8f, 0x09, 0x37, 0xf2, 0xc7, 0x6a, 0x6e, 0x66, 0xe0, 0xac, + 0x88, 0x7c, 0x00, 0x20, 0xe2, 0xe1, 0x90, 0x09, 0x04, 0xe4, 0x11, 0x90, 0x91, 0x90, 0x0d, 0x28, + 0x05, 0xce, 0x39, 0x4b, 0xfc, 0xad, 0x1f, 0xee, 0xfd, 0xa1, 0x03, 0x8d, 0xa9, 0x35, 0x93, 0x55, + 0xc8, 0xfb, 0x9e, 0x79, 0x41, 0xde, 0xc7, 0xcd, 0x1a, 0x47, 0xfc, 0x15, 0x73, 0xa5, 0xed, 0x7b, + 0x66, 0xdc, 0x9a, 0x91, 0x1c, 0x7a, 0xe4, 0x09, 0x94, 0x85, 0x74, 0x64, 0x2c, 0x70, 0xdc, 0xd5, + 0x9d, 0xf7, 0x17, 0xbb, 0x72, 0xbb, 0x8f, 0x20, 0x6a, 0xc0, 0xe4, 0x21, 0xac, 0x69, 0xd2, 0x66, + 0x57, 0xa5, 0xb7, 0xba, 0x85, 0x8a, 0x83, 0xcc, 0xd2, 0x36, 0xa0, 0xc4, 0xa2, 0x88, 0x47, 0xed, + 0x92, 0x9e, 0x3a, 0x3e, 0x90, 0x5d, 0x00, 0x37, 0x62, 0x8e, 0x64, 0x9e, 0xed, 0xc8, 0x76, 0xd9, + 0xb8, 0x55, 0xb3, 0x7e, 0x3b, 0x61, 0xfd, 0xf6, 0x20, 0x61, 0x3d, 0xad, 0x19, 0xf4, 0x9e, 0x24, + 0xdb, 0x50, 0x7c, 0xc5, 0xcf, 0x45, 0xbb, 0x82, 0xbb, 0x6f, 0x2d, 0x99, 0xf2, 0x73, 0x7e, 0x4e, + 0x11, 0xa7, 0x7c, 0xa0, 0x67, 0x1b, 0x3a, 0x23, 0xd6, 0xae, 0x69, 0x1f, 0xa0, 0xe4, 0xc4, 0x19, + 0x31, 0xf2, 0x6b, 0x58, 0x15, 0x2e, 0x0b, 0x9d, 0xc8, 0xe7, 0xf6, 0x30, 0xe2, 0xf1, 0xb8, 0x0d, + 0x38, 0x9b, 0xad, 0xc9, 0xc0, 0x46, 0xfd, 0x4c, 0x69, 0x69, 0x43, 0x64, 0x1f, 0xc9, 0x13, 0xa8, + 0xb2, 0xd0, 0xd3, 0xcb, 0xa8, 0x5f, 0xbb, 0x8c, 0x0a, 0x62, 0xf7, 0x24, 0x79, 0x0f, 0x6a, 0xaf, + 0xf8, 0xb9, 0xed, 0xf2, 0x38, 0x94, 0xed, 0x15, 0x0c, 0xb0, 0xea, 0x2b, 0x7e, 0xbe, 0xaf, 0x9e, + 0xc9, 0x47, 0xb0, 0xa2, 0x83, 0xd0, 0xe8, 0x1b, 0xa8, 0xaf, 0x6b, 0x59, 0x0a, 0xd1, 0xf1, 0x68, + 0x20, 0xab, 0x1a, 0xa2, 0x65, 0x1a, 0xf2, 0x53, 0x68, 0x86, 0xf1, 0x28, 0x93, 0x87, 0x44, 0xbb, + 0x89, 0xa8, 0xd5, 0x30, 0x1e, 0x4d, 0x9c, 0x25, 0xc8, 0x0e, 0x94, 0x62, 0xe1, 0x0c, 0x59, 0xbb, + 0x85, 0xf3, 0xff, 0xd1, 0x12, 0x8f, 0x9e, 0x29, 0x0c, 0xd5, 0x50, 0x45, 0x69, 0x97, 0x87, 0x6e, + 0x1c, 0x45, 0x2c, 0x74, 0x2f, 0xdb, 0x6b, 0xfa, 0xf5, 0x19, 0x11, 0x79, 0x08, 0x45, 0x95, 0x80, + 0xda, 0x04, 0x99, 0x75, 0x7b, 0xc1, 0xa0, 0xc7, 0xdc, 0x63, 0x14, 0x41, 0xe4, 0x0b, 0xa8, 0x8c, + 0x98, 0x8c, 0x7c, 0x57, 0xb4, 0xd7, 0x71, 0x12, 0x1f, 0x2d, 0x99, 0x04, 0x8d, 0xc3, 0x63, 0x0d, + 0xa4, 0x89, 0x85, 0xf2, 0x85, 0xd0, 0xc1, 0x6e, 0xff, 0x4e, 0x48, 0xaf, 0xbd, 0x71, 0x37, 0x77, + 0x7f, 0x85, 0xd6, 0x8d, 0xec, 0x6b, 0x21, 0x3d, 0xeb, 0xdf, 0x4b, 0x50, 0x78, 0xce, 0xcf, 0xe7, + 0xe2, 0x63, 0x37, 0x0d, 0x80, 0x3c, 0x4e, 0xf3, 0xa3, 0xe5, 0x6c, 0x9a, 0x0d, 0x82, 0x7b, 0xb0, + 0xe2, 0x87, 0x42, 0x46, 0xb1, 0xab, 0x7d, 0xab, 0x23, 0x73, 0x4a, 0x36, 0xe1, 0x7e, 0x31, 0xcb, + 0xfd, 0x9f, 0x01, 0xd1, 0x84, 0x64, 0xef, 0xc6, 0xcc, 0x95, 0x66, 0x6f, 0x74, 0x78, 0xe8, 0xc0, + 0xea, 0x66, 0x14, 0x93, 0xd8, 0x2f, 0x67, 0x62, 0x9f, 0x10, 0x28, 0x4a, 0x67, 0xa8, 0xa3, 0xa0, + 0x46, 0xf1, 0xb7, 0x22, 0x55, 0xc4, 0xf9, 0x48, 0x13, 0xbd, 0x8a, 0xe8, 0xaa, 0x12, 0x20, 0xcf, + 0x77, 0x01, 0x84, 0x74, 0x22, 0x13, 0x71, 0x70, 0x7d, 0xc4, 0x19, 0xf4, 0x9e, 0xfc, 0xbf, 0x72, + 0xfc, 0x36, 0x54, 0x70, 0x3a, 0xbe, 0x87, 0x0c, 0xaf, 0xd1, 0xb2, 0x7a, 0x3c, 0xf4, 0xc8, 0x2f, + 0x12, 0xc2, 0x35, 0x70, 0xb0, 0xbb, 0x57, 0x38, 0x7d, 0x8a, 0x74, 0x19, 0x96, 0xac, 0x5e, 0xc9, + 0x92, 0xe7, 0xfc, 0x7c, 0x96, 0x25, 0xd6, 0x5f, 0x43, 0x09, 0x07, 0x23, 0xf7, 0xa1, 0xa5, 0x32, + 0xb5, 0x2d, 0xe3, 0x28, 0x14, 0x26, 0x7c, 0x74, 0xe9, 0x5b, 0x55, 0xf2, 0x81, 0x12, 0xeb, 0x08, + 0x7a, 0x00, 0x6b, 0x4e, 0xec, 0xf9, 0x7c, 0x0a, 0xaa, 0xab, 0x61, 0x13, 0x15, 0x13, 0xec, 0x3d, + 0x0e, 0x65, 0x4d, 0x10, 0x42, 0x60, 0xb5, 0x3f, 0xd8, 0x1b, 0x9c, 0xf5, 0xed, 0xd3, 0xee, 0xc9, + 0xc1, 0xe1, 0xc9, 0xb3, 0xd6, 0xad, 0x8c, 0x8c, 0x9e, 0x9d, 0x9c, 0x28, 0x59, 0x8e, 0x6c, 0x40, + 0xcb, 0xc8, 0xf6, 0x5f, 0x1c, 0x9f, 0x1e, 0x75, 0x07, 0xdd, 0x83, 0x56, 0x9e, 0xac, 0x41, 0xc3, + 0x48, 0xbf, 0xdc, 0x3b, 0x3c, 0xea, 0x1e, 0xb4, 0x0a, 0x59, 0xe0, 0xde, 0xc9, 0x7e, 0xf7, 0x48, + 0x49, 0x8b, 0xcf, 0x8b, 0xd5, 0x5a, 0x0b, 0xac, 0xff, 0xf8, 0x04, 0x60, 0xb2, 0x5a, 0xf2, 0x00, + 0x56, 0x1d, 0xd7, 0x8d, 0x23, 0xc7, 0xbd, 0xb4, 0x85, 0xcb, 0x23, 0x86, 0x2b, 0xcb, 0xf7, 0x6e, + 0xd1, 0x46, 0x22, 0xef, 0x2b, 0xf1, 0x37, 0xb9, 0x1c, 0xd9, 0x86, 0x96, 0x22, 0x60, 0xe4, 0xb3, + 0xd0, 0x65, 0x06, 0x9d, 0x47, 0x74, 0x8e, 0x36, 0x27, 0x9a, 0x14, 0xff, 0x29, 0x34, 0xa5, 0x23, + 0x5e, 0xdb, 0x2e, 0x1f, 0x8d, 0x03, 0x86, 0x39, 0xbf, 0x80, 0xf0, 0x3c, 0x5d, 0x55, 0x8a, 0xfd, + 0x54, 0xae, 0xd0, 0x9f, 0x43, 0x41, 0x48, 0x89, 0xc4, 0xaf, 0xef, 0xfc, 0xe4, 0xda, 0x7d, 0xda, + 0xee, 0x0f, 0x06, 0x54, 0x59, 0x28, 0xc3, 0x20, 0x18, 0x61, 0x38, 0xdc, 0xc8, 0xf0, 0xe8, 0xe8, + 0x98, 0x2a, 0x0b, 0x65, 0x28, 0xa5, 0x30, 0xb5, 0xe4, 0x06, 0x86, 0x83, 0x41, 0x9f, 0x2a, 0x0b, + 0x42, 0x61, 0xc5, 0xe5, 0xe1, 0x1b, 0x16, 0x09, 0x84, 0xb5, 0x2b, 0x38, 0xc2, 0xf6, 0xf5, 0x23, + 0xec, 0x67, 0xac, 0xe8, 0xd4, 0x18, 0xe4, 0x10, 0x6a, 0x26, 0xf1, 0xf2, 0x08, 0x43, 0xb1, 0xbe, + 0xf3, 0xf0, 0x06, 0x4e, 0x48, 0x4c, 0xe8, 0xc4, 0x9a, 0xfc, 0x0a, 0x4a, 0xc8, 0xbf, 0x76, 0x0d, + 0x0b, 0xde, 0x27, 0x37, 0x58, 0x59, 0x1c, 0x85, 0x54, 0x1b, 0x91, 0x0f, 0xa1, 0xfe, 0x2a, 0xf6, + 0x86, 0x4c, 0x9f, 0x06, 0x31, 0xee, 0x6b, 0x14, 0x50, 0xa4, 0xf2, 0x6f, 0x30, 0x21, 0x79, 0x16, + 0x56, 0x47, 0x98, 0x26, 0xf9, 0xf3, 0x09, 0xf6, 0x53, 0x20, 0x17, 0x8e, 0xb0, 0x23, 0x36, 0xe2, + 0x92, 0x25, 0x47, 0x56, 0x0c, 0xee, 0x2a, 0x6d, 0x5d, 0x38, 0x82, 0xa2, 0xa2, 0xaf, 0xe5, 0xe4, + 0x01, 0xe4, 0xe5, 0x63, 0x13, 0xe3, 0x57, 0x25, 0x8c, 0xbc, 0x7c, 0x4c, 0x7e, 0xa2, 0xeb, 0x89, + 0x2f, 0x58, 0xc8, 0x84, 0x0e, 0xef, 0x7c, 0xaf, 0x40, 0xb3, 0x42, 0xc5, 0xaa, 0x5d, 0xd8, 0x8a, + 0xc3, 0x90, 0xb9, 0x4c, 0x08, 0x95, 0xee, 0x25, 0xe7, 0x81, 0xed, 0x3a, 0x41, 0xa0, 0x4b, 0x5b, + 0xb5, 0x57, 0xa4, 0x1b, 0x19, 0xfd, 0x80, 0xf3, 0x60, 0x5f, 0x69, 0x0d, 0xdd, 0xfd, 0xf0, 0x25, + 0x8f, 0x46, 0xe8, 0x31, 0x3b, 0xe0, 0x42, 0x60, 0xc1, 0xab, 0xf6, 0x4a, 0xb4, 0x99, 0xd1, 0x1c, + 0x71, 0xfd, 0xaa, 0x5f, 0xc0, 0x46, 0xc4, 0xbc, 0x38, 0xf4, 0x1c, 0x75, 0x3a, 0x97, 0x8e, 0x64, + 0x23, 0x16, 0x4a, 0x81, 0xa5, 0xae, 0xda, 0x2b, 0xd3, 0xf5, 0x54, 0xdb, 0x4f, 0x95, 0x9a, 0xf8, + 0x9b, 0x63, 0xce, 0x23, 0xfb, 0xb7, 0xb1, 0x3e, 0xbb, 0xd9, 0xbf, 0x8d, 0x9d, 0xc0, 0x97, 0x97, + 0x58, 0x08, 0xab, 0xbd, 0x0a, 0x5d, 0x57, 0xea, 0xaf, 0x8c, 0xf6, 0x2b, 0xad, 0x54, 0x86, 0x7f, + 0x0a, 0xed, 0x2c, 0x85, 0xec, 0x71, 0xc4, 0x87, 0x91, 0x71, 0xf1, 0x3a, 0xfa, 0xa3, 0x4a, 0x6f, + 0x67, 0x11, 0xa7, 0x13, 0xc0, 0x37, 0xb9, 0x9c, 0xf5, 0xc7, 0x22, 0x14, 0xfa, 0x83, 0x01, 0xd9, + 0x84, 0xc2, 0x5b, 0x16, 0xa5, 0x81, 0xaf, 0x1e, 0xd4, 0xf0, 0x77, 0xa0, 0xf4, 0x96, 0x47, 0x9e, + 0xae, 0x74, 0x8d, 0x5e, 0x8e, 0xea, 0x47, 0xa5, 0xfa, 0x31, 0xd4, 0xd5, 0x6f, 0x1b, 0xcb, 0x93, + 0xae, 0x64, 0x8d, 0x5e, 0x9e, 0x82, 0x12, 0x76, 0x51, 0xa6, 0x50, 0x9b, 0x50, 0x70, 0x99, 0x2e, + 0x65, 0x6a, 0x6b, 0xd4, 0x83, 0x19, 0xd7, 0xbd, 0x70, 0x22, 0x81, 0x27, 0xab, 0x46, 0xaf, 0x48, + 0xf5, 0xa3, 0x19, 0x57, 0xfd, 0x4e, 0xc6, 0x05, 0x04, 0x94, 0x28, 0x28, 0xe1, 0x64, 0xdc, 0x5f, + 0x43, 0x5b, 0x46, 0x4e, 0x98, 0x9e, 0x18, 0xed, 0xc0, 0x91, 0xea, 0x04, 0x61, 0x8f, 0x04, 0x46, + 0x4e, 0xa3, 0x57, 0xa6, 0x5b, 0x53, 0x88, 0x23, 0x0d, 0x38, 0x46, 0xf3, 0x1d, 0x20, 0x2c, 0x94, + 0xbe, 0xbc, 0xb4, 0x23, 0xe6, 0xf2, 0x61, 0xe8, 0x63, 0x0c, 0xd7, 0x71, 0x96, 0x15, 0xba, 0xa6, + 0x75, 0x74, 0xa2, 0x4a, 0x52, 0x9f, 0x92, 0xfb, 0x4c, 0xd8, 0xb1, 0x94, 0x2c, 0x62, 0xba, 0x44, + 0x35, 0x7a, 0x55, 0xda, 0x4c, 0x34, 0x67, 0x5a, 0xa1, 0xf0, 0x3f, 0x87, 0xf5, 0x14, 0x6f, 0xde, + 0xf2, 0x3b, 0xe6, 0x21, 0xb5, 0x1b, 0xbd, 0x1a, 0x25, 0x89, 0x92, 0xa6, 0xba, 0x6f, 0x72, 0xb9, + 0x4e, 0x19, 0x8a, 0xf6, 0x5b, 0x16, 0x75, 0xaa, 0x50, 0xb6, 0xd1, 0xd7, 0x9d, 0x55, 0x58, 0xb1, + 0x33, 0x9e, 0x46, 0x84, 0x6b, 0x10, 0xe8, 0x35, 0x44, 0x64, 0x7c, 0xd6, 0x79, 0x0f, 0xee, 0xd8, + 0xcb, 0xbc, 0xd3, 0xd9, 0x84, 0x75, 0x7b, 0x7e, 0xed, 0x9d, 0x75, 0x58, 0xb3, 0x67, 0x97, 0xd7, + 0xd9, 0x82, 0x0d, 0x7b, 0xc1, 0x1a, 0xac, 0x6f, 0x73, 0x50, 0x38, 0x3a, 0x3a, 0x26, 0x3f, 0x82, + 0x8a, 0x94, 0x2f, 0xa5, 0x72, 0x7a, 0x0e, 0x97, 0x75, 0x8b, 0x96, 0x95, 0x40, 0x3b, 0x59, 0x6b, + 0x85, 0xd2, 0x26, 0xf4, 0x51, 0x5a, 0xa1, 0xb5, 0x8f, 0x60, 0x4d, 0xf2, 0xd7, 0x2c, 0x14, 0xf6, + 0x98, 0x45, 0xb6, 0x60, 0x2e, 0x0f, 0xbd, 0xb4, 0x36, 0x34, 0xb5, 0xea, 0x94, 0x45, 0x7d, 0x54, + 0x28, 0xcf, 0x00, 0x54, 0x6d, 0xf3, 0xb6, 0xe4, 0xb7, 0x1a, 0xbb, 0xb3, 0x01, 0xc4, 0x9e, 0x1b, + 0xc9, 0xfa, 0xe7, 0x12, 0x14, 0x06, 0x83, 0xbe, 0x99, 0x84, 0x33, 0x3b, 0x45, 0x27, 0x3b, 0xc5, + 0xf3, 0xd9, 0x29, 0x9e, 0x1f, 0x27, 0xe4, 0x55, 0x41, 0x91, 0x4c, 0x6a, 0x2e, 0x28, 0x2a, 0x68, + 0x52, 0x58, 0x1e, 0x14, 0x55, 0xc3, 0xee, 0xc5, 0x41, 0x51, 0xc3, 0x71, 0x4b, 0xf3, 0x41, 0x01, + 0x86, 0xc0, 0x4b, 0x83, 0xa2, 0x8e, 0x80, 0xca, 0x6c, 0x50, 0x3c, 0x86, 0xb5, 0xd0, 0x91, 0x71, + 0xe4, 0x04, 0x2a, 0xf5, 0x99, 0xea, 0x5c, 0x32, 0x59, 0xa0, 0x95, 0x51, 0xa5, 0xe5, 0xf9, 0x31, + 0xac, 0xb1, 0x30, 0x0e, 0x5d, 0x5f, 0x67, 0x0f, 0x6d, 0x51, 0x46, 0x8b, 0x1a, 0x6d, 0x65, 0x54, + 0xa9, 0xc5, 0xe2, 0xc8, 0xd1, 0xa9, 0x17, 0xbe, 0x43, 0xe4, 0x34, 0x71, 0x09, 0xf5, 0xef, 0x12, + 0x39, 0x2d, 0x34, 0x59, 0x59, 0x16, 0x39, 0x86, 0x13, 0x4e, 0x86, 0x1f, 0x6a, 0x63, 0xbf, 0x97, + 0x88, 0x52, 0x1c, 0x9b, 0x73, 0x2d, 0x4a, 0xe7, 0xdc, 0xf7, 0xbd, 0x04, 0xd8, 0x3f, 0x55, 0x61, + 0x25, 0x7b, 0x50, 0xc0, 0x68, 0x89, 0xa3, 0xd0, 0x96, 0xce, 0x6b, 0x3f, 0x1c, 0xce, 0x1c, 0xd3, + 0x9a, 0x4a, 0x35, 0x40, 0x4d, 0xba, 0x4f, 0x4f, 0xe1, 0x76, 0xc4, 0xc4, 0x98, 0x87, 0x82, 0xa5, + 0xd1, 0x3f, 0x7e, 0xf2, 0x38, 0x61, 0x7a, 0xa9, 0x97, 0xa3, 0x1b, 0x09, 0xc0, 0xa4, 0xc6, 0xd3, + 0x27, 0x8f, 0x35, 0xef, 0x17, 0xda, 0xee, 0x3e, 0x51, 0xb6, 0x05, 0xb4, 0xcd, 0xcf, 0xdb, 0xee, + 0x3e, 0xb9, 0xca, 0x76, 0x57, 0xd9, 0x16, 0xd1, 0xb6, 0xb0, 0xc0, 0x76, 0x57, 0xdb, 0xfe, 0x12, + 0xb6, 0xf4, 0x1d, 0xe7, 0xd2, 0x67, 0x81, 0x97, 0x4d, 0xe9, 0x25, 0x13, 0x48, 0xeb, 0xa8, 0xff, + 0x8d, 0x52, 0x4f, 0xe5, 0xf3, 0x2f, 0xe0, 0x36, 0xe3, 0xd2, 0x1e, 0xf9, 0x62, 0x1c, 0x31, 0xcf, + 0xc7, 0x9b, 0x94, 0x39, 0x7a, 0x97, 0x4d, 0x01, 0xd9, 0x64, 0x5c, 0x1e, 0x67, 0xf5, 0x78, 0x04, + 0x57, 0xc6, 0xf7, 0xa1, 0xc1, 0xdf, 0xb0, 0x28, 0x70, 0xc6, 0x76, 0xa4, 0xbc, 0x8d, 0x71, 0x9d, + 0xef, 0x95, 0xe9, 0x8a, 0x11, 0x53, 0x25, 0x35, 0x39, 0x2b, 0x41, 0x8a, 0x31, 0x63, 0xee, 0xc5, + 0xa4, 0xdc, 0x54, 0x68, 0xd3, 0xa8, 0xfa, 0xa8, 0xd1, 0xf3, 0x7a, 0x08, 0x4d, 0xc9, 0xa5, 0x13, + 0x64, 0xe0, 0x35, 0x53, 0x32, 0x1a, 0xa8, 0xc8, 0x82, 0x3f, 0x87, 0x4d, 0xe7, 0xed, 0xeb, 0xb7, + 0x4e, 0xe4, 0xd9, 0xc2, 0x0f, 0xf0, 0x80, 0xad, 0x97, 0x50, 0x37, 0x25, 0x63, 0xdd, 0xa8, 0xfb, + 0x5a, 0x9b, 0x2e, 0x60, 0x1b, 0x5a, 0x71, 0xe8, 0x84, 0xe2, 0xad, 0xe2, 0x94, 0xbe, 0x77, 0x98, + 0xca, 0x04, 0xb4, 0x39, 0xd1, 0xe0, 0xc5, 0xc3, 0x14, 0xcf, 0x97, 0x4e, 0x20, 0x98, 0xed, 0x87, + 0x92, 0x45, 0x51, 0x3c, 0xce, 0xb8, 0xab, 0x61, 0xe2, 0x72, 0x0b, 0x11, 0x87, 0x19, 0x40, 0xfa, + 0xba, 0x2e, 0xbc, 0xaf, 0xb7, 0x29, 0x62, 0x63, 0x8e, 0x77, 0x43, 0xb6, 0xc3, 0xb2, 0xbb, 0xd5, + 0x34, 0x81, 0x7a, 0x07, 0x61, 0xd4, 0xa0, 0xba, 0x3b, 0x2c, 0xbb, 0x67, 0x3a, 0x6f, 0xcf, 0x72, + 0xba, 0x63, 0x41, 0xdb, 0x5e, 0x42, 0xdc, 0x25, 0x3a, 0x24, 0xe6, 0x32, 0x9d, 0x22, 0x5e, 0xe7, + 0x0e, 0xdc, 0xb6, 0x17, 0x13, 0x0b, 0xcd, 0x96, 0x30, 0xa7, 0xd3, 0x82, 0x55, 0x7b, 0x8a, 0x18, + 0x38, 0xe5, 0x39, 0x02, 0x74, 0x08, 0xb4, 0xec, 0x99, 0x5d, 0xee, 0xb4, 0x61, 0xcb, 0x5e, 0xb8, + 0x99, 0x98, 0x07, 0x66, 0x77, 0x0b, 0x2b, 0xf6, 0xb2, 0x2d, 0xe9, 0xdc, 0x85, 0x0f, 0xec, 0x2b, + 0x1d, 0x6e, 0xfd, 0x7d, 0x0e, 0x6a, 0xe9, 0x35, 0x00, 0x93, 0xba, 0x13, 0x05, 0x97, 0xb6, 0x64, + 0xd1, 0xc8, 0x0f, 0x9d, 0xf4, 0xfb, 0x61, 0xb5, 0x77, 0x8b, 0xb6, 0x50, 0x35, 0x98, 0x68, 0x0c, + 0x81, 0xd4, 0x68, 0x53, 0x06, 0x79, 0x34, 0xc8, 0xd1, 0xa6, 0xd2, 0x4c, 0xe3, 0x75, 0xe2, 0x9b, + 0x7d, 0x05, 0xae, 0x6c, 0x76, 0x18, 0xeb, 0xdb, 0x2a, 0x14, 0x15, 0xf1, 0xc8, 0x06, 0x94, 0xfc, + 0xd0, 0x63, 0xef, 0x74, 0x19, 0xa6, 0xfa, 0x81, 0x3c, 0x84, 0x62, 0xc4, 0x03, 0x66, 0xbe, 0xa4, + 0xdc, 0x5e, 0xf0, 0x8d, 0x94, 0xf2, 0x80, 0x51, 0x04, 0x91, 0x0f, 0xa0, 0x8a, 0xdf, 0x17, 0x92, + 0x44, 0xa4, 0x8a, 0x79, 0x05, 0x25, 0x3a, 0x80, 0x2c, 0x28, 0xb3, 0xd0, 0x4b, 0x52, 0x0d, 0x1e, + 0x57, 0x59, 0xe8, 0x1d, 0x27, 0x97, 0x80, 0xe9, 0x23, 0x91, 0xc7, 0x02, 0x27, 0x93, 0x5b, 0xf2, + 0x74, 0x63, 0x4a, 0x7f, 0xa0, 0xd4, 0xda, 0xf4, 0x63, 0xa8, 0x07, 0xc1, 0x28, 0x39, 0x7b, 0x98, + 0x84, 0x52, 0xa0, 0xb5, 0x20, 0x18, 0x0d, 0xd2, 0xc3, 0xce, 0x04, 0x84, 0x07, 0x9e, 0x8a, 0x49, + 0x58, 0x06, 0x74, 0xd5, 0x99, 0xa7, 0x6a, 0x8e, 0x01, 0x0b, 0xce, 0x3c, 0x6a, 0x54, 0x29, 0x45, + 0x52, 0xca, 0x4c, 0xee, 0x28, 0xd3, 0x9a, 0x94, 0x62, 0x90, 0x1e, 0x53, 0xae, 0x8d, 0x47, 0x30, + 0x19, 0xea, 0xca, 0x78, 0x24, 0x9f, 0xc1, 0xfa, 0x5c, 0x00, 0x8d, 0xf4, 0x59, 0xa3, 0xd4, 0xab, + 0xd2, 0xb5, 0x99, 0xac, 0x7d, 0x5d, 0xca, 0x5e, 0x49, 0x93, 0xd6, 0xe2, 0x94, 0xbd, 0xb0, 0xa2, + 0x35, 0xcc, 0x39, 0x62, 0x51, 0x45, 0x5b, 0x78, 0xdb, 0xab, 0xcf, 0xdd, 0xf6, 0x14, 0xfb, 0x67, + 0x03, 0xda, 0x5c, 0xf4, 0x56, 0x68, 0x6b, 0xb6, 0x08, 0x98, 0x6f, 0x14, 0x33, 0xa1, 0x6a, 0xee, + 0x78, 0x0d, 0xba, 0x3a, 0x9d, 0x71, 0xf5, 0x96, 0xc0, 0x24, 0x7c, 0xcd, 0xc5, 0x6e, 0x95, 0x66, + 0x64, 0x2a, 0x40, 0xea, 0x50, 0xb3, 0x13, 0xaa, 0x76, 0x6a, 0x50, 0xb1, 0x35, 0x2f, 0x31, 0x13, + 0x2d, 0xa6, 0x21, 0x1e, 0x39, 0x32, 0x34, 0xcb, 0x3e, 0x2f, 0x3f, 0xe6, 0x22, 0x2a, 0xc3, 0x90, + 0xeb, 0x73, 0x05, 0x1e, 0x39, 0x16, 0xec, 0xf3, 0x55, 0x49, 0x72, 0x71, 0xa6, 0xc6, 0x33, 0xd2, + 0xc4, 0xf7, 0x3a, 0x29, 0xcc, 0x7a, 0x1e, 0x93, 0xe3, 0x8c, 0x77, 0x3b, 0x0d, 0xa8, 0x67, 0x52, + 0x60, 0x67, 0x0d, 0x9a, 0xf6, 0xf4, 0x07, 0x28, 0x7d, 0x58, 0x9a, 0xf9, 0xce, 0xa4, 0xf3, 0xec, + 0xf4, 0xc7, 0xa4, 0xb9, 0x49, 0xa8, 0x55, 0x2c, 0xbe, 0xec, 0xe3, 0x98, 0xb3, 0x97, 0xf9, 0xce, + 0x6d, 0xd8, 0xb4, 0x17, 0xdd, 0xd8, 0x31, 0x81, 0x2f, 0xbc, 0x92, 0x63, 0xae, 0x5e, 0x76, 0xe7, + 0xb6, 0xfe, 0xb3, 0x00, 0x30, 0xf9, 0xdc, 0xfc, 0x83, 0x7e, 0x5a, 0xfb, 0x13, 0x20, 0x69, 0x0f, + 0x62, 0xec, 0x08, 0xa1, 0x6a, 0x14, 0x4b, 0x2f, 0x2b, 0xad, 0x44, 0x77, 0xea, 0x08, 0x41, 0x1d, + 0xc9, 0xfe, 0xff, 0xfb, 0xda, 0x8d, 0x89, 0xa6, 0x4e, 0xf0, 0xf3, 0xae, 0xb5, 0xfe, 0xa7, 0x00, + 0xe5, 0x7d, 0xec, 0x28, 0x59, 0xff, 0x95, 0x87, 0x0a, 0x65, 0x48, 0x8d, 0x99, 0x76, 0x59, 0x6e, + 0xb6, 0x5d, 0x36, 0xdd, 0x49, 0xca, 0xcf, 0x76, 0x92, 0x16, 0x34, 0x5c, 0x8a, 0x0b, 0x1b, 0x2e, + 0x5b, 0x50, 0x8e, 0xd8, 0x50, 0xb9, 0xa2, 0x6c, 0xbe, 0x8b, 0xe3, 0x13, 0xe9, 0xcc, 0xb5, 0xa2, + 0x2a, 0x57, 0xb5, 0xa2, 0x14, 0xf5, 0xa6, 0x9a, 0x51, 0x99, 0xd4, 0x9a, 0x34, 0x66, 0xaa, 0xe6, + 0x82, 0x90, 0x15, 0xea, 0xd3, 0xac, 0xee, 0xce, 0xd4, 0x6e, 0xd0, 0x9d, 0x41, 0x67, 0x4f, 0x4f, + 0x2c, 0x0d, 0x56, 0x33, 0xe4, 0xf3, 0x62, 0xb5, 0xd0, 0x2a, 0xd2, 0xf9, 0xb6, 0xa0, 0xf5, 0xb7, + 0x39, 0xa8, 0x52, 0x93, 0xa3, 0xc8, 0x03, 0x58, 0x9b, 0x78, 0xc7, 0x8e, 0xe2, 0x70, 0xe2, 0xe6, + 0xa6, 0xc8, 0xb2, 0xe0, 0xd0, 0x23, 0x7d, 0xd8, 0x1a, 0x47, 0x4c, 0xf8, 0xc3, 0x90, 0x79, 0xf6, + 0x98, 0x0b, 0x95, 0x06, 0x71, 0x97, 0x4c, 0x13, 0x76, 0xd2, 0xab, 0x3c, 0x4d, 0x60, 0xa7, 0x5c, + 0x48, 0xb3, 0x95, 0x74, 0x63, 0xbc, 0x40, 0x6a, 0x7d, 0x9b, 0x83, 0xf5, 0x7d, 0x1e, 0xbe, 0xf4, + 0xa3, 0x51, 0x9f, 0xc7, 0x91, 0xcb, 0xce, 0xc6, 0x01, 0x77, 0x3c, 0xeb, 0x6f, 0x6e, 0xcc, 0x81, + 0x85, 0x4b, 0xc8, 0x2f, 0x5e, 0xc2, 0x4f, 0xa1, 0xe9, 0x72, 0x8f, 0xa9, 0x6b, 0x61, 0x74, 0x39, + 0xe6, 0x7e, 0x28, 0x4d, 0x97, 0x68, 0x55, 0x89, 0xbb, 0xa9, 0xd4, 0x82, 0x89, 0x8f, 0xac, 0xbf, + 0xcb, 0x41, 0xe1, 0x19, 0x93, 0xd6, 0xe0, 0x87, 0x98, 0x92, 0xf5, 0xf3, 0xcc, 0x6e, 0xdc, 0x87, + 0x42, 0x14, 0xeb, 0xe3, 0xe4, 0x14, 0xc7, 0xb2, 0x26, 0x54, 0x41, 0xac, 0x7f, 0xcd, 0x43, 0xf1, + 0xc8, 0x17, 0xd2, 0xfa, 0x97, 0xdc, 0x8d, 0x67, 0xf5, 0x74, 0xa6, 0xb5, 0x76, 0x75, 0x6f, 0xb9, + 0x77, 0x2b, 0x69, 0xac, 0x29, 0x76, 0xfe, 0x0a, 0x60, 0xec, 0x0c, 0x99, 0x2e, 0x92, 0xe8, 0xb3, + 0xfa, 0x4e, 0x3b, 0xb5, 0x1f, 0x28, 0xe9, 0xa9, 0x33, 0x34, 0xe7, 0xd2, 0x5e, 0x8e, 0xd6, 0x14, + 0x1a, 0xc5, 0xaa, 0x62, 0xab, 0x22, 0xad, 0xc7, 0xc2, 0xf2, 0x34, 0x19, 0xc9, 0x7a, 0x37, 0xc5, + 0xc5, 0x62, 0x14, 0x87, 0xa2, 0x9d, 0xc3, 0xaf, 0xea, 0xcb, 0x96, 0x8f, 0x18, 0xf2, 0x67, 0xd0, + 0x0c, 0xd9, 0x3b, 0x99, 0x19, 0xca, 0x90, 0x70, 0xe9, 0xa4, 0x68, 0x43, 0x19, 0x9c, 0x26, 0xd3, + 0xb2, 0x5e, 0x41, 0x79, 0xdf, 0x09, 0x5d, 0x16, 0xfc, 0x40, 0xfb, 0x9a, 0x65, 0xd0, 0x0f, 0xdc, + 0xe9, 0xfa, 0x7d, 0x2e, 0x6d, 0x75, 0xdd, 0x81, 0xcd, 0xe9, 0x56, 0x97, 0x7d, 0x76, 0x7a, 0xf4, + 0x62, 0xef, 0xa0, 0x75, 0x8b, 0x6c, 0xc2, 0x9a, 0x51, 0x3d, 0xeb, 0x9e, 0x74, 0xe9, 0xde, 0x40, + 0x37, 0xbd, 0xe6, 0x1b, 0x61, 0x79, 0xb2, 0x05, 0xc4, 0xc8, 0xfa, 0x67, 0xc7, 0xc7, 0x7b, 0xf4, + 0xf0, 0x6b, 0x25, 0x2f, 0x2c, 0x6c, 0x90, 0x15, 0xe7, 0x1b, 0x64, 0xa5, 0x85, 0x0d, 0xb2, 0xf2, + 0xf3, 0x62, 0xb5, 0xda, 0xaa, 0xd1, 0x8a, 0x69, 0x03, 0xdf, 0xfb, 0x7d, 0x01, 0xaa, 0x49, 0xfa, + 0x9c, 0xf4, 0x54, 0x73, 0xd9, 0x9e, 0xea, 0x6c, 0x4b, 0x37, 0xbf, 0xa0, 0xa5, 0xbb, 0xb8, 0x79, + 0x5b, 0x58, 0xd6, 0xbc, 0x7d, 0x64, 0xda, 0xb4, 0x45, 0x64, 0xd9, 0x7b, 0x73, 0x89, 0x7c, 0x7b, + 0xe0, 0x0c, 0x85, 0xfe, 0x5f, 0x8a, 0xee, 0xe1, 0x5a, 0x50, 0x8d, 0x05, 0x8b, 0x3c, 0x47, 0x3a, + 0xa6, 0x25, 0x9c, 0x3e, 0x5b, 0xff, 0x98, 0x83, 0x35, 0x5d, 0xb5, 0xbe, 0x8c, 0xf8, 0xc8, 0xb4, + 0x59, 0xac, 0xdf, 0xdc, 0x98, 0x50, 0x99, 0x86, 0x6c, 0x7e, 0xaa, 0x21, 0x3b, 0x29, 0x48, 0x85, + 0x6c, 0x41, 0xb2, 0x76, 0x33, 0xf1, 0xf2, 0x33, 0xa8, 0x26, 0x35, 0xc0, 0xa4, 0x8c, 0xb5, 0xb9, + 0xd5, 0xd0, 0x14, 0x62, 0x7d, 0x0e, 0xb5, 0x74, 0x69, 0x0b, 0xfe, 0x51, 0xb3, 0x91, 0xfd, 0x47, + 0x4d, 0x2d, 0xf3, 0xaf, 0x99, 0x7b, 0x03, 0x68, 0x4c, 0x55, 0x39, 0x42, 0xa0, 0x88, 0xf5, 0x56, + 0x5b, 0xe3, 0x6f, 0xf2, 0x08, 0x6a, 0xc9, 0x9b, 0xd4, 0x36, 0x15, 0x16, 0xcf, 0x66, 0x82, 0xb9, + 0xf7, 0xc7, 0x1c, 0x90, 0x49, 0x64, 0x1f, 0xf8, 0x62, 0xec, 0x48, 0xf7, 0xe2, 0x3b, 0x15, 0xa4, + 0x4d, 0x28, 0xbf, 0xe2, 0xe7, 0x13, 0xe7, 0x95, 0x5e, 0xf1, 0xf3, 0x43, 0x6f, 0xca, 0x2f, 0x85, + 0x6b, 0xfd, 0x92, 0x16, 0xde, 0xe2, 0x0d, 0x0a, 0xef, 0x83, 0x97, 0xb0, 0x3a, 0x2d, 0x27, 0x1f, + 0xc2, 0x7b, 0xfd, 0xc3, 0xe3, 0xb3, 0xa3, 0xbd, 0xc1, 0xe1, 0x8b, 0x13, 0xfb, 0xf8, 0xc5, 0x41, + 0xd7, 0x3e, 0x3b, 0xe9, 0x9f, 0x76, 0xf7, 0x0f, 0xbf, 0x3c, 0xec, 0xaa, 0xb8, 0x6b, 0xc3, 0xc6, + 0x2c, 0x60, 0xd0, 0xfd, 0xcb, 0x41, 0x2b, 0x87, 0xc1, 0x3a, 0xa3, 0xd9, 0x3b, 0x3b, 0x38, 0x7c, + 0xd1, 0xca, 0xef, 0xfc, 0x43, 0x09, 0x9a, 0x7b, 0x8a, 0xbb, 0x93, 0xb7, 0x11, 0x0f, 0xd6, 0x35, + 0xd7, 0xa6, 0xff, 0x61, 0xb4, 0xec, 0xe0, 0xa7, 0xb1, 0xdb, 0x49, 0xa1, 0xfd, 0xe4, 0x3a, 0x98, + 0x61, 0xd5, 0x37, 0x39, 0x78, 0x3f, 0x29, 0xc8, 0x29, 0x30, 0x5b, 0x9a, 0xc9, 0xce, 0xb2, 0x91, + 0xe6, 0xcb, 0x78, 0xfa, 0xf6, 0xcf, 0xbe, 0x93, 0x8d, 0x99, 0xca, 0x5f, 0x41, 0xeb, 0x19, 0x93, + 0xd3, 0xab, 0xbd, 0xb7, 0x64, 0xa0, 0x67, 0x4c, 0xa6, 0x2f, 0xfb, 0xf8, 0x4a, 0x8c, 0x19, 0xdc, + 0x06, 0xa2, 0x0a, 0xe8, 0x14, 0x42, 0x90, 0x65, 0xa6, 0x0a, 0x9a, 0x8e, 0xff, 0xe3, 0xab, 0x41, + 0xe6, 0x05, 0x6a, 0xbb, 0xb0, 0xc0, 0xdc, 0x70, 0xbb, 0x10, 0x7b, 0xfd, 0x76, 0x25, 0x30, 0xf3, + 0x96, 0x37, 0x70, 0xc7, 0x90, 0xc2, 0xf0, 0x39, 0x93, 0x88, 0xc8, 0xc3, 0xf9, 0xec, 0x36, 0x97, + 0xad, 0xd2, 0x37, 0x7e, 0x7a, 0x33, 0xb0, 0x7e, 0x6f, 0xe7, 0xcb, 0xaf, 0x3f, 0x1e, 0xfa, 0xf2, + 0x22, 0x3e, 0xdf, 0x76, 0xf9, 0x28, 0xf9, 0xe7, 0xa4, 0xfe, 0x77, 0xa4, 0xcb, 0x83, 0x44, 0xf0, + 0x87, 0x7c, 0xe3, 0xc8, 0x7f, 0xc3, 0xfe, 0x1c, 0xcf, 0x84, 0x5c, 0xf2, 0xff, 0xce, 0xaf, 0x9a, + 0xe7, 0xa7, 0x4f, 0x51, 0x70, 0x5e, 0x46, 0x93, 0xcf, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xff, 0x65, + 0xeb, 0xa0, 0xd1, 0xac, 0x29, 0x00, 0x00, } From 1ddbe5bd18d6a785eadc95444036f8be5863b783 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Sun, 2 Aug 2026 22:24:48 -0700 Subject: [PATCH 23/32] agent-simulation: align turn names with their groups, drop unwritten fields A turn field and the group that aggregates it now share a name, so the relationship is readable: stt_delay fed transcription_latency_ms on the group but transcription_delay_ms on the turn, hiding that they are the same measurement. Removed what nothing writes: ttfa_ms (the agent reports no time-to-first- audio), naturalness_score and enunciation_score (no audio judge exists), and audio_judge_model, which named that judge. --- protobufs/livekit_agent_simulation.proto | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/protobufs/livekit_agent_simulation.proto b/protobufs/livekit_agent_simulation.proto index aed0f52ef..b3d538e67 100644 --- a/protobufs/livekit_agent_simulation.proto +++ b/protobufs/livekit_agent_simulation.proto @@ -97,7 +97,6 @@ message SimulationRun { repeated Turn turns = 9; string judge_model = 10; // text judge for judged scores; "" if none ran - string audio_judge_model = 11; // audio (LALM) judge; "" if none ran bool has_remote_session = 12; // false = waveform-only capture (e.g. SIP) google.protobuf.Timestamp t0 = 13; // audio only; call start (first speech edge); turn times relative to it @@ -134,7 +133,6 @@ message SimulationRun { // The agent's voice. Audio only. message TTS { - optional uint32 ttfa_ms = 1; // needs the RemoteSession optional uint32 ttfb_ms = 2; // needs the RemoteSession; provider byte-level TTFB optional float wer = 3; // needs the RemoteSession; word_errors / words optional uint32 words = 7; // needs the RemoteSession @@ -142,8 +140,6 @@ message SimulationRun { optional float cer = 9; // needs the RemoteSession; char_errors / chars optional uint32 chars = 10; // needs the RemoteSession optional uint32 char_errors = 11; // needs the RemoteSession - optional float naturalness_score = 5; // needs the audio judge; 0-1, prosody / expressiveness - optional float enunciation_score = 6; // needs the audio judge; 0-1, key entities audibly intact // Key entities the agent said, as the caller heard them. Needs the text judge. optional float entity_recognition = 14; // recognized / uttered @@ -183,7 +179,7 @@ message SimulationRun { optional uint32 start_ms = 3; // audio only; relative to t0; unset if the turn could not be aligned to the audio optional uint32 end_ms = 4; // audio only - optional uint32 transcription_delay_ms = 5; // needs the RemoteSession; simulator turns + optional uint32 transcription_latency_ms = 5; // needs the RemoteSession; simulator turns optional uint32 llm_ttft_ms = 6; // needs the RemoteSession optional uint32 llm_ttfs_ms = 7; // needs the RemoteSession optional float tokens_per_second = 8; // needs the RemoteSession From 6ab81eda68c5a913c9bec63d0006eea0c4f419d3 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 05:25:49 +0000 Subject: [PATCH 24/32] generated protobuf --- livekit/livekit_agent_simulation.pb.go | 107 ++---- livekit/livekit_agent_simulation.twirp.go | 439 +++++++++++----------- 2 files changed, 250 insertions(+), 296 deletions(-) diff --git a/livekit/livekit_agent_simulation.pb.go b/livekit/livekit_agent_simulation.pb.go index cf51218bc..1ac87ebc5 100644 --- a/livekit/livekit_agent_simulation.pb.go +++ b/livekit/livekit_agent_simulation.pb.go @@ -902,7 +902,6 @@ type SimulationRun_JobMetrics struct { // One entry per turn, both speakers. Turns []*SimulationRun_JobMetrics_Turn `protobuf:"bytes,9,rep,name=turns,proto3" json:"turns,omitempty"` JudgeModel string `protobuf:"bytes,10,opt,name=judge_model,json=judgeModel,proto3" json:"judge_model,omitempty"` // text judge for judged scores; "" if none ran - AudioJudgeModel string `protobuf:"bytes,11,opt,name=audio_judge_model,json=audioJudgeModel,proto3" json:"audio_judge_model,omitempty"` // audio (LALM) judge; "" if none ran HasRemoteSession bool `protobuf:"varint,12,opt,name=has_remote_session,json=hasRemoteSession,proto3" json:"has_remote_session,omitempty"` // false = waveform-only capture (e.g. SIP) T0 *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=t0,proto3" json:"t0,omitempty"` // audio only; call start (first speech edge); turn times relative to it // Judged over the authored dialog (text and audio); needs the text judge. @@ -1017,13 +1016,6 @@ func (x *SimulationRun_JobMetrics) GetJudgeModel() string { return "" } -func (x *SimulationRun_JobMetrics) GetAudioJudgeModel() string { - if x != nil { - return x.AudioJudgeModel - } - return "" -} - func (x *SimulationRun_JobMetrics) GetHasRemoteSession() bool { if x != nil { return x.HasRemoteSession @@ -1638,17 +1630,14 @@ func (x *SimulationRun_JobMetrics_LLM) GetTokensPerSecond() float32 { // The agent's voice. Audio only. type SimulationRun_JobMetrics_TTS struct { - state protoimpl.MessageState `protogen:"open.v1"` - TtfaMs *uint32 `protobuf:"varint,1,opt,name=ttfa_ms,json=ttfaMs,proto3,oneof" json:"ttfa_ms,omitempty"` // needs the RemoteSession - TtfbMs *uint32 `protobuf:"varint,2,opt,name=ttfb_ms,json=ttfbMs,proto3,oneof" json:"ttfb_ms,omitempty"` // needs the RemoteSession; provider byte-level TTFB - Wer *float32 `protobuf:"fixed32,3,opt,name=wer,proto3,oneof" json:"wer,omitempty"` // needs the RemoteSession; word_errors / words - Words *uint32 `protobuf:"varint,7,opt,name=words,proto3,oneof" json:"words,omitempty"` // needs the RemoteSession - WordErrors *uint32 `protobuf:"varint,8,opt,name=word_errors,json=wordErrors,proto3,oneof" json:"word_errors,omitempty"` // needs the RemoteSession - Cer *float32 `protobuf:"fixed32,9,opt,name=cer,proto3,oneof" json:"cer,omitempty"` // needs the RemoteSession; char_errors / chars - Chars *uint32 `protobuf:"varint,10,opt,name=chars,proto3,oneof" json:"chars,omitempty"` // needs the RemoteSession - CharErrors *uint32 `protobuf:"varint,11,opt,name=char_errors,json=charErrors,proto3,oneof" json:"char_errors,omitempty"` // needs the RemoteSession - NaturalnessScore *float32 `protobuf:"fixed32,5,opt,name=naturalness_score,json=naturalnessScore,proto3,oneof" json:"naturalness_score,omitempty"` // needs the audio judge; 0-1, prosody / expressiveness - EnunciationScore *float32 `protobuf:"fixed32,6,opt,name=enunciation_score,json=enunciationScore,proto3,oneof" json:"enunciation_score,omitempty"` // needs the audio judge; 0-1, key entities audibly intact + state protoimpl.MessageState `protogen:"open.v1"` + TtfbMs *uint32 `protobuf:"varint,2,opt,name=ttfb_ms,json=ttfbMs,proto3,oneof" json:"ttfb_ms,omitempty"` // needs the RemoteSession; provider byte-level TTFB + Wer *float32 `protobuf:"fixed32,3,opt,name=wer,proto3,oneof" json:"wer,omitempty"` // needs the RemoteSession; word_errors / words + Words *uint32 `protobuf:"varint,7,opt,name=words,proto3,oneof" json:"words,omitempty"` // needs the RemoteSession + WordErrors *uint32 `protobuf:"varint,8,opt,name=word_errors,json=wordErrors,proto3,oneof" json:"word_errors,omitempty"` // needs the RemoteSession + Cer *float32 `protobuf:"fixed32,9,opt,name=cer,proto3,oneof" json:"cer,omitempty"` // needs the RemoteSession; char_errors / chars + Chars *uint32 `protobuf:"varint,10,opt,name=chars,proto3,oneof" json:"chars,omitempty"` // needs the RemoteSession + CharErrors *uint32 `protobuf:"varint,11,opt,name=char_errors,json=charErrors,proto3,oneof" json:"char_errors,omitempty"` // needs the RemoteSession // Key entities the agent said, as the caller heard them. Needs the text judge. EntityRecognition *float32 `protobuf:"fixed32,14,opt,name=entity_recognition,json=entityRecognition,proto3,oneof" json:"entity_recognition,omitempty"` // recognized / uttered EntitiesUttered *uint32 `protobuf:"varint,15,opt,name=entities_uttered,json=entitiesUttered,proto3,oneof" json:"entities_uttered,omitempty"` @@ -1687,13 +1676,6 @@ func (*SimulationRun_JobMetrics_TTS) Descriptor() ([]byte, []int) { return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 1, 2} } -func (x *SimulationRun_JobMetrics_TTS) GetTtfaMs() uint32 { - if x != nil && x.TtfaMs != nil { - return *x.TtfaMs - } - return 0 -} - func (x *SimulationRun_JobMetrics_TTS) GetTtfbMs() uint32 { if x != nil && x.TtfbMs != nil { return *x.TtfbMs @@ -1743,20 +1725,6 @@ func (x *SimulationRun_JobMetrics_TTS) GetCharErrors() uint32 { return 0 } -func (x *SimulationRun_JobMetrics_TTS) GetNaturalnessScore() float32 { - if x != nil && x.NaturalnessScore != nil { - return *x.NaturalnessScore - } - return 0 -} - -func (x *SimulationRun_JobMetrics_TTS) GetEnunciationScore() float32 { - if x != nil && x.EnunciationScore != nil { - return *x.EnunciationScore - } - return 0 -} - func (x *SimulationRun_JobMetrics_TTS) GetEntityRecognition() float32 { if x != nil && x.EntityRecognition != nil { return *x.EntityRecognition @@ -1981,7 +1949,7 @@ type SimulationRun_JobMetrics_Turn struct { Role agent.ChatRole `protobuf:"varint,2,opt,name=role,proto3,enum=livekit.agent.ChatRole" json:"role,omitempty"` // ASSISTANT = the agent under test, USER = simulator persona StartMs *uint32 `protobuf:"varint,3,opt,name=start_ms,json=startMs,proto3,oneof" json:"start_ms,omitempty"` // audio only; relative to t0; unset if the turn could not be aligned to the audio EndMs *uint32 `protobuf:"varint,4,opt,name=end_ms,json=endMs,proto3,oneof" json:"end_ms,omitempty"` // audio only - TranscriptionDelayMs *uint32 `protobuf:"varint,5,opt,name=transcription_delay_ms,json=transcriptionDelayMs,proto3,oneof" json:"transcription_delay_ms,omitempty"` // needs the RemoteSession; simulator turns + TranscriptionLatencyMs *uint32 `protobuf:"varint,5,opt,name=transcription_latency_ms,json=transcriptionLatencyMs,proto3,oneof" json:"transcription_latency_ms,omitempty"` // needs the RemoteSession; simulator turns LlmTtftMs *uint32 `protobuf:"varint,6,opt,name=llm_ttft_ms,json=llmTtftMs,proto3,oneof" json:"llm_ttft_ms,omitempty"` // needs the RemoteSession LlmTtfsMs *uint32 `protobuf:"varint,7,opt,name=llm_ttfs_ms,json=llmTtfsMs,proto3,oneof" json:"llm_ttfs_ms,omitempty"` // needs the RemoteSession TokensPerSecond *float32 `protobuf:"fixed32,8,opt,name=tokens_per_second,json=tokensPerSecond,proto3,oneof" json:"tokens_per_second,omitempty"` // needs the RemoteSession @@ -2056,9 +2024,9 @@ func (x *SimulationRun_JobMetrics_Turn) GetEndMs() uint32 { return 0 } -func (x *SimulationRun_JobMetrics_Turn) GetTranscriptionDelayMs() uint32 { - if x != nil && x.TranscriptionDelayMs != nil { - return *x.TranscriptionDelayMs +func (x *SimulationRun_JobMetrics_Turn) GetTranscriptionLatencyMs() uint32 { + if x != nil && x.TranscriptionLatencyMs != nil { + return *x.TranscriptionLatencyMs } return 0 } @@ -2850,7 +2818,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\n" + "suggestion\x18\x02 \x01(\tR\n" + "suggestion\x12\x14\n" + - "\x05label\x18\x03 \x01(\tR\x05label\"\xaaB\n" + + "\x05label\x18\x03 \x01(\tR\x05label\"\xca@\n" + "\rSimulationRun\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + "\n" + @@ -2900,7 +2868,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x10STATUS_COMPLETED\x10\x02\x12\x11\n" + "\rSTATUS_FAILED\x10\x03\x12\x14\n" + "\x10STATUS_CANCELLED\x10\x04J\x04\b\t\x10\n" + - "\x1a\xd8&\n" + + "\x1a\xf8$\n" + "\n" + "JobMetrics\x12*\n" + "\x0eaccuracy_score\x18\x01 \x01(\x02H\x00R\raccuracyScore\x88\x01\x01\x12.\n" + @@ -2914,8 +2882,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x05turns\x18\t \x03(\v2&.livekit.SimulationRun.JobMetrics.TurnR\x05turns\x12\x1f\n" + "\vjudge_model\x18\n" + " \x01(\tR\n" + - "judgeModel\x12*\n" + - "\x11audio_judge_model\x18\v \x01(\tR\x0faudioJudgeModel\x12,\n" + + "judgeModel\x12,\n" + "\x12has_remote_session\x18\f \x01(\bR\x10hasRemoteSession\x12*\n" + "\x02t0\x18\r \x01(\v2\x1a.google.protobuf.TimestampR\x02t0\x12%\n" + "\vconciseness\x18\x0e \x01(\x02H\x03R\vconciseness\x88\x01\x01\x129\n" + @@ -2956,27 +2923,21 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\b_ttft_msB\n" + "\n" + "\b_ttfs_msB\x14\n" + - "\x12_tokens_per_second\x1a\xbb\x05\n" + + "\x12_tokens_per_second\x1a\x81\x04\n" + "\x03TTS\x12\x1c\n" + - "\attfa_ms\x18\x01 \x01(\rH\x00R\x06ttfaMs\x88\x01\x01\x12\x1c\n" + - "\attfb_ms\x18\x02 \x01(\rH\x01R\x06ttfbMs\x88\x01\x01\x12\x15\n" + - "\x03wer\x18\x03 \x01(\x02H\x02R\x03wer\x88\x01\x01\x12\x19\n" + - "\x05words\x18\a \x01(\rH\x03R\x05words\x88\x01\x01\x12$\n" + - "\vword_errors\x18\b \x01(\rH\x04R\n" + + "\attfb_ms\x18\x02 \x01(\rH\x00R\x06ttfbMs\x88\x01\x01\x12\x15\n" + + "\x03wer\x18\x03 \x01(\x02H\x01R\x03wer\x88\x01\x01\x12\x19\n" + + "\x05words\x18\a \x01(\rH\x02R\x05words\x88\x01\x01\x12$\n" + + "\vword_errors\x18\b \x01(\rH\x03R\n" + "wordErrors\x88\x01\x01\x12\x15\n" + - "\x03cer\x18\t \x01(\x02H\x05R\x03cer\x88\x01\x01\x12\x19\n" + + "\x03cer\x18\t \x01(\x02H\x04R\x03cer\x88\x01\x01\x12\x19\n" + "\x05chars\x18\n" + - " \x01(\rH\x06R\x05chars\x88\x01\x01\x12$\n" + - "\vchar_errors\x18\v \x01(\rH\aR\n" + - "charErrors\x88\x01\x01\x120\n" + - "\x11naturalness_score\x18\x05 \x01(\x02H\bR\x10naturalnessScore\x88\x01\x01\x120\n" + - "\x11enunciation_score\x18\x06 \x01(\x02H\tR\x10enunciationScore\x88\x01\x01\x122\n" + - "\x12entity_recognition\x18\x0e \x01(\x02H\n" + - "R\x11entityRecognition\x88\x01\x01\x12.\n" + - "\x10entities_uttered\x18\x0f \x01(\rH\vR\x0fentitiesUttered\x88\x01\x01\x124\n" + - "\x13entities_recognized\x18\x10 \x01(\rH\fR\x12entitiesRecognized\x88\x01\x01B\n" + - "\n" + - "\b_ttfa_msB\n" + + " \x01(\rH\x05R\x05chars\x88\x01\x01\x12$\n" + + "\vchar_errors\x18\v \x01(\rH\x06R\n" + + "charErrors\x88\x01\x01\x122\n" + + "\x12entity_recognition\x18\x0e \x01(\x02H\aR\x11entityRecognition\x88\x01\x01\x12.\n" + + "\x10entities_uttered\x18\x0f \x01(\rH\bR\x0fentitiesUttered\x88\x01\x01\x124\n" + + "\x13entities_recognized\x18\x10 \x01(\rH\tR\x12entitiesRecognized\x88\x01\x01B\n" + "\n" + "\b_ttfb_msB\x06\n" + "\x04_werB\b\n" + @@ -2984,9 +2945,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\f_word_errorsB\x06\n" + "\x04_cerB\b\n" + "\x06_charsB\x0e\n" + - "\f_char_errorsB\x14\n" + - "\x12_naturalness_scoreB\x14\n" + - "\x12_enunciation_scoreB\x15\n" + + "\f_char_errorsB\x15\n" + "\x13_entity_recognitionB\x13\n" + "\x11_entities_utteredB\x16\n" + "\x14_entities_recognized\x1a\xac\b\n" + @@ -3022,13 +2981,13 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x11early_termination\x18\x01 \x01(\bH\x00R\x10earlyTermination\x88\x01\x01\x12.\n" + "\x10late_termination\x18\x02 \x01(\bH\x01R\x0flateTermination\x88\x01\x01B\x14\n" + "\x12_early_terminationB\x13\n" + - "\x11_late_termination\x1a\xa0\b\n" + + "\x11_late_termination\x1a\xa6\b\n" + "\x04Turn\x12\x14\n" + "\x05index\x18\x01 \x01(\rR\x05index\x12+\n" + "\x04role\x18\x02 \x01(\x0e2\x17.livekit.agent.ChatRoleR\x04role\x12\x1e\n" + "\bstart_ms\x18\x03 \x01(\rH\x00R\astartMs\x88\x01\x01\x12\x1a\n" + - "\x06end_ms\x18\x04 \x01(\rH\x01R\x05endMs\x88\x01\x01\x129\n" + - "\x16transcription_delay_ms\x18\x05 \x01(\rH\x02R\x14transcriptionDelayMs\x88\x01\x01\x12#\n" + + "\x06end_ms\x18\x04 \x01(\rH\x01R\x05endMs\x88\x01\x01\x12=\n" + + "\x18transcription_latency_ms\x18\x05 \x01(\rH\x02R\x16transcriptionLatencyMs\x88\x01\x01\x12#\n" + "\vllm_ttft_ms\x18\x06 \x01(\rH\x03R\tllmTtftMs\x88\x01\x01\x12#\n" + "\vllm_ttfs_ms\x18\a \x01(\rH\x04R\tllmTtfsMs\x88\x01\x01\x12/\n" + "\x11tokens_per_second\x18\b \x01(\x02H\x05R\x0ftokensPerSecond\x88\x01\x01\x12#\n" + @@ -3046,8 +3005,8 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "unanswered\x18\x11 \x01(\bH\x0eR\n" + "unanswered\x88\x01\x01B\v\n" + "\t_start_msB\t\n" + - "\a_end_msB\x19\n" + - "\x17_transcription_delay_msB\x0e\n" + + "\a_end_msB\x1b\n" + + "\x19_transcription_latency_msB\x0e\n" + "\f_llm_ttft_msB\x0e\n" + "\f_llm_ttfs_msB\x14\n" + "\x12_tokens_per_secondB\x0e\n" + diff --git a/livekit/livekit_agent_simulation.twirp.go b/livekit/livekit_agent_simulation.twirp.go index 72b583d91..04305216b 100644 --- a/livekit/livekit_agent_simulation.twirp.go +++ b/livekit/livekit_agent_simulation.twirp.go @@ -1912,226 +1912,221 @@ func (s *agentSimulationServer) PathPrefix() string { } var twirpFileDescriptor9 = []byte{ - // 3527 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x73, 0x1b, 0x47, - 0x76, 0x17, 0xbe, 0x81, 0x07, 0x82, 0x00, 0x9b, 0x1f, 0x82, 0xc6, 0x6b, 0x5b, 0x96, 0x77, 0xbd, - 0x2a, 0xc9, 0x4b, 0x29, 0xf4, 0x6a, 0xbd, 0x94, 0x77, 0x53, 0x21, 0x48, 0x58, 0xa0, 0x42, 0x52, - 0x74, 0x03, 0xac, 0x64, 0x9d, 0x4a, 0x4d, 0x0d, 0x67, 0x5a, 0xe0, 0x48, 0x83, 0x69, 0xec, 0x74, - 0x8f, 0x24, 0x6e, 0x55, 0xee, 0xae, 0xca, 0x29, 0xb7, 0x9c, 0x52, 0xbe, 0xec, 0x21, 0x5b, 0xb9, - 0xed, 0x31, 0xa9, 0xca, 0xdf, 0x90, 0x4b, 0x2a, 0xa9, 0xca, 0x5f, 0x90, 0x7b, 0xee, 0xa9, 0x7e, - 0xdd, 0x33, 0x18, 0x7c, 0x91, 0x74, 0xca, 0xbe, 0xe5, 0x86, 0x79, 0xef, 0xf7, 0x7a, 0xba, 0x5f, - 0xff, 0xde, 0x7b, 0xdd, 0xf3, 0x00, 0x1f, 0x04, 0xfe, 0x1b, 0xf6, 0xda, 0x97, 0xb6, 0x33, 0x64, - 0xa1, 0xb4, 0x85, 0x3f, 0x8a, 0x03, 0x47, 0xfa, 0x3c, 0xdc, 0x1e, 0x47, 0x5c, 0x72, 0x52, 0x31, - 0x7a, 0xeb, 0x23, 0x04, 0x3c, 0x9a, 0x81, 0x33, 0x21, 0x52, 0xac, 0xf5, 0xe1, 0x90, 0xf3, 0x61, - 0xc0, 0x1e, 0xe1, 0xd3, 0x79, 0xfc, 0xf2, 0x91, 0xf4, 0x47, 0x4c, 0x48, 0x67, 0x34, 0x36, 0x80, - 0x3b, 0x89, 0xb5, 0x1b, 0xf0, 0xd8, 0xd3, 0x63, 0x18, 0xd5, 0x46, 0xa2, 0x1a, 0x71, 0x8f, 0x05, - 0x42, 0x4b, 0xef, 0xfd, 0x5b, 0x01, 0x36, 0xfa, 0xe9, 0x94, 0x68, 0x1c, 0xf6, 0xe3, 0xd1, 0xc8, - 0x89, 0x2e, 0xc9, 0x16, 0x94, 0xc7, 0x8e, 0x10, 0xcc, 0x6b, 0xe7, 0xee, 0xe6, 0xee, 0x97, 0xa8, - 0x79, 0x52, 0xf2, 0x97, 0x8e, 0x1f, 0x30, 0xaf, 0x9d, 0xd7, 0x72, 0xfd, 0x44, 0xde, 0x07, 0x18, - 0x72, 0x3f, 0x1c, 0xda, 0x6f, 0x59, 0x10, 0xb4, 0x0b, 0x77, 0x73, 0xf7, 0x6b, 0xb4, 0x86, 0x92, - 0xbf, 0x60, 0x41, 0xa0, 0xd4, 0x92, 0xdb, 0xfe, 0x68, 0x1c, 0xf1, 0x37, 0xac, 0x5d, 0xd4, 0x6a, - 0xc9, 0x0f, 0xb5, 0x80, 0x7c, 0x01, 0x65, 0x5f, 0x88, 0x98, 0x89, 0x76, 0xe9, 0x6e, 0xe1, 0x7e, - 0x7d, 0xe7, 0xe3, 0x6d, 0x33, 0xdb, 0xed, 0x45, 0x93, 0xdb, 0x3e, 0x54, 0x58, 0x6a, 0x4c, 0xc8, - 0x57, 0xb0, 0xe2, 0x5e, 0x38, 0xd2, 0xbe, 0xf0, 0x85, 0xe4, 0xd1, 0x65, 0xbb, 0x8c, 0x43, 0x6c, - 0x5f, 0x3d, 0xc4, 0xfe, 0x85, 0x23, 0x7b, 0xda, 0xa0, 0x1b, 0xca, 0xe8, 0x92, 0xd6, 0xdd, 0x89, - 0xc4, 0xfa, 0x1a, 0x5a, 0xb3, 0x00, 0xd2, 0x82, 0xc2, 0x6b, 0x76, 0x89, 0xee, 0xa8, 0x51, 0xf5, - 0x93, 0x3c, 0x86, 0xd2, 0x1b, 0x27, 0x88, 0x19, 0xba, 0xa2, 0xbe, 0x63, 0xa5, 0x6f, 0xd4, 0x7e, - 0x57, 0x23, 0xec, 0xf3, 0x50, 0xb2, 0x77, 0x92, 0x6a, 0xe0, 0xd3, 0xfc, 0x2f, 0x73, 0x96, 0x0d, - 0x25, 0x9c, 0x3f, 0xb9, 0x0b, 0x75, 0x8f, 0x09, 0x37, 0xf2, 0xc7, 0x6a, 0x6e, 0x66, 0xe0, 0xac, - 0x88, 0x7c, 0x00, 0x20, 0xe2, 0xe1, 0x90, 0x09, 0x04, 0xe4, 0x11, 0x90, 0x91, 0x90, 0x0d, 0x28, - 0x05, 0xce, 0x39, 0x4b, 0xfc, 0xad, 0x1f, 0xee, 0xfd, 0xa1, 0x03, 0x8d, 0xa9, 0x35, 0x93, 0x55, - 0xc8, 0xfb, 0x9e, 0x79, 0x41, 0xde, 0xc7, 0xcd, 0x1a, 0x47, 0xfc, 0x15, 0x73, 0xa5, 0xed, 0x7b, - 0x66, 0xdc, 0x9a, 0x91, 0x1c, 0x7a, 0xe4, 0x09, 0x94, 0x85, 0x74, 0x64, 0x2c, 0x70, 0xdc, 0xd5, - 0x9d, 0xf7, 0x17, 0xbb, 0x72, 0xbb, 0x8f, 0x20, 0x6a, 0xc0, 0xe4, 0x21, 0xac, 0x69, 0xd2, 0x66, - 0x57, 0xa5, 0xb7, 0xba, 0x85, 0x8a, 0x83, 0xcc, 0xd2, 0x36, 0xa0, 0xc4, 0xa2, 0x88, 0x47, 0xed, - 0x92, 0x9e, 0x3a, 0x3e, 0x90, 0x5d, 0x00, 0x37, 0x62, 0x8e, 0x64, 0x9e, 0xed, 0xc8, 0x76, 0xd9, - 0xb8, 0x55, 0xb3, 0x7e, 0x3b, 0x61, 0xfd, 0xf6, 0x20, 0x61, 0x3d, 0xad, 0x19, 0xf4, 0x9e, 0x24, - 0xdb, 0x50, 0x7c, 0xc5, 0xcf, 0x45, 0xbb, 0x82, 0xbb, 0x6f, 0x2d, 0x99, 0xf2, 0x73, 0x7e, 0x4e, - 0x11, 0xa7, 0x7c, 0xa0, 0x67, 0x1b, 0x3a, 0x23, 0xd6, 0xae, 0x69, 0x1f, 0xa0, 0xe4, 0xc4, 0x19, - 0x31, 0xf2, 0x6b, 0x58, 0x15, 0x2e, 0x0b, 0x9d, 0xc8, 0xe7, 0xf6, 0x30, 0xe2, 0xf1, 0xb8, 0x0d, - 0x38, 0x9b, 0xad, 0xc9, 0xc0, 0x46, 0xfd, 0x4c, 0x69, 0x69, 0x43, 0x64, 0x1f, 0xc9, 0x13, 0xa8, - 0xb2, 0xd0, 0xd3, 0xcb, 0xa8, 0x5f, 0xbb, 0x8c, 0x0a, 0x62, 0xf7, 0x24, 0x79, 0x0f, 0x6a, 0xaf, - 0xf8, 0xb9, 0xed, 0xf2, 0x38, 0x94, 0xed, 0x15, 0x0c, 0xb0, 0xea, 0x2b, 0x7e, 0xbe, 0xaf, 0x9e, - 0xc9, 0x47, 0xb0, 0xa2, 0x83, 0xd0, 0xe8, 0x1b, 0xa8, 0xaf, 0x6b, 0x59, 0x0a, 0xd1, 0xf1, 0x68, - 0x20, 0xab, 0x1a, 0xa2, 0x65, 0x1a, 0xf2, 0x53, 0x68, 0x86, 0xf1, 0x28, 0x93, 0x87, 0x44, 0xbb, - 0x89, 0xa8, 0xd5, 0x30, 0x1e, 0x4d, 0x9c, 0x25, 0xc8, 0x0e, 0x94, 0x62, 0xe1, 0x0c, 0x59, 0xbb, - 0x85, 0xf3, 0xff, 0xd1, 0x12, 0x8f, 0x9e, 0x29, 0x0c, 0xd5, 0x50, 0x45, 0x69, 0x97, 0x87, 0x6e, - 0x1c, 0x45, 0x2c, 0x74, 0x2f, 0xdb, 0x6b, 0xfa, 0xf5, 0x19, 0x11, 0x79, 0x08, 0x45, 0x95, 0x80, - 0xda, 0x04, 0x99, 0x75, 0x7b, 0xc1, 0xa0, 0xc7, 0xdc, 0x63, 0x14, 0x41, 0xe4, 0x0b, 0xa8, 0x8c, - 0x98, 0x8c, 0x7c, 0x57, 0xb4, 0xd7, 0x71, 0x12, 0x1f, 0x2d, 0x99, 0x04, 0x8d, 0xc3, 0x63, 0x0d, - 0xa4, 0x89, 0x85, 0xf2, 0x85, 0xd0, 0xc1, 0x6e, 0xff, 0x4e, 0x48, 0xaf, 0xbd, 0x71, 0x37, 0x77, - 0x7f, 0x85, 0xd6, 0x8d, 0xec, 0x6b, 0x21, 0x3d, 0xeb, 0xdf, 0x4b, 0x50, 0x78, 0xce, 0xcf, 0xe7, - 0xe2, 0x63, 0x37, 0x0d, 0x80, 0x3c, 0x4e, 0xf3, 0xa3, 0xe5, 0x6c, 0x9a, 0x0d, 0x82, 0x7b, 0xb0, - 0xe2, 0x87, 0x42, 0x46, 0xb1, 0xab, 0x7d, 0xab, 0x23, 0x73, 0x4a, 0x36, 0xe1, 0x7e, 0x31, 0xcb, - 0xfd, 0x9f, 0x01, 0xd1, 0x84, 0x64, 0xef, 0xc6, 0xcc, 0x95, 0x66, 0x6f, 0x74, 0x78, 0xe8, 0xc0, - 0xea, 0x66, 0x14, 0x93, 0xd8, 0x2f, 0x67, 0x62, 0x9f, 0x10, 0x28, 0x4a, 0x67, 0xa8, 0xa3, 0xa0, - 0x46, 0xf1, 0xb7, 0x22, 0x55, 0xc4, 0xf9, 0x48, 0x13, 0xbd, 0x8a, 0xe8, 0xaa, 0x12, 0x20, 0xcf, - 0x77, 0x01, 0x84, 0x74, 0x22, 0x13, 0x71, 0x70, 0x7d, 0xc4, 0x19, 0xf4, 0x9e, 0xfc, 0xbf, 0x72, - 0xfc, 0x36, 0x54, 0x70, 0x3a, 0xbe, 0x87, 0x0c, 0xaf, 0xd1, 0xb2, 0x7a, 0x3c, 0xf4, 0xc8, 0x2f, - 0x12, 0xc2, 0x35, 0x70, 0xb0, 0xbb, 0x57, 0x38, 0x7d, 0x8a, 0x74, 0x19, 0x96, 0xac, 0x5e, 0xc9, - 0x92, 0xe7, 0xfc, 0x7c, 0x96, 0x25, 0xd6, 0x5f, 0x43, 0x09, 0x07, 0x23, 0xf7, 0xa1, 0xa5, 0x32, - 0xb5, 0x2d, 0xe3, 0x28, 0x14, 0x26, 0x7c, 0x74, 0xe9, 0x5b, 0x55, 0xf2, 0x81, 0x12, 0xeb, 0x08, - 0x7a, 0x00, 0x6b, 0x4e, 0xec, 0xf9, 0x7c, 0x0a, 0xaa, 0xab, 0x61, 0x13, 0x15, 0x13, 0xec, 0x3d, - 0x0e, 0x65, 0x4d, 0x10, 0x42, 0x60, 0xb5, 0x3f, 0xd8, 0x1b, 0x9c, 0xf5, 0xed, 0xd3, 0xee, 0xc9, - 0xc1, 0xe1, 0xc9, 0xb3, 0xd6, 0xad, 0x8c, 0x8c, 0x9e, 0x9d, 0x9c, 0x28, 0x59, 0x8e, 0x6c, 0x40, - 0xcb, 0xc8, 0xf6, 0x5f, 0x1c, 0x9f, 0x1e, 0x75, 0x07, 0xdd, 0x83, 0x56, 0x9e, 0xac, 0x41, 0xc3, - 0x48, 0xbf, 0xdc, 0x3b, 0x3c, 0xea, 0x1e, 0xb4, 0x0a, 0x59, 0xe0, 0xde, 0xc9, 0x7e, 0xf7, 0x48, - 0x49, 0x8b, 0xcf, 0x8b, 0xd5, 0x5a, 0x0b, 0xac, 0xff, 0xf8, 0x04, 0x60, 0xb2, 0x5a, 0xf2, 0x00, - 0x56, 0x1d, 0xd7, 0x8d, 0x23, 0xc7, 0xbd, 0xb4, 0x85, 0xcb, 0x23, 0x86, 0x2b, 0xcb, 0xf7, 0x6e, - 0xd1, 0x46, 0x22, 0xef, 0x2b, 0xf1, 0x37, 0xb9, 0x1c, 0xd9, 0x86, 0x96, 0x22, 0x60, 0xe4, 0xb3, - 0xd0, 0x65, 0x06, 0x9d, 0x47, 0x74, 0x8e, 0x36, 0x27, 0x9a, 0x14, 0xff, 0x29, 0x34, 0xa5, 0x23, - 0x5e, 0xdb, 0x2e, 0x1f, 0x8d, 0x03, 0x86, 0x39, 0xbf, 0x80, 0xf0, 0x3c, 0x5d, 0x55, 0x8a, 0xfd, - 0x54, 0xae, 0xd0, 0x9f, 0x43, 0x41, 0x48, 0x89, 0xc4, 0xaf, 0xef, 0xfc, 0xe4, 0xda, 0x7d, 0xda, - 0xee, 0x0f, 0x06, 0x54, 0x59, 0x28, 0xc3, 0x20, 0x18, 0x61, 0x38, 0xdc, 0xc8, 0xf0, 0xe8, 0xe8, - 0x98, 0x2a, 0x0b, 0x65, 0x28, 0xa5, 0x30, 0xb5, 0xe4, 0x06, 0x86, 0x83, 0x41, 0x9f, 0x2a, 0x0b, - 0x42, 0x61, 0xc5, 0xe5, 0xe1, 0x1b, 0x16, 0x09, 0x84, 0xb5, 0x2b, 0x38, 0xc2, 0xf6, 0xf5, 0x23, - 0xec, 0x67, 0xac, 0xe8, 0xd4, 0x18, 0xe4, 0x10, 0x6a, 0x26, 0xf1, 0xf2, 0x08, 0x43, 0xb1, 0xbe, - 0xf3, 0xf0, 0x06, 0x4e, 0x48, 0x4c, 0xe8, 0xc4, 0x9a, 0xfc, 0x0a, 0x4a, 0xc8, 0xbf, 0x76, 0x0d, - 0x0b, 0xde, 0x27, 0x37, 0x58, 0x59, 0x1c, 0x85, 0x54, 0x1b, 0x91, 0x0f, 0xa1, 0xfe, 0x2a, 0xf6, - 0x86, 0x4c, 0x9f, 0x06, 0x31, 0xee, 0x6b, 0x14, 0x50, 0xa4, 0xf2, 0x6f, 0x30, 0x21, 0x79, 0x16, - 0x56, 0x47, 0x98, 0x26, 0xf9, 0xf3, 0x09, 0xf6, 0x53, 0x20, 0x17, 0x8e, 0xb0, 0x23, 0x36, 0xe2, - 0x92, 0x25, 0x47, 0x56, 0x0c, 0xee, 0x2a, 0x6d, 0x5d, 0x38, 0x82, 0xa2, 0xa2, 0xaf, 0xe5, 0xe4, - 0x01, 0xe4, 0xe5, 0x63, 0x13, 0xe3, 0x57, 0x25, 0x8c, 0xbc, 0x7c, 0x4c, 0x7e, 0xa2, 0xeb, 0x89, - 0x2f, 0x58, 0xc8, 0x84, 0x0e, 0xef, 0x7c, 0xaf, 0x40, 0xb3, 0x42, 0xc5, 0xaa, 0x5d, 0xd8, 0x8a, - 0xc3, 0x90, 0xb9, 0x4c, 0x08, 0x95, 0xee, 0x25, 0xe7, 0x81, 0xed, 0x3a, 0x41, 0xa0, 0x4b, 0x5b, - 0xb5, 0x57, 0xa4, 0x1b, 0x19, 0xfd, 0x80, 0xf3, 0x60, 0x5f, 0x69, 0x0d, 0xdd, 0xfd, 0xf0, 0x25, - 0x8f, 0x46, 0xe8, 0x31, 0x3b, 0xe0, 0x42, 0x60, 0xc1, 0xab, 0xf6, 0x4a, 0xb4, 0x99, 0xd1, 0x1c, - 0x71, 0xfd, 0xaa, 0x5f, 0xc0, 0x46, 0xc4, 0xbc, 0x38, 0xf4, 0x1c, 0x75, 0x3a, 0x97, 0x8e, 0x64, - 0x23, 0x16, 0x4a, 0x81, 0xa5, 0xae, 0xda, 0x2b, 0xd3, 0xf5, 0x54, 0xdb, 0x4f, 0x95, 0x9a, 0xf8, - 0x9b, 0x63, 0xce, 0x23, 0xfb, 0xb7, 0xb1, 0x3e, 0xbb, 0xd9, 0xbf, 0x8d, 0x9d, 0xc0, 0x97, 0x97, - 0x58, 0x08, 0xab, 0xbd, 0x0a, 0x5d, 0x57, 0xea, 0xaf, 0x8c, 0xf6, 0x2b, 0xad, 0x54, 0x86, 0x7f, - 0x0a, 0xed, 0x2c, 0x85, 0xec, 0x71, 0xc4, 0x87, 0x91, 0x71, 0xf1, 0x3a, 0xfa, 0xa3, 0x4a, 0x6f, - 0x67, 0x11, 0xa7, 0x13, 0xc0, 0x37, 0xb9, 0x9c, 0xf5, 0xc7, 0x22, 0x14, 0xfa, 0x83, 0x01, 0xd9, - 0x84, 0xc2, 0x5b, 0x16, 0xa5, 0x81, 0xaf, 0x1e, 0xd4, 0xf0, 0x77, 0xa0, 0xf4, 0x96, 0x47, 0x9e, - 0xae, 0x74, 0x8d, 0x5e, 0x8e, 0xea, 0x47, 0xa5, 0xfa, 0x31, 0xd4, 0xd5, 0x6f, 0x1b, 0xcb, 0x93, - 0xae, 0x64, 0x8d, 0x5e, 0x9e, 0x82, 0x12, 0x76, 0x51, 0xa6, 0x50, 0x9b, 0x50, 0x70, 0x99, 0x2e, - 0x65, 0x6a, 0x6b, 0xd4, 0x83, 0x19, 0xd7, 0xbd, 0x70, 0x22, 0x81, 0x27, 0xab, 0x46, 0xaf, 0x48, - 0xf5, 0xa3, 0x19, 0x57, 0xfd, 0x4e, 0xc6, 0x05, 0x04, 0x94, 0x28, 0x28, 0xe1, 0x64, 0xdc, 0x5f, - 0x43, 0x5b, 0x46, 0x4e, 0x98, 0x9e, 0x18, 0xed, 0xc0, 0x91, 0xea, 0x04, 0x61, 0x8f, 0x04, 0x46, - 0x4e, 0xa3, 0x57, 0xa6, 0x5b, 0x53, 0x88, 0x23, 0x0d, 0x38, 0x46, 0xf3, 0x1d, 0x20, 0x2c, 0x94, - 0xbe, 0xbc, 0xb4, 0x23, 0xe6, 0xf2, 0x61, 0xe8, 0x63, 0x0c, 0xd7, 0x71, 0x96, 0x15, 0xba, 0xa6, - 0x75, 0x74, 0xa2, 0x4a, 0x52, 0x9f, 0x92, 0xfb, 0x4c, 0xd8, 0xb1, 0x94, 0x2c, 0x62, 0xba, 0x44, - 0x35, 0x7a, 0x55, 0xda, 0x4c, 0x34, 0x67, 0x5a, 0xa1, 0xf0, 0x3f, 0x87, 0xf5, 0x14, 0x6f, 0xde, - 0xf2, 0x3b, 0xe6, 0x21, 0xb5, 0x1b, 0xbd, 0x1a, 0x25, 0x89, 0x92, 0xa6, 0xba, 0x6f, 0x72, 0xb9, - 0x4e, 0x19, 0x8a, 0xf6, 0x5b, 0x16, 0x75, 0xaa, 0x50, 0xb6, 0xd1, 0xd7, 0x9d, 0x55, 0x58, 0xb1, - 0x33, 0x9e, 0x46, 0x84, 0x6b, 0x10, 0xe8, 0x35, 0x44, 0x64, 0x7c, 0xd6, 0x79, 0x0f, 0xee, 0xd8, - 0xcb, 0xbc, 0xd3, 0xd9, 0x84, 0x75, 0x7b, 0x7e, 0xed, 0x9d, 0x75, 0x58, 0xb3, 0x67, 0x97, 0xd7, - 0xd9, 0x82, 0x0d, 0x7b, 0xc1, 0x1a, 0xac, 0x6f, 0x73, 0x50, 0x38, 0x3a, 0x3a, 0x26, 0x3f, 0x82, - 0x8a, 0x94, 0x2f, 0xa5, 0x72, 0x7a, 0x0e, 0x97, 0x75, 0x8b, 0x96, 0x95, 0x40, 0x3b, 0x59, 0x6b, - 0x85, 0xd2, 0x26, 0xf4, 0x51, 0x5a, 0xa1, 0xb5, 0x8f, 0x60, 0x4d, 0xf2, 0xd7, 0x2c, 0x14, 0xf6, - 0x98, 0x45, 0xb6, 0x60, 0x2e, 0x0f, 0xbd, 0xb4, 0x36, 0x34, 0xb5, 0xea, 0x94, 0x45, 0x7d, 0x54, - 0x28, 0xcf, 0x00, 0x54, 0x6d, 0xf3, 0xb6, 0xe4, 0xb7, 0x1a, 0xbb, 0xb3, 0x01, 0xc4, 0x9e, 0x1b, - 0xc9, 0xfa, 0xe7, 0x12, 0x14, 0x06, 0x83, 0xbe, 0x99, 0x84, 0x33, 0x3b, 0x45, 0x27, 0x3b, 0xc5, - 0xf3, 0xd9, 0x29, 0x9e, 0x1f, 0x27, 0xe4, 0x55, 0x41, 0x91, 0x4c, 0x6a, 0x2e, 0x28, 0x2a, 0x68, - 0x52, 0x58, 0x1e, 0x14, 0x55, 0xc3, 0xee, 0xc5, 0x41, 0x51, 0xc3, 0x71, 0x4b, 0xf3, 0x41, 0x01, - 0x86, 0xc0, 0x4b, 0x83, 0xa2, 0x8e, 0x80, 0xca, 0x6c, 0x50, 0x3c, 0x86, 0xb5, 0xd0, 0x91, 0x71, - 0xe4, 0x04, 0x2a, 0xf5, 0x99, 0xea, 0x5c, 0x32, 0x59, 0xa0, 0x95, 0x51, 0xa5, 0xe5, 0xf9, 0x31, - 0xac, 0xb1, 0x30, 0x0e, 0x5d, 0x5f, 0x67, 0x0f, 0x6d, 0x51, 0x46, 0x8b, 0x1a, 0x6d, 0x65, 0x54, - 0xa9, 0xc5, 0xe2, 0xc8, 0xd1, 0xa9, 0x17, 0xbe, 0x43, 0xe4, 0x34, 0x71, 0x09, 0xf5, 0xef, 0x12, - 0x39, 0x2d, 0x34, 0x59, 0x59, 0x16, 0x39, 0x86, 0x13, 0x4e, 0x86, 0x1f, 0x6a, 0x63, 0xbf, 0x97, - 0x88, 0x52, 0x1c, 0x9b, 0x73, 0x2d, 0x4a, 0xe7, 0xdc, 0xf7, 0xbd, 0x04, 0xd8, 0x3f, 0x55, 0x61, - 0x25, 0x7b, 0x50, 0xc0, 0x68, 0x89, 0xa3, 0xd0, 0x96, 0xce, 0x6b, 0x3f, 0x1c, 0xce, 0x1c, 0xd3, - 0x9a, 0x4a, 0x35, 0x40, 0x4d, 0xba, 0x4f, 0x4f, 0xe1, 0x76, 0xc4, 0xc4, 0x98, 0x87, 0x82, 0xa5, - 0xd1, 0x3f, 0x7e, 0xf2, 0x38, 0x61, 0x7a, 0xa9, 0x97, 0xa3, 0x1b, 0x09, 0xc0, 0xa4, 0xc6, 0xd3, - 0x27, 0x8f, 0x35, 0xef, 0x17, 0xda, 0xee, 0x3e, 0x51, 0xb6, 0x05, 0xb4, 0xcd, 0xcf, 0xdb, 0xee, - 0x3e, 0xb9, 0xca, 0x76, 0x57, 0xd9, 0x16, 0xd1, 0xb6, 0xb0, 0xc0, 0x76, 0x57, 0xdb, 0xfe, 0x12, - 0xb6, 0xf4, 0x1d, 0xe7, 0xd2, 0x67, 0x81, 0x97, 0x4d, 0xe9, 0x25, 0x13, 0x48, 0xeb, 0xa8, 0xff, - 0x8d, 0x52, 0x4f, 0xe5, 0xf3, 0x2f, 0xe0, 0x36, 0xe3, 0xd2, 0x1e, 0xf9, 0x62, 0x1c, 0x31, 0xcf, - 0xc7, 0x9b, 0x94, 0x39, 0x7a, 0x97, 0x4d, 0x01, 0xd9, 0x64, 0x5c, 0x1e, 0x67, 0xf5, 0x78, 0x04, - 0x57, 0xc6, 0xf7, 0xa1, 0xc1, 0xdf, 0xb0, 0x28, 0x70, 0xc6, 0x76, 0xa4, 0xbc, 0x8d, 0x71, 0x9d, - 0xef, 0x95, 0xe9, 0x8a, 0x11, 0x53, 0x25, 0x35, 0x39, 0x2b, 0x41, 0x8a, 0x31, 0x63, 0xee, 0xc5, - 0xa4, 0xdc, 0x54, 0x68, 0xd3, 0xa8, 0xfa, 0xa8, 0xd1, 0xf3, 0x7a, 0x08, 0x4d, 0xc9, 0xa5, 0x13, - 0x64, 0xe0, 0x35, 0x53, 0x32, 0x1a, 0xa8, 0xc8, 0x82, 0x3f, 0x87, 0x4d, 0xe7, 0xed, 0xeb, 0xb7, - 0x4e, 0xe4, 0xd9, 0xc2, 0x0f, 0xf0, 0x80, 0xad, 0x97, 0x50, 0x37, 0x25, 0x63, 0xdd, 0xa8, 0xfb, - 0x5a, 0x9b, 0x2e, 0x60, 0x1b, 0x5a, 0x71, 0xe8, 0x84, 0xe2, 0xad, 0xe2, 0x94, 0xbe, 0x77, 0x98, - 0xca, 0x04, 0xb4, 0x39, 0xd1, 0xe0, 0xc5, 0xc3, 0x14, 0xcf, 0x97, 0x4e, 0x20, 0x98, 0xed, 0x87, - 0x92, 0x45, 0x51, 0x3c, 0xce, 0xb8, 0xab, 0x61, 0xe2, 0x72, 0x0b, 0x11, 0x87, 0x19, 0x40, 0xfa, - 0xba, 0x2e, 0xbc, 0xaf, 0xb7, 0x29, 0x62, 0x63, 0x8e, 0x77, 0x43, 0xb6, 0xc3, 0xb2, 0xbb, 0xd5, - 0x34, 0x81, 0x7a, 0x07, 0x61, 0xd4, 0xa0, 0xba, 0x3b, 0x2c, 0xbb, 0x67, 0x3a, 0x6f, 0xcf, 0x72, - 0xba, 0x63, 0x41, 0xdb, 0x5e, 0x42, 0xdc, 0x25, 0x3a, 0x24, 0xe6, 0x32, 0x9d, 0x22, 0x5e, 0xe7, - 0x0e, 0xdc, 0xb6, 0x17, 0x13, 0x0b, 0xcd, 0x96, 0x30, 0xa7, 0xd3, 0x82, 0x55, 0x7b, 0x8a, 0x18, - 0x38, 0xe5, 0x39, 0x02, 0x74, 0x08, 0xb4, 0xec, 0x99, 0x5d, 0xee, 0xb4, 0x61, 0xcb, 0x5e, 0xb8, - 0x99, 0x98, 0x07, 0x66, 0x77, 0x0b, 0x2b, 0xf6, 0xb2, 0x2d, 0xe9, 0xdc, 0x85, 0x0f, 0xec, 0x2b, - 0x1d, 0x6e, 0xfd, 0x7d, 0x0e, 0x6a, 0xe9, 0x35, 0x00, 0x93, 0xba, 0x13, 0x05, 0x97, 0xb6, 0x64, - 0xd1, 0xc8, 0x0f, 0x9d, 0xf4, 0xfb, 0x61, 0xb5, 0x77, 0x8b, 0xb6, 0x50, 0x35, 0x98, 0x68, 0x0c, - 0x81, 0xd4, 0x68, 0x53, 0x06, 0x79, 0x34, 0xc8, 0xd1, 0xa6, 0xd2, 0x4c, 0xe3, 0x75, 0xe2, 0x9b, - 0x7d, 0x05, 0xae, 0x6c, 0x76, 0x18, 0xeb, 0xdb, 0x2a, 0x14, 0x15, 0xf1, 0xc8, 0x06, 0x94, 0xfc, - 0xd0, 0x63, 0xef, 0x74, 0x19, 0xa6, 0xfa, 0x81, 0x3c, 0x84, 0x62, 0xc4, 0x03, 0x66, 0xbe, 0xa4, - 0xdc, 0x5e, 0xf0, 0x8d, 0x94, 0xf2, 0x80, 0x51, 0x04, 0x91, 0x0f, 0xa0, 0x8a, 0xdf, 0x17, 0x92, - 0x44, 0xa4, 0x8a, 0x79, 0x05, 0x25, 0x3a, 0x80, 0x2c, 0x28, 0xb3, 0xd0, 0x4b, 0x52, 0x0d, 0x1e, - 0x57, 0x59, 0xe8, 0x1d, 0x27, 0x97, 0x80, 0xe9, 0x23, 0x91, 0xc7, 0x02, 0x27, 0x93, 0x5b, 0xf2, - 0x74, 0x63, 0x4a, 0x7f, 0xa0, 0xd4, 0xda, 0xf4, 0x63, 0xa8, 0x07, 0xc1, 0x28, 0x39, 0x7b, 0x98, - 0x84, 0x52, 0xa0, 0xb5, 0x20, 0x18, 0x0d, 0xd2, 0xc3, 0xce, 0x04, 0x84, 0x07, 0x9e, 0x8a, 0x49, - 0x58, 0x06, 0x74, 0xd5, 0x99, 0xa7, 0x6a, 0x8e, 0x01, 0x0b, 0xce, 0x3c, 0x6a, 0x54, 0x29, 0x45, - 0x52, 0xca, 0x4c, 0xee, 0x28, 0xd3, 0x9a, 0x94, 0x62, 0x90, 0x1e, 0x53, 0xae, 0x8d, 0x47, 0x30, - 0x19, 0xea, 0xca, 0x78, 0x24, 0x9f, 0xc1, 0xfa, 0x5c, 0x00, 0x8d, 0xf4, 0x59, 0xa3, 0xd4, 0xab, - 0xd2, 0xb5, 0x99, 0xac, 0x7d, 0x5d, 0xca, 0x5e, 0x49, 0x93, 0xd6, 0xe2, 0x94, 0xbd, 0xb0, 0xa2, - 0x35, 0xcc, 0x39, 0x62, 0x51, 0x45, 0x5b, 0x78, 0xdb, 0xab, 0xcf, 0xdd, 0xf6, 0x14, 0xfb, 0x67, - 0x03, 0xda, 0x5c, 0xf4, 0x56, 0x68, 0x6b, 0xb6, 0x08, 0x98, 0x6f, 0x14, 0x33, 0xa1, 0x6a, 0xee, - 0x78, 0x0d, 0xba, 0x3a, 0x9d, 0x71, 0xf5, 0x96, 0xc0, 0x24, 0x7c, 0xcd, 0xc5, 0x6e, 0x95, 0x66, - 0x64, 0x2a, 0x40, 0xea, 0x50, 0xb3, 0x13, 0xaa, 0x76, 0x6a, 0x50, 0xb1, 0x35, 0x2f, 0x31, 0x13, - 0x2d, 0xa6, 0x21, 0x1e, 0x39, 0x32, 0x34, 0xcb, 0x3e, 0x2f, 0x3f, 0xe6, 0x22, 0x2a, 0xc3, 0x90, - 0xeb, 0x73, 0x05, 0x1e, 0x39, 0x16, 0xec, 0xf3, 0x55, 0x49, 0x72, 0x71, 0xa6, 0xc6, 0x33, 0xd2, - 0xc4, 0xf7, 0x3a, 0x29, 0xcc, 0x7a, 0x1e, 0x93, 0xe3, 0x8c, 0x77, 0x3b, 0x0d, 0xa8, 0x67, 0x52, - 0x60, 0x67, 0x0d, 0x9a, 0xf6, 0xf4, 0x07, 0x28, 0x7d, 0x58, 0x9a, 0xf9, 0xce, 0xa4, 0xf3, 0xec, - 0xf4, 0xc7, 0xa4, 0xb9, 0x49, 0xa8, 0x55, 0x2c, 0xbe, 0xec, 0xe3, 0x98, 0xb3, 0x97, 0xf9, 0xce, - 0x6d, 0xd8, 0xb4, 0x17, 0xdd, 0xd8, 0x31, 0x81, 0x2f, 0xbc, 0x92, 0x63, 0xae, 0x5e, 0x76, 0xe7, - 0xb6, 0xfe, 0xb3, 0x00, 0x30, 0xf9, 0xdc, 0xfc, 0x83, 0x7e, 0x5a, 0xfb, 0x13, 0x20, 0x69, 0x0f, - 0x62, 0xec, 0x08, 0xa1, 0x6a, 0x14, 0x4b, 0x2f, 0x2b, 0xad, 0x44, 0x77, 0xea, 0x08, 0x41, 0x1d, - 0xc9, 0xfe, 0xff, 0xfb, 0xda, 0x8d, 0x89, 0xa6, 0x4e, 0xf0, 0xf3, 0xae, 0xb5, 0xfe, 0xa7, 0x00, - 0xe5, 0x7d, 0xec, 0x28, 0x59, 0xff, 0x95, 0x87, 0x0a, 0x65, 0x48, 0x8d, 0x99, 0x76, 0x59, 0x6e, - 0xb6, 0x5d, 0x36, 0xdd, 0x49, 0xca, 0xcf, 0x76, 0x92, 0x16, 0x34, 0x5c, 0x8a, 0x0b, 0x1b, 0x2e, - 0x5b, 0x50, 0x8e, 0xd8, 0x50, 0xb9, 0xa2, 0x6c, 0xbe, 0x8b, 0xe3, 0x13, 0xe9, 0xcc, 0xb5, 0xa2, - 0x2a, 0x57, 0xb5, 0xa2, 0x14, 0xf5, 0xa6, 0x9a, 0x51, 0x99, 0xd4, 0x9a, 0x34, 0x66, 0xaa, 0xe6, - 0x82, 0x90, 0x15, 0xea, 0xd3, 0xac, 0xee, 0xce, 0xd4, 0x6e, 0xd0, 0x9d, 0x41, 0x67, 0x4f, 0x4f, - 0x2c, 0x0d, 0x56, 0x33, 0xe4, 0xf3, 0x62, 0xb5, 0xd0, 0x2a, 0xd2, 0xf9, 0xb6, 0xa0, 0xf5, 0xb7, - 0x39, 0xa8, 0x52, 0x93, 0xa3, 0xc8, 0x03, 0x58, 0x9b, 0x78, 0xc7, 0x8e, 0xe2, 0x70, 0xe2, 0xe6, - 0xa6, 0xc8, 0xb2, 0xe0, 0xd0, 0x23, 0x7d, 0xd8, 0x1a, 0x47, 0x4c, 0xf8, 0xc3, 0x90, 0x79, 0xf6, - 0x98, 0x0b, 0x95, 0x06, 0x71, 0x97, 0x4c, 0x13, 0x76, 0xd2, 0xab, 0x3c, 0x4d, 0x60, 0xa7, 0x5c, - 0x48, 0xb3, 0x95, 0x74, 0x63, 0xbc, 0x40, 0x6a, 0x7d, 0x9b, 0x83, 0xf5, 0x7d, 0x1e, 0xbe, 0xf4, - 0xa3, 0x51, 0x9f, 0xc7, 0x91, 0xcb, 0xce, 0xc6, 0x01, 0x77, 0x3c, 0xeb, 0x6f, 0x6e, 0xcc, 0x81, - 0x85, 0x4b, 0xc8, 0x2f, 0x5e, 0xc2, 0x4f, 0xa1, 0xe9, 0x72, 0x8f, 0xa9, 0x6b, 0x61, 0x74, 0x39, - 0xe6, 0x7e, 0x28, 0x4d, 0x97, 0x68, 0x55, 0x89, 0xbb, 0xa9, 0xd4, 0x82, 0x89, 0x8f, 0xac, 0xbf, - 0xcb, 0x41, 0xe1, 0x19, 0x93, 0xd6, 0xe0, 0x87, 0x98, 0x92, 0xf5, 0xf3, 0xcc, 0x6e, 0xdc, 0x87, - 0x42, 0x14, 0xeb, 0xe3, 0xe4, 0x14, 0xc7, 0xb2, 0x26, 0x54, 0x41, 0xac, 0x7f, 0xcd, 0x43, 0xf1, - 0xc8, 0x17, 0xd2, 0xfa, 0x97, 0xdc, 0x8d, 0x67, 0xf5, 0x74, 0xa6, 0xb5, 0x76, 0x75, 0x6f, 0xb9, - 0x77, 0x2b, 0x69, 0xac, 0x29, 0x76, 0xfe, 0x0a, 0x60, 0xec, 0x0c, 0x99, 0x2e, 0x92, 0xe8, 0xb3, - 0xfa, 0x4e, 0x3b, 0xb5, 0x1f, 0x28, 0xe9, 0xa9, 0x33, 0x34, 0xe7, 0xd2, 0x5e, 0x8e, 0xd6, 0x14, - 0x1a, 0xc5, 0xaa, 0x62, 0xab, 0x22, 0xad, 0xc7, 0xc2, 0xf2, 0x34, 0x19, 0xc9, 0x7a, 0x37, 0xc5, - 0xc5, 0x62, 0x14, 0x87, 0xa2, 0x9d, 0xc3, 0xaf, 0xea, 0xcb, 0x96, 0x8f, 0x18, 0xf2, 0x67, 0xd0, - 0x0c, 0xd9, 0x3b, 0x99, 0x19, 0xca, 0x90, 0x70, 0xe9, 0xa4, 0x68, 0x43, 0x19, 0x9c, 0x26, 0xd3, - 0xb2, 0x5e, 0x41, 0x79, 0xdf, 0x09, 0x5d, 0x16, 0xfc, 0x40, 0xfb, 0x9a, 0x65, 0xd0, 0x0f, 0xdc, - 0xe9, 0xfa, 0x7d, 0x2e, 0x6d, 0x75, 0xdd, 0x81, 0xcd, 0xe9, 0x56, 0x97, 0x7d, 0x76, 0x7a, 0xf4, - 0x62, 0xef, 0xa0, 0x75, 0x8b, 0x6c, 0xc2, 0x9a, 0x51, 0x3d, 0xeb, 0x9e, 0x74, 0xe9, 0xde, 0x40, - 0x37, 0xbd, 0xe6, 0x1b, 0x61, 0x79, 0xb2, 0x05, 0xc4, 0xc8, 0xfa, 0x67, 0xc7, 0xc7, 0x7b, 0xf4, - 0xf0, 0x6b, 0x25, 0x2f, 0x2c, 0x6c, 0x90, 0x15, 0xe7, 0x1b, 0x64, 0xa5, 0x85, 0x0d, 0xb2, 0xf2, - 0xf3, 0x62, 0xb5, 0xda, 0xaa, 0xd1, 0x8a, 0x69, 0x03, 0xdf, 0xfb, 0x7d, 0x01, 0xaa, 0x49, 0xfa, - 0x9c, 0xf4, 0x54, 0x73, 0xd9, 0x9e, 0xea, 0x6c, 0x4b, 0x37, 0xbf, 0xa0, 0xa5, 0xbb, 0xb8, 0x79, - 0x5b, 0x58, 0xd6, 0xbc, 0x7d, 0x64, 0xda, 0xb4, 0x45, 0x64, 0xd9, 0x7b, 0x73, 0x89, 0x7c, 0x7b, - 0xe0, 0x0c, 0x85, 0xfe, 0x5f, 0x8a, 0xee, 0xe1, 0x5a, 0x50, 0x8d, 0x05, 0x8b, 0x3c, 0x47, 0x3a, - 0xa6, 0x25, 0x9c, 0x3e, 0x5b, 0xff, 0x98, 0x83, 0x35, 0x5d, 0xb5, 0xbe, 0x8c, 0xf8, 0xc8, 0xb4, - 0x59, 0xac, 0xdf, 0xdc, 0x98, 0x50, 0x99, 0x86, 0x6c, 0x7e, 0xaa, 0x21, 0x3b, 0x29, 0x48, 0x85, - 0x6c, 0x41, 0xb2, 0x76, 0x33, 0xf1, 0xf2, 0x33, 0xa8, 0x26, 0x35, 0xc0, 0xa4, 0x8c, 0xb5, 0xb9, - 0xd5, 0xd0, 0x14, 0x62, 0x7d, 0x0e, 0xb5, 0x74, 0x69, 0x0b, 0xfe, 0x51, 0xb3, 0x91, 0xfd, 0x47, - 0x4d, 0x2d, 0xf3, 0xaf, 0x99, 0x7b, 0x03, 0x68, 0x4c, 0x55, 0x39, 0x42, 0xa0, 0x88, 0xf5, 0x56, - 0x5b, 0xe3, 0x6f, 0xf2, 0x08, 0x6a, 0xc9, 0x9b, 0xd4, 0x36, 0x15, 0x16, 0xcf, 0x66, 0x82, 0xb9, - 0xf7, 0xc7, 0x1c, 0x90, 0x49, 0x64, 0x1f, 0xf8, 0x62, 0xec, 0x48, 0xf7, 0xe2, 0x3b, 0x15, 0xa4, - 0x4d, 0x28, 0xbf, 0xe2, 0xe7, 0x13, 0xe7, 0x95, 0x5e, 0xf1, 0xf3, 0x43, 0x6f, 0xca, 0x2f, 0x85, - 0x6b, 0xfd, 0x92, 0x16, 0xde, 0xe2, 0x0d, 0x0a, 0xef, 0x83, 0x97, 0xb0, 0x3a, 0x2d, 0x27, 0x1f, - 0xc2, 0x7b, 0xfd, 0xc3, 0xe3, 0xb3, 0xa3, 0xbd, 0xc1, 0xe1, 0x8b, 0x13, 0xfb, 0xf8, 0xc5, 0x41, - 0xd7, 0x3e, 0x3b, 0xe9, 0x9f, 0x76, 0xf7, 0x0f, 0xbf, 0x3c, 0xec, 0xaa, 0xb8, 0x6b, 0xc3, 0xc6, - 0x2c, 0x60, 0xd0, 0xfd, 0xcb, 0x41, 0x2b, 0x87, 0xc1, 0x3a, 0xa3, 0xd9, 0x3b, 0x3b, 0x38, 0x7c, - 0xd1, 0xca, 0xef, 0xfc, 0x43, 0x09, 0x9a, 0x7b, 0x8a, 0xbb, 0x93, 0xb7, 0x11, 0x0f, 0xd6, 0x35, - 0xd7, 0xa6, 0xff, 0x61, 0xb4, 0xec, 0xe0, 0xa7, 0xb1, 0xdb, 0x49, 0xa1, 0xfd, 0xe4, 0x3a, 0x98, - 0x61, 0xd5, 0x37, 0x39, 0x78, 0x3f, 0x29, 0xc8, 0x29, 0x30, 0x5b, 0x9a, 0xc9, 0xce, 0xb2, 0x91, - 0xe6, 0xcb, 0x78, 0xfa, 0xf6, 0xcf, 0xbe, 0x93, 0x8d, 0x99, 0xca, 0x5f, 0x41, 0xeb, 0x19, 0x93, - 0xd3, 0xab, 0xbd, 0xb7, 0x64, 0xa0, 0x67, 0x4c, 0xa6, 0x2f, 0xfb, 0xf8, 0x4a, 0x8c, 0x19, 0xdc, - 0x06, 0xa2, 0x0a, 0xe8, 0x14, 0x42, 0x90, 0x65, 0xa6, 0x0a, 0x9a, 0x8e, 0xff, 0xe3, 0xab, 0x41, - 0xe6, 0x05, 0x6a, 0xbb, 0xb0, 0xc0, 0xdc, 0x70, 0xbb, 0x10, 0x7b, 0xfd, 0x76, 0x25, 0x30, 0xf3, - 0x96, 0x37, 0x70, 0xc7, 0x90, 0xc2, 0xf0, 0x39, 0x93, 0x88, 0xc8, 0xc3, 0xf9, 0xec, 0x36, 0x97, - 0xad, 0xd2, 0x37, 0x7e, 0x7a, 0x33, 0xb0, 0x7e, 0x6f, 0xe7, 0xcb, 0xaf, 0x3f, 0x1e, 0xfa, 0xf2, - 0x22, 0x3e, 0xdf, 0x76, 0xf9, 0x28, 0xf9, 0xe7, 0xa4, 0xfe, 0x77, 0xa4, 0xcb, 0x83, 0x44, 0xf0, - 0x87, 0x7c, 0xe3, 0xc8, 0x7f, 0xc3, 0xfe, 0x1c, 0xcf, 0x84, 0x5c, 0xf2, 0xff, 0xce, 0xaf, 0x9a, - 0xe7, 0xa7, 0x4f, 0x51, 0x70, 0x5e, 0x46, 0x93, 0xcf, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xff, 0x65, - 0xeb, 0xa0, 0xd1, 0xac, 0x29, 0x00, 0x00, + // 3445 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x1b, 0x49, + 0x76, 0x77, 0xf3, 0x9b, 0x8f, 0xe2, 0x87, 0x4a, 0x5f, 0x74, 0xcf, 0xce, 0x8c, 0x47, 0x33, 0xbb, + 0x6b, 0xd8, 0xb3, 0xb4, 0xa3, 0x59, 0xef, 0xac, 0x3c, 0xbb, 0xc1, 0x8a, 0x12, 0xc7, 0xa4, 0x23, + 0xc9, 0x9a, 0x22, 0x85, 0x64, 0x27, 0x08, 0x1a, 0xad, 0xee, 0x32, 0xd5, 0x72, 0xb3, 0x8b, 0xdb, + 0x55, 0x6d, 0x5b, 0x0b, 0xe4, 0x90, 0xdb, 0x00, 0x39, 0xe5, 0x96, 0x53, 0xb0, 0x97, 0x0d, 0x90, + 0x20, 0xb7, 0xbd, 0x06, 0xc8, 0x3d, 0xb7, 0x5c, 0x02, 0x04, 0xc8, 0x5f, 0x90, 0x7b, 0x80, 0x1c, + 0x83, 0xfa, 0xe8, 0x66, 0xf3, 0x53, 0x72, 0x30, 0xbe, 0xe5, 0xc6, 0x7e, 0xef, 0xf7, 0xaa, 0xab, + 0x5e, 0xfd, 0xde, 0x7b, 0x55, 0xfd, 0x08, 0x1f, 0xf9, 0xde, 0x6b, 0xf2, 0xca, 0xe3, 0x96, 0x3d, + 0x24, 0x01, 0xb7, 0x98, 0x37, 0x8a, 0x7c, 0x9b, 0x7b, 0x34, 0x68, 0x8d, 0x43, 0xca, 0x29, 0x2a, + 0x6a, 0xbd, 0xf9, 0x89, 0x04, 0x3c, 0x9a, 0x81, 0x13, 0xc6, 0x12, 0xac, 0xf9, 0xf1, 0x90, 0xd2, + 0xa1, 0x4f, 0x1e, 0xc9, 0xa7, 0x8b, 0xe8, 0xe5, 0x23, 0xee, 0x8d, 0x08, 0xe3, 0xf6, 0x68, 0xac, + 0x01, 0x77, 0x63, 0x6b, 0xc7, 0xa7, 0x91, 0xab, 0xc6, 0xd0, 0xaa, 0xcd, 0x58, 0x35, 0xa2, 0x2e, + 0xf1, 0x99, 0x92, 0xee, 0xfe, 0x5b, 0x16, 0x36, 0xfb, 0xc9, 0x94, 0x70, 0x14, 0xf4, 0xa3, 0xd1, + 0xc8, 0x0e, 0xaf, 0xd1, 0x36, 0x14, 0xc6, 0x36, 0x63, 0xc4, 0x6d, 0x1a, 0xf7, 0x8c, 0xfb, 0x79, + 0xac, 0x9f, 0x84, 0xfc, 0xa5, 0xed, 0xf9, 0xc4, 0x6d, 0x66, 0x94, 0x5c, 0x3d, 0xa1, 0x0f, 0x01, + 0x86, 0xd4, 0x0b, 0x86, 0xd6, 0x1b, 0xe2, 0xfb, 0xcd, 0xec, 0x3d, 0xe3, 0x7e, 0x19, 0x97, 0xa5, + 0xe4, 0x4f, 0x89, 0xef, 0x0b, 0x35, 0xa7, 0x96, 0x37, 0x1a, 0x87, 0xf4, 0x35, 0x69, 0xe6, 0x94, + 0x9a, 0xd3, 0x9e, 0x12, 0xa0, 0xaf, 0xa0, 0xe0, 0x31, 0x16, 0x11, 0xd6, 0xcc, 0xdf, 0xcb, 0xde, + 0xaf, 0xec, 0x7d, 0xda, 0xd2, 0xb3, 0x6d, 0x2d, 0x9a, 0x5c, 0xab, 0x27, 0xb0, 0x58, 0x9b, 0xa0, + 0x6f, 0x60, 0xcd, 0xb9, 0xb4, 0xb9, 0x75, 0xe9, 0x31, 0x4e, 0xc3, 0xeb, 0x66, 0x41, 0x0e, 0xd1, + 0x5a, 0x3d, 0xc4, 0xe1, 0xa5, 0xcd, 0xbb, 0xca, 0xa0, 0x13, 0xf0, 0xf0, 0x1a, 0x57, 0x9c, 0x89, + 0xc4, 0xfc, 0x16, 0x1a, 0xb3, 0x00, 0xd4, 0x80, 0xec, 0x2b, 0x72, 0x2d, 0xdd, 0x51, 0xc6, 0xe2, + 0x27, 0x7a, 0x0c, 0xf9, 0xd7, 0xb6, 0x1f, 0x11, 0xe9, 0x8a, 0xca, 0x9e, 0x99, 0xbc, 0x51, 0xf9, + 0x5d, 0x8c, 0x70, 0x48, 0x03, 0x4e, 0xde, 0x72, 0xac, 0x80, 0x4f, 0x33, 0x3f, 0x37, 0x4c, 0x0b, + 0xf2, 0x72, 0xfe, 0xe8, 0x1e, 0x54, 0x5c, 0xc2, 0x9c, 0xd0, 0x1b, 0x8b, 0xb9, 0xe9, 0x81, 0xd3, + 0x22, 0xf4, 0x11, 0x00, 0x8b, 0x86, 0x43, 0xc2, 0x24, 0x20, 0x23, 0x01, 0x29, 0x09, 0xda, 0x84, + 0xbc, 0x6f, 0x5f, 0x90, 0xd8, 0xdf, 0xea, 0x61, 0xf7, 0x5f, 0x7f, 0x05, 0xd5, 0xa9, 0x35, 0xa3, + 0x1a, 0x64, 0x3c, 0x57, 0xbf, 0x20, 0xe3, 0xc9, 0xcd, 0x1a, 0x87, 0xf4, 0x8a, 0x38, 0xdc, 0xf2, + 0x5c, 0x3d, 0x6e, 0x59, 0x4b, 0x7a, 0x2e, 0x7a, 0x02, 0x05, 0xc6, 0x6d, 0x1e, 0x31, 0x39, 0x6e, + 0x6d, 0xef, 0xc3, 0xc5, 0xae, 0x6c, 0xf5, 0x25, 0x08, 0x6b, 0x30, 0x7a, 0x08, 0xeb, 0x8a, 0xb4, + 0xe9, 0x55, 0xa9, 0xad, 0x6e, 0x48, 0xc5, 0x51, 0x6a, 0x69, 0x9b, 0x90, 0x27, 0x61, 0x48, 0xc3, + 0x66, 0x5e, 0x4d, 0x5d, 0x3e, 0xa0, 0x7d, 0x00, 0x27, 0x24, 0x36, 0x27, 0xae, 0x65, 0xf3, 0x66, + 0x41, 0xbb, 0x55, 0xb1, 0xbe, 0x15, 0xb3, 0xbe, 0x35, 0x88, 0x59, 0x8f, 0xcb, 0x1a, 0x7d, 0xc0, + 0x51, 0x0b, 0x72, 0x57, 0xf4, 0x82, 0x35, 0x8b, 0x72, 0xf7, 0xcd, 0x25, 0x53, 0x7e, 0x4e, 0x2f, + 0xb0, 0xc4, 0x09, 0x1f, 0xa8, 0xd9, 0x06, 0xf6, 0x88, 0x34, 0xcb, 0xca, 0x07, 0x52, 0x72, 0x6a, + 0x8f, 0x08, 0xfa, 0x25, 0xd4, 0x98, 0x43, 0x02, 0x3b, 0xf4, 0xa8, 0x35, 0x0c, 0x69, 0x34, 0x6e, + 0x82, 0x9c, 0xcd, 0xf6, 0x64, 0x60, 0xad, 0x7e, 0x26, 0xb4, 0xb8, 0xca, 0xd2, 0x8f, 0xe8, 0x09, + 0x94, 0x48, 0xe0, 0xaa, 0x65, 0x54, 0x6e, 0x5c, 0x46, 0x51, 0x62, 0x0f, 0x38, 0xfa, 0x00, 0xca, + 0x57, 0xf4, 0xc2, 0x72, 0x68, 0x14, 0xf0, 0xe6, 0x9a, 0x0c, 0xb0, 0xd2, 0x15, 0xbd, 0x38, 0x14, + 0xcf, 0xe8, 0x13, 0x58, 0x53, 0x41, 0xa8, 0xf5, 0x55, 0xa9, 0xaf, 0x28, 0x59, 0x02, 0x51, 0xf1, + 0xa8, 0x21, 0x35, 0x05, 0x51, 0x32, 0x05, 0xf9, 0x31, 0xd4, 0x83, 0x68, 0x94, 0xca, 0x43, 0xac, + 0x59, 0x97, 0xa8, 0x5a, 0x10, 0x8d, 0x26, 0xce, 0x62, 0x68, 0x0f, 0xf2, 0x11, 0xb3, 0x87, 0xa4, + 0xd9, 0x90, 0xf3, 0xff, 0xc1, 0x12, 0x8f, 0x9e, 0x0b, 0x0c, 0x56, 0x50, 0x41, 0x69, 0x87, 0x06, + 0x4e, 0x14, 0x86, 0x24, 0x70, 0xae, 0x9b, 0xeb, 0xea, 0xf5, 0x29, 0x11, 0x7a, 0x08, 0x39, 0x91, + 0x80, 0x9a, 0x48, 0x32, 0x6b, 0x67, 0xc1, 0xa0, 0x27, 0xd4, 0x25, 0x58, 0x82, 0xd0, 0x57, 0x50, + 0x1c, 0x11, 0x1e, 0x7a, 0x0e, 0x6b, 0x6e, 0xc8, 0x49, 0x7c, 0xb2, 0x64, 0x12, 0x38, 0x0a, 0x4e, + 0x14, 0x10, 0xc7, 0x16, 0xc2, 0x17, 0x4c, 0x05, 0xbb, 0xf5, 0x5b, 0xc6, 0xdd, 0xe6, 0xe6, 0x3d, + 0xe3, 0xfe, 0x1a, 0xae, 0x68, 0xd9, 0xb7, 0x8c, 0xbb, 0xe6, 0xbf, 0xe7, 0x21, 0xfb, 0x9c, 0x5e, + 0xcc, 0xc5, 0xc7, 0x7e, 0x12, 0x00, 0x19, 0x39, 0xcd, 0x4f, 0x96, 0xb3, 0x69, 0x36, 0x08, 0x76, + 0x61, 0xcd, 0x0b, 0x18, 0x0f, 0x23, 0x47, 0xf9, 0x56, 0x45, 0xe6, 0x94, 0x6c, 0xc2, 0xfd, 0x5c, + 0x9a, 0xfb, 0x3f, 0x01, 0xa4, 0x08, 0x49, 0xde, 0x8e, 0x89, 0xc3, 0xf5, 0xde, 0xa8, 0xf0, 0x50, + 0x81, 0xd5, 0x49, 0x29, 0x26, 0xb1, 0x5f, 0x48, 0xc5, 0x3e, 0x42, 0x90, 0xe3, 0xf6, 0x50, 0x45, + 0x41, 0x19, 0xcb, 0xdf, 0x82, 0x54, 0x21, 0xa5, 0x23, 0x45, 0xf4, 0x92, 0x44, 0x97, 0x84, 0x40, + 0xf2, 0x7c, 0x1f, 0x80, 0x71, 0x3b, 0xd4, 0x11, 0x07, 0x37, 0x47, 0x9c, 0x46, 0x1f, 0xf0, 0xff, + 0x2b, 0xc7, 0x77, 0xa0, 0x28, 0xa7, 0xe3, 0xb9, 0x92, 0xe1, 0x65, 0x5c, 0x10, 0x8f, 0x3d, 0x17, + 0xfd, 0x2c, 0x26, 0x5c, 0x55, 0x0e, 0x76, 0x6f, 0x85, 0xd3, 0xa7, 0x48, 0x97, 0x62, 0x49, 0x6d, + 0x25, 0x4b, 0x9e, 0xd3, 0x8b, 0x59, 0x96, 0x98, 0x7f, 0x01, 0x79, 0x39, 0x18, 0xba, 0x0f, 0x0d, + 0x91, 0xa9, 0x2d, 0x1e, 0x85, 0x01, 0xd3, 0xe1, 0xa3, 0x4a, 0x5f, 0x4d, 0xc8, 0x07, 0x42, 0xac, + 0x22, 0xe8, 0x01, 0xac, 0xdb, 0x91, 0xeb, 0xd1, 0x29, 0xa8, 0xaa, 0x86, 0x75, 0xa9, 0x98, 0x60, + 0x77, 0x29, 0x14, 0x14, 0x41, 0x10, 0x82, 0x5a, 0x7f, 0x70, 0x30, 0x38, 0xef, 0x5b, 0x67, 0x9d, + 0xd3, 0xa3, 0xde, 0xe9, 0xb3, 0xc6, 0x9d, 0x94, 0x0c, 0x9f, 0x9f, 0x9e, 0x0a, 0x99, 0x81, 0x36, + 0xa1, 0xa1, 0x65, 0x87, 0x2f, 0x4e, 0xce, 0x8e, 0x3b, 0x83, 0xce, 0x51, 0x23, 0x83, 0xd6, 0xa1, + 0xaa, 0xa5, 0x5f, 0x1f, 0xf4, 0x8e, 0x3b, 0x47, 0x8d, 0x6c, 0x1a, 0x78, 0x70, 0x7a, 0xd8, 0x39, + 0x16, 0xd2, 0xdc, 0xf3, 0x5c, 0xa9, 0xdc, 0x00, 0xf3, 0x7f, 0x3e, 0x03, 0x98, 0xac, 0x16, 0x3d, + 0x80, 0x9a, 0xed, 0x38, 0x51, 0x68, 0x3b, 0xd7, 0x16, 0x73, 0x68, 0x48, 0xe4, 0xca, 0x32, 0xdd, + 0x3b, 0xb8, 0x1a, 0xcb, 0xfb, 0x42, 0xfc, 0x9d, 0x61, 0xa0, 0x16, 0x34, 0x04, 0x01, 0x43, 0x8f, + 0x04, 0x0e, 0xd1, 0xe8, 0x8c, 0x44, 0x1b, 0xb8, 0x3e, 0xd1, 0x24, 0xf8, 0xcf, 0xa1, 0xce, 0x6d, + 0xf6, 0xca, 0x72, 0xe8, 0x68, 0xec, 0x13, 0x99, 0xf3, 0xb3, 0x12, 0x9e, 0xc1, 0x35, 0xa1, 0x38, + 0x4c, 0xe4, 0x02, 0xfd, 0x25, 0x64, 0x19, 0xe7, 0x92, 0xf8, 0x95, 0xbd, 0x1f, 0xde, 0xb8, 0x4f, + 0xad, 0xfe, 0x60, 0x80, 0x85, 0x85, 0x30, 0xf4, 0xfd, 0x91, 0x0c, 0x87, 0x5b, 0x19, 0x1e, 0x1f, + 0x9f, 0x60, 0x61, 0x21, 0x0c, 0x39, 0x67, 0xba, 0x96, 0xdc, 0xc2, 0x70, 0x30, 0xe8, 0x63, 0x61, + 0x81, 0x30, 0xac, 0x39, 0x34, 0x78, 0x4d, 0x42, 0x26, 0x61, 0xcd, 0xa2, 0x1c, 0xa1, 0x75, 0xf3, + 0x08, 0x87, 0x29, 0x2b, 0x3c, 0x35, 0x06, 0xea, 0x41, 0x59, 0x27, 0x5e, 0x1a, 0xca, 0x50, 0xac, + 0xec, 0x3d, 0xbc, 0x85, 0x13, 0x62, 0x13, 0x3c, 0xb1, 0x46, 0xbf, 0x80, 0xbc, 0xe4, 0x5f, 0xb3, + 0x2c, 0x0b, 0xde, 0x8f, 0x6e, 0xb1, 0xb2, 0x28, 0x0c, 0xb0, 0x32, 0x42, 0x1f, 0x43, 0xe5, 0x2a, + 0x72, 0x87, 0x44, 0x9d, 0x06, 0x65, 0xdc, 0x97, 0x31, 0x48, 0x91, 0xc8, 0xbf, 0x3e, 0xfa, 0x1c, + 0xd0, 0xa5, 0xcd, 0xac, 0x90, 0x8c, 0x28, 0x27, 0xf1, 0x31, 0x54, 0x06, 0x6c, 0x09, 0x37, 0x2e, + 0x6d, 0x86, 0xa5, 0xa2, 0xaf, 0xe4, 0xe8, 0x01, 0x64, 0xf8, 0x63, 0x1d, 0xb7, 0xab, 0x92, 0x40, + 0x86, 0x3f, 0x46, 0x3f, 0x54, 0x35, 0xc2, 0x63, 0x24, 0x20, 0x4c, 0x85, 0x6c, 0xa6, 0x9b, 0xc5, + 0x69, 0xa1, 0x60, 0xca, 0x3e, 0x6c, 0x47, 0x41, 0x40, 0x1c, 0xc2, 0x98, 0x48, 0xe1, 0x9c, 0x52, + 0xdf, 0x72, 0x6c, 0xdf, 0x57, 0xe5, 0xaa, 0xd4, 0xcd, 0xe1, 0xcd, 0x94, 0x7e, 0x40, 0xa9, 0x7f, + 0x28, 0xb4, 0x9a, 0xc2, 0x5e, 0xf0, 0x92, 0x86, 0x23, 0xe9, 0x05, 0xcb, 0xa7, 0x8c, 0xc9, 0x22, + 0x56, 0xea, 0xe6, 0x71, 0x3d, 0xa5, 0x39, 0xa6, 0xea, 0x55, 0x3f, 0x83, 0xcd, 0x90, 0xb8, 0x51, + 0xe0, 0xda, 0xe2, 0xc4, 0xcd, 0x6d, 0x4e, 0x46, 0x24, 0xe0, 0x4c, 0x96, 0xaf, 0x52, 0xb7, 0x80, + 0x37, 0x12, 0x6d, 0x3f, 0x51, 0x2a, 0x32, 0x6f, 0x8d, 0x29, 0x0d, 0xad, 0xdf, 0x44, 0xea, 0x3c, + 0x66, 0xfd, 0x26, 0xb2, 0x7d, 0x8f, 0x5f, 0xcb, 0xe2, 0x56, 0xea, 0x16, 0xf1, 0x86, 0x50, 0x7f, + 0xa3, 0xb5, 0xdf, 0x28, 0xa5, 0x30, 0xfc, 0x63, 0x68, 0xa6, 0x69, 0x61, 0x8d, 0x43, 0x3a, 0x0c, + 0xb5, 0x8b, 0x37, 0xa4, 0x3f, 0x4a, 0x78, 0x27, 0x8d, 0x38, 0x9b, 0x00, 0xbe, 0x33, 0x0c, 0xf3, + 0x0f, 0x39, 0xc8, 0xf6, 0x07, 0x03, 0xb4, 0x05, 0xd9, 0x37, 0x24, 0x4c, 0x82, 0x59, 0x3c, 0x88, + 0xe1, 0xef, 0x42, 0xfe, 0x0d, 0x0d, 0x5d, 0x55, 0xbd, 0xaa, 0x5d, 0x03, 0xab, 0x47, 0xa1, 0xfa, + 0x0c, 0x2a, 0xe2, 0xb7, 0x25, 0x4b, 0x8e, 0xaa, 0x4e, 0xd5, 0x6e, 0x06, 0x83, 0x10, 0x76, 0xa4, + 0x4c, 0xa0, 0xb6, 0x20, 0xeb, 0x10, 0x55, 0x9e, 0xc4, 0xd6, 0x88, 0x07, 0x3d, 0xae, 0x73, 0x69, + 0x87, 0x4c, 0x9e, 0x96, 0xaa, 0xdd, 0x1c, 0x56, 0x8f, 0x7a, 0x5c, 0xf1, 0x3b, 0x1e, 0x17, 0x24, + 0x20, 0x8f, 0x41, 0x08, 0x27, 0xe3, 0xfe, 0x12, 0x9a, 0x3c, 0xb4, 0x83, 0xe4, 0x14, 0x68, 0xf9, + 0x36, 0x17, 0xa7, 0x02, 0x6b, 0xc4, 0x64, 0x34, 0x54, 0xbb, 0x05, 0xbc, 0x3d, 0x85, 0x38, 0x56, + 0x80, 0x13, 0x69, 0xbe, 0x07, 0x88, 0x04, 0xdc, 0xe3, 0xd7, 0x56, 0x48, 0x1c, 0x3a, 0x0c, 0x3c, + 0x19, 0x97, 0x15, 0x39, 0xcb, 0x22, 0x5e, 0x57, 0x3a, 0x3c, 0x51, 0xc5, 0xe9, 0x4c, 0xc8, 0x3d, + 0xc2, 0xac, 0x88, 0x73, 0x12, 0x12, 0x55, 0x76, 0xaa, 0xdd, 0x12, 0xae, 0xc7, 0x9a, 0x73, 0xa5, + 0x10, 0xf8, 0x9f, 0xc2, 0x46, 0x82, 0xd7, 0x6f, 0xf9, 0x2d, 0x71, 0x25, 0xb5, 0xab, 0xdd, 0x32, + 0x46, 0xb1, 0x12, 0x27, 0xba, 0xef, 0x0c, 0xa3, 0x5d, 0x80, 0x9c, 0xf5, 0x86, 0x84, 0xed, 0x12, + 0x14, 0x2c, 0xe9, 0xeb, 0x76, 0x0d, 0xd6, 0xac, 0x94, 0xa7, 0x25, 0xc2, 0xd1, 0x08, 0xe9, 0x35, + 0x89, 0x48, 0xf9, 0xac, 0xfd, 0x01, 0xdc, 0xb5, 0x96, 0x79, 0xa7, 0xbd, 0x05, 0x1b, 0xd6, 0xfc, + 0xda, 0xdb, 0x1b, 0xb0, 0x6e, 0xcd, 0x2e, 0xaf, 0xbd, 0x0d, 0x9b, 0xd6, 0x82, 0x35, 0x98, 0xbf, + 0x33, 0x20, 0x7b, 0x7c, 0x7c, 0x82, 0x7e, 0x00, 0x45, 0xce, 0x5f, 0x72, 0xe1, 0x74, 0x43, 0x2e, + 0xeb, 0x0e, 0x2e, 0x08, 0x81, 0x72, 0xb2, 0xd2, 0x32, 0xa1, 0x8d, 0xe9, 0x23, 0xb4, 0x4c, 0x69, + 0x1f, 0xc1, 0x3a, 0xa7, 0xaf, 0x48, 0xc0, 0xac, 0x31, 0x09, 0x2d, 0x46, 0x1c, 0x1a, 0xb8, 0x49, + 0xbe, 0xaf, 0x2b, 0xd5, 0x19, 0x09, 0xfb, 0x52, 0x21, 0x3c, 0x03, 0x50, 0xb2, 0xf4, 0xdb, 0xe2, + 0xdf, 0x62, 0xec, 0xf6, 0x26, 0x20, 0x6b, 0x6e, 0x24, 0xf3, 0xaf, 0x72, 0x90, 0x1d, 0x0c, 0xfa, + 0x7a, 0x12, 0x17, 0x93, 0x49, 0xa8, 0x29, 0x5e, 0x9c, 0xc4, 0xf4, 0x14, 0xb4, 0xcf, 0xea, 0xaa, + 0x34, 0x47, 0xfb, 0xa2, 0x66, 0xf5, 0x52, 0xda, 0x2b, 0xae, 0x65, 0x97, 0xd0, 0xbe, 0x2c, 0xc7, + 0xcd, 0xcd, 0xd3, 0x3e, 0x66, 0xf5, 0x52, 0xda, 0x57, 0x34, 0x87, 0x67, 0x68, 0xbf, 0x98, 0xb7, + 0xb5, 0x77, 0xe6, 0x6d, 0xfd, 0xdd, 0x79, 0xdb, 0x58, 0xcd, 0x5b, 0xbd, 0x23, 0xc2, 0xd1, 0xdf, + 0x0b, 0x87, 0xbf, 0x0f, 0x9a, 0xfe, 0x53, 0x09, 0xd6, 0xd2, 0x25, 0x54, 0x72, 0x2e, 0x0a, 0x03, + 0x8b, 0xdb, 0xaf, 0xbc, 0x60, 0x38, 0x73, 0x80, 0xa9, 0x0b, 0xd5, 0x40, 0x6a, 0x92, 0x23, 0xc9, + 0x53, 0xd8, 0x09, 0x09, 0x1b, 0xd3, 0x80, 0x91, 0x24, 0x86, 0xc6, 0x4f, 0x1e, 0xc7, 0x6c, 0xca, + 0x77, 0x0d, 0xbc, 0x19, 0x03, 0x74, 0x82, 0x39, 0x7b, 0xf2, 0x58, 0x71, 0x6b, 0xa1, 0xed, 0xfe, + 0x13, 0x61, 0x9b, 0x95, 0xb6, 0x99, 0x79, 0xdb, 0xfd, 0x27, 0xab, 0x6c, 0xf7, 0x85, 0x6d, 0x4e, + 0xda, 0x66, 0x17, 0xd8, 0xee, 0x2b, 0xdb, 0x9f, 0xc3, 0xb6, 0x3a, 0xfd, 0x5f, 0x7b, 0xc4, 0x77, + 0xd3, 0x89, 0x31, 0xaf, 0x93, 0xed, 0x86, 0xd4, 0xff, 0x5a, 0xa8, 0xa7, 0xb2, 0xe2, 0x57, 0xb0, + 0x43, 0x28, 0xb7, 0x46, 0x1e, 0x1b, 0x87, 0xc4, 0xf5, 0xe4, 0x1d, 0x43, 0x1f, 0x4a, 0x0b, 0x9a, + 0xb0, 0x5b, 0x84, 0xf2, 0x93, 0xb4, 0x5e, 0x1e, 0x4e, 0x85, 0xf1, 0x7d, 0xa8, 0xd2, 0xd7, 0x24, + 0xf4, 0xed, 0xb1, 0x15, 0x0a, 0x6f, 0xcb, 0xd8, 0xc9, 0x74, 0x0b, 0x78, 0x4d, 0x8b, 0xb1, 0x90, + 0xea, 0xc8, 0x8f, 0x91, 0x6c, 0x4c, 0x88, 0x73, 0x39, 0x49, 0xda, 0x45, 0x5c, 0xd7, 0xaa, 0xbe, + 0xd4, 0xa8, 0x79, 0x3d, 0x84, 0x3a, 0xa7, 0xdc, 0xf6, 0x53, 0xf0, 0xb2, 0x26, 0x70, 0x55, 0x2a, + 0xd2, 0xe0, 0x2f, 0x61, 0xcb, 0x7e, 0xf3, 0xea, 0x8d, 0x1d, 0xba, 0x16, 0xf3, 0x7c, 0x79, 0xf4, + 0x54, 0x4b, 0xa8, 0x68, 0x02, 0x6f, 0x68, 0x75, 0x5f, 0x69, 0x93, 0x05, 0xb4, 0xa0, 0x11, 0x05, + 0x76, 0xc0, 0xde, 0x08, 0x4e, 0xa9, 0x13, 0xb9, 0xce, 0xef, 0x80, 0xeb, 0x13, 0x8d, 0x3c, 0x92, + 0xeb, 0x12, 0xf4, 0xd2, 0xf6, 0x19, 0xb1, 0xbc, 0x80, 0x93, 0x30, 0x8c, 0xc6, 0x29, 0x77, 0xa9, + 0x24, 0x5f, 0xc1, 0xdb, 0x12, 0xd1, 0x4b, 0x01, 0x92, 0xd7, 0x75, 0xe0, 0x43, 0xb5, 0x4d, 0x21, + 0x19, 0x53, 0x79, 0x6b, 0x22, 0x7b, 0x24, 0xbd, 0x5b, 0x2a, 0x46, 0xd7, 0xf0, 0x5d, 0x09, 0xc3, + 0x1a, 0xd5, 0xd9, 0x23, 0xe9, 0x3d, 0x53, 0xd9, 0x6f, 0x96, 0xd3, 0x6d, 0x13, 0x9a, 0xd6, 0x12, + 0xe2, 0x2e, 0xd1, 0x49, 0x62, 0x2e, 0xd3, 0x09, 0xe2, 0xb5, 0xef, 0xc2, 0x8e, 0xb5, 0x98, 0x58, + 0xd2, 0x6c, 0x09, 0x73, 0xda, 0x0d, 0xa8, 0x59, 0x53, 0xc4, 0x90, 0x53, 0x9e, 0x23, 0x40, 0x1b, + 0x41, 0xc3, 0x9a, 0xd9, 0xe5, 0x76, 0x13, 0xb6, 0xad, 0x85, 0x9b, 0x29, 0xf3, 0xc0, 0xec, 0x6e, + 0xc9, 0xba, 0xb7, 0x6c, 0x4b, 0xda, 0xf7, 0xe0, 0x23, 0x6b, 0xa5, 0xc3, 0xcd, 0xbf, 0x35, 0xa0, + 0x9c, 0x1c, 0x90, 0xd1, 0x63, 0x58, 0x27, 0x76, 0xe8, 0x5f, 0x5b, 0x9c, 0x84, 0x23, 0x2f, 0xb0, + 0x93, 0x2f, 0x6b, 0xa5, 0xee, 0x1d, 0xdc, 0x90, 0xaa, 0xc1, 0x44, 0xa3, 0x09, 0x24, 0x46, 0x9b, + 0x32, 0xc8, 0x48, 0x03, 0x03, 0xd7, 0x85, 0x66, 0x1a, 0x2f, 0xfd, 0x30, 0xf7, 0x0a, 0xb9, 0xb2, + 0xd9, 0x61, 0xcc, 0xbf, 0x2f, 0x41, 0x4e, 0x10, 0x4f, 0xdc, 0xd5, 0xbd, 0xc0, 0x25, 0x6f, 0x55, + 0xbd, 0xc5, 0xea, 0x01, 0x3d, 0x84, 0x5c, 0x48, 0x7d, 0xa2, 0xbf, 0x31, 0xec, 0x2c, 0xf8, 0x7a, + 0x88, 0xa9, 0x4f, 0xb0, 0x04, 0xa1, 0x8f, 0xa0, 0x24, 0x6f, 0xde, 0x71, 0x22, 0x12, 0x25, 0xb1, + 0x28, 0x25, 0x2a, 0x80, 0x4c, 0x28, 0x90, 0xc0, 0x8d, 0x53, 0x8d, 0x3c, 0xf4, 0x91, 0xc0, 0x3d, + 0xb9, 0xf1, 0xd8, 0x95, 0xd7, 0xb5, 0x72, 0xc5, 0xb1, 0xeb, 0x53, 0xa8, 0xf8, 0xfe, 0x28, 0xae, + 0xe2, 0x3a, 0xa9, 0x64, 0x71, 0xd9, 0xf7, 0x47, 0x83, 0xe4, 0xd8, 0x30, 0x01, 0xc9, 0xa3, 0x43, + 0x51, 0x27, 0x2d, 0x0d, 0x5a, 0x75, 0x7a, 0x28, 0xc9, 0x8c, 0x93, 0x5f, 0x74, 0x7a, 0x10, 0xa3, + 0x72, 0xce, 0xe2, 0x12, 0xa5, 0xf3, 0x47, 0x01, 0x97, 0x39, 0x67, 0x83, 0xe4, 0x38, 0x70, 0x63, + 0x4c, 0x82, 0xce, 0x52, 0x2b, 0x63, 0x12, 0x7d, 0x01, 0x1b, 0x73, 0x41, 0x34, 0x52, 0x35, 0x3d, + 0xdf, 0x2d, 0xe1, 0xf5, 0x99, 0xcc, 0x7d, 0x53, 0xda, 0x5e, 0x4b, 0x12, 0xd7, 0xe2, 0xb4, 0xbd, + 0xb0, 0xaa, 0x55, 0xa5, 0x2f, 0x60, 0x61, 0x55, 0x5b, 0x78, 0x6f, 0xaa, 0xcc, 0xdd, 0x9b, 0x44, + 0x04, 0xcc, 0x06, 0xb5, 0xbe, 0x32, 0xad, 0xe1, 0xc6, 0x6c, 0x21, 0xd0, 0x37, 0xf8, 0x99, 0x70, + 0xd5, 0xb7, 0xa5, 0x2a, 0xae, 0x4d, 0x67, 0x5d, 0xb5, 0x25, 0x30, 0x09, 0x61, 0x7d, 0x45, 0xaa, + 0xe1, 0x94, 0x4c, 0x04, 0x49, 0x05, 0xca, 0x56, 0x4c, 0xd7, 0x76, 0x19, 0x8a, 0x96, 0xe2, 0xe6, + 0xea, 0x33, 0xae, 0x38, 0x4c, 0xa4, 0x88, 0x96, 0x7e, 0x5e, 0x7e, 0x64, 0x94, 0xa8, 0x14, 0x47, + 0x6e, 0xce, 0x18, 0xf2, 0xe0, 0xb1, 0x60, 0xa7, 0x57, 0xa5, 0xca, 0xc5, 0xf9, 0x5a, 0x9e, 0x7e, + 0x26, 0xde, 0x57, 0xa9, 0x61, 0xd6, 0xf7, 0x32, 0x45, 0xce, 0xf8, 0xb7, 0x5d, 0x85, 0x4a, 0x2a, + 0x11, 0xb6, 0xd7, 0xa1, 0x6e, 0x4d, 0x7f, 0xa0, 0x51, 0x47, 0xa6, 0x99, 0xef, 0x30, 0x2a, 0xdb, + 0x4e, 0x7f, 0x6c, 0x99, 0x9b, 0x84, 0x58, 0xc5, 0xe2, 0x8b, 0xb3, 0x1c, 0x73, 0xf6, 0x62, 0xdc, + 0xde, 0x81, 0x2d, 0x6b, 0xd1, 0xed, 0x57, 0xa6, 0xf1, 0x85, 0xd7, 0x5b, 0xb9, 0x8b, 0xcb, 0xee, + 0xaf, 0xe6, 0x7f, 0x64, 0x01, 0x26, 0x9f, 0x63, 0xdf, 0xeb, 0xa7, 0xa7, 0x3f, 0x02, 0x94, 0x7c, + 0xa3, 0x1f, 0xdb, 0x8c, 0x89, 0x4a, 0x45, 0x92, 0xdb, 0x48, 0x23, 0xd6, 0x9d, 0xd9, 0x8c, 0x61, + 0x9b, 0x93, 0xff, 0xff, 0xfe, 0x74, 0x6b, 0xa2, 0x89, 0x73, 0xfc, 0xbc, 0x6b, 0xcd, 0xff, 0xce, + 0x42, 0xe1, 0x50, 0x76, 0x5c, 0xcc, 0xff, 0xcc, 0x40, 0x11, 0x13, 0x49, 0x8d, 0x99, 0x76, 0x92, + 0x31, 0xdb, 0x4e, 0x9a, 0xee, 0xb4, 0x64, 0x66, 0x3b, 0x2d, 0x0b, 0x1a, 0x12, 0xb9, 0x85, 0x0d, + 0x89, 0x6d, 0x28, 0x84, 0x64, 0x28, 0x5c, 0x51, 0xd0, 0xdf, 0x8d, 0xe5, 0x13, 0x6a, 0xcf, 0xb5, + 0x6a, 0x8a, 0xab, 0x5a, 0x35, 0x82, 0x7a, 0x53, 0xcd, 0x9a, 0x54, 0x72, 0x8d, 0x1b, 0x17, 0x25, + 0x7d, 0x4d, 0x48, 0x0b, 0xd5, 0x99, 0x56, 0x75, 0x2f, 0xca, 0xb7, 0xe8, 0x5e, 0x48, 0x67, 0x4f, + 0x4f, 0x2c, 0x09, 0x56, 0x3d, 0xe4, 0xf3, 0x5c, 0x29, 0xdb, 0xc8, 0xe1, 0xf9, 0xb6, 0x99, 0xf9, + 0xd7, 0x06, 0x94, 0xb0, 0xce, 0x51, 0xe8, 0x01, 0xac, 0x4f, 0xbc, 0x63, 0x85, 0x51, 0x30, 0x71, + 0x73, 0x9d, 0xa5, 0x59, 0xd0, 0x73, 0x51, 0x1f, 0xb6, 0xc7, 0x21, 0x61, 0xde, 0x30, 0x20, 0xae, + 0x35, 0xa6, 0x4c, 0xa4, 0x41, 0xb9, 0x4b, 0xba, 0x49, 0x39, 0xe9, 0xe5, 0x9d, 0xc5, 0xb0, 0x33, + 0xca, 0xb8, 0xde, 0x4a, 0xbc, 0x39, 0x5e, 0x20, 0x35, 0x7f, 0x67, 0xc0, 0xc6, 0x21, 0x0d, 0x5e, + 0x7a, 0xe1, 0xa8, 0x4f, 0xa3, 0xd0, 0x21, 0xe7, 0x63, 0x9f, 0xda, 0xae, 0xf9, 0x97, 0xb7, 0xe6, + 0xc0, 0xc2, 0x25, 0x64, 0x16, 0x2f, 0xe1, 0xc7, 0x50, 0x77, 0xa8, 0x4b, 0xc4, 0xe5, 0x30, 0xbc, + 0x1e, 0x53, 0x2f, 0xe0, 0xba, 0x8b, 0x52, 0x13, 0xe2, 0x4e, 0x22, 0x35, 0x61, 0xe2, 0x23, 0xf3, + 0x6f, 0x0c, 0xc8, 0x3e, 0x23, 0xdc, 0x1c, 0xbc, 0x8f, 0x29, 0x99, 0x3f, 0x4d, 0xed, 0xc6, 0x7d, + 0xc8, 0x86, 0x91, 0x3a, 0x54, 0x4e, 0x71, 0x2c, 0x6d, 0x82, 0x05, 0xc4, 0xfc, 0x97, 0x0c, 0xe4, + 0x8e, 0x3d, 0xc6, 0xcd, 0x7f, 0x36, 0x6e, 0x3d, 0xab, 0xa7, 0x33, 0xad, 0xa7, 0xd5, 0xbd, 0xd7, + 0xee, 0x9d, 0xb8, 0xf1, 0x24, 0xd8, 0xf9, 0x0b, 0x80, 0xb1, 0x3d, 0x24, 0xaa, 0x48, 0x4a, 0x9f, + 0x55, 0xf6, 0x9a, 0x89, 0xfd, 0x40, 0x48, 0xcf, 0xec, 0xa1, 0x3e, 0x9d, 0x76, 0x0d, 0x5c, 0x16, + 0x68, 0x29, 0x16, 0x35, 0x5b, 0x94, 0x69, 0x35, 0x96, 0x2c, 0x4f, 0x93, 0x91, 0xcc, 0xb7, 0x53, + 0x5c, 0xcc, 0x85, 0x51, 0xc0, 0x9a, 0x86, 0xfc, 0xea, 0xbc, 0x6c, 0xf9, 0x12, 0x83, 0x7e, 0x05, + 0xf5, 0x80, 0xbc, 0xe5, 0xa9, 0xa1, 0x34, 0x09, 0x97, 0x4e, 0x0a, 0x57, 0x85, 0xc1, 0x59, 0x3c, + 0x2d, 0xf3, 0x0a, 0x0a, 0x87, 0x76, 0xe0, 0x10, 0xff, 0x3d, 0xed, 0x6b, 0x9a, 0x41, 0xef, 0xb9, + 0x13, 0xf4, 0x7b, 0x23, 0x69, 0x05, 0xdd, 0x85, 0xad, 0xe9, 0x56, 0x90, 0x75, 0x7e, 0x76, 0xfc, + 0xe2, 0xe0, 0xa8, 0x71, 0x07, 0x6d, 0xc1, 0xba, 0x56, 0x3d, 0xeb, 0x9c, 0x76, 0xf0, 0xc1, 0x40, + 0x35, 0x85, 0xe6, 0x1b, 0x45, 0x19, 0xb4, 0x0d, 0x48, 0xcb, 0xfa, 0xe7, 0x27, 0x27, 0x07, 0xb8, + 0xf7, 0xad, 0x90, 0x67, 0x17, 0x36, 0x90, 0x72, 0xf3, 0x0d, 0xa4, 0xfc, 0xc2, 0x06, 0x52, 0xe1, + 0x79, 0xae, 0x54, 0x6a, 0x94, 0x71, 0x51, 0xb7, 0x49, 0x77, 0x7f, 0x9f, 0x85, 0x52, 0x9c, 0x3e, + 0x27, 0x3d, 0x47, 0x23, 0xdd, 0x73, 0x9c, 0x6d, 0x79, 0x66, 0x16, 0xb4, 0x3c, 0x17, 0x37, 0x37, + 0xb3, 0xcb, 0x9a, 0x9b, 0x8f, 0x74, 0x1b, 0x33, 0x27, 0x59, 0xf6, 0xc1, 0x5c, 0x22, 0x6f, 0x0d, + 0xec, 0x21, 0x53, 0xff, 0xdb, 0x50, 0x3d, 0x4e, 0x13, 0x4a, 0x11, 0x23, 0xa1, 0x6b, 0x73, 0x5b, + 0xb7, 0x4c, 0x93, 0x67, 0xf3, 0x1f, 0x0c, 0x58, 0x57, 0x55, 0xeb, 0xeb, 0x90, 0x8e, 0x74, 0xcb, + 0xc2, 0xfc, 0xf5, 0xad, 0x09, 0x95, 0x6a, 0x58, 0x66, 0xa6, 0x1a, 0x96, 0x93, 0x82, 0x94, 0x4d, + 0x17, 0x24, 0x73, 0x3f, 0x15, 0x2f, 0x3f, 0x81, 0x52, 0x5c, 0x03, 0x74, 0xca, 0x58, 0x9f, 0x5b, + 0x0d, 0x4e, 0x20, 0xe6, 0x97, 0x50, 0x4e, 0x96, 0xb6, 0xe0, 0x1f, 0x27, 0x9b, 0xe9, 0x7f, 0x9c, + 0x94, 0x53, 0xff, 0x2a, 0xd9, 0x1d, 0x40, 0x75, 0xaa, 0xca, 0x21, 0x04, 0x39, 0x59, 0x6f, 0x95, + 0xb5, 0xfc, 0x8d, 0x1e, 0x41, 0x39, 0x7e, 0x93, 0xd8, 0xa6, 0xec, 0xe2, 0xd9, 0x4c, 0x30, 0xbb, + 0x7f, 0x30, 0x00, 0x4d, 0x22, 0xfb, 0xc8, 0x63, 0x63, 0x9b, 0x3b, 0x97, 0xef, 0x54, 0x90, 0xb6, + 0xa0, 0x70, 0x45, 0x2f, 0x26, 0xce, 0xcb, 0x5f, 0xd1, 0x8b, 0x9e, 0x3b, 0xe5, 0x97, 0xec, 0x8d, + 0x7e, 0x49, 0x0a, 0x6f, 0xee, 0x16, 0x85, 0xf7, 0xc1, 0x4b, 0xa8, 0x4d, 0xcb, 0xd1, 0xc7, 0xf0, + 0x41, 0xbf, 0x77, 0x72, 0x7e, 0x7c, 0x30, 0xe8, 0xbd, 0x38, 0xb5, 0x4e, 0x5e, 0x1c, 0x75, 0xac, + 0xf3, 0xd3, 0xfe, 0x59, 0xe7, 0xb0, 0xf7, 0x75, 0xaf, 0x23, 0xe2, 0xae, 0x09, 0x9b, 0xb3, 0x80, + 0x41, 0xe7, 0xcf, 0x06, 0x0d, 0x43, 0x06, 0xeb, 0x8c, 0xe6, 0xe0, 0xfc, 0xa8, 0xf7, 0xa2, 0x91, + 0xd9, 0xfb, 0xbb, 0x3c, 0xd4, 0x0f, 0x04, 0x77, 0x27, 0x6f, 0x43, 0x2e, 0x6c, 0x28, 0xae, 0x4d, + 0xff, 0x03, 0x67, 0xd9, 0xc1, 0x4f, 0x61, 0x5b, 0x71, 0xa1, 0xfd, 0xd1, 0x4d, 0x30, 0xcd, 0xaa, + 0xef, 0x0c, 0xf8, 0x30, 0x2e, 0xc8, 0x09, 0x30, 0x5d, 0x9a, 0xd1, 0xde, 0xb2, 0x91, 0xe6, 0xcb, + 0x78, 0xf2, 0xf6, 0x2f, 0xde, 0xc9, 0x46, 0x4f, 0xe5, 0xcf, 0xa1, 0xf1, 0x8c, 0xf0, 0xe9, 0xd5, + 0xee, 0x2e, 0x19, 0xe8, 0x19, 0xe1, 0xc9, 0xcb, 0x3e, 0x5d, 0x89, 0xd1, 0x83, 0x5b, 0x80, 0x44, + 0x01, 0x9d, 0x42, 0x30, 0xb4, 0xcc, 0x54, 0x40, 0x93, 0xf1, 0x3f, 0x5b, 0x0d, 0xd2, 0x2f, 0x10, + 0xdb, 0x25, 0x0b, 0xcc, 0x2d, 0xb7, 0x4b, 0x62, 0x6f, 0xde, 0xae, 0x18, 0xa6, 0xdf, 0xf2, 0x1a, + 0xee, 0x6a, 0x52, 0x68, 0x3e, 0xa7, 0x12, 0x11, 0x7a, 0x38, 0x9f, 0xdd, 0xe6, 0xb2, 0x55, 0xf2, + 0xc6, 0xcf, 0x6f, 0x07, 0x56, 0xef, 0x6d, 0x7f, 0xfd, 0xed, 0xa7, 0x43, 0x8f, 0x5f, 0x46, 0x17, + 0x2d, 0x87, 0x8e, 0xe2, 0x7f, 0x16, 0xaa, 0x7f, 0x0f, 0x3a, 0xd4, 0x8f, 0x05, 0xff, 0x98, 0xa9, + 0x1e, 0x7b, 0xaf, 0xc9, 0x9f, 0xc8, 0x33, 0x21, 0xe5, 0xf4, 0xbf, 0x32, 0x35, 0xfd, 0xfc, 0xf4, + 0xa9, 0x14, 0x5c, 0x14, 0xa4, 0xc9, 0x17, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x93, 0x0a, 0x9a, + 0xd7, 0xcc, 0x28, 0x00, 0x00, } From 9e95d571cc98d3e74f8a2acd3c1456b75420eca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Sun, 2 Aug 2026 22:29:37 -0700 Subject: [PATCH 25/32] agent-simulation: name metric fields after the worker's model Every measured field on Turn now carries its ConversationTurn name with the unit suffix changed (stt_delay_s -> stt_delay_ms), and the aggregates follow the same names so a turn value and its mean or percentile read as the same measurement. --- protobufs/livekit_agent_simulation.proto | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/protobufs/livekit_agent_simulation.proto b/protobufs/livekit_agent_simulation.proto index b3d538e67..f1e2358cc 100644 --- a/protobufs/livekit_agent_simulation.proto +++ b/protobufs/livekit_agent_simulation.proto @@ -117,7 +117,7 @@ message SimulationRun { optional float cer = 4; // needs the RemoteSession; char_errors / chars optional uint32 chars = 9; // needs the RemoteSession optional uint32 char_errors = 10; // needs the RemoteSession - optional uint32 transcription_latency_ms = 8; // needs the RemoteSession; agent-reported STT/endpointing delay + optional uint32 stt_delay_ms = 8; // needs the RemoteSession; agent-reported STT/endpointing delay // Key entities (names, IDs, amounts) the caller said. Needs the text judge. optional float entity_recognition = 11; // recognized / uttered @@ -150,10 +150,10 @@ message SimulationRun { // Audio only. message Conversation { optional float turn_taking_score = 1; // 0-1 - optional int32 response_latency_p50_ms = 2; // floor-transfer offset; a gap is > 0, an overlap < 0 - optional int32 response_latency_p95_ms = 3; - optional int32 response_latency_p99_ms = 4; - optional uint32 agent_yield_latency_ms = 5; // agent audio continuing past a barge-in + optional int32 heard_e2e_latency_p50_ms = 2; // floor-transfer offset; a gap is > 0, an overlap < 0 + optional int32 heard_e2e_latency_p95_ms = 3; + optional int32 heard_e2e_latency_p99_ms = 4; + optional uint32 time_to_yield_ms = 5; // agent audio continuing past a barge-in optional uint32 eot_misprediction_count = 6; // agent started before the caller's turn ended optional float overlap_ratio = 7; // overlapping speech / total speech optional uint32 overlap_speech_ms = 8; // pooling stats for overlap_ratio @@ -161,7 +161,7 @@ message SimulationRun { optional uint32 awkward_silence_count = 11; // gaps past the natural-pause threshold optional uint32 unanswered_turns = 12; // the simulated party spoke, the agent never responded optional uint32 false_interruption_count = 13; // needs the RemoteSession; agent paused for a non-interruption - optional uint32 agent_reported_e2e_latency_ms = 15; // needs the RemoteSession; the agent's own claim + optional uint32 e2e_latency_ms = 15; // needs the RemoteSession; the agent's own claim } // Was the call spoiled by the simulator, not the agent? Diagnostic only, @@ -179,15 +179,15 @@ message SimulationRun { optional uint32 start_ms = 3; // audio only; relative to t0; unset if the turn could not be aligned to the audio optional uint32 end_ms = 4; // audio only - optional uint32 transcription_latency_ms = 5; // needs the RemoteSession; simulator turns + optional uint32 stt_delay_ms = 5; // needs the RemoteSession; simulator turns optional uint32 llm_ttft_ms = 6; // needs the RemoteSession optional uint32 llm_ttfs_ms = 7; // needs the RemoteSession - optional float tokens_per_second = 8; // needs the RemoteSession + optional float llm_tps = 8; // needs the RemoteSession optional uint32 tts_ttfb_ms = 9; // needs the RemoteSession - optional uint32 agent_reported_e2e_latency_ms = 10; // needs the RemoteSession + optional uint32 e2e_latency_ms = 10; // needs the RemoteSession; the agent's own claim - optional int32 response_latency_ms = 11; // floor-transfer offset, cut-in if negative - optional uint32 agent_yield_latency_ms = 12; // agent audio continuing past a barge-in + optional int32 heard_e2e_latency_ms = 11; // floor-transfer offset, cut-in if negative + optional uint32 time_to_yield_ms = 12; // agent audio continuing past a barge-in optional float turn_taking_score = 13; // 0-1 optional float conciseness = 14; // needs the text judge From a73cf4c38ffd2365f49b7d8c5a6584b4bfef11c9 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 05:30:32 +0000 Subject: [PATCH 26/32] generated protobuf --- livekit/livekit_agent_simulation.pb.go | 237 ++++++------ livekit/livekit_agent_simulation.twirp.go | 433 +++++++++++----------- 2 files changed, 336 insertions(+), 334 deletions(-) diff --git a/livekit/livekit_agent_simulation.pb.go b/livekit/livekit_agent_simulation.pb.go index 1ac87ebc5..55c35057d 100644 --- a/livekit/livekit_agent_simulation.pb.go +++ b/livekit/livekit_agent_simulation.pb.go @@ -1452,14 +1452,14 @@ func (x *SimulationRun_Job_Usage) GetAudioTurnsCount() int32 { // The agent's perception of the caller. Audio only. type SimulationRun_JobMetrics_STT struct { - state protoimpl.MessageState `protogen:"open.v1"` - Wer *float32 `protobuf:"fixed32,1,opt,name=wer,proto3,oneof" json:"wer,omitempty"` // needs the RemoteSession; word_errors / words - Words *uint32 `protobuf:"varint,2,opt,name=words,proto3,oneof" json:"words,omitempty"` // needs the RemoteSession - WordErrors *uint32 `protobuf:"varint,3,opt,name=word_errors,json=wordErrors,proto3,oneof" json:"word_errors,omitempty"` // needs the RemoteSession - Cer *float32 `protobuf:"fixed32,4,opt,name=cer,proto3,oneof" json:"cer,omitempty"` // needs the RemoteSession; char_errors / chars - Chars *uint32 `protobuf:"varint,9,opt,name=chars,proto3,oneof" json:"chars,omitempty"` // needs the RemoteSession - CharErrors *uint32 `protobuf:"varint,10,opt,name=char_errors,json=charErrors,proto3,oneof" json:"char_errors,omitempty"` // needs the RemoteSession - TranscriptionLatencyMs *uint32 `protobuf:"varint,8,opt,name=transcription_latency_ms,json=transcriptionLatencyMs,proto3,oneof" json:"transcription_latency_ms,omitempty"` // needs the RemoteSession; agent-reported STT/endpointing delay + state protoimpl.MessageState `protogen:"open.v1"` + Wer *float32 `protobuf:"fixed32,1,opt,name=wer,proto3,oneof" json:"wer,omitempty"` // needs the RemoteSession; word_errors / words + Words *uint32 `protobuf:"varint,2,opt,name=words,proto3,oneof" json:"words,omitempty"` // needs the RemoteSession + WordErrors *uint32 `protobuf:"varint,3,opt,name=word_errors,json=wordErrors,proto3,oneof" json:"word_errors,omitempty"` // needs the RemoteSession + Cer *float32 `protobuf:"fixed32,4,opt,name=cer,proto3,oneof" json:"cer,omitempty"` // needs the RemoteSession; char_errors / chars + Chars *uint32 `protobuf:"varint,9,opt,name=chars,proto3,oneof" json:"chars,omitempty"` // needs the RemoteSession + CharErrors *uint32 `protobuf:"varint,10,opt,name=char_errors,json=charErrors,proto3,oneof" json:"char_errors,omitempty"` // needs the RemoteSession + SttDelayMs *uint32 `protobuf:"varint,8,opt,name=stt_delay_ms,json=sttDelayMs,proto3,oneof" json:"stt_delay_ms,omitempty"` // needs the RemoteSession; agent-reported STT/endpointing delay // Key entities (names, IDs, amounts) the caller said. Needs the text judge. EntityRecognition *float32 `protobuf:"fixed32,11,opt,name=entity_recognition,json=entityRecognition,proto3,oneof" json:"entity_recognition,omitempty"` // recognized / uttered EntitiesUttered *uint32 `protobuf:"varint,12,opt,name=entities_uttered,json=entitiesUttered,proto3,oneof" json:"entities_uttered,omitempty"` @@ -1540,9 +1540,9 @@ func (x *SimulationRun_JobMetrics_STT) GetCharErrors() uint32 { return 0 } -func (x *SimulationRun_JobMetrics_STT) GetTranscriptionLatencyMs() uint32 { - if x != nil && x.TranscriptionLatencyMs != nil { - return *x.TranscriptionLatencyMs +func (x *SimulationRun_JobMetrics_STT) GetSttDelayMs() uint32 { + if x != nil && x.SttDelayMs != nil { + return *x.SttDelayMs } return 0 } @@ -1748,22 +1748,22 @@ func (x *SimulationRun_JobMetrics_TTS) GetEntitiesRecognized() uint32 { // Audio only. type SimulationRun_JobMetrics_Conversation struct { - state protoimpl.MessageState `protogen:"open.v1"` - TurnTakingScore *float32 `protobuf:"fixed32,1,opt,name=turn_taking_score,json=turnTakingScore,proto3,oneof" json:"turn_taking_score,omitempty"` // 0-1 - ResponseLatencyP50Ms *int32 `protobuf:"varint,2,opt,name=response_latency_p50_ms,json=responseLatencyP50Ms,proto3,oneof" json:"response_latency_p50_ms,omitempty"` // floor-transfer offset; a gap is > 0, an overlap < 0 - ResponseLatencyP95Ms *int32 `protobuf:"varint,3,opt,name=response_latency_p95_ms,json=responseLatencyP95Ms,proto3,oneof" json:"response_latency_p95_ms,omitempty"` - ResponseLatencyP99Ms *int32 `protobuf:"varint,4,opt,name=response_latency_p99_ms,json=responseLatencyP99Ms,proto3,oneof" json:"response_latency_p99_ms,omitempty"` - AgentYieldLatencyMs *uint32 `protobuf:"varint,5,opt,name=agent_yield_latency_ms,json=agentYieldLatencyMs,proto3,oneof" json:"agent_yield_latency_ms,omitempty"` // agent audio continuing past a barge-in - EotMispredictionCount *uint32 `protobuf:"varint,6,opt,name=eot_misprediction_count,json=eotMispredictionCount,proto3,oneof" json:"eot_misprediction_count,omitempty"` // agent started before the caller's turn ended - OverlapRatio *float32 `protobuf:"fixed32,7,opt,name=overlap_ratio,json=overlapRatio,proto3,oneof" json:"overlap_ratio,omitempty"` // overlapping speech / total speech - OverlapSpeechMs *uint32 `protobuf:"varint,8,opt,name=overlap_speech_ms,json=overlapSpeechMs,proto3,oneof" json:"overlap_speech_ms,omitempty"` // pooling stats for overlap_ratio - TotalSpeechMs *uint32 `protobuf:"varint,9,opt,name=total_speech_ms,json=totalSpeechMs,proto3,oneof" json:"total_speech_ms,omitempty"` - AwkwardSilenceCount *uint32 `protobuf:"varint,11,opt,name=awkward_silence_count,json=awkwardSilenceCount,proto3,oneof" json:"awkward_silence_count,omitempty"` // gaps past the natural-pause threshold - UnansweredTurns *uint32 `protobuf:"varint,12,opt,name=unanswered_turns,json=unansweredTurns,proto3,oneof" json:"unanswered_turns,omitempty"` // the simulated party spoke, the agent never responded - FalseInterruptionCount *uint32 `protobuf:"varint,13,opt,name=false_interruption_count,json=falseInterruptionCount,proto3,oneof" json:"false_interruption_count,omitempty"` // needs the RemoteSession; agent paused for a non-interruption - AgentReportedE2ELatencyMs *uint32 `protobuf:"varint,15,opt,name=agent_reported_e2e_latency_ms,json=agentReportedE2eLatencyMs,proto3,oneof" json:"agent_reported_e2e_latency_ms,omitempty"` // needs the RemoteSession; the agent's own claim - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TurnTakingScore *float32 `protobuf:"fixed32,1,opt,name=turn_taking_score,json=turnTakingScore,proto3,oneof" json:"turn_taking_score,omitempty"` // 0-1 + HeardE2ELatencyP50Ms *int32 `protobuf:"varint,2,opt,name=heard_e2e_latency_p50_ms,json=heardE2eLatencyP50Ms,proto3,oneof" json:"heard_e2e_latency_p50_ms,omitempty"` // floor-transfer offset; a gap is > 0, an overlap < 0 + HeardE2ELatencyP95Ms *int32 `protobuf:"varint,3,opt,name=heard_e2e_latency_p95_ms,json=heardE2eLatencyP95Ms,proto3,oneof" json:"heard_e2e_latency_p95_ms,omitempty"` + HeardE2ELatencyP99Ms *int32 `protobuf:"varint,4,opt,name=heard_e2e_latency_p99_ms,json=heardE2eLatencyP99Ms,proto3,oneof" json:"heard_e2e_latency_p99_ms,omitempty"` + TimeToYieldMs *uint32 `protobuf:"varint,5,opt,name=time_to_yield_ms,json=timeToYieldMs,proto3,oneof" json:"time_to_yield_ms,omitempty"` // agent audio continuing past a barge-in + EotMispredictionCount *uint32 `protobuf:"varint,6,opt,name=eot_misprediction_count,json=eotMispredictionCount,proto3,oneof" json:"eot_misprediction_count,omitempty"` // agent started before the caller's turn ended + OverlapRatio *float32 `protobuf:"fixed32,7,opt,name=overlap_ratio,json=overlapRatio,proto3,oneof" json:"overlap_ratio,omitempty"` // overlapping speech / total speech + OverlapSpeechMs *uint32 `protobuf:"varint,8,opt,name=overlap_speech_ms,json=overlapSpeechMs,proto3,oneof" json:"overlap_speech_ms,omitempty"` // pooling stats for overlap_ratio + TotalSpeechMs *uint32 `protobuf:"varint,9,opt,name=total_speech_ms,json=totalSpeechMs,proto3,oneof" json:"total_speech_ms,omitempty"` + AwkwardSilenceCount *uint32 `protobuf:"varint,11,opt,name=awkward_silence_count,json=awkwardSilenceCount,proto3,oneof" json:"awkward_silence_count,omitempty"` // gaps past the natural-pause threshold + UnansweredTurns *uint32 `protobuf:"varint,12,opt,name=unanswered_turns,json=unansweredTurns,proto3,oneof" json:"unanswered_turns,omitempty"` // the simulated party spoke, the agent never responded + FalseInterruptionCount *uint32 `protobuf:"varint,13,opt,name=false_interruption_count,json=falseInterruptionCount,proto3,oneof" json:"false_interruption_count,omitempty"` // needs the RemoteSession; agent paused for a non-interruption + E2ELatencyMs *uint32 `protobuf:"varint,15,opt,name=e2e_latency_ms,json=e2eLatencyMs,proto3,oneof" json:"e2e_latency_ms,omitempty"` // needs the RemoteSession; the agent's own claim + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimulationRun_JobMetrics_Conversation) Reset() { @@ -1803,30 +1803,30 @@ func (x *SimulationRun_JobMetrics_Conversation) GetTurnTakingScore() float32 { return 0 } -func (x *SimulationRun_JobMetrics_Conversation) GetResponseLatencyP50Ms() int32 { - if x != nil && x.ResponseLatencyP50Ms != nil { - return *x.ResponseLatencyP50Ms +func (x *SimulationRun_JobMetrics_Conversation) GetHeardE2ELatencyP50Ms() int32 { + if x != nil && x.HeardE2ELatencyP50Ms != nil { + return *x.HeardE2ELatencyP50Ms } return 0 } -func (x *SimulationRun_JobMetrics_Conversation) GetResponseLatencyP95Ms() int32 { - if x != nil && x.ResponseLatencyP95Ms != nil { - return *x.ResponseLatencyP95Ms +func (x *SimulationRun_JobMetrics_Conversation) GetHeardE2ELatencyP95Ms() int32 { + if x != nil && x.HeardE2ELatencyP95Ms != nil { + return *x.HeardE2ELatencyP95Ms } return 0 } -func (x *SimulationRun_JobMetrics_Conversation) GetResponseLatencyP99Ms() int32 { - if x != nil && x.ResponseLatencyP99Ms != nil { - return *x.ResponseLatencyP99Ms +func (x *SimulationRun_JobMetrics_Conversation) GetHeardE2ELatencyP99Ms() int32 { + if x != nil && x.HeardE2ELatencyP99Ms != nil { + return *x.HeardE2ELatencyP99Ms } return 0 } -func (x *SimulationRun_JobMetrics_Conversation) GetAgentYieldLatencyMs() uint32 { - if x != nil && x.AgentYieldLatencyMs != nil { - return *x.AgentYieldLatencyMs +func (x *SimulationRun_JobMetrics_Conversation) GetTimeToYieldMs() uint32 { + if x != nil && x.TimeToYieldMs != nil { + return *x.TimeToYieldMs } return 0 } @@ -1880,9 +1880,9 @@ func (x *SimulationRun_JobMetrics_Conversation) GetFalseInterruptionCount() uint return 0 } -func (x *SimulationRun_JobMetrics_Conversation) GetAgentReportedE2ELatencyMs() uint32 { - if x != nil && x.AgentReportedE2ELatencyMs != nil { - return *x.AgentReportedE2ELatencyMs +func (x *SimulationRun_JobMetrics_Conversation) GetE2ELatencyMs() uint32 { + if x != nil && x.E2ELatencyMs != nil { + return *x.E2ELatencyMs } return 0 } @@ -1944,26 +1944,26 @@ func (x *SimulationRun_JobMetrics_Simulator) GetLateTermination() bool { // Rows exist for text and audio. The groups above hold the means and pools // over these; anything not measured for a turn stays unset. type SimulationRun_JobMetrics_Turn struct { - state protoimpl.MessageState `protogen:"open.v1"` - Index uint32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` // 1-based, conversation order - Role agent.ChatRole `protobuf:"varint,2,opt,name=role,proto3,enum=livekit.agent.ChatRole" json:"role,omitempty"` // ASSISTANT = the agent under test, USER = simulator persona - StartMs *uint32 `protobuf:"varint,3,opt,name=start_ms,json=startMs,proto3,oneof" json:"start_ms,omitempty"` // audio only; relative to t0; unset if the turn could not be aligned to the audio - EndMs *uint32 `protobuf:"varint,4,opt,name=end_ms,json=endMs,proto3,oneof" json:"end_ms,omitempty"` // audio only - TranscriptionLatencyMs *uint32 `protobuf:"varint,5,opt,name=transcription_latency_ms,json=transcriptionLatencyMs,proto3,oneof" json:"transcription_latency_ms,omitempty"` // needs the RemoteSession; simulator turns - LlmTtftMs *uint32 `protobuf:"varint,6,opt,name=llm_ttft_ms,json=llmTtftMs,proto3,oneof" json:"llm_ttft_ms,omitempty"` // needs the RemoteSession - LlmTtfsMs *uint32 `protobuf:"varint,7,opt,name=llm_ttfs_ms,json=llmTtfsMs,proto3,oneof" json:"llm_ttfs_ms,omitempty"` // needs the RemoteSession - TokensPerSecond *float32 `protobuf:"fixed32,8,opt,name=tokens_per_second,json=tokensPerSecond,proto3,oneof" json:"tokens_per_second,omitempty"` // needs the RemoteSession - TtsTtfbMs *uint32 `protobuf:"varint,9,opt,name=tts_ttfb_ms,json=ttsTtfbMs,proto3,oneof" json:"tts_ttfb_ms,omitempty"` // needs the RemoteSession - AgentReportedE2ELatencyMs *uint32 `protobuf:"varint,10,opt,name=agent_reported_e2e_latency_ms,json=agentReportedE2eLatencyMs,proto3,oneof" json:"agent_reported_e2e_latency_ms,omitempty"` // needs the RemoteSession - ResponseLatencyMs *int32 `protobuf:"varint,11,opt,name=response_latency_ms,json=responseLatencyMs,proto3,oneof" json:"response_latency_ms,omitempty"` // floor-transfer offset, cut-in if negative - AgentYieldLatencyMs *uint32 `protobuf:"varint,12,opt,name=agent_yield_latency_ms,json=agentYieldLatencyMs,proto3,oneof" json:"agent_yield_latency_ms,omitempty"` // agent audio continuing past a barge-in - TurnTakingScore *float32 `protobuf:"fixed32,13,opt,name=turn_taking_score,json=turnTakingScore,proto3,oneof" json:"turn_taking_score,omitempty"` // 0-1 - Conciseness *float32 `protobuf:"fixed32,14,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` // needs the text judge - EotMisprediction *bool `protobuf:"varint,15,opt,name=eot_misprediction,json=eotMisprediction,proto3,oneof" json:"eot_misprediction,omitempty"` // agent started before the caller's turn ended - AwkwardSilence *bool `protobuf:"varint,16,opt,name=awkward_silence,json=awkwardSilence,proto3,oneof" json:"awkward_silence,omitempty"` // gap past the natural-pause threshold - Unanswered *bool `protobuf:"varint,17,opt,name=unanswered,proto3,oneof" json:"unanswered,omitempty"` // the caller spoke, the agent never responded - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Index uint32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` // 1-based, conversation order + Role agent.ChatRole `protobuf:"varint,2,opt,name=role,proto3,enum=livekit.agent.ChatRole" json:"role,omitempty"` // ASSISTANT = the agent under test, USER = simulator persona + StartMs *uint32 `protobuf:"varint,3,opt,name=start_ms,json=startMs,proto3,oneof" json:"start_ms,omitempty"` // audio only; relative to t0; unset if the turn could not be aligned to the audio + EndMs *uint32 `protobuf:"varint,4,opt,name=end_ms,json=endMs,proto3,oneof" json:"end_ms,omitempty"` // audio only + SttDelayMs *uint32 `protobuf:"varint,5,opt,name=stt_delay_ms,json=sttDelayMs,proto3,oneof" json:"stt_delay_ms,omitempty"` // needs the RemoteSession; simulator turns + LlmTtftMs *uint32 `protobuf:"varint,6,opt,name=llm_ttft_ms,json=llmTtftMs,proto3,oneof" json:"llm_ttft_ms,omitempty"` // needs the RemoteSession + LlmTtfsMs *uint32 `protobuf:"varint,7,opt,name=llm_ttfs_ms,json=llmTtfsMs,proto3,oneof" json:"llm_ttfs_ms,omitempty"` // needs the RemoteSession + LlmTps *float32 `protobuf:"fixed32,8,opt,name=llm_tps,json=llmTps,proto3,oneof" json:"llm_tps,omitempty"` // needs the RemoteSession + TtsTtfbMs *uint32 `protobuf:"varint,9,opt,name=tts_ttfb_ms,json=ttsTtfbMs,proto3,oneof" json:"tts_ttfb_ms,omitempty"` // needs the RemoteSession + E2ELatencyMs *uint32 `protobuf:"varint,10,opt,name=e2e_latency_ms,json=e2eLatencyMs,proto3,oneof" json:"e2e_latency_ms,omitempty"` // needs the RemoteSession; the agent's own claim + HeardE2ELatencyMs *int32 `protobuf:"varint,11,opt,name=heard_e2e_latency_ms,json=heardE2eLatencyMs,proto3,oneof" json:"heard_e2e_latency_ms,omitempty"` // floor-transfer offset, cut-in if negative + TimeToYieldMs *uint32 `protobuf:"varint,12,opt,name=time_to_yield_ms,json=timeToYieldMs,proto3,oneof" json:"time_to_yield_ms,omitempty"` // agent audio continuing past a barge-in + TurnTakingScore *float32 `protobuf:"fixed32,13,opt,name=turn_taking_score,json=turnTakingScore,proto3,oneof" json:"turn_taking_score,omitempty"` // 0-1 + Conciseness *float32 `protobuf:"fixed32,14,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` // needs the text judge + EotMisprediction *bool `protobuf:"varint,15,opt,name=eot_misprediction,json=eotMisprediction,proto3,oneof" json:"eot_misprediction,omitempty"` // agent started before the caller's turn ended + AwkwardSilence *bool `protobuf:"varint,16,opt,name=awkward_silence,json=awkwardSilence,proto3,oneof" json:"awkward_silence,omitempty"` // gap past the natural-pause threshold + Unanswered *bool `protobuf:"varint,17,opt,name=unanswered,proto3,oneof" json:"unanswered,omitempty"` // the caller spoke, the agent never responded + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimulationRun_JobMetrics_Turn) Reset() { @@ -2024,9 +2024,9 @@ func (x *SimulationRun_JobMetrics_Turn) GetEndMs() uint32 { return 0 } -func (x *SimulationRun_JobMetrics_Turn) GetTranscriptionLatencyMs() uint32 { - if x != nil && x.TranscriptionLatencyMs != nil { - return *x.TranscriptionLatencyMs +func (x *SimulationRun_JobMetrics_Turn) GetSttDelayMs() uint32 { + if x != nil && x.SttDelayMs != nil { + return *x.SttDelayMs } return 0 } @@ -2045,9 +2045,9 @@ func (x *SimulationRun_JobMetrics_Turn) GetLlmTtfsMs() uint32 { return 0 } -func (x *SimulationRun_JobMetrics_Turn) GetTokensPerSecond() float32 { - if x != nil && x.TokensPerSecond != nil { - return *x.TokensPerSecond +func (x *SimulationRun_JobMetrics_Turn) GetLlmTps() float32 { + if x != nil && x.LlmTps != nil { + return *x.LlmTps } return 0 } @@ -2059,23 +2059,23 @@ func (x *SimulationRun_JobMetrics_Turn) GetTtsTtfbMs() uint32 { return 0 } -func (x *SimulationRun_JobMetrics_Turn) GetAgentReportedE2ELatencyMs() uint32 { - if x != nil && x.AgentReportedE2ELatencyMs != nil { - return *x.AgentReportedE2ELatencyMs +func (x *SimulationRun_JobMetrics_Turn) GetE2ELatencyMs() uint32 { + if x != nil && x.E2ELatencyMs != nil { + return *x.E2ELatencyMs } return 0 } -func (x *SimulationRun_JobMetrics_Turn) GetResponseLatencyMs() int32 { - if x != nil && x.ResponseLatencyMs != nil { - return *x.ResponseLatencyMs +func (x *SimulationRun_JobMetrics_Turn) GetHeardE2ELatencyMs() int32 { + if x != nil && x.HeardE2ELatencyMs != nil { + return *x.HeardE2ELatencyMs } return 0 } -func (x *SimulationRun_JobMetrics_Turn) GetAgentYieldLatencyMs() uint32 { - if x != nil && x.AgentYieldLatencyMs != nil { - return *x.AgentYieldLatencyMs +func (x *SimulationRun_JobMetrics_Turn) GetTimeToYieldMs() uint32 { + if x != nil && x.TimeToYieldMs != nil { + return *x.TimeToYieldMs } return 0 } @@ -2818,7 +2818,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\n" + "suggestion\x18\x02 \x01(\tR\n" + "suggestion\x12\x14\n" + - "\x05label\x18\x03 \x01(\tR\x05label\"\xca@\n" + + "\x05label\x18\x03 \x01(\tR\x05label\"\xf3>\n" + "\rSimulationRun\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + "\n" + @@ -2868,7 +2868,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x10STATUS_COMPLETED\x10\x02\x12\x11\n" + "\rSTATUS_FAILED\x10\x03\x12\x14\n" + "\x10STATUS_CANCELLED\x10\x04J\x04\b\t\x10\n" + - "\x1a\xf8$\n" + + "\x1a\xa1#\n" + "\n" + "JobMetrics\x12*\n" + "\x0eaccuracy_score\x18\x01 \x01(\x02H\x00R\raccuracyScore\x88\x01\x01\x12.\n" + @@ -2890,7 +2890,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x10information_loss\x18\x10 \x01(\bH\x05R\x0finformationLoss\x88\x01\x01\x126\n" + "\x14redundant_statements\x18\x11 \x01(\bH\x06R\x13redundantStatements\x88\x01\x01\x127\n" + "\x15poor_question_quality\x18\x12 \x01(\bH\aR\x13poorQuestionQuality\x88\x01\x01\x12>\n" + - "\x18conversation_progression\x18\x13 \x01(\x02H\bR\x17conversationProgression\x88\x01\x01\x1a\xb3\x04\n" + + "\x18conversation_progression\x18\x13 \x01(\x02H\bR\x17conversationProgression\x88\x01\x01\x1a\x8f\x04\n" + "\x03STT\x12\x15\n" + "\x03wer\x18\x01 \x01(\x02H\x00R\x03wer\x88\x01\x01\x12\x19\n" + "\x05words\x18\x02 \x01(\rH\x01R\x05words\x88\x01\x01\x12$\n" + @@ -2900,8 +2900,9 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x05chars\x18\t \x01(\rH\x04R\x05chars\x88\x01\x01\x12$\n" + "\vchar_errors\x18\n" + " \x01(\rH\x05R\n" + - "charErrors\x88\x01\x01\x12=\n" + - "\x18transcription_latency_ms\x18\b \x01(\rH\x06R\x16transcriptionLatencyMs\x88\x01\x01\x122\n" + + "charErrors\x88\x01\x01\x12%\n" + + "\fstt_delay_ms\x18\b \x01(\rH\x06R\n" + + "sttDelayMs\x88\x01\x01\x122\n" + "\x12entity_recognition\x18\v \x01(\x02H\aR\x11entityRecognition\x88\x01\x01\x12.\n" + "\x10entities_uttered\x18\f \x01(\rH\bR\x0fentitiesUttered\x88\x01\x01\x124\n" + "\x13entities_recognized\x18\r \x01(\rH\tR\x12entitiesRecognized\x88\x01\x01B\x06\n" + @@ -2910,8 +2911,8 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\f_word_errorsB\x06\n" + "\x04_cerB\b\n" + "\x06_charsB\x0e\n" + - "\f_char_errorsB\x1b\n" + - "\x19_transcription_latency_msB\x15\n" + + "\f_char_errorsB\x0f\n" + + "\r_stt_delay_msB\x15\n" + "\x13_entity_recognitionB\x13\n" + "\x11_entities_utteredB\x16\n" + "\x14_entities_recognized\x1a\xa0\x01\n" + @@ -2948,13 +2949,13 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\f_char_errorsB\x15\n" + "\x13_entity_recognitionB\x13\n" + "\x11_entities_utteredB\x16\n" + - "\x14_entities_recognized\x1a\xac\b\n" + + "\x14_entities_recognized\x1a\xf5\a\n" + "\fConversation\x12/\n" + - "\x11turn_taking_score\x18\x01 \x01(\x02H\x00R\x0fturnTakingScore\x88\x01\x01\x12:\n" + - "\x17response_latency_p50_ms\x18\x02 \x01(\x05H\x01R\x14responseLatencyP50Ms\x88\x01\x01\x12:\n" + - "\x17response_latency_p95_ms\x18\x03 \x01(\x05H\x02R\x14responseLatencyP95Ms\x88\x01\x01\x12:\n" + - "\x17response_latency_p99_ms\x18\x04 \x01(\x05H\x03R\x14responseLatencyP99Ms\x88\x01\x01\x128\n" + - "\x16agent_yield_latency_ms\x18\x05 \x01(\rH\x04R\x13agentYieldLatencyMs\x88\x01\x01\x12;\n" + + "\x11turn_taking_score\x18\x01 \x01(\x02H\x00R\x0fturnTakingScore\x88\x01\x01\x12;\n" + + "\x18heard_e2e_latency_p50_ms\x18\x02 \x01(\x05H\x01R\x14heardE2eLatencyP50Ms\x88\x01\x01\x12;\n" + + "\x18heard_e2e_latency_p95_ms\x18\x03 \x01(\x05H\x02R\x14heardE2eLatencyP95Ms\x88\x01\x01\x12;\n" + + "\x18heard_e2e_latency_p99_ms\x18\x04 \x01(\x05H\x03R\x14heardE2eLatencyP99Ms\x88\x01\x01\x12,\n" + + "\x10time_to_yield_ms\x18\x05 \x01(\rH\x04R\rtimeToYieldMs\x88\x01\x01\x12;\n" + "\x17eot_misprediction_count\x18\x06 \x01(\rH\x05R\x15eotMispredictionCount\x88\x01\x01\x12(\n" + "\roverlap_ratio\x18\a \x01(\x02H\x06R\foverlapRatio\x88\x01\x01\x12/\n" + "\x11overlap_speech_ms\x18\b \x01(\rH\aR\x0foverlapSpeechMs\x88\x01\x01\x12+\n" + @@ -2962,40 +2963,41 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x15awkward_silence_count\x18\v \x01(\rH\tR\x13awkwardSilenceCount\x88\x01\x01\x12.\n" + "\x10unanswered_turns\x18\f \x01(\rH\n" + "R\x0funansweredTurns\x88\x01\x01\x12=\n" + - "\x18false_interruption_count\x18\r \x01(\rH\vR\x16falseInterruptionCount\x88\x01\x01\x12E\n" + - "\x1dagent_reported_e2e_latency_ms\x18\x0f \x01(\rH\fR\x19agentReportedE2eLatencyMs\x88\x01\x01B\x14\n" + - "\x12_turn_taking_scoreB\x1a\n" + - "\x18_response_latency_p50_msB\x1a\n" + - "\x18_response_latency_p95_msB\x1a\n" + - "\x18_response_latency_p99_msB\x19\n" + - "\x17_agent_yield_latency_msB\x1a\n" + + "\x18false_interruption_count\x18\r \x01(\rH\vR\x16falseInterruptionCount\x88\x01\x01\x12)\n" + + "\x0ee2e_latency_ms\x18\x0f \x01(\rH\fR\fe2eLatencyMs\x88\x01\x01B\x14\n" + + "\x12_turn_taking_scoreB\x1b\n" + + "\x19_heard_e2e_latency_p50_msB\x1b\n" + + "\x19_heard_e2e_latency_p95_msB\x1b\n" + + "\x19_heard_e2e_latency_p99_msB\x13\n" + + "\x11_time_to_yield_msB\x1a\n" + "\x18_eot_misprediction_countB\x10\n" + "\x0e_overlap_ratioB\x14\n" + "\x12_overlap_speech_msB\x12\n" + "\x10_total_speech_msB\x18\n" + "\x16_awkward_silence_countB\x13\n" + "\x11_unanswered_turnsB\x1b\n" + - "\x19_false_interruption_countB \n" + - "\x1e_agent_reported_e2e_latency_ms\x1a\x98\x01\n" + + "\x19_false_interruption_countB\x11\n" + + "\x0f_e2e_latency_ms\x1a\x98\x01\n" + "\tSimulator\x120\n" + "\x11early_termination\x18\x01 \x01(\bH\x00R\x10earlyTermination\x88\x01\x01\x12.\n" + "\x10late_termination\x18\x02 \x01(\bH\x01R\x0flateTermination\x88\x01\x01B\x14\n" + "\x12_early_terminationB\x13\n" + - "\x11_late_termination\x1a\xa6\b\n" + + "\x11_late_termination\x1a\xaa\a\n" + "\x04Turn\x12\x14\n" + "\x05index\x18\x01 \x01(\rR\x05index\x12+\n" + "\x04role\x18\x02 \x01(\x0e2\x17.livekit.agent.ChatRoleR\x04role\x12\x1e\n" + "\bstart_ms\x18\x03 \x01(\rH\x00R\astartMs\x88\x01\x01\x12\x1a\n" + - "\x06end_ms\x18\x04 \x01(\rH\x01R\x05endMs\x88\x01\x01\x12=\n" + - "\x18transcription_latency_ms\x18\x05 \x01(\rH\x02R\x16transcriptionLatencyMs\x88\x01\x01\x12#\n" + + "\x06end_ms\x18\x04 \x01(\rH\x01R\x05endMs\x88\x01\x01\x12%\n" + + "\fstt_delay_ms\x18\x05 \x01(\rH\x02R\n" + + "sttDelayMs\x88\x01\x01\x12#\n" + "\vllm_ttft_ms\x18\x06 \x01(\rH\x03R\tllmTtftMs\x88\x01\x01\x12#\n" + - "\vllm_ttfs_ms\x18\a \x01(\rH\x04R\tllmTtfsMs\x88\x01\x01\x12/\n" + - "\x11tokens_per_second\x18\b \x01(\x02H\x05R\x0ftokensPerSecond\x88\x01\x01\x12#\n" + - "\vtts_ttfb_ms\x18\t \x01(\rH\x06R\tttsTtfbMs\x88\x01\x01\x12E\n" + - "\x1dagent_reported_e2e_latency_ms\x18\n" + - " \x01(\rH\aR\x19agentReportedE2eLatencyMs\x88\x01\x01\x123\n" + - "\x13response_latency_ms\x18\v \x01(\x05H\bR\x11responseLatencyMs\x88\x01\x01\x128\n" + - "\x16agent_yield_latency_ms\x18\f \x01(\rH\tR\x13agentYieldLatencyMs\x88\x01\x01\x12/\n" + + "\vllm_ttfs_ms\x18\a \x01(\rH\x04R\tllmTtfsMs\x88\x01\x01\x12\x1c\n" + + "\allm_tps\x18\b \x01(\x02H\x05R\x06llmTps\x88\x01\x01\x12#\n" + + "\vtts_ttfb_ms\x18\t \x01(\rH\x06R\tttsTtfbMs\x88\x01\x01\x12)\n" + + "\x0ee2e_latency_ms\x18\n" + + " \x01(\rH\aR\fe2eLatencyMs\x88\x01\x01\x124\n" + + "\x14heard_e2e_latency_ms\x18\v \x01(\x05H\bR\x11heardE2eLatencyMs\x88\x01\x01\x12,\n" + + "\x10time_to_yield_ms\x18\f \x01(\rH\tR\rtimeToYieldMs\x88\x01\x01\x12/\n" + "\x11turn_taking_score\x18\r \x01(\x02H\n" + "R\x0fturnTakingScore\x88\x01\x01\x12%\n" + "\vconciseness\x18\x0e \x01(\x02H\vR\vconciseness\x88\x01\x01\x120\n" + @@ -3005,15 +3007,16 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "unanswered\x18\x11 \x01(\bH\x0eR\n" + "unanswered\x88\x01\x01B\v\n" + "\t_start_msB\t\n" + - "\a_end_msB\x1b\n" + - "\x19_transcription_latency_msB\x0e\n" + + "\a_end_msB\x0f\n" + + "\r_stt_delay_msB\x0e\n" + "\f_llm_ttft_msB\x0e\n" + - "\f_llm_ttfs_msB\x14\n" + - "\x12_tokens_per_secondB\x0e\n" + - "\f_tts_ttfb_msB \n" + - "\x1e_agent_reported_e2e_latency_msB\x16\n" + - "\x14_response_latency_msB\x19\n" + - "\x17_agent_yield_latency_msB\x14\n" + + "\f_llm_ttfs_msB\n" + + "\n" + + "\b_llm_tpsB\x0e\n" + + "\f_tts_ttfb_msB\x11\n" + + "\x0f_e2e_latency_msB\x17\n" + + "\x15_heard_e2e_latency_msB\x13\n" + + "\x11_time_to_yield_msB\x14\n" + "\x12_turn_taking_scoreB\x0e\n" + "\f_concisenessB\x14\n" + "\x12_eot_mispredictionB\x12\n" + diff --git a/livekit/livekit_agent_simulation.twirp.go b/livekit/livekit_agent_simulation.twirp.go index 04305216b..4be280096 100644 --- a/livekit/livekit_agent_simulation.twirp.go +++ b/livekit/livekit_agent_simulation.twirp.go @@ -1912,221 +1912,220 @@ func (s *agentSimulationServer) PathPrefix() string { } var twirpFileDescriptor9 = []byte{ - // 3445 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x1b, 0x49, - 0x76, 0x77, 0xf3, 0x9b, 0x8f, 0xe2, 0x87, 0x4a, 0x5f, 0x74, 0xcf, 0xce, 0x8c, 0x47, 0x33, 0xbb, - 0x6b, 0xd8, 0xb3, 0xb4, 0xa3, 0x59, 0xef, 0xac, 0x3c, 0xbb, 0xc1, 0x8a, 0x12, 0xc7, 0xa4, 0x23, - 0xc9, 0x9a, 0x22, 0x85, 0x64, 0x27, 0x08, 0x1a, 0xad, 0xee, 0x32, 0xd5, 0x72, 0xb3, 0x8b, 0xdb, - 0x55, 0x6d, 0x5b, 0x0b, 0xe4, 0x90, 0xdb, 0x00, 0x39, 0xe5, 0x96, 0x53, 0xb0, 0x97, 0x0d, 0x90, - 0x20, 0xb7, 0xbd, 0x06, 0xc8, 0x3d, 0xb7, 0x5c, 0x02, 0x04, 0xc8, 0x5f, 0x90, 0x7b, 0x80, 0x1c, - 0x83, 0xfa, 0xe8, 0x66, 0xf3, 0x53, 0x72, 0x30, 0xbe, 0xe5, 0xc6, 0x7e, 0xef, 0xf7, 0xaa, 0xab, - 0x5e, 0xfd, 0xde, 0x7b, 0x55, 0xfd, 0x08, 0x1f, 0xf9, 0xde, 0x6b, 0xf2, 0xca, 0xe3, 0x96, 0x3d, - 0x24, 0x01, 0xb7, 0x98, 0x37, 0x8a, 0x7c, 0x9b, 0x7b, 0x34, 0x68, 0x8d, 0x43, 0xca, 0x29, 0x2a, - 0x6a, 0xbd, 0xf9, 0x89, 0x04, 0x3c, 0x9a, 0x81, 0x13, 0xc6, 0x12, 0xac, 0xf9, 0xf1, 0x90, 0xd2, - 0xa1, 0x4f, 0x1e, 0xc9, 0xa7, 0x8b, 0xe8, 0xe5, 0x23, 0xee, 0x8d, 0x08, 0xe3, 0xf6, 0x68, 0xac, - 0x01, 0x77, 0x63, 0x6b, 0xc7, 0xa7, 0x91, 0xab, 0xc6, 0xd0, 0xaa, 0xcd, 0x58, 0x35, 0xa2, 0x2e, - 0xf1, 0x99, 0x92, 0xee, 0xfe, 0x5b, 0x16, 0x36, 0xfb, 0xc9, 0x94, 0x70, 0x14, 0xf4, 0xa3, 0xd1, - 0xc8, 0x0e, 0xaf, 0xd1, 0x36, 0x14, 0xc6, 0x36, 0x63, 0xc4, 0x6d, 0x1a, 0xf7, 0x8c, 0xfb, 0x79, - 0xac, 0x9f, 0x84, 0xfc, 0xa5, 0xed, 0xf9, 0xc4, 0x6d, 0x66, 0x94, 0x5c, 0x3d, 0xa1, 0x0f, 0x01, - 0x86, 0xd4, 0x0b, 0x86, 0xd6, 0x1b, 0xe2, 0xfb, 0xcd, 0xec, 0x3d, 0xe3, 0x7e, 0x19, 0x97, 0xa5, - 0xe4, 0x4f, 0x89, 0xef, 0x0b, 0x35, 0xa7, 0x96, 0x37, 0x1a, 0x87, 0xf4, 0x35, 0x69, 0xe6, 0x94, - 0x9a, 0xd3, 0x9e, 0x12, 0xa0, 0xaf, 0xa0, 0xe0, 0x31, 0x16, 0x11, 0xd6, 0xcc, 0xdf, 0xcb, 0xde, - 0xaf, 0xec, 0x7d, 0xda, 0xd2, 0xb3, 0x6d, 0x2d, 0x9a, 0x5c, 0xab, 0x27, 0xb0, 0x58, 0x9b, 0xa0, - 0x6f, 0x60, 0xcd, 0xb9, 0xb4, 0xb9, 0x75, 0xe9, 0x31, 0x4e, 0xc3, 0xeb, 0x66, 0x41, 0x0e, 0xd1, - 0x5a, 0x3d, 0xc4, 0xe1, 0xa5, 0xcd, 0xbb, 0xca, 0xa0, 0x13, 0xf0, 0xf0, 0x1a, 0x57, 0x9c, 0x89, - 0xc4, 0xfc, 0x16, 0x1a, 0xb3, 0x00, 0xd4, 0x80, 0xec, 0x2b, 0x72, 0x2d, 0xdd, 0x51, 0xc6, 0xe2, - 0x27, 0x7a, 0x0c, 0xf9, 0xd7, 0xb6, 0x1f, 0x11, 0xe9, 0x8a, 0xca, 0x9e, 0x99, 0xbc, 0x51, 0xf9, - 0x5d, 0x8c, 0x70, 0x48, 0x03, 0x4e, 0xde, 0x72, 0xac, 0x80, 0x4f, 0x33, 0x3f, 0x37, 0x4c, 0x0b, - 0xf2, 0x72, 0xfe, 0xe8, 0x1e, 0x54, 0x5c, 0xc2, 0x9c, 0xd0, 0x1b, 0x8b, 0xb9, 0xe9, 0x81, 0xd3, - 0x22, 0xf4, 0x11, 0x00, 0x8b, 0x86, 0x43, 0xc2, 0x24, 0x20, 0x23, 0x01, 0x29, 0x09, 0xda, 0x84, - 0xbc, 0x6f, 0x5f, 0x90, 0xd8, 0xdf, 0xea, 0x61, 0xf7, 0x5f, 0x7f, 0x05, 0xd5, 0xa9, 0x35, 0xa3, - 0x1a, 0x64, 0x3c, 0x57, 0xbf, 0x20, 0xe3, 0xc9, 0xcd, 0x1a, 0x87, 0xf4, 0x8a, 0x38, 0xdc, 0xf2, - 0x5c, 0x3d, 0x6e, 0x59, 0x4b, 0x7a, 0x2e, 0x7a, 0x02, 0x05, 0xc6, 0x6d, 0x1e, 0x31, 0x39, 0x6e, - 0x6d, 0xef, 0xc3, 0xc5, 0xae, 0x6c, 0xf5, 0x25, 0x08, 0x6b, 0x30, 0x7a, 0x08, 0xeb, 0x8a, 0xb4, - 0xe9, 0x55, 0xa9, 0xad, 0x6e, 0x48, 0xc5, 0x51, 0x6a, 0x69, 0x9b, 0x90, 0x27, 0x61, 0x48, 0xc3, - 0x66, 0x5e, 0x4d, 0x5d, 0x3e, 0xa0, 0x7d, 0x00, 0x27, 0x24, 0x36, 0x27, 0xae, 0x65, 0xf3, 0x66, - 0x41, 0xbb, 0x55, 0xb1, 0xbe, 0x15, 0xb3, 0xbe, 0x35, 0x88, 0x59, 0x8f, 0xcb, 0x1a, 0x7d, 0xc0, - 0x51, 0x0b, 0x72, 0x57, 0xf4, 0x82, 0x35, 0x8b, 0x72, 0xf7, 0xcd, 0x25, 0x53, 0x7e, 0x4e, 0x2f, - 0xb0, 0xc4, 0x09, 0x1f, 0xa8, 0xd9, 0x06, 0xf6, 0x88, 0x34, 0xcb, 0xca, 0x07, 0x52, 0x72, 0x6a, - 0x8f, 0x08, 0xfa, 0x25, 0xd4, 0x98, 0x43, 0x02, 0x3b, 0xf4, 0xa8, 0x35, 0x0c, 0x69, 0x34, 0x6e, - 0x82, 0x9c, 0xcd, 0xf6, 0x64, 0x60, 0xad, 0x7e, 0x26, 0xb4, 0xb8, 0xca, 0xd2, 0x8f, 0xe8, 0x09, - 0x94, 0x48, 0xe0, 0xaa, 0x65, 0x54, 0x6e, 0x5c, 0x46, 0x51, 0x62, 0x0f, 0x38, 0xfa, 0x00, 0xca, - 0x57, 0xf4, 0xc2, 0x72, 0x68, 0x14, 0xf0, 0xe6, 0x9a, 0x0c, 0xb0, 0xd2, 0x15, 0xbd, 0x38, 0x14, - 0xcf, 0xe8, 0x13, 0x58, 0x53, 0x41, 0xa8, 0xf5, 0x55, 0xa9, 0xaf, 0x28, 0x59, 0x02, 0x51, 0xf1, - 0xa8, 0x21, 0x35, 0x05, 0x51, 0x32, 0x05, 0xf9, 0x31, 0xd4, 0x83, 0x68, 0x94, 0xca, 0x43, 0xac, - 0x59, 0x97, 0xa8, 0x5a, 0x10, 0x8d, 0x26, 0xce, 0x62, 0x68, 0x0f, 0xf2, 0x11, 0xb3, 0x87, 0xa4, - 0xd9, 0x90, 0xf3, 0xff, 0xc1, 0x12, 0x8f, 0x9e, 0x0b, 0x0c, 0x56, 0x50, 0x41, 0x69, 0x87, 0x06, - 0x4e, 0x14, 0x86, 0x24, 0x70, 0xae, 0x9b, 0xeb, 0xea, 0xf5, 0x29, 0x11, 0x7a, 0x08, 0x39, 0x91, - 0x80, 0x9a, 0x48, 0x32, 0x6b, 0x67, 0xc1, 0xa0, 0x27, 0xd4, 0x25, 0x58, 0x82, 0xd0, 0x57, 0x50, - 0x1c, 0x11, 0x1e, 0x7a, 0x0e, 0x6b, 0x6e, 0xc8, 0x49, 0x7c, 0xb2, 0x64, 0x12, 0x38, 0x0a, 0x4e, - 0x14, 0x10, 0xc7, 0x16, 0xc2, 0x17, 0x4c, 0x05, 0xbb, 0xf5, 0x5b, 0xc6, 0xdd, 0xe6, 0xe6, 0x3d, - 0xe3, 0xfe, 0x1a, 0xae, 0x68, 0xd9, 0xb7, 0x8c, 0xbb, 0xe6, 0xbf, 0xe7, 0x21, 0xfb, 0x9c, 0x5e, - 0xcc, 0xc5, 0xc7, 0x7e, 0x12, 0x00, 0x19, 0x39, 0xcd, 0x4f, 0x96, 0xb3, 0x69, 0x36, 0x08, 0x76, - 0x61, 0xcd, 0x0b, 0x18, 0x0f, 0x23, 0x47, 0xf9, 0x56, 0x45, 0xe6, 0x94, 0x6c, 0xc2, 0xfd, 0x5c, - 0x9a, 0xfb, 0x3f, 0x01, 0xa4, 0x08, 0x49, 0xde, 0x8e, 0x89, 0xc3, 0xf5, 0xde, 0xa8, 0xf0, 0x50, - 0x81, 0xd5, 0x49, 0x29, 0x26, 0xb1, 0x5f, 0x48, 0xc5, 0x3e, 0x42, 0x90, 0xe3, 0xf6, 0x50, 0x45, - 0x41, 0x19, 0xcb, 0xdf, 0x82, 0x54, 0x21, 0xa5, 0x23, 0x45, 0xf4, 0x92, 0x44, 0x97, 0x84, 0x40, - 0xf2, 0x7c, 0x1f, 0x80, 0x71, 0x3b, 0xd4, 0x11, 0x07, 0x37, 0x47, 0x9c, 0x46, 0x1f, 0xf0, 0xff, - 0x2b, 0xc7, 0x77, 0xa0, 0x28, 0xa7, 0xe3, 0xb9, 0x92, 0xe1, 0x65, 0x5c, 0x10, 0x8f, 0x3d, 0x17, - 0xfd, 0x2c, 0x26, 0x5c, 0x55, 0x0e, 0x76, 0x6f, 0x85, 0xd3, 0xa7, 0x48, 0x97, 0x62, 0x49, 0x6d, - 0x25, 0x4b, 0x9e, 0xd3, 0x8b, 0x59, 0x96, 0x98, 0x7f, 0x01, 0x79, 0x39, 0x18, 0xba, 0x0f, 0x0d, - 0x91, 0xa9, 0x2d, 0x1e, 0x85, 0x01, 0xd3, 0xe1, 0xa3, 0x4a, 0x5f, 0x4d, 0xc8, 0x07, 0x42, 0xac, - 0x22, 0xe8, 0x01, 0xac, 0xdb, 0x91, 0xeb, 0xd1, 0x29, 0xa8, 0xaa, 0x86, 0x75, 0xa9, 0x98, 0x60, - 0x77, 0x29, 0x14, 0x14, 0x41, 0x10, 0x82, 0x5a, 0x7f, 0x70, 0x30, 0x38, 0xef, 0x5b, 0x67, 0x9d, - 0xd3, 0xa3, 0xde, 0xe9, 0xb3, 0xc6, 0x9d, 0x94, 0x0c, 0x9f, 0x9f, 0x9e, 0x0a, 0x99, 0x81, 0x36, - 0xa1, 0xa1, 0x65, 0x87, 0x2f, 0x4e, 0xce, 0x8e, 0x3b, 0x83, 0xce, 0x51, 0x23, 0x83, 0xd6, 0xa1, - 0xaa, 0xa5, 0x5f, 0x1f, 0xf4, 0x8e, 0x3b, 0x47, 0x8d, 0x6c, 0x1a, 0x78, 0x70, 0x7a, 0xd8, 0x39, - 0x16, 0xd2, 0xdc, 0xf3, 0x5c, 0xa9, 0xdc, 0x00, 0xf3, 0x7f, 0x3e, 0x03, 0x98, 0xac, 0x16, 0x3d, - 0x80, 0x9a, 0xed, 0x38, 0x51, 0x68, 0x3b, 0xd7, 0x16, 0x73, 0x68, 0x48, 0xe4, 0xca, 0x32, 0xdd, - 0x3b, 0xb8, 0x1a, 0xcb, 0xfb, 0x42, 0xfc, 0x9d, 0x61, 0xa0, 0x16, 0x34, 0x04, 0x01, 0x43, 0x8f, - 0x04, 0x0e, 0xd1, 0xe8, 0x8c, 0x44, 0x1b, 0xb8, 0x3e, 0xd1, 0x24, 0xf8, 0xcf, 0xa1, 0xce, 0x6d, - 0xf6, 0xca, 0x72, 0xe8, 0x68, 0xec, 0x13, 0x99, 0xf3, 0xb3, 0x12, 0x9e, 0xc1, 0x35, 0xa1, 0x38, - 0x4c, 0xe4, 0x02, 0xfd, 0x25, 0x64, 0x19, 0xe7, 0x92, 0xf8, 0x95, 0xbd, 0x1f, 0xde, 0xb8, 0x4f, - 0xad, 0xfe, 0x60, 0x80, 0x85, 0x85, 0x30, 0xf4, 0xfd, 0x91, 0x0c, 0x87, 0x5b, 0x19, 0x1e, 0x1f, - 0x9f, 0x60, 0x61, 0x21, 0x0c, 0x39, 0x67, 0xba, 0x96, 0xdc, 0xc2, 0x70, 0x30, 0xe8, 0x63, 0x61, - 0x81, 0x30, 0xac, 0x39, 0x34, 0x78, 0x4d, 0x42, 0x26, 0x61, 0xcd, 0xa2, 0x1c, 0xa1, 0x75, 0xf3, - 0x08, 0x87, 0x29, 0x2b, 0x3c, 0x35, 0x06, 0xea, 0x41, 0x59, 0x27, 0x5e, 0x1a, 0xca, 0x50, 0xac, - 0xec, 0x3d, 0xbc, 0x85, 0x13, 0x62, 0x13, 0x3c, 0xb1, 0x46, 0xbf, 0x80, 0xbc, 0xe4, 0x5f, 0xb3, - 0x2c, 0x0b, 0xde, 0x8f, 0x6e, 0xb1, 0xb2, 0x28, 0x0c, 0xb0, 0x32, 0x42, 0x1f, 0x43, 0xe5, 0x2a, - 0x72, 0x87, 0x44, 0x9d, 0x06, 0x65, 0xdc, 0x97, 0x31, 0x48, 0x91, 0xc8, 0xbf, 0x3e, 0xfa, 0x1c, - 0xd0, 0xa5, 0xcd, 0xac, 0x90, 0x8c, 0x28, 0x27, 0xf1, 0x31, 0x54, 0x06, 0x6c, 0x09, 0x37, 0x2e, - 0x6d, 0x86, 0xa5, 0xa2, 0xaf, 0xe4, 0xe8, 0x01, 0x64, 0xf8, 0x63, 0x1d, 0xb7, 0xab, 0x92, 0x40, - 0x86, 0x3f, 0x46, 0x3f, 0x54, 0x35, 0xc2, 0x63, 0x24, 0x20, 0x4c, 0x85, 0x6c, 0xa6, 0x9b, 0xc5, - 0x69, 0xa1, 0x60, 0xca, 0x3e, 0x6c, 0x47, 0x41, 0x40, 0x1c, 0xc2, 0x98, 0x48, 0xe1, 0x9c, 0x52, - 0xdf, 0x72, 0x6c, 0xdf, 0x57, 0xe5, 0xaa, 0xd4, 0xcd, 0xe1, 0xcd, 0x94, 0x7e, 0x40, 0xa9, 0x7f, - 0x28, 0xb4, 0x9a, 0xc2, 0x5e, 0xf0, 0x92, 0x86, 0x23, 0xe9, 0x05, 0xcb, 0xa7, 0x8c, 0xc9, 0x22, - 0x56, 0xea, 0xe6, 0x71, 0x3d, 0xa5, 0x39, 0xa6, 0xea, 0x55, 0x3f, 0x83, 0xcd, 0x90, 0xb8, 0x51, - 0xe0, 0xda, 0xe2, 0xc4, 0xcd, 0x6d, 0x4e, 0x46, 0x24, 0xe0, 0x4c, 0x96, 0xaf, 0x52, 0xb7, 0x80, - 0x37, 0x12, 0x6d, 0x3f, 0x51, 0x2a, 0x32, 0x6f, 0x8d, 0x29, 0x0d, 0xad, 0xdf, 0x44, 0xea, 0x3c, - 0x66, 0xfd, 0x26, 0xb2, 0x7d, 0x8f, 0x5f, 0xcb, 0xe2, 0x56, 0xea, 0x16, 0xf1, 0x86, 0x50, 0x7f, - 0xa3, 0xb5, 0xdf, 0x28, 0xa5, 0x30, 0xfc, 0x63, 0x68, 0xa6, 0x69, 0x61, 0x8d, 0x43, 0x3a, 0x0c, - 0xb5, 0x8b, 0x37, 0xa4, 0x3f, 0x4a, 0x78, 0x27, 0x8d, 0x38, 0x9b, 0x00, 0xbe, 0x33, 0x0c, 0xf3, - 0x0f, 0x39, 0xc8, 0xf6, 0x07, 0x03, 0xb4, 0x05, 0xd9, 0x37, 0x24, 0x4c, 0x82, 0x59, 0x3c, 0x88, - 0xe1, 0xef, 0x42, 0xfe, 0x0d, 0x0d, 0x5d, 0x55, 0xbd, 0xaa, 0x5d, 0x03, 0xab, 0x47, 0xa1, 0xfa, - 0x0c, 0x2a, 0xe2, 0xb7, 0x25, 0x4b, 0x8e, 0xaa, 0x4e, 0xd5, 0x6e, 0x06, 0x83, 0x10, 0x76, 0xa4, - 0x4c, 0xa0, 0xb6, 0x20, 0xeb, 0x10, 0x55, 0x9e, 0xc4, 0xd6, 0x88, 0x07, 0x3d, 0xae, 0x73, 0x69, - 0x87, 0x4c, 0x9e, 0x96, 0xaa, 0xdd, 0x1c, 0x56, 0x8f, 0x7a, 0x5c, 0xf1, 0x3b, 0x1e, 0x17, 0x24, - 0x20, 0x8f, 0x41, 0x08, 0x27, 0xe3, 0xfe, 0x12, 0x9a, 0x3c, 0xb4, 0x83, 0xe4, 0x14, 0x68, 0xf9, - 0x36, 0x17, 0xa7, 0x02, 0x6b, 0xc4, 0x64, 0x34, 0x54, 0xbb, 0x05, 0xbc, 0x3d, 0x85, 0x38, 0x56, - 0x80, 0x13, 0x69, 0xbe, 0x07, 0x88, 0x04, 0xdc, 0xe3, 0xd7, 0x56, 0x48, 0x1c, 0x3a, 0x0c, 0x3c, - 0x19, 0x97, 0x15, 0x39, 0xcb, 0x22, 0x5e, 0x57, 0x3a, 0x3c, 0x51, 0xc5, 0xe9, 0x4c, 0xc8, 0x3d, - 0xc2, 0xac, 0x88, 0x73, 0x12, 0x12, 0x55, 0x76, 0xaa, 0xdd, 0x12, 0xae, 0xc7, 0x9a, 0x73, 0xa5, - 0x10, 0xf8, 0x9f, 0xc2, 0x46, 0x82, 0xd7, 0x6f, 0xf9, 0x2d, 0x71, 0x25, 0xb5, 0xab, 0xdd, 0x32, - 0x46, 0xb1, 0x12, 0x27, 0xba, 0xef, 0x0c, 0xa3, 0x5d, 0x80, 0x9c, 0xf5, 0x86, 0x84, 0xed, 0x12, - 0x14, 0x2c, 0xe9, 0xeb, 0x76, 0x0d, 0xd6, 0xac, 0x94, 0xa7, 0x25, 0xc2, 0xd1, 0x08, 0xe9, 0x35, - 0x89, 0x48, 0xf9, 0xac, 0xfd, 0x01, 0xdc, 0xb5, 0x96, 0x79, 0xa7, 0xbd, 0x05, 0x1b, 0xd6, 0xfc, - 0xda, 0xdb, 0x1b, 0xb0, 0x6e, 0xcd, 0x2e, 0xaf, 0xbd, 0x0d, 0x9b, 0xd6, 0x82, 0x35, 0x98, 0xbf, - 0x33, 0x20, 0x7b, 0x7c, 0x7c, 0x82, 0x7e, 0x00, 0x45, 0xce, 0x5f, 0x72, 0xe1, 0x74, 0x43, 0x2e, - 0xeb, 0x0e, 0x2e, 0x08, 0x81, 0x72, 0xb2, 0xd2, 0x32, 0xa1, 0x8d, 0xe9, 0x23, 0xb4, 0x4c, 0x69, - 0x1f, 0xc1, 0x3a, 0xa7, 0xaf, 0x48, 0xc0, 0xac, 0x31, 0x09, 0x2d, 0x46, 0x1c, 0x1a, 0xb8, 0x49, - 0xbe, 0xaf, 0x2b, 0xd5, 0x19, 0x09, 0xfb, 0x52, 0x21, 0x3c, 0x03, 0x50, 0xb2, 0xf4, 0xdb, 0xe2, - 0xdf, 0x62, 0xec, 0xf6, 0x26, 0x20, 0x6b, 0x6e, 0x24, 0xf3, 0xaf, 0x72, 0x90, 0x1d, 0x0c, 0xfa, - 0x7a, 0x12, 0x17, 0x93, 0x49, 0xa8, 0x29, 0x5e, 0x9c, 0xc4, 0xf4, 0x14, 0xb4, 0xcf, 0xea, 0xaa, - 0x34, 0x47, 0xfb, 0xa2, 0x66, 0xf5, 0x52, 0xda, 0x2b, 0xae, 0x65, 0x97, 0xd0, 0xbe, 0x2c, 0xc7, - 0xcd, 0xcd, 0xd3, 0x3e, 0x66, 0xf5, 0x52, 0xda, 0x57, 0x34, 0x87, 0x67, 0x68, 0xbf, 0x98, 0xb7, - 0xb5, 0x77, 0xe6, 0x6d, 0xfd, 0xdd, 0x79, 0xdb, 0x58, 0xcd, 0x5b, 0xbd, 0x23, 0xc2, 0xd1, 0xdf, - 0x0b, 0x87, 0xbf, 0x0f, 0x9a, 0xfe, 0x53, 0x09, 0xd6, 0xd2, 0x25, 0x54, 0x72, 0x2e, 0x0a, 0x03, - 0x8b, 0xdb, 0xaf, 0xbc, 0x60, 0x38, 0x73, 0x80, 0xa9, 0x0b, 0xd5, 0x40, 0x6a, 0x92, 0x23, 0xc9, - 0x53, 0xd8, 0x09, 0x09, 0x1b, 0xd3, 0x80, 0x91, 0x24, 0x86, 0xc6, 0x4f, 0x1e, 0xc7, 0x6c, 0xca, - 0x77, 0x0d, 0xbc, 0x19, 0x03, 0x74, 0x82, 0x39, 0x7b, 0xf2, 0x58, 0x71, 0x6b, 0xa1, 0xed, 0xfe, - 0x13, 0x61, 0x9b, 0x95, 0xb6, 0x99, 0x79, 0xdb, 0xfd, 0x27, 0xab, 0x6c, 0xf7, 0x85, 0x6d, 0x4e, - 0xda, 0x66, 0x17, 0xd8, 0xee, 0x2b, 0xdb, 0x9f, 0xc3, 0xb6, 0x3a, 0xfd, 0x5f, 0x7b, 0xc4, 0x77, - 0xd3, 0x89, 0x31, 0xaf, 0x93, 0xed, 0x86, 0xd4, 0xff, 0x5a, 0xa8, 0xa7, 0xb2, 0xe2, 0x57, 0xb0, - 0x43, 0x28, 0xb7, 0x46, 0x1e, 0x1b, 0x87, 0xc4, 0xf5, 0xe4, 0x1d, 0x43, 0x1f, 0x4a, 0x0b, 0x9a, - 0xb0, 0x5b, 0x84, 0xf2, 0x93, 0xb4, 0x5e, 0x1e, 0x4e, 0x85, 0xf1, 0x7d, 0xa8, 0xd2, 0xd7, 0x24, - 0xf4, 0xed, 0xb1, 0x15, 0x0a, 0x6f, 0xcb, 0xd8, 0xc9, 0x74, 0x0b, 0x78, 0x4d, 0x8b, 0xb1, 0x90, - 0xea, 0xc8, 0x8f, 0x91, 0x6c, 0x4c, 0x88, 0x73, 0x39, 0x49, 0xda, 0x45, 0x5c, 0xd7, 0xaa, 0xbe, - 0xd4, 0xa8, 0x79, 0x3d, 0x84, 0x3a, 0xa7, 0xdc, 0xf6, 0x53, 0xf0, 0xb2, 0x26, 0x70, 0x55, 0x2a, - 0xd2, 0xe0, 0x2f, 0x61, 0xcb, 0x7e, 0xf3, 0xea, 0x8d, 0x1d, 0xba, 0x16, 0xf3, 0x7c, 0x79, 0xf4, - 0x54, 0x4b, 0xa8, 0x68, 0x02, 0x6f, 0x68, 0x75, 0x5f, 0x69, 0x93, 0x05, 0xb4, 0xa0, 0x11, 0x05, - 0x76, 0xc0, 0xde, 0x08, 0x4e, 0xa9, 0x13, 0xb9, 0xce, 0xef, 0x80, 0xeb, 0x13, 0x8d, 0x3c, 0x92, - 0xeb, 0x12, 0xf4, 0xd2, 0xf6, 0x19, 0xb1, 0xbc, 0x80, 0x93, 0x30, 0x8c, 0xc6, 0x29, 0x77, 0xa9, - 0x24, 0x5f, 0xc1, 0xdb, 0x12, 0xd1, 0x4b, 0x01, 0x92, 0xd7, 0x75, 0xe0, 0x43, 0xb5, 0x4d, 0x21, - 0x19, 0x53, 0x79, 0x6b, 0x22, 0x7b, 0x24, 0xbd, 0x5b, 0x2a, 0x46, 0xd7, 0xf0, 0x5d, 0x09, 0xc3, - 0x1a, 0xd5, 0xd9, 0x23, 0xe9, 0x3d, 0x53, 0xd9, 0x6f, 0x96, 0xd3, 0x6d, 0x13, 0x9a, 0xd6, 0x12, - 0xe2, 0x2e, 0xd1, 0x49, 0x62, 0x2e, 0xd3, 0x09, 0xe2, 0xb5, 0xef, 0xc2, 0x8e, 0xb5, 0x98, 0x58, - 0xd2, 0x6c, 0x09, 0x73, 0xda, 0x0d, 0xa8, 0x59, 0x53, 0xc4, 0x90, 0x53, 0x9e, 0x23, 0x40, 0x1b, - 0x41, 0xc3, 0x9a, 0xd9, 0xe5, 0x76, 0x13, 0xb6, 0xad, 0x85, 0x9b, 0x29, 0xf3, 0xc0, 0xec, 0x6e, - 0xc9, 0xba, 0xb7, 0x6c, 0x4b, 0xda, 0xf7, 0xe0, 0x23, 0x6b, 0xa5, 0xc3, 0xcd, 0xbf, 0x35, 0xa0, - 0x9c, 0x1c, 0x90, 0xd1, 0x63, 0x58, 0x27, 0x76, 0xe8, 0x5f, 0x5b, 0x9c, 0x84, 0x23, 0x2f, 0xb0, - 0x93, 0x2f, 0x6b, 0xa5, 0xee, 0x1d, 0xdc, 0x90, 0xaa, 0xc1, 0x44, 0xa3, 0x09, 0x24, 0x46, 0x9b, - 0x32, 0xc8, 0x48, 0x03, 0x03, 0xd7, 0x85, 0x66, 0x1a, 0x2f, 0xfd, 0x30, 0xf7, 0x0a, 0xb9, 0xb2, - 0xd9, 0x61, 0xcc, 0xbf, 0x2f, 0x41, 0x4e, 0x10, 0x4f, 0xdc, 0xd5, 0xbd, 0xc0, 0x25, 0x6f, 0x55, - 0xbd, 0xc5, 0xea, 0x01, 0x3d, 0x84, 0x5c, 0x48, 0x7d, 0xa2, 0xbf, 0x31, 0xec, 0x2c, 0xf8, 0x7a, - 0x88, 0xa9, 0x4f, 0xb0, 0x04, 0xa1, 0x8f, 0xa0, 0x24, 0x6f, 0xde, 0x71, 0x22, 0x12, 0x25, 0xb1, - 0x28, 0x25, 0x2a, 0x80, 0x4c, 0x28, 0x90, 0xc0, 0x8d, 0x53, 0x8d, 0x3c, 0xf4, 0x91, 0xc0, 0x3d, - 0xb9, 0xf1, 0xd8, 0x95, 0xd7, 0xb5, 0x72, 0xc5, 0xb1, 0xeb, 0x53, 0xa8, 0xf8, 0xfe, 0x28, 0xae, - 0xe2, 0x3a, 0xa9, 0x64, 0x71, 0xd9, 0xf7, 0x47, 0x83, 0xe4, 0xd8, 0x30, 0x01, 0xc9, 0xa3, 0x43, - 0x51, 0x27, 0x2d, 0x0d, 0x5a, 0x75, 0x7a, 0x28, 0xc9, 0x8c, 0x93, 0x5f, 0x74, 0x7a, 0x10, 0xa3, - 0x72, 0xce, 0xe2, 0x12, 0xa5, 0xf3, 0x47, 0x01, 0x97, 0x39, 0x67, 0x83, 0xe4, 0x38, 0x70, 0x63, - 0x4c, 0x82, 0xce, 0x52, 0x2b, 0x63, 0x12, 0x7d, 0x01, 0x1b, 0x73, 0x41, 0x34, 0x52, 0x35, 0x3d, - 0xdf, 0x2d, 0xe1, 0xf5, 0x99, 0xcc, 0x7d, 0x53, 0xda, 0x5e, 0x4b, 0x12, 0xd7, 0xe2, 0xb4, 0xbd, - 0xb0, 0xaa, 0x55, 0xa5, 0x2f, 0x60, 0x61, 0x55, 0x5b, 0x78, 0x6f, 0xaa, 0xcc, 0xdd, 0x9b, 0x44, - 0x04, 0xcc, 0x06, 0xb5, 0xbe, 0x32, 0xad, 0xe1, 0xc6, 0x6c, 0x21, 0xd0, 0x37, 0xf8, 0x99, 0x70, - 0xd5, 0xb7, 0xa5, 0x2a, 0xae, 0x4d, 0x67, 0x5d, 0xb5, 0x25, 0x30, 0x09, 0x61, 0x7d, 0x45, 0xaa, - 0xe1, 0x94, 0x4c, 0x04, 0x49, 0x05, 0xca, 0x56, 0x4c, 0xd7, 0x76, 0x19, 0x8a, 0x96, 0xe2, 0xe6, - 0xea, 0x33, 0xae, 0x38, 0x4c, 0xa4, 0x88, 0x96, 0x7e, 0x5e, 0x7e, 0x64, 0x94, 0xa8, 0x14, 0x47, - 0x6e, 0xce, 0x18, 0xf2, 0xe0, 0xb1, 0x60, 0xa7, 0x57, 0xa5, 0xca, 0xc5, 0xf9, 0x5a, 0x9e, 0x7e, - 0x26, 0xde, 0x57, 0xa9, 0x61, 0xd6, 0xf7, 0x32, 0x45, 0xce, 0xf8, 0xb7, 0x5d, 0x85, 0x4a, 0x2a, - 0x11, 0xb6, 0xd7, 0xa1, 0x6e, 0x4d, 0x7f, 0xa0, 0x51, 0x47, 0xa6, 0x99, 0xef, 0x30, 0x2a, 0xdb, - 0x4e, 0x7f, 0x6c, 0x99, 0x9b, 0x84, 0x58, 0xc5, 0xe2, 0x8b, 0xb3, 0x1c, 0x73, 0xf6, 0x62, 0xdc, - 0xde, 0x81, 0x2d, 0x6b, 0xd1, 0xed, 0x57, 0xa6, 0xf1, 0x85, 0xd7, 0x5b, 0xb9, 0x8b, 0xcb, 0xee, - 0xaf, 0xe6, 0x7f, 0x64, 0x01, 0x26, 0x9f, 0x63, 0xdf, 0xeb, 0xa7, 0xa7, 0x3f, 0x02, 0x94, 0x7c, - 0xa3, 0x1f, 0xdb, 0x8c, 0x89, 0x4a, 0x45, 0x92, 0xdb, 0x48, 0x23, 0xd6, 0x9d, 0xd9, 0x8c, 0x61, - 0x9b, 0x93, 0xff, 0xff, 0xfe, 0x74, 0x6b, 0xa2, 0x89, 0x73, 0xfc, 0xbc, 0x6b, 0xcd, 0xff, 0xce, - 0x42, 0xe1, 0x50, 0x76, 0x5c, 0xcc, 0xff, 0xcc, 0x40, 0x11, 0x13, 0x49, 0x8d, 0x99, 0x76, 0x92, - 0x31, 0xdb, 0x4e, 0x9a, 0xee, 0xb4, 0x64, 0x66, 0x3b, 0x2d, 0x0b, 0x1a, 0x12, 0xb9, 0x85, 0x0d, - 0x89, 0x6d, 0x28, 0x84, 0x64, 0x28, 0x5c, 0x51, 0xd0, 0xdf, 0x8d, 0xe5, 0x13, 0x6a, 0xcf, 0xb5, - 0x6a, 0x8a, 0xab, 0x5a, 0x35, 0x82, 0x7a, 0x53, 0xcd, 0x9a, 0x54, 0x72, 0x8d, 0x1b, 0x17, 0x25, - 0x7d, 0x4d, 0x48, 0x0b, 0xd5, 0x99, 0x56, 0x75, 0x2f, 0xca, 0xb7, 0xe8, 0x5e, 0x48, 0x67, 0x4f, - 0x4f, 0x2c, 0x09, 0x56, 0x3d, 0xe4, 0xf3, 0x5c, 0x29, 0xdb, 0xc8, 0xe1, 0xf9, 0xb6, 0x99, 0xf9, - 0xd7, 0x06, 0x94, 0xb0, 0xce, 0x51, 0xe8, 0x01, 0xac, 0x4f, 0xbc, 0x63, 0x85, 0x51, 0x30, 0x71, - 0x73, 0x9d, 0xa5, 0x59, 0xd0, 0x73, 0x51, 0x1f, 0xb6, 0xc7, 0x21, 0x61, 0xde, 0x30, 0x20, 0xae, - 0x35, 0xa6, 0x4c, 0xa4, 0x41, 0xb9, 0x4b, 0xba, 0x49, 0x39, 0xe9, 0xe5, 0x9d, 0xc5, 0xb0, 0x33, - 0xca, 0xb8, 0xde, 0x4a, 0xbc, 0x39, 0x5e, 0x20, 0x35, 0x7f, 0x67, 0xc0, 0xc6, 0x21, 0x0d, 0x5e, - 0x7a, 0xe1, 0xa8, 0x4f, 0xa3, 0xd0, 0x21, 0xe7, 0x63, 0x9f, 0xda, 0xae, 0xf9, 0x97, 0xb7, 0xe6, - 0xc0, 0xc2, 0x25, 0x64, 0x16, 0x2f, 0xe1, 0xc7, 0x50, 0x77, 0xa8, 0x4b, 0xc4, 0xe5, 0x30, 0xbc, - 0x1e, 0x53, 0x2f, 0xe0, 0xba, 0x8b, 0x52, 0x13, 0xe2, 0x4e, 0x22, 0x35, 0x61, 0xe2, 0x23, 0xf3, - 0x6f, 0x0c, 0xc8, 0x3e, 0x23, 0xdc, 0x1c, 0xbc, 0x8f, 0x29, 0x99, 0x3f, 0x4d, 0xed, 0xc6, 0x7d, - 0xc8, 0x86, 0x91, 0x3a, 0x54, 0x4e, 0x71, 0x2c, 0x6d, 0x82, 0x05, 0xc4, 0xfc, 0x97, 0x0c, 0xe4, - 0x8e, 0x3d, 0xc6, 0xcd, 0x7f, 0x36, 0x6e, 0x3d, 0xab, 0xa7, 0x33, 0xad, 0xa7, 0xd5, 0xbd, 0xd7, - 0xee, 0x9d, 0xb8, 0xf1, 0x24, 0xd8, 0xf9, 0x0b, 0x80, 0xb1, 0x3d, 0x24, 0xaa, 0x48, 0x4a, 0x9f, - 0x55, 0xf6, 0x9a, 0x89, 0xfd, 0x40, 0x48, 0xcf, 0xec, 0xa1, 0x3e, 0x9d, 0x76, 0x0d, 0x5c, 0x16, - 0x68, 0x29, 0x16, 0x35, 0x5b, 0x94, 0x69, 0x35, 0x96, 0x2c, 0x4f, 0x93, 0x91, 0xcc, 0xb7, 0x53, - 0x5c, 0xcc, 0x85, 0x51, 0xc0, 0x9a, 0x86, 0xfc, 0xea, 0xbc, 0x6c, 0xf9, 0x12, 0x83, 0x7e, 0x05, - 0xf5, 0x80, 0xbc, 0xe5, 0xa9, 0xa1, 0x34, 0x09, 0x97, 0x4e, 0x0a, 0x57, 0x85, 0xc1, 0x59, 0x3c, - 0x2d, 0xf3, 0x0a, 0x0a, 0x87, 0x76, 0xe0, 0x10, 0xff, 0x3d, 0xed, 0x6b, 0x9a, 0x41, 0xef, 0xb9, - 0x13, 0xf4, 0x7b, 0x23, 0x69, 0x05, 0xdd, 0x85, 0xad, 0xe9, 0x56, 0x90, 0x75, 0x7e, 0x76, 0xfc, - 0xe2, 0xe0, 0xa8, 0x71, 0x07, 0x6d, 0xc1, 0xba, 0x56, 0x3d, 0xeb, 0x9c, 0x76, 0xf0, 0xc1, 0x40, - 0x35, 0x85, 0xe6, 0x1b, 0x45, 0x19, 0xb4, 0x0d, 0x48, 0xcb, 0xfa, 0xe7, 0x27, 0x27, 0x07, 0xb8, - 0xf7, 0xad, 0x90, 0x67, 0x17, 0x36, 0x90, 0x72, 0xf3, 0x0d, 0xa4, 0xfc, 0xc2, 0x06, 0x52, 0xe1, - 0x79, 0xae, 0x54, 0x6a, 0x94, 0x71, 0x51, 0xb7, 0x49, 0x77, 0x7f, 0x9f, 0x85, 0x52, 0x9c, 0x3e, - 0x27, 0x3d, 0x47, 0x23, 0xdd, 0x73, 0x9c, 0x6d, 0x79, 0x66, 0x16, 0xb4, 0x3c, 0x17, 0x37, 0x37, - 0xb3, 0xcb, 0x9a, 0x9b, 0x8f, 0x74, 0x1b, 0x33, 0x27, 0x59, 0xf6, 0xc1, 0x5c, 0x22, 0x6f, 0x0d, - 0xec, 0x21, 0x53, 0xff, 0xdb, 0x50, 0x3d, 0x4e, 0x13, 0x4a, 0x11, 0x23, 0xa1, 0x6b, 0x73, 0x5b, - 0xb7, 0x4c, 0x93, 0x67, 0xf3, 0x1f, 0x0c, 0x58, 0x57, 0x55, 0xeb, 0xeb, 0x90, 0x8e, 0x74, 0xcb, - 0xc2, 0xfc, 0xf5, 0xad, 0x09, 0x95, 0x6a, 0x58, 0x66, 0xa6, 0x1a, 0x96, 0x93, 0x82, 0x94, 0x4d, - 0x17, 0x24, 0x73, 0x3f, 0x15, 0x2f, 0x3f, 0x81, 0x52, 0x5c, 0x03, 0x74, 0xca, 0x58, 0x9f, 0x5b, - 0x0d, 0x4e, 0x20, 0xe6, 0x97, 0x50, 0x4e, 0x96, 0xb6, 0xe0, 0x1f, 0x27, 0x9b, 0xe9, 0x7f, 0x9c, - 0x94, 0x53, 0xff, 0x2a, 0xd9, 0x1d, 0x40, 0x75, 0xaa, 0xca, 0x21, 0x04, 0x39, 0x59, 0x6f, 0x95, - 0xb5, 0xfc, 0x8d, 0x1e, 0x41, 0x39, 0x7e, 0x93, 0xd8, 0xa6, 0xec, 0xe2, 0xd9, 0x4c, 0x30, 0xbb, - 0x7f, 0x30, 0x00, 0x4d, 0x22, 0xfb, 0xc8, 0x63, 0x63, 0x9b, 0x3b, 0x97, 0xef, 0x54, 0x90, 0xb6, - 0xa0, 0x70, 0x45, 0x2f, 0x26, 0xce, 0xcb, 0x5f, 0xd1, 0x8b, 0x9e, 0x3b, 0xe5, 0x97, 0xec, 0x8d, - 0x7e, 0x49, 0x0a, 0x6f, 0xee, 0x16, 0x85, 0xf7, 0xc1, 0x4b, 0xa8, 0x4d, 0xcb, 0xd1, 0xc7, 0xf0, - 0x41, 0xbf, 0x77, 0x72, 0x7e, 0x7c, 0x30, 0xe8, 0xbd, 0x38, 0xb5, 0x4e, 0x5e, 0x1c, 0x75, 0xac, - 0xf3, 0xd3, 0xfe, 0x59, 0xe7, 0xb0, 0xf7, 0x75, 0xaf, 0x23, 0xe2, 0xae, 0x09, 0x9b, 0xb3, 0x80, - 0x41, 0xe7, 0xcf, 0x06, 0x0d, 0x43, 0x06, 0xeb, 0x8c, 0xe6, 0xe0, 0xfc, 0xa8, 0xf7, 0xa2, 0x91, - 0xd9, 0xfb, 0xbb, 0x3c, 0xd4, 0x0f, 0x04, 0x77, 0x27, 0x6f, 0x43, 0x2e, 0x6c, 0x28, 0xae, 0x4d, - 0xff, 0x03, 0x67, 0xd9, 0xc1, 0x4f, 0x61, 0x5b, 0x71, 0xa1, 0xfd, 0xd1, 0x4d, 0x30, 0xcd, 0xaa, - 0xef, 0x0c, 0xf8, 0x30, 0x2e, 0xc8, 0x09, 0x30, 0x5d, 0x9a, 0xd1, 0xde, 0xb2, 0x91, 0xe6, 0xcb, - 0x78, 0xf2, 0xf6, 0x2f, 0xde, 0xc9, 0x46, 0x4f, 0xe5, 0xcf, 0xa1, 0xf1, 0x8c, 0xf0, 0xe9, 0xd5, - 0xee, 0x2e, 0x19, 0xe8, 0x19, 0xe1, 0xc9, 0xcb, 0x3e, 0x5d, 0x89, 0xd1, 0x83, 0x5b, 0x80, 0x44, - 0x01, 0x9d, 0x42, 0x30, 0xb4, 0xcc, 0x54, 0x40, 0x93, 0xf1, 0x3f, 0x5b, 0x0d, 0xd2, 0x2f, 0x10, - 0xdb, 0x25, 0x0b, 0xcc, 0x2d, 0xb7, 0x4b, 0x62, 0x6f, 0xde, 0xae, 0x18, 0xa6, 0xdf, 0xf2, 0x1a, - 0xee, 0x6a, 0x52, 0x68, 0x3e, 0xa7, 0x12, 0x11, 0x7a, 0x38, 0x9f, 0xdd, 0xe6, 0xb2, 0x55, 0xf2, - 0xc6, 0xcf, 0x6f, 0x07, 0x56, 0xef, 0x6d, 0x7f, 0xfd, 0xed, 0xa7, 0x43, 0x8f, 0x5f, 0x46, 0x17, - 0x2d, 0x87, 0x8e, 0xe2, 0x7f, 0x16, 0xaa, 0x7f, 0x0f, 0x3a, 0xd4, 0x8f, 0x05, 0xff, 0x98, 0xa9, - 0x1e, 0x7b, 0xaf, 0xc9, 0x9f, 0xc8, 0x33, 0x21, 0xe5, 0xf4, 0xbf, 0x32, 0x35, 0xfd, 0xfc, 0xf4, - 0xa9, 0x14, 0x5c, 0x14, 0xa4, 0xc9, 0x17, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x93, 0x0a, 0x9a, - 0xd7, 0xcc, 0x28, 0x00, 0x00, + // 3439 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcb, 0x6f, 0x1b, 0x49, + 0x73, 0x37, 0xdf, 0x64, 0x51, 0x7c, 0xa8, 0xf5, 0x30, 0x3d, 0xde, 0x87, 0x2d, 0xef, 0xc3, 0xb1, + 0xbd, 0xb4, 0xa3, 0x5d, 0xef, 0x46, 0xde, 0x07, 0x22, 0x4a, 0xb4, 0x49, 0x47, 0x92, 0xb5, 0x4d, + 0x0a, 0xc9, 0x3a, 0x08, 0x06, 0xa3, 0x99, 0x36, 0x35, 0xf2, 0x70, 0x9a, 0x3b, 0xdd, 0x63, 0x5b, + 0x0b, 0xe4, 0x90, 0x9b, 0x81, 0x1c, 0x82, 0xdc, 0x72, 0x0a, 0x92, 0xc3, 0x1e, 0xb2, 0xd7, 0x5c, + 0x03, 0xe4, 0x6f, 0xc8, 0x25, 0x40, 0x80, 0xfc, 0x05, 0xdf, 0xf5, 0xc3, 0xde, 0x3f, 0xf4, 0x63, + 0x86, 0xc3, 0x97, 0x2c, 0x7f, 0x58, 0xdf, 0xbe, 0x1b, 0xa7, 0xea, 0x57, 0x3d, 0xdd, 0xd5, 0xbf, + 0xaa, 0xea, 0xe9, 0x22, 0x7c, 0xe0, 0xb9, 0x2f, 0xc8, 0x73, 0x97, 0x9b, 0xd6, 0x80, 0xf8, 0xdc, + 0x64, 0xee, 0x30, 0xf4, 0x2c, 0xee, 0x52, 0xbf, 0x39, 0x0a, 0x28, 0xa7, 0xa8, 0xa0, 0xf5, 0xc6, + 0x75, 0x09, 0xb8, 0x3b, 0x05, 0x27, 0x8c, 0xc5, 0x58, 0xe3, 0xc3, 0x01, 0xa5, 0x03, 0x8f, 0xdc, + 0x95, 0x4f, 0xc7, 0xe1, 0xb3, 0xbb, 0xdc, 0x1d, 0x12, 0xc6, 0xad, 0xe1, 0x48, 0x03, 0xae, 0x44, + 0xd6, 0xb6, 0x47, 0x43, 0x47, 0x8d, 0xa1, 0x55, 0xab, 0x91, 0x6a, 0x48, 0x1d, 0xe2, 0x31, 0x25, + 0xdd, 0xf8, 0x9f, 0x0c, 0xac, 0xf6, 0xe2, 0x29, 0xe1, 0xd0, 0xef, 0x85, 0xc3, 0xa1, 0x15, 0x9c, + 0xa1, 0x75, 0xc8, 0x8f, 0x2c, 0xc6, 0x88, 0xd3, 0x48, 0x5d, 0x4b, 0xdd, 0xcc, 0x61, 0xfd, 0x24, + 0xe4, 0xcf, 0x2c, 0xd7, 0x23, 0x4e, 0x23, 0xad, 0xe4, 0xea, 0x09, 0xbd, 0x0f, 0x30, 0xa0, 0xae, + 0x3f, 0x30, 0x5f, 0x12, 0xcf, 0x6b, 0x64, 0xae, 0xa5, 0x6e, 0x96, 0x70, 0x49, 0x4a, 0xfe, 0x9a, + 0x78, 0x9e, 0x50, 0x73, 0x6a, 0xba, 0xc3, 0x51, 0x40, 0x5f, 0x90, 0x46, 0x56, 0xa9, 0x39, 0xed, + 0x2a, 0x01, 0xfa, 0x1a, 0xf2, 0x2e, 0x63, 0x21, 0x61, 0x8d, 0xdc, 0xb5, 0xcc, 0xcd, 0xf2, 0xe6, + 0x8d, 0xa6, 0x9e, 0x6d, 0x73, 0xde, 0xe4, 0x9a, 0x5d, 0x81, 0xc5, 0xda, 0x04, 0x7d, 0x0f, 0x4b, + 0xf6, 0x89, 0xc5, 0xcd, 0x13, 0x97, 0x71, 0x1a, 0x9c, 0x35, 0xf2, 0x72, 0x88, 0xe6, 0xf9, 0x43, + 0xec, 0x9c, 0x58, 0xbc, 0xa3, 0x0c, 0xda, 0x3e, 0x0f, 0xce, 0x70, 0xd9, 0x1e, 0x4b, 0x8c, 0xa7, + 0x50, 0x9f, 0x06, 0xa0, 0x3a, 0x64, 0x9e, 0x93, 0x33, 0xe9, 0x8e, 0x12, 0x16, 0x3f, 0xd1, 0x3d, + 0xc8, 0xbd, 0xb0, 0xbc, 0x90, 0x48, 0x57, 0x94, 0x37, 0x8d, 0xf8, 0x8d, 0xca, 0xef, 0x62, 0x84, + 0x1d, 0xea, 0x73, 0xf2, 0x8a, 0x63, 0x05, 0x7c, 0x90, 0xfe, 0x8b, 0x94, 0x61, 0x42, 0x4e, 0xce, + 0x1f, 0x5d, 0x83, 0xb2, 0x43, 0x98, 0x1d, 0xb8, 0x23, 0x31, 0x37, 0x3d, 0x70, 0x52, 0x84, 0x3e, + 0x00, 0x60, 0xe1, 0x60, 0x40, 0x98, 0x04, 0xa4, 0x25, 0x20, 0x21, 0x41, 0xab, 0x90, 0xf3, 0xac, + 0x63, 0x12, 0xf9, 0x5b, 0x3d, 0x6c, 0xfc, 0xfe, 0x3b, 0xa8, 0x4c, 0xac, 0x19, 0x55, 0x21, 0xed, + 0x3a, 0xfa, 0x05, 0x69, 0x57, 0x6e, 0xd6, 0x28, 0xa0, 0xa7, 0xc4, 0xe6, 0xa6, 0xeb, 0xe8, 0x71, + 0x4b, 0x5a, 0xd2, 0x75, 0xd0, 0x7d, 0xc8, 0x33, 0x6e, 0xf1, 0x90, 0xc9, 0x71, 0xab, 0x9b, 0xef, + 0xcf, 0x77, 0x65, 0xb3, 0x27, 0x41, 0x58, 0x83, 0xd1, 0x6d, 0x58, 0x56, 0xa4, 0x4d, 0xae, 0x4a, + 0x6d, 0x75, 0x5d, 0x2a, 0x76, 0x13, 0x4b, 0x5b, 0x85, 0x1c, 0x09, 0x02, 0x1a, 0x34, 0x72, 0x6a, + 0xea, 0xf2, 0x01, 0x6d, 0x01, 0xd8, 0x01, 0xb1, 0x38, 0x71, 0x4c, 0x8b, 0x37, 0xf2, 0xda, 0xad, + 0x8a, 0xf5, 0xcd, 0x88, 0xf5, 0xcd, 0x7e, 0xc4, 0x7a, 0x5c, 0xd2, 0xe8, 0x6d, 0x8e, 0x9a, 0x90, + 0x3d, 0xa5, 0xc7, 0xac, 0x51, 0x90, 0xbb, 0x6f, 0x2c, 0x98, 0xf2, 0x63, 0x7a, 0x8c, 0x25, 0x4e, + 0xf8, 0x40, 0xcd, 0xd6, 0xb7, 0x86, 0xa4, 0x51, 0x52, 0x3e, 0x90, 0x92, 0x03, 0x6b, 0x48, 0xd0, + 0xb7, 0x50, 0x65, 0x36, 0xf1, 0xad, 0xc0, 0xa5, 0xe6, 0x20, 0xa0, 0xe1, 0xa8, 0x01, 0x72, 0x36, + 0xeb, 0xe3, 0x81, 0xb5, 0xfa, 0x91, 0xd0, 0xe2, 0x0a, 0x4b, 0x3e, 0xa2, 0xfb, 0x50, 0x24, 0xbe, + 0xa3, 0x96, 0x51, 0x7e, 0xe3, 0x32, 0x0a, 0x12, 0xbb, 0xcd, 0xd1, 0x55, 0x28, 0x9d, 0xd2, 0x63, + 0xd3, 0xa6, 0xa1, 0xcf, 0x1b, 0x4b, 0x32, 0xc0, 0x8a, 0xa7, 0xf4, 0x78, 0x47, 0x3c, 0xa3, 0xeb, + 0xb0, 0xa4, 0x82, 0x50, 0xeb, 0x2b, 0x52, 0x5f, 0x56, 0xb2, 0x18, 0xa2, 0xe2, 0x51, 0x43, 0xaa, + 0x0a, 0xa2, 0x64, 0x0a, 0xf2, 0x29, 0xd4, 0xfc, 0x70, 0x98, 0xc8, 0x43, 0xac, 0x51, 0x93, 0xa8, + 0xaa, 0x1f, 0x0e, 0xc7, 0xce, 0x62, 0x68, 0x13, 0x72, 0x21, 0xb3, 0x06, 0xa4, 0x51, 0x97, 0xf3, + 0x7f, 0x6f, 0x81, 0x47, 0x8f, 0x04, 0x06, 0x2b, 0xa8, 0xa0, 0xb4, 0x4d, 0x7d, 0x3b, 0x0c, 0x02, + 0xe2, 0xdb, 0x67, 0x8d, 0x65, 0xf5, 0xfa, 0x84, 0x08, 0xdd, 0x86, 0xac, 0x48, 0x40, 0x0d, 0x24, + 0x99, 0x75, 0x79, 0xce, 0xa0, 0xfb, 0xd4, 0x21, 0x58, 0x82, 0xd0, 0xd7, 0x50, 0x18, 0x12, 0x1e, + 0xb8, 0x36, 0x6b, 0xac, 0xc8, 0x49, 0x5c, 0x5f, 0x30, 0x09, 0x1c, 0xfa, 0xfb, 0x0a, 0x88, 0x23, + 0x0b, 0xe1, 0x0b, 0xa6, 0x82, 0xdd, 0xfc, 0x89, 0x71, 0xa7, 0xb1, 0x7a, 0x2d, 0x75, 0x73, 0x09, + 0x97, 0xb5, 0xec, 0x29, 0xe3, 0x8e, 0xf1, 0xbf, 0x39, 0xc8, 0x3c, 0xa6, 0xc7, 0x33, 0xf1, 0xb1, + 0x15, 0x07, 0x40, 0x5a, 0x4e, 0xf3, 0xfa, 0x62, 0x36, 0x4d, 0x07, 0xc1, 0x06, 0x2c, 0xb9, 0x3e, + 0xe3, 0x41, 0x68, 0x2b, 0xdf, 0xaa, 0xc8, 0x9c, 0x90, 0x8d, 0xb9, 0x9f, 0x4d, 0x72, 0xff, 0x33, + 0x40, 0x8a, 0x90, 0xe4, 0xd5, 0x88, 0xd8, 0x5c, 0xef, 0x8d, 0x0a, 0x0f, 0x15, 0x58, 0xed, 0x84, + 0x62, 0x1c, 0xfb, 0xf9, 0x44, 0xec, 0x23, 0x04, 0x59, 0x6e, 0x0d, 0x54, 0x14, 0x94, 0xb0, 0xfc, + 0x2d, 0x48, 0x15, 0x50, 0x3a, 0x54, 0x44, 0x2f, 0x4a, 0x74, 0x51, 0x08, 0x24, 0xcf, 0xb7, 0x00, + 0x18, 0xb7, 0x02, 0x1d, 0x71, 0xf0, 0xe6, 0x88, 0xd3, 0xe8, 0x6d, 0xfe, 0xc7, 0x72, 0xfc, 0x32, + 0x14, 0xe4, 0x74, 0x5c, 0x47, 0x32, 0xbc, 0x84, 0xf3, 0xe2, 0xb1, 0xeb, 0xa0, 0x2f, 0x23, 0xc2, + 0x55, 0xe4, 0x60, 0xd7, 0xce, 0x71, 0xfa, 0x04, 0xe9, 0x12, 0x2c, 0xa9, 0x9e, 0xcb, 0x92, 0xc7, + 0xf4, 0x78, 0x9a, 0x25, 0xc6, 0xdf, 0x41, 0x4e, 0x0e, 0x86, 0x6e, 0x42, 0x5d, 0x64, 0x6a, 0x93, + 0x87, 0x81, 0xcf, 0x74, 0xf8, 0xa8, 0xd2, 0x57, 0x15, 0xf2, 0xbe, 0x10, 0xab, 0x08, 0xba, 0x05, + 0xcb, 0x56, 0xe8, 0xb8, 0x74, 0x02, 0xaa, 0xaa, 0x61, 0x4d, 0x2a, 0xc6, 0xd8, 0x0d, 0x0a, 0x79, + 0x45, 0x10, 0x84, 0xa0, 0xda, 0xeb, 0x6f, 0xf7, 0x8f, 0x7a, 0xe6, 0x61, 0xfb, 0x60, 0xb7, 0x7b, + 0xf0, 0xa8, 0x7e, 0x29, 0x21, 0xc3, 0x47, 0x07, 0x07, 0x42, 0x96, 0x42, 0xab, 0x50, 0xd7, 0xb2, + 0x9d, 0x27, 0xfb, 0x87, 0x7b, 0xed, 0x7e, 0x7b, 0xb7, 0x9e, 0x46, 0xcb, 0x50, 0xd1, 0xd2, 0x87, + 0xdb, 0xdd, 0xbd, 0xf6, 0x6e, 0x3d, 0x93, 0x04, 0x6e, 0x1f, 0xec, 0xb4, 0xf7, 0x84, 0x34, 0xfb, + 0x38, 0x5b, 0x2c, 0xd5, 0xc1, 0xf8, 0xf7, 0x1b, 0x00, 0xe3, 0xd5, 0xa2, 0x5b, 0x50, 0xb5, 0x6c, + 0x3b, 0x0c, 0x2c, 0xfb, 0xcc, 0x64, 0x36, 0x0d, 0x88, 0x5c, 0x59, 0xba, 0x73, 0x09, 0x57, 0x22, + 0x79, 0x4f, 0x88, 0x5f, 0xa7, 0x52, 0xa8, 0x09, 0x75, 0x41, 0xc0, 0xc0, 0x25, 0xbe, 0x4d, 0x34, + 0x3a, 0x2d, 0xd1, 0x29, 0x5c, 0x1b, 0x6b, 0x62, 0xfc, 0x1d, 0xa8, 0x71, 0x8b, 0x3d, 0x37, 0x6d, + 0x3a, 0x1c, 0x79, 0x44, 0xe6, 0xfc, 0x8c, 0x84, 0xa7, 0x71, 0x55, 0x28, 0x76, 0x62, 0xb9, 0x40, + 0x7f, 0x05, 0x19, 0xc6, 0xb9, 0x24, 0x7e, 0x79, 0xf3, 0xe3, 0x37, 0xee, 0x53, 0xb3, 0xd7, 0xef, + 0x63, 0x61, 0x21, 0x0c, 0x3d, 0x6f, 0x28, 0xc3, 0xe1, 0x42, 0x86, 0x7b, 0x7b, 0xfb, 0x58, 0x58, + 0x08, 0x43, 0xce, 0x99, 0xae, 0x25, 0x17, 0x30, 0xec, 0xf7, 0x7b, 0x58, 0x58, 0x20, 0x0c, 0x4b, + 0x36, 0xf5, 0x5f, 0x90, 0x80, 0x49, 0x58, 0xa3, 0x20, 0x47, 0x68, 0xbe, 0x79, 0x84, 0x9d, 0x84, + 0x15, 0x9e, 0x18, 0x03, 0x75, 0xa1, 0xa4, 0x13, 0x2f, 0x0d, 0x64, 0x28, 0x96, 0x37, 0x6f, 0x5f, + 0xc0, 0x09, 0x91, 0x09, 0x1e, 0x5b, 0xa3, 0x6f, 0x20, 0x27, 0xf9, 0xd7, 0x28, 0xc9, 0x82, 0xf7, + 0xc9, 0x05, 0x56, 0x16, 0x06, 0x3e, 0x56, 0x46, 0xe8, 0x43, 0x28, 0x9f, 0x86, 0xce, 0x80, 0xa8, + 0xd3, 0xa0, 0x8c, 0xfb, 0x12, 0x06, 0x29, 0x12, 0xf9, 0xd7, 0x43, 0x77, 0x00, 0x9d, 0x58, 0xcc, + 0x0c, 0xc8, 0x90, 0x72, 0x12, 0x1d, 0x43, 0x65, 0xc0, 0x16, 0x71, 0xfd, 0xc4, 0x62, 0x58, 0x2a, + 0x7a, 0x4a, 0x8e, 0x6e, 0x41, 0x9a, 0xdf, 0xd3, 0x71, 0x7b, 0x5e, 0x12, 0x48, 0xf3, 0x7b, 0xe8, + 0x63, 0x55, 0x23, 0x5c, 0x46, 0x7c, 0xc2, 0x54, 0xc8, 0xa6, 0x3b, 0x19, 0x9c, 0x14, 0x0a, 0xa6, + 0x6c, 0xc1, 0x7a, 0xe8, 0xfb, 0xc4, 0x26, 0x8c, 0x89, 0x14, 0xce, 0x29, 0xf5, 0x4c, 0xdb, 0xf2, + 0x3c, 0x55, 0xae, 0x8a, 0x9d, 0x2c, 0x5e, 0x4d, 0xe8, 0xfb, 0x94, 0x7a, 0x3b, 0x42, 0xab, 0x29, + 0xec, 0xfa, 0xcf, 0x68, 0x30, 0x94, 0x5e, 0x30, 0x3d, 0xca, 0x98, 0x2c, 0x62, 0xc5, 0x4e, 0x0e, + 0xd7, 0x12, 0x9a, 0x3d, 0xaa, 0x5e, 0xf5, 0x25, 0xac, 0x06, 0xc4, 0x09, 0x7d, 0xc7, 0x12, 0x27, + 0x6e, 0x6e, 0x71, 0x32, 0x24, 0x3e, 0x67, 0xb2, 0x7c, 0x15, 0x3b, 0x79, 0xbc, 0x12, 0x6b, 0x7b, + 0xb1, 0x52, 0x91, 0x79, 0x6d, 0x44, 0x69, 0x60, 0xfe, 0x18, 0xaa, 0xf3, 0x98, 0xf9, 0x63, 0x68, + 0x79, 0x2e, 0x3f, 0x93, 0xc5, 0xad, 0xd8, 0x29, 0xe0, 0x15, 0xa1, 0xfe, 0x5e, 0x6b, 0xbf, 0x57, + 0x4a, 0x61, 0xf8, 0x1d, 0x34, 0x92, 0xb4, 0x30, 0x47, 0x01, 0x1d, 0x04, 0xda, 0xc5, 0x2b, 0xd2, + 0x1f, 0x45, 0x7c, 0x39, 0x89, 0x38, 0x1c, 0x03, 0x5e, 0xa7, 0x52, 0xc6, 0x3f, 0x65, 0x21, 0xd3, + 0xeb, 0xf7, 0xd1, 0x1a, 0x64, 0x5e, 0x92, 0x20, 0x0e, 0x66, 0xf1, 0x20, 0x86, 0xbf, 0x02, 0xb9, + 0x97, 0x34, 0x70, 0x54, 0xf5, 0xaa, 0x74, 0x52, 0x58, 0x3d, 0x0a, 0xd5, 0x47, 0x50, 0x16, 0xbf, + 0x4d, 0x59, 0x72, 0x54, 0x75, 0xaa, 0x74, 0xd2, 0x18, 0x84, 0xb0, 0x2d, 0x65, 0x02, 0xb5, 0x06, + 0x19, 0x9b, 0xa8, 0xf2, 0x24, 0xb6, 0x46, 0x3c, 0xe8, 0x71, 0xed, 0x13, 0x2b, 0x60, 0xf2, 0xb4, + 0x54, 0xe9, 0x64, 0xb1, 0x7a, 0xd4, 0xe3, 0x8a, 0xdf, 0xd1, 0xb8, 0x20, 0x01, 0x39, 0x0c, 0x42, + 0x38, 0x1e, 0xf7, 0x63, 0x58, 0x62, 0x5c, 0x9c, 0x0f, 0x3d, 0xeb, 0xcc, 0x1c, 0x32, 0x19, 0x01, + 0x95, 0x4e, 0x1e, 0x03, 0xe3, 0x7c, 0x57, 0x08, 0xf7, 0x25, 0x6c, 0x13, 0x10, 0xf1, 0xb9, 0xcb, + 0xcf, 0xcc, 0x80, 0xd8, 0x74, 0xe0, 0xbb, 0x32, 0xfe, 0xca, 0x72, 0x36, 0x05, 0xbc, 0xac, 0x74, + 0x78, 0xac, 0x8a, 0xd2, 0x96, 0x90, 0xbb, 0x84, 0x99, 0x21, 0xe7, 0x24, 0x20, 0xaa, 0xbc, 0x54, + 0x3a, 0x45, 0x5c, 0x8b, 0x34, 0x47, 0x4a, 0x21, 0xf0, 0x5f, 0xc0, 0x4a, 0x8c, 0xd7, 0x6f, 0xf9, + 0x89, 0x38, 0x92, 0xc2, 0x95, 0x4e, 0x09, 0xa3, 0x48, 0x89, 0x63, 0xdd, 0xeb, 0x54, 0xaa, 0x95, + 0x87, 0xac, 0xf9, 0x92, 0x04, 0xad, 0x22, 0xe4, 0x4d, 0xe9, 0xd3, 0x56, 0x15, 0x96, 0xcc, 0x84, + 0x47, 0x25, 0xc2, 0xd6, 0x08, 0xe9, 0x1d, 0x89, 0x48, 0xf8, 0xa6, 0x55, 0x83, 0x8a, 0x99, 0xf4, + 0x42, 0x6b, 0x0d, 0x56, 0xcc, 0xd9, 0xf5, 0xb6, 0x56, 0x60, 0xd9, 0x9c, 0x5e, 0x52, 0x6b, 0x1d, + 0x56, 0xcd, 0x39, 0xf3, 0x36, 0xfe, 0x2d, 0x05, 0x99, 0xbd, 0xbd, 0x7d, 0xf4, 0x1e, 0x14, 0x38, + 0x7f, 0xc6, 0x85, 0x73, 0x53, 0x72, 0x29, 0x97, 0x70, 0x5e, 0x08, 0x94, 0x63, 0x95, 0x96, 0x09, + 0x6d, 0x44, 0x0d, 0xa1, 0x65, 0x4a, 0x7b, 0x17, 0x96, 0x39, 0x7d, 0x4e, 0x7c, 0x66, 0x8e, 0x48, + 0x60, 0x32, 0x62, 0x53, 0xdf, 0x89, 0x73, 0x79, 0x4d, 0xa9, 0x0e, 0x49, 0xd0, 0x93, 0x0a, 0xe1, + 0x0d, 0x80, 0xa2, 0xa9, 0xdf, 0x16, 0xfd, 0x16, 0x63, 0xb7, 0x56, 0x01, 0x99, 0x33, 0x23, 0x19, + 0xff, 0x90, 0x85, 0x4c, 0xbf, 0xdf, 0xd3, 0x93, 0x38, 0x1e, 0x4f, 0x42, 0x4d, 0xf1, 0x78, 0x3f, + 0xa2, 0x9e, 0xa0, 0x74, 0x46, 0x57, 0x9c, 0x19, 0x4a, 0x17, 0x34, 0x63, 0x17, 0x52, 0x5a, 0x71, + 0x2a, 0xb3, 0x80, 0xd2, 0x25, 0x39, 0x6e, 0x76, 0x96, 0xd2, 0x11, 0x63, 0x17, 0x52, 0xba, 0x1c, + 0x71, 0x75, 0x92, 0xd2, 0xf3, 0xb9, 0x5a, 0x7d, 0x6b, 0xae, 0xd6, 0xde, 0x9e, 0xab, 0xf5, 0xf3, + 0xb9, 0xaa, 0x77, 0x44, 0x38, 0xfa, 0x37, 0xe1, 0xed, 0x6f, 0x41, 0xd3, 0x5f, 0x0b, 0xb0, 0x94, + 0x2c, 0x8f, 0x92, 0x73, 0x61, 0xe0, 0x9b, 0xdc, 0x7a, 0xee, 0xfa, 0x83, 0xa9, 0xc3, 0x49, 0x4d, + 0xa8, 0xfa, 0x52, 0x13, 0x1f, 0x37, 0xbe, 0x86, 0xc6, 0x09, 0xb1, 0xc4, 0xbc, 0x37, 0x89, 0xe9, + 0x59, 0x5c, 0x7c, 0x54, 0x98, 0xa3, 0xfb, 0xf7, 0x22, 0x3a, 0xe5, 0x3a, 0x29, 0xbc, 0x2a, 0x11, + 0xed, 0x4d, 0xb2, 0xa7, 0xf4, 0x87, 0xf7, 0xef, 0x29, 0x72, 0xcd, 0x37, 0xde, 0xba, 0x2f, 0x8c, + 0x33, 0xd2, 0x38, 0x3d, 0x6b, 0xbc, 0x75, 0xff, 0x5c, 0xe3, 0x2d, 0x61, 0x9c, 0x95, 0xc6, 0x99, + 0x39, 0xc6, 0x5b, 0xca, 0xf8, 0x0e, 0xd4, 0xb9, 0x3b, 0x24, 0x26, 0xa7, 0xe6, 0x99, 0x4b, 0x3c, + 0x47, 0x18, 0xe5, 0x74, 0x16, 0xad, 0x08, 0x4d, 0x9f, 0xfe, 0x20, 0xe4, 0xd1, 0xab, 0x2e, 0x13, + 0xca, 0xcd, 0xa1, 0xcb, 0x46, 0x01, 0x71, 0x5c, 0xf9, 0xd9, 0xa0, 0xcf, 0x99, 0x79, 0xcd, 0xd3, + 0x35, 0x42, 0xf9, 0x7e, 0x52, 0x2f, 0xcf, 0x9b, 0xc2, 0xf8, 0x26, 0x54, 0xe8, 0x0b, 0x12, 0x78, + 0xd6, 0xc8, 0x0c, 0x84, 0x93, 0x65, 0xc8, 0xa4, 0x3b, 0x79, 0xbc, 0xa4, 0xc5, 0x58, 0x48, 0x75, + 0xc0, 0x47, 0x48, 0x36, 0x22, 0xc4, 0x3e, 0x19, 0xe7, 0xe4, 0x02, 0xae, 0x69, 0x55, 0x4f, 0x6a, + 0xd4, 0xbc, 0x6e, 0x43, 0x8d, 0x53, 0x6e, 0x79, 0x09, 0x78, 0x49, 0xf3, 0xb6, 0x22, 0x15, 0x49, + 0xf0, 0x57, 0xb0, 0x66, 0xbd, 0x7c, 0xfe, 0x52, 0x78, 0x8c, 0xb9, 0x9e, 0x3c, 0x4d, 0xaa, 0x25, + 0x94, 0x35, 0x6f, 0x57, 0xb4, 0xba, 0xa7, 0xb4, 0xf1, 0x02, 0x9a, 0x50, 0x0f, 0x7d, 0xcb, 0x67, + 0x2f, 0x05, 0x95, 0xd4, 0x21, 0x5b, 0xa7, 0x72, 0xc0, 0xb5, 0xb1, 0x46, 0x9e, 0xb2, 0x05, 0xfe, + 0x5b, 0x68, 0x3c, 0xb3, 0x3c, 0x46, 0x4c, 0xd7, 0xe7, 0x24, 0x08, 0xc2, 0x51, 0xc2, 0x5d, 0x2a, + 0x9f, 0x97, 0xf1, 0xba, 0x44, 0x74, 0x13, 0x80, 0xf8, 0x75, 0x7f, 0x06, 0xd5, 0xe4, 0x8e, 0x0e, + 0x99, 0x8e, 0xc5, 0x25, 0xbc, 0x44, 0xe2, 0x8d, 0x94, 0x4b, 0x52, 0x89, 0x6d, 0x9a, 0xae, 0xad, + 0xab, 0x70, 0xc5, 0x5c, 0xc4, 0xc9, 0x45, 0x4a, 0xc9, 0xb9, 0x85, 0x4a, 0xc1, 0x29, 0x19, 0x58, + 0xd3, 0x9c, 0x69, 0x19, 0xd0, 0x30, 0x17, 0x50, 0xa3, 0x55, 0x87, 0xaa, 0x39, 0xb1, 0xf3, 0x72, + 0xbe, 0x33, 0x3b, 0xdc, 0x42, 0x50, 0x37, 0xa7, 0xb6, 0xb1, 0xd5, 0x80, 0x75, 0x73, 0xee, 0x6e, + 0xc9, 0x69, 0x4c, 0x6f, 0x87, 0x9c, 0xf8, 0x22, 0x9f, 0xb7, 0x96, 0xa1, 0x66, 0x4e, 0x7a, 0xd4, + 0xf8, 0x97, 0x14, 0x94, 0xe2, 0x53, 0x2c, 0xba, 0x07, 0xcb, 0xc4, 0x0a, 0xbc, 0x33, 0x93, 0x93, + 0x60, 0xe8, 0xfa, 0x56, 0x7c, 0xfd, 0x55, 0xec, 0x5c, 0xc2, 0x75, 0xa9, 0xea, 0x8f, 0x35, 0x9a, + 0x12, 0x62, 0xb4, 0x09, 0x83, 0xb4, 0x34, 0x48, 0xe1, 0x9a, 0xd0, 0x4c, 0xe2, 0xe5, 0xc2, 0x67, + 0x5e, 0x21, 0x97, 0x32, 0x3d, 0x8c, 0xf1, 0x4b, 0x01, 0xb2, 0x82, 0x4a, 0xe2, 0x83, 0xda, 0xf5, + 0x1d, 0xf2, 0x4a, 0x15, 0x4e, 0xac, 0x1e, 0xd0, 0x6d, 0xc8, 0x06, 0xd4, 0x23, 0xfa, 0x22, 0xe0, + 0xf2, 0x9c, 0x2b, 0x3e, 0x4c, 0x3d, 0x82, 0x25, 0x08, 0x7d, 0x00, 0x45, 0xf9, 0x79, 0x1c, 0xe5, + 0x13, 0x51, 0xdb, 0x0a, 0x52, 0xa2, 0x42, 0xc2, 0x80, 0x3c, 0xf1, 0x9d, 0x28, 0x61, 0xc8, 0x93, + 0x19, 0xf1, 0x75, 0xcc, 0x4f, 0x9f, 0x8d, 0x72, 0xd1, 0xd1, 0x6c, 0xf2, 0x6c, 0x74, 0x03, 0xca, + 0x9e, 0x37, 0x8c, 0xca, 0xae, 0x4e, 0x07, 0x19, 0x5c, 0xf2, 0xbc, 0x61, 0x3f, 0xae, 0xf3, 0x63, + 0x90, 0xac, 0xf5, 0x05, 0x9d, 0x68, 0x34, 0x88, 0xc5, 0x87, 0x01, 0x09, 0x1a, 0xa9, 0x98, 0x4f, + 0x77, 0x72, 0x38, 0x2f, 0x00, 0xa3, 0x68, 0x08, 0xce, 0x59, 0x54, 0x40, 0x74, 0x98, 0xe7, 0x71, + 0x89, 0x73, 0xd6, 0x8f, 0x8b, 0xf5, 0x6c, 0xe8, 0x80, 0xce, 0x1e, 0xd3, 0xa1, 0x83, 0xbe, 0x80, + 0xd5, 0x59, 0xa6, 0x0f, 0x55, 0x59, 0xcd, 0x75, 0x8a, 0x78, 0x79, 0x2a, 0x73, 0x2e, 0x4e, 0x9b, + 0x4b, 0x3a, 0x7d, 0xcc, 0xa6, 0xcd, 0xb9, 0xc5, 0xa4, 0x22, 0xd7, 0x06, 0x73, 0x8b, 0xc9, 0xdc, + 0x4f, 0x91, 0xf2, 0xcc, 0xa7, 0x88, 0xe0, 0xeb, 0x74, 0xcc, 0xe9, 0xaf, 0x90, 0x25, 0x5c, 0x9f, + 0x4e, 0xc4, 0xfa, 0xa3, 0x78, 0x2a, 0x9a, 0xf4, 0x07, 0x48, 0x05, 0x57, 0x27, 0xb3, 0x9e, 0xf2, + 0x35, 0x8c, 0x23, 0x4c, 0x7f, 0x75, 0x54, 0x71, 0x42, 0x26, 0x28, 0x5d, 0x86, 0x92, 0x19, 0x91, + 0xab, 0x55, 0x82, 0x82, 0xa9, 0x98, 0x34, 0x7b, 0x9c, 0x14, 0x75, 0x3b, 0x41, 0x91, 0xe4, 0x33, + 0x8b, 0x4e, 0x6a, 0x7a, 0xe3, 0xa5, 0x2e, 0xb1, 0xcd, 0x73, 0x42, 0xb7, 0x75, 0x19, 0xd6, 0xcc, + 0x79, 0x3b, 0x37, 0x3f, 0x3f, 0xcd, 0xcf, 0x90, 0xf2, 0x28, 0x31, 0xf6, 0xa9, 0x0a, 0xcf, 0x69, + 0x8f, 0xca, 0xbc, 0x34, 0xe5, 0xb5, 0x56, 0x05, 0xca, 0x89, 0xec, 0x23, 0xe7, 0x37, 0x79, 0x93, + 0xa1, 0xce, 0x1f, 0x53, 0x17, 0x16, 0x2a, 0xc5, 0x4d, 0xde, 0x4a, 0xcc, 0x4c, 0xe2, 0x0a, 0x5c, + 0x36, 0xe7, 0x7f, 0x61, 0xca, 0x31, 0xa7, 0xbf, 0x20, 0xa5, 0x23, 0xe6, 0x7d, 0x26, 0xca, 0xdc, + 0x39, 0xf7, 0x3b, 0x50, 0xa6, 0xc9, 0x45, 0x1f, 0x7a, 0xc6, 0xff, 0x65, 0x00, 0xc6, 0xf7, 0x96, + 0xef, 0xf4, 0x8e, 0xe6, 0xcf, 0x01, 0xc5, 0x97, 0xd9, 0x23, 0x8b, 0x31, 0x51, 0x1e, 0x48, 0x7c, + 0xb4, 0xaf, 0x47, 0xba, 0x43, 0x8b, 0x31, 0x6c, 0x71, 0xf2, 0xa7, 0x8b, 0x9a, 0x0b, 0x13, 0x4d, + 0x1c, 0x8a, 0x67, 0x5d, 0x6b, 0xfc, 0x9a, 0x81, 0xfc, 0x8e, 0x6c, 0x4d, 0x18, 0xff, 0x9f, 0x86, + 0x02, 0x26, 0x92, 0x1a, 0x53, 0x7d, 0x97, 0xd4, 0x74, 0xdf, 0x65, 0xb2, 0x25, 0x91, 0x9e, 0x6e, + 0x49, 0xcc, 0xb9, 0xb9, 0xcf, 0xce, 0xbd, 0xb9, 0x5f, 0x87, 0x7c, 0x40, 0x06, 0xc2, 0x15, 0x79, + 0x7d, 0xc1, 0x2a, 0x9f, 0x50, 0x6b, 0xa6, 0xa7, 0x51, 0x38, 0xaf, 0xa7, 0x21, 0xa8, 0x37, 0xd1, + 0xd5, 0x48, 0xa4, 0xcc, 0xe8, 0x86, 0xbf, 0xa8, 0x8f, 0xdc, 0x49, 0xa1, 0x3a, 0x29, 0xaa, 0x6b, + 0xfe, 0xd2, 0x05, 0xae, 0xf9, 0xa5, 0xb3, 0x27, 0x27, 0x16, 0x07, 0xab, 0x1e, 0xf2, 0x71, 0xb6, + 0x98, 0xa9, 0x67, 0xf1, 0x6c, 0x7f, 0xc9, 0xf8, 0xc7, 0x14, 0x14, 0x31, 0x61, 0x23, 0xea, 0x33, + 0x82, 0x6e, 0xc1, 0xf2, 0xd8, 0x3b, 0x66, 0x10, 0xfa, 0x63, 0x37, 0xd7, 0x58, 0x92, 0x05, 0x5d, + 0x07, 0xf5, 0x60, 0x7d, 0x14, 0x10, 0xe6, 0x0e, 0x7c, 0xe2, 0x98, 0x23, 0xca, 0xb8, 0x19, 0xa8, + 0x5d, 0xd2, 0xdd, 0xbc, 0x71, 0xd3, 0xeb, 0x30, 0x82, 0x1d, 0x52, 0xc6, 0xf5, 0x56, 0xe2, 0xd5, + 0xd1, 0x1c, 0xa9, 0xf8, 0x0c, 0x5f, 0xd9, 0xa1, 0xfe, 0x33, 0x37, 0x18, 0xf6, 0x68, 0x18, 0xd8, + 0xe4, 0x68, 0xe4, 0x51, 0xcb, 0x31, 0xfe, 0xfe, 0xc2, 0x1c, 0x98, 0xbb, 0x84, 0xf4, 0xfc, 0x25, + 0x7c, 0x0a, 0x35, 0x9b, 0x3a, 0x44, 0x7c, 0x69, 0x05, 0x67, 0x23, 0xea, 0xfa, 0x5c, 0xb7, 0x1b, + 0xaa, 0x42, 0xdc, 0x8e, 0xa5, 0x06, 0x8c, 0x7d, 0x64, 0xfc, 0x73, 0x0a, 0x32, 0x8f, 0x08, 0x37, + 0xfa, 0xef, 0x62, 0x4a, 0xc6, 0x17, 0x89, 0xdd, 0xb8, 0x09, 0x99, 0x20, 0x54, 0x07, 0xbb, 0x09, + 0x8e, 0x25, 0x4d, 0xb0, 0x80, 0x18, 0xff, 0x9d, 0x86, 0xec, 0x9e, 0xcb, 0xb8, 0xf1, 0x5f, 0xa9, + 0x0b, 0xcf, 0xea, 0xc1, 0x54, 0x8f, 0xe6, 0xfc, 0x26, 0x65, 0xe7, 0x52, 0xd4, 0xa1, 0x11, 0xec, + 0xfc, 0x06, 0x60, 0x64, 0x0d, 0x88, 0xba, 0xa4, 0x90, 0x3e, 0x2b, 0x6f, 0x36, 0x62, 0xfb, 0xbe, + 0x90, 0x1e, 0x5a, 0x03, 0x7d, 0x42, 0xec, 0xa4, 0x70, 0x49, 0xa0, 0xa5, 0x58, 0x54, 0x62, 0x51, + 0x7c, 0xd5, 0x58, 0xb2, 0x3c, 0x8d, 0x47, 0x32, 0x5e, 0x4d, 0x70, 0x31, 0x1b, 0x84, 0x3e, 0x6b, + 0xa4, 0xe4, 0xf5, 0xec, 0xa2, 0xe5, 0x4b, 0x0c, 0xfa, 0x4b, 0xa8, 0xf9, 0xe4, 0x15, 0x4f, 0x0c, + 0xa5, 0x49, 0xb8, 0x70, 0x52, 0xb8, 0x22, 0x0c, 0x0e, 0xa3, 0x69, 0x19, 0xa7, 0x90, 0xdf, 0xb1, + 0x7c, 0x9b, 0x78, 0xef, 0x68, 0x5f, 0x93, 0x0c, 0x7a, 0xc7, 0x2d, 0x93, 0x9f, 0x53, 0x71, 0xcf, + 0xe4, 0x0a, 0xac, 0x4d, 0xf6, 0x4c, 0xcc, 0xa3, 0xc3, 0xbd, 0x27, 0xdb, 0xbb, 0xf5, 0x4b, 0x68, + 0x0d, 0x96, 0xb5, 0xea, 0x51, 0xfb, 0xa0, 0x8d, 0xb7, 0xfb, 0xaa, 0x7b, 0x32, 0xdb, 0x51, 0x49, + 0xa3, 0x75, 0x40, 0x5a, 0xd6, 0x3b, 0xda, 0xdf, 0xdf, 0xc6, 0xdd, 0xa7, 0x42, 0x9e, 0x99, 0xdb, + 0x69, 0xc9, 0xce, 0x76, 0x5a, 0x72, 0x73, 0x3b, 0x2d, 0xf9, 0xc7, 0xd9, 0x62, 0xb1, 0x5e, 0xc2, + 0x05, 0xdd, 0x4f, 0xdc, 0xf8, 0x39, 0x03, 0xc5, 0x28, 0x7d, 0x8e, 0x9b, 0x73, 0xa9, 0x64, 0x73, + 0x6e, 0xba, 0x37, 0x98, 0x9e, 0xd3, 0x1b, 0x9c, 0xdf, 0x05, 0xcc, 0x2c, 0xea, 0x02, 0xde, 0xd5, + 0xfd, 0xbe, 0xac, 0x64, 0xd9, 0xd5, 0x99, 0x44, 0xde, 0xec, 0x5b, 0x03, 0xa6, 0xfe, 0xe0, 0xa0, + 0x9a, 0x81, 0x06, 0x14, 0x43, 0x46, 0x02, 0xc7, 0xe2, 0x96, 0xee, 0x2d, 0xc6, 0xcf, 0xc6, 0x7f, + 0xa4, 0x60, 0x59, 0x55, 0xad, 0x87, 0x01, 0x1d, 0xea, 0xbb, 0x7d, 0xe3, 0x87, 0x0b, 0x13, 0x2a, + 0xd1, 0xd9, 0x4b, 0x4f, 0x74, 0xf6, 0xc6, 0x05, 0x29, 0x93, 0x2c, 0x48, 0xc6, 0x56, 0x22, 0x5e, + 0x3e, 0x83, 0x62, 0x54, 0x03, 0x74, 0xca, 0x58, 0x9e, 0x59, 0x0d, 0x8e, 0x21, 0xc6, 0x57, 0x50, + 0x8a, 0x97, 0x36, 0xe7, 0xaf, 0x19, 0xab, 0xc9, 0xbf, 0x66, 0x94, 0x12, 0x7f, 0xbf, 0xd8, 0xe8, + 0x43, 0x65, 0xa2, 0xca, 0x21, 0x04, 0x59, 0x59, 0x6f, 0x95, 0xb5, 0xfc, 0x8d, 0xee, 0x42, 0x29, + 0x7a, 0x93, 0xd8, 0xa6, 0xcc, 0xfc, 0xd9, 0x8c, 0x31, 0x1b, 0xff, 0x99, 0x02, 0x34, 0x8e, 0xec, + 0x5d, 0x97, 0x8d, 0x2c, 0x6e, 0x9f, 0xbc, 0x55, 0x41, 0x5a, 0x83, 0xfc, 0x29, 0x3d, 0x1e, 0x3b, + 0x2f, 0x77, 0x4a, 0x8f, 0xbb, 0xce, 0x84, 0x5f, 0x32, 0x6f, 0xf4, 0x4b, 0x5c, 0x78, 0xb3, 0x17, + 0x28, 0xbc, 0xb7, 0x9e, 0x41, 0x75, 0x52, 0x8e, 0x3e, 0x84, 0xab, 0xbd, 0xee, 0xfe, 0xd1, 0xde, + 0x76, 0xbf, 0xfb, 0xe4, 0xc0, 0xdc, 0x7f, 0xb2, 0xdb, 0x36, 0x8f, 0x0e, 0x7a, 0x87, 0xed, 0x9d, + 0xee, 0xc3, 0x6e, 0x5b, 0xc4, 0x5d, 0x03, 0x56, 0xa7, 0x01, 0xfd, 0xf6, 0xdf, 0xf4, 0xeb, 0x29, + 0x19, 0xac, 0x53, 0x9a, 0xed, 0xa3, 0xdd, 0xee, 0x93, 0x7a, 0x7a, 0xf3, 0x5f, 0x73, 0x50, 0xdb, + 0x16, 0xdc, 0x1d, 0xbf, 0x0d, 0x39, 0xb0, 0xa2, 0xb8, 0x36, 0xf9, 0x57, 0x95, 0x45, 0x07, 0x3f, + 0x85, 0x6d, 0x46, 0x85, 0xf6, 0x93, 0x37, 0xc1, 0x34, 0xab, 0x5e, 0xa7, 0xe0, 0xfd, 0xa8, 0x20, + 0xc7, 0xc0, 0x64, 0x69, 0x46, 0x9b, 0x8b, 0x46, 0x9a, 0x2d, 0xe3, 0xf1, 0xdb, 0x3f, 0x7f, 0x2b, + 0x1b, 0x3d, 0x95, 0xbf, 0x85, 0xfa, 0x23, 0xc2, 0x27, 0x57, 0xbb, 0xb1, 0x60, 0xa0, 0x47, 0x84, + 0xc7, 0x2f, 0xbb, 0x71, 0x2e, 0x46, 0x0f, 0x6e, 0x02, 0x12, 0x05, 0x74, 0x02, 0xc1, 0xd0, 0x22, + 0x53, 0x01, 0x8d, 0xc7, 0xff, 0xe8, 0x7c, 0x90, 0x7e, 0x81, 0xd8, 0x2e, 0x59, 0x60, 0x2e, 0xb8, + 0x5d, 0x12, 0xfb, 0xe6, 0xed, 0x8a, 0x60, 0xfa, 0x2d, 0x2f, 0xe0, 0x8a, 0x26, 0x85, 0xe6, 0x73, + 0x22, 0x11, 0xa1, 0xdb, 0xb3, 0xd9, 0x6d, 0x26, 0x5b, 0xc5, 0x6f, 0xbc, 0x73, 0x31, 0xb0, 0x7a, + 0x6f, 0xeb, 0xe1, 0xd3, 0x1b, 0x03, 0x97, 0x9f, 0x84, 0xc7, 0x4d, 0x9b, 0x0e, 0xa3, 0xbf, 0xe0, + 0xa9, 0xbf, 0xd9, 0xd9, 0xd4, 0x8b, 0x04, 0xbf, 0xa4, 0x2b, 0x7b, 0xee, 0x0b, 0xf2, 0x57, 0xf2, + 0x4c, 0x48, 0x39, 0xfd, 0x5d, 0xba, 0xaa, 0x9f, 0x1f, 0x3c, 0x90, 0x82, 0xe3, 0xbc, 0x34, 0xf9, + 0xfc, 0x0f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x1a, 0x62, 0xb5, 0x34, 0xf5, 0x27, 0x00, 0x00, } From bef8caa6a534d2eb2a28f74c04367a25302e143f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Sun, 2 Aug 2026 22:37:02 -0700 Subject: [PATCH 27/32] agent-simulation: drop turn comments the groups already carry A turn field and its aggregate now share a name, so describing both says the same thing twice. Only the availability markers stay. --- protobufs/livekit_agent_simulation.proto | 30 ++++++++++++------------ 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/protobufs/livekit_agent_simulation.proto b/protobufs/livekit_agent_simulation.proto index f1e2358cc..b1b5652da 100644 --- a/protobufs/livekit_agent_simulation.proto +++ b/protobufs/livekit_agent_simulation.proto @@ -179,21 +179,21 @@ message SimulationRun { optional uint32 start_ms = 3; // audio only; relative to t0; unset if the turn could not be aligned to the audio optional uint32 end_ms = 4; // audio only - optional uint32 stt_delay_ms = 5; // needs the RemoteSession; simulator turns - optional uint32 llm_ttft_ms = 6; // needs the RemoteSession - optional uint32 llm_ttfs_ms = 7; // needs the RemoteSession - optional float llm_tps = 8; // needs the RemoteSession - optional uint32 tts_ttfb_ms = 9; // needs the RemoteSession - optional uint32 e2e_latency_ms = 10; // needs the RemoteSession; the agent's own claim - - optional int32 heard_e2e_latency_ms = 11; // floor-transfer offset, cut-in if negative - optional uint32 time_to_yield_ms = 12; // agent audio continuing past a barge-in - optional float turn_taking_score = 13; // 0-1 - optional float conciseness = 14; // needs the text judge - - optional bool eot_misprediction = 15; // agent started before the caller's turn ended - optional bool awkward_silence = 16; // gap past the natural-pause threshold - optional bool unanswered = 17; // the caller spoke, the agent never responded + optional uint32 stt_delay_ms = 5; // needs the RemoteSession + optional uint32 llm_ttft_ms = 6; // needs the RemoteSession + optional uint32 llm_ttfs_ms = 7; // needs the RemoteSession + optional float llm_tps = 8; // needs the RemoteSession + optional uint32 tts_ttfb_ms = 9; // needs the RemoteSession + optional uint32 e2e_latency_ms = 10; // needs the RemoteSession + + optional int32 heard_e2e_latency_ms = 11; + optional uint32 time_to_yield_ms = 12; + optional float turn_taking_score = 13; + optional float conciseness = 14; // needs the text judge + + optional bool eot_misprediction = 15; + optional bool awkward_silence = 16; + optional bool unanswered = 17; } } From 1c3eedca9001b50217e212736cfad5e8e91dffa9 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 05:37:50 +0000 Subject: [PATCH 28/32] generated protobuf --- livekit/livekit_agent_simulation.pb.go | 34 +++++++++++++------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/livekit/livekit_agent_simulation.pb.go b/livekit/livekit_agent_simulation.pb.go index 55c35057d..aec1da672 100644 --- a/livekit/livekit_agent_simulation.pb.go +++ b/livekit/livekit_agent_simulation.pb.go @@ -1945,23 +1945,23 @@ func (x *SimulationRun_JobMetrics_Simulator) GetLateTermination() bool { // over these; anything not measured for a turn stays unset. type SimulationRun_JobMetrics_Turn struct { state protoimpl.MessageState `protogen:"open.v1"` - Index uint32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` // 1-based, conversation order - Role agent.ChatRole `protobuf:"varint,2,opt,name=role,proto3,enum=livekit.agent.ChatRole" json:"role,omitempty"` // ASSISTANT = the agent under test, USER = simulator persona - StartMs *uint32 `protobuf:"varint,3,opt,name=start_ms,json=startMs,proto3,oneof" json:"start_ms,omitempty"` // audio only; relative to t0; unset if the turn could not be aligned to the audio - EndMs *uint32 `protobuf:"varint,4,opt,name=end_ms,json=endMs,proto3,oneof" json:"end_ms,omitempty"` // audio only - SttDelayMs *uint32 `protobuf:"varint,5,opt,name=stt_delay_ms,json=sttDelayMs,proto3,oneof" json:"stt_delay_ms,omitempty"` // needs the RemoteSession; simulator turns - LlmTtftMs *uint32 `protobuf:"varint,6,opt,name=llm_ttft_ms,json=llmTtftMs,proto3,oneof" json:"llm_ttft_ms,omitempty"` // needs the RemoteSession - LlmTtfsMs *uint32 `protobuf:"varint,7,opt,name=llm_ttfs_ms,json=llmTtfsMs,proto3,oneof" json:"llm_ttfs_ms,omitempty"` // needs the RemoteSession - LlmTps *float32 `protobuf:"fixed32,8,opt,name=llm_tps,json=llmTps,proto3,oneof" json:"llm_tps,omitempty"` // needs the RemoteSession - TtsTtfbMs *uint32 `protobuf:"varint,9,opt,name=tts_ttfb_ms,json=ttsTtfbMs,proto3,oneof" json:"tts_ttfb_ms,omitempty"` // needs the RemoteSession - E2ELatencyMs *uint32 `protobuf:"varint,10,opt,name=e2e_latency_ms,json=e2eLatencyMs,proto3,oneof" json:"e2e_latency_ms,omitempty"` // needs the RemoteSession; the agent's own claim - HeardE2ELatencyMs *int32 `protobuf:"varint,11,opt,name=heard_e2e_latency_ms,json=heardE2eLatencyMs,proto3,oneof" json:"heard_e2e_latency_ms,omitempty"` // floor-transfer offset, cut-in if negative - TimeToYieldMs *uint32 `protobuf:"varint,12,opt,name=time_to_yield_ms,json=timeToYieldMs,proto3,oneof" json:"time_to_yield_ms,omitempty"` // agent audio continuing past a barge-in - TurnTakingScore *float32 `protobuf:"fixed32,13,opt,name=turn_taking_score,json=turnTakingScore,proto3,oneof" json:"turn_taking_score,omitempty"` // 0-1 - Conciseness *float32 `protobuf:"fixed32,14,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` // needs the text judge - EotMisprediction *bool `protobuf:"varint,15,opt,name=eot_misprediction,json=eotMisprediction,proto3,oneof" json:"eot_misprediction,omitempty"` // agent started before the caller's turn ended - AwkwardSilence *bool `protobuf:"varint,16,opt,name=awkward_silence,json=awkwardSilence,proto3,oneof" json:"awkward_silence,omitempty"` // gap past the natural-pause threshold - Unanswered *bool `protobuf:"varint,17,opt,name=unanswered,proto3,oneof" json:"unanswered,omitempty"` // the caller spoke, the agent never responded + Index uint32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` // 1-based, conversation order + Role agent.ChatRole `protobuf:"varint,2,opt,name=role,proto3,enum=livekit.agent.ChatRole" json:"role,omitempty"` // ASSISTANT = the agent under test, USER = simulator persona + StartMs *uint32 `protobuf:"varint,3,opt,name=start_ms,json=startMs,proto3,oneof" json:"start_ms,omitempty"` // audio only; relative to t0; unset if the turn could not be aligned to the audio + EndMs *uint32 `protobuf:"varint,4,opt,name=end_ms,json=endMs,proto3,oneof" json:"end_ms,omitempty"` // audio only + SttDelayMs *uint32 `protobuf:"varint,5,opt,name=stt_delay_ms,json=sttDelayMs,proto3,oneof" json:"stt_delay_ms,omitempty"` // needs the RemoteSession + LlmTtftMs *uint32 `protobuf:"varint,6,opt,name=llm_ttft_ms,json=llmTtftMs,proto3,oneof" json:"llm_ttft_ms,omitempty"` // needs the RemoteSession + LlmTtfsMs *uint32 `protobuf:"varint,7,opt,name=llm_ttfs_ms,json=llmTtfsMs,proto3,oneof" json:"llm_ttfs_ms,omitempty"` // needs the RemoteSession + LlmTps *float32 `protobuf:"fixed32,8,opt,name=llm_tps,json=llmTps,proto3,oneof" json:"llm_tps,omitempty"` // needs the RemoteSession + TtsTtfbMs *uint32 `protobuf:"varint,9,opt,name=tts_ttfb_ms,json=ttsTtfbMs,proto3,oneof" json:"tts_ttfb_ms,omitempty"` // needs the RemoteSession + E2ELatencyMs *uint32 `protobuf:"varint,10,opt,name=e2e_latency_ms,json=e2eLatencyMs,proto3,oneof" json:"e2e_latency_ms,omitempty"` // needs the RemoteSession + HeardE2ELatencyMs *int32 `protobuf:"varint,11,opt,name=heard_e2e_latency_ms,json=heardE2eLatencyMs,proto3,oneof" json:"heard_e2e_latency_ms,omitempty"` + TimeToYieldMs *uint32 `protobuf:"varint,12,opt,name=time_to_yield_ms,json=timeToYieldMs,proto3,oneof" json:"time_to_yield_ms,omitempty"` + TurnTakingScore *float32 `protobuf:"fixed32,13,opt,name=turn_taking_score,json=turnTakingScore,proto3,oneof" json:"turn_taking_score,omitempty"` + Conciseness *float32 `protobuf:"fixed32,14,opt,name=conciseness,proto3,oneof" json:"conciseness,omitempty"` // needs the text judge + EotMisprediction *bool `protobuf:"varint,15,opt,name=eot_misprediction,json=eotMisprediction,proto3,oneof" json:"eot_misprediction,omitempty"` + AwkwardSilence *bool `protobuf:"varint,16,opt,name=awkward_silence,json=awkwardSilence,proto3,oneof" json:"awkward_silence,omitempty"` + Unanswered *bool `protobuf:"varint,17,opt,name=unanswered,proto3,oneof" json:"unanswered,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } From 9253369a17952ac72d533b0d61bea707fc963939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Mon, 3 Aug 2026 09:39:25 -0700 Subject: [PATCH 29/32] agent-simulation: drop the simulator group early_termination and late_termination are internal to the worker: they withhold the composites and decide whether a trailing turn is forgiven. Neither is a metric, and the absence of task_completion already tells a consumer the run was spoiled. --- protobufs/livekit_agent_simulation.proto | 8 -------- 1 file changed, 8 deletions(-) diff --git a/protobufs/livekit_agent_simulation.proto b/protobufs/livekit_agent_simulation.proto index b1b5652da..8e413ee44 100644 --- a/protobufs/livekit_agent_simulation.proto +++ b/protobufs/livekit_agent_simulation.proto @@ -91,7 +91,6 @@ message SimulationRun { LLM llm = 5; TTS tts = 6; Conversation conversation = 7; - Simulator simulator = 8; // One entry per turn, both speakers. repeated Turn turns = 9; @@ -164,13 +163,6 @@ message SimulationRun { optional uint32 e2e_latency_ms = 15; // needs the RemoteSession; the agent's own claim } - // Was the call spoiled by the simulator, not the agent? Diagnostic only, - // never folded into the scores. - message Simulator { - optional bool early_termination = 1; // simulator ended a still-progressing call - optional bool late_termination = 2; // simulator dragged on after the goal was met - } - // Rows exist for text and audio. The groups above hold the means and pools // over these; anything not measured for a turn stays unset. message Turn { From a2011f7a95fe5af4826476af8106a19c4e2e1311 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 16:40:22 +0000 Subject: [PATCH 30/32] generated protobuf --- livekit/livekit_agent_simulation.pb.go | 261 +++++-------- livekit/livekit_agent_simulation.twirp.go | 428 +++++++++++----------- 2 files changed, 307 insertions(+), 382 deletions(-) diff --git a/livekit/livekit_agent_simulation.pb.go b/livekit/livekit_agent_simulation.pb.go index aec1da672..7c2468f71 100644 --- a/livekit/livekit_agent_simulation.pb.go +++ b/livekit/livekit_agent_simulation.pb.go @@ -898,7 +898,6 @@ type SimulationRun_JobMetrics struct { Llm *SimulationRun_JobMetrics_LLM `protobuf:"bytes,5,opt,name=llm,proto3" json:"llm,omitempty"` Tts *SimulationRun_JobMetrics_TTS `protobuf:"bytes,6,opt,name=tts,proto3" json:"tts,omitempty"` Conversation *SimulationRun_JobMetrics_Conversation `protobuf:"bytes,7,opt,name=conversation,proto3" json:"conversation,omitempty"` - Simulator *SimulationRun_JobMetrics_Simulator `protobuf:"bytes,8,opt,name=simulator,proto3" json:"simulator,omitempty"` // One entry per turn, both speakers. Turns []*SimulationRun_JobMetrics_Turn `protobuf:"bytes,9,rep,name=turns,proto3" json:"turns,omitempty"` JudgeModel string `protobuf:"bytes,10,opt,name=judge_model,json=judgeModel,proto3" json:"judge_model,omitempty"` // text judge for judged scores; "" if none ran @@ -995,13 +994,6 @@ func (x *SimulationRun_JobMetrics) GetConversation() *SimulationRun_JobMetrics_C return nil } -func (x *SimulationRun_JobMetrics) GetSimulator() *SimulationRun_JobMetrics_Simulator { - if x != nil { - return x.Simulator - } - return nil -} - func (x *SimulationRun_JobMetrics) GetTurns() []*SimulationRun_JobMetrics_Turn { if x != nil { return x.Turns @@ -1887,60 +1879,6 @@ func (x *SimulationRun_JobMetrics_Conversation) GetE2ELatencyMs() uint32 { return 0 } -// Was the call spoiled by the simulator, not the agent? Diagnostic only, -// never folded into the scores. -type SimulationRun_JobMetrics_Simulator struct { - state protoimpl.MessageState `protogen:"open.v1"` - EarlyTermination *bool `protobuf:"varint,1,opt,name=early_termination,json=earlyTermination,proto3,oneof" json:"early_termination,omitempty"` // simulator ended a still-progressing call - LateTermination *bool `protobuf:"varint,2,opt,name=late_termination,json=lateTermination,proto3,oneof" json:"late_termination,omitempty"` // simulator dragged on after the goal was met - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SimulationRun_JobMetrics_Simulator) Reset() { - *x = SimulationRun_JobMetrics_Simulator{} - mi := &file_livekit_agent_simulation_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SimulationRun_JobMetrics_Simulator) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SimulationRun_JobMetrics_Simulator) ProtoMessage() {} - -func (x *SimulationRun_JobMetrics_Simulator) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[21] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SimulationRun_JobMetrics_Simulator.ProtoReflect.Descriptor instead. -func (*SimulationRun_JobMetrics_Simulator) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 1, 4} -} - -func (x *SimulationRun_JobMetrics_Simulator) GetEarlyTermination() bool { - if x != nil && x.EarlyTermination != nil { - return *x.EarlyTermination - } - return false -} - -func (x *SimulationRun_JobMetrics_Simulator) GetLateTermination() bool { - if x != nil && x.LateTermination != nil { - return *x.LateTermination - } - return false -} - // Rows exist for text and audio. The groups above hold the means and pools // over these; anything not measured for a turn stays unset. type SimulationRun_JobMetrics_Turn struct { @@ -1968,7 +1906,7 @@ type SimulationRun_JobMetrics_Turn struct { func (x *SimulationRun_JobMetrics_Turn) Reset() { *x = SimulationRun_JobMetrics_Turn{} - mi := &file_livekit_agent_simulation_proto_msgTypes[22] + mi := &file_livekit_agent_simulation_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1980,7 +1918,7 @@ func (x *SimulationRun_JobMetrics_Turn) String() string { func (*SimulationRun_JobMetrics_Turn) ProtoMessage() {} func (x *SimulationRun_JobMetrics_Turn) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[22] + mi := &file_livekit_agent_simulation_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1993,7 +1931,7 @@ func (x *SimulationRun_JobMetrics_Turn) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulationRun_JobMetrics_Turn.ProtoReflect.Descriptor instead. func (*SimulationRun_JobMetrics_Turn) Descriptor() ([]byte, []int) { - return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 1, 5} + return file_livekit_agent_simulation_proto_rawDescGZIP(), []int{1, 1, 4} } func (x *SimulationRun_JobMetrics_Turn) GetIndex() uint32 { @@ -2135,7 +2073,7 @@ type SimulationRun_Create_Request struct { func (x *SimulationRun_Create_Request) Reset() { *x = SimulationRun_Create_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[23] + mi := &file_livekit_agent_simulation_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2147,7 +2085,7 @@ func (x *SimulationRun_Create_Request) String() string { func (*SimulationRun_Create_Request) ProtoMessage() {} func (x *SimulationRun_Create_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[23] + mi := &file_livekit_agent_simulation_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2222,7 +2160,7 @@ type SimulationRun_Create_Response struct { func (x *SimulationRun_Create_Response) Reset() { *x = SimulationRun_Create_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[24] + mi := &file_livekit_agent_simulation_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2234,7 +2172,7 @@ func (x *SimulationRun_Create_Response) String() string { func (*SimulationRun_Create_Response) ProtoMessage() {} func (x *SimulationRun_Create_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[24] + mi := &file_livekit_agent_simulation_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2275,7 +2213,7 @@ type SimulationRun_ConfirmSourceUpload_Request struct { func (x *SimulationRun_ConfirmSourceUpload_Request) Reset() { *x = SimulationRun_ConfirmSourceUpload_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[25] + mi := &file_livekit_agent_simulation_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2287,7 +2225,7 @@ func (x *SimulationRun_ConfirmSourceUpload_Request) String() string { func (*SimulationRun_ConfirmSourceUpload_Request) ProtoMessage() {} func (x *SimulationRun_ConfirmSourceUpload_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[25] + mi := &file_livekit_agent_simulation_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2332,7 +2270,7 @@ type SimulationRun_ConfirmSourceUpload_Response struct { func (x *SimulationRun_ConfirmSourceUpload_Response) Reset() { *x = SimulationRun_ConfirmSourceUpload_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[26] + mi := &file_livekit_agent_simulation_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2344,7 +2282,7 @@ func (x *SimulationRun_ConfirmSourceUpload_Response) String() string { func (*SimulationRun_ConfirmSourceUpload_Response) ProtoMessage() {} func (x *SimulationRun_ConfirmSourceUpload_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[26] + mi := &file_livekit_agent_simulation_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2370,7 +2308,7 @@ type SimulationRun_Get_Request struct { func (x *SimulationRun_Get_Request) Reset() { *x = SimulationRun_Get_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[27] + mi := &file_livekit_agent_simulation_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2382,7 +2320,7 @@ func (x *SimulationRun_Get_Request) String() string { func (*SimulationRun_Get_Request) ProtoMessage() {} func (x *SimulationRun_Get_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[27] + mi := &file_livekit_agent_simulation_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2421,7 +2359,7 @@ type SimulationRun_Get_Response struct { func (x *SimulationRun_Get_Response) Reset() { *x = SimulationRun_Get_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[28] + mi := &file_livekit_agent_simulation_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2433,7 +2371,7 @@ func (x *SimulationRun_Get_Response) String() string { func (*SimulationRun_Get_Response) ProtoMessage() {} func (x *SimulationRun_Get_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[28] + mi := &file_livekit_agent_simulation_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2467,7 +2405,7 @@ type SimulationRun_List_Request struct { func (x *SimulationRun_List_Request) Reset() { *x = SimulationRun_List_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[29] + mi := &file_livekit_agent_simulation_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2479,7 +2417,7 @@ func (x *SimulationRun_List_Request) String() string { func (*SimulationRun_List_Request) ProtoMessage() {} func (x *SimulationRun_List_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[29] + mi := &file_livekit_agent_simulation_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2526,7 +2464,7 @@ type SimulationRun_List_Response struct { func (x *SimulationRun_List_Response) Reset() { *x = SimulationRun_List_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[30] + mi := &file_livekit_agent_simulation_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2538,7 +2476,7 @@ func (x *SimulationRun_List_Response) String() string { func (*SimulationRun_List_Response) ProtoMessage() {} func (x *SimulationRun_List_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[30] + mi := &file_livekit_agent_simulation_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2578,7 +2516,7 @@ type SimulationRun_Cancel_Request struct { func (x *SimulationRun_Cancel_Request) Reset() { *x = SimulationRun_Cancel_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[31] + mi := &file_livekit_agent_simulation_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2590,7 +2528,7 @@ func (x *SimulationRun_Cancel_Request) String() string { func (*SimulationRun_Cancel_Request) ProtoMessage() {} func (x *SimulationRun_Cancel_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[31] + mi := &file_livekit_agent_simulation_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2628,7 +2566,7 @@ type SimulationRun_Cancel_Response struct { func (x *SimulationRun_Cancel_Response) Reset() { *x = SimulationRun_Cancel_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[32] + mi := &file_livekit_agent_simulation_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2640,7 +2578,7 @@ func (x *SimulationRun_Cancel_Response) String() string { func (*SimulationRun_Cancel_Response) ProtoMessage() {} func (x *SimulationRun_Cancel_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[32] + mi := &file_livekit_agent_simulation_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2664,7 +2602,7 @@ type Scenario_CreateFromSession struct { func (x *Scenario_CreateFromSession) Reset() { *x = Scenario_CreateFromSession{} - mi := &file_livekit_agent_simulation_proto_msgTypes[33] + mi := &file_livekit_agent_simulation_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2676,7 +2614,7 @@ func (x *Scenario_CreateFromSession) String() string { func (*Scenario_CreateFromSession) ProtoMessage() {} func (x *Scenario_CreateFromSession) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[33] + mi := &file_livekit_agent_simulation_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2703,7 +2641,7 @@ type Scenario_CreateFromSession_Request struct { func (x *Scenario_CreateFromSession_Request) Reset() { *x = Scenario_CreateFromSession_Request{} - mi := &file_livekit_agent_simulation_proto_msgTypes[35] + mi := &file_livekit_agent_simulation_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2715,7 +2653,7 @@ func (x *Scenario_CreateFromSession_Request) String() string { func (*Scenario_CreateFromSession_Request) ProtoMessage() {} func (x *Scenario_CreateFromSession_Request) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[35] + mi := &file_livekit_agent_simulation_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2761,7 +2699,7 @@ type Scenario_CreateFromSession_Response struct { func (x *Scenario_CreateFromSession_Response) Reset() { *x = Scenario_CreateFromSession_Response{} - mi := &file_livekit_agent_simulation_proto_msgTypes[36] + mi := &file_livekit_agent_simulation_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2773,7 +2711,7 @@ func (x *Scenario_CreateFromSession_Response) String() string { func (*Scenario_CreateFromSession_Response) ProtoMessage() {} func (x *Scenario_CreateFromSession_Response) ProtoReflect() protoreflect.Message { - mi := &file_livekit_agent_simulation_proto_msgTypes[36] + mi := &file_livekit_agent_simulation_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2818,7 +2756,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\n" + "suggestion\x18\x02 \x01(\tR\n" + "suggestion\x12\x14\n" + - "\x05label\x18\x03 \x01(\tR\x05label\"\xf3>\n" + + "\x05label\x18\x03 \x01(\tR\x05label\"\x8d=\n" + "\rSimulationRun\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + "\n" + @@ -2868,7 +2806,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x10STATUS_COMPLETED\x10\x02\x12\x11\n" + "\rSTATUS_FAILED\x10\x03\x12\x14\n" + "\x10STATUS_CANCELLED\x10\x04J\x04\b\t\x10\n" + - "\x1a\xa1#\n" + + "\x1a\xbb!\n" + "\n" + "JobMetrics\x12*\n" + "\x0eaccuracy_score\x18\x01 \x01(\x02H\x00R\raccuracyScore\x88\x01\x01\x12.\n" + @@ -2877,8 +2815,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x03stt\x18\x04 \x01(\v2%.livekit.SimulationRun.JobMetrics.STTR\x03stt\x127\n" + "\x03llm\x18\x05 \x01(\v2%.livekit.SimulationRun.JobMetrics.LLMR\x03llm\x127\n" + "\x03tts\x18\x06 \x01(\v2%.livekit.SimulationRun.JobMetrics.TTSR\x03tts\x12R\n" + - "\fconversation\x18\a \x01(\v2..livekit.SimulationRun.JobMetrics.ConversationR\fconversation\x12I\n" + - "\tsimulator\x18\b \x01(\v2+.livekit.SimulationRun.JobMetrics.SimulatorR\tsimulator\x12<\n" + + "\fconversation\x18\a \x01(\v2..livekit.SimulationRun.JobMetrics.ConversationR\fconversation\x12<\n" + "\x05turns\x18\t \x03(\v2&.livekit.SimulationRun.JobMetrics.TurnR\x05turns\x12\x1f\n" + "\vjudge_model\x18\n" + " \x01(\tR\n" + @@ -2977,12 +2914,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x16_awkward_silence_countB\x13\n" + "\x11_unanswered_turnsB\x1b\n" + "\x19_false_interruption_countB\x11\n" + - "\x0f_e2e_latency_ms\x1a\x98\x01\n" + - "\tSimulator\x120\n" + - "\x11early_termination\x18\x01 \x01(\bH\x00R\x10earlyTermination\x88\x01\x01\x12.\n" + - "\x10late_termination\x18\x02 \x01(\bH\x01R\x0flateTermination\x88\x01\x01B\x14\n" + - "\x12_early_terminationB\x13\n" + - "\x11_late_termination\x1a\xaa\a\n" + + "\x0f_e2e_latency_ms\x1a\xaa\a\n" + "\x04Turn\x12\x14\n" + "\x05index\x18\x01 \x01(\rR\x05index\x12+\n" + "\x04role\x18\x02 \x01(\x0e2\x17.livekit.agent.ChatRoleR\x04role\x12\x1e\n" + @@ -3154,7 +3086,7 @@ func file_livekit_agent_simulation_proto_rawDescGZIP() []byte { } var file_livekit_agent_simulation_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_livekit_agent_simulation_proto_msgTypes = make([]protoimpl.MessageInfo, 37) +var file_livekit_agent_simulation_proto_msgTypes = make([]protoimpl.MessageInfo, 36) var file_livekit_agent_simulation_proto_goTypes = []any{ (SimulationMode)(0), // 0: livekit.SimulationMode (SimulationRun_Status)(0), // 1: livekit.SimulationRun.Status @@ -3180,87 +3112,85 @@ var file_livekit_agent_simulation_proto_goTypes = []any{ (*SimulationRun_JobMetrics_LLM)(nil), // 21: livekit.SimulationRun.JobMetrics.LLM (*SimulationRun_JobMetrics_TTS)(nil), // 22: livekit.SimulationRun.JobMetrics.TTS (*SimulationRun_JobMetrics_Conversation)(nil), // 23: livekit.SimulationRun.JobMetrics.Conversation - (*SimulationRun_JobMetrics_Simulator)(nil), // 24: livekit.SimulationRun.JobMetrics.Simulator - (*SimulationRun_JobMetrics_Turn)(nil), // 25: livekit.SimulationRun.JobMetrics.Turn - (*SimulationRun_Create_Request)(nil), // 26: livekit.SimulationRun.Create.Request - (*SimulationRun_Create_Response)(nil), // 27: livekit.SimulationRun.Create.Response - (*SimulationRun_ConfirmSourceUpload_Request)(nil), // 28: livekit.SimulationRun.ConfirmSourceUpload.Request - (*SimulationRun_ConfirmSourceUpload_Response)(nil), // 29: livekit.SimulationRun.ConfirmSourceUpload.Response - (*SimulationRun_Get_Request)(nil), // 30: livekit.SimulationRun.Get.Request - (*SimulationRun_Get_Response)(nil), // 31: livekit.SimulationRun.Get.Response - (*SimulationRun_List_Request)(nil), // 32: livekit.SimulationRun.List.Request - (*SimulationRun_List_Response)(nil), // 33: livekit.SimulationRun.List.Response - (*SimulationRun_Cancel_Request)(nil), // 34: livekit.SimulationRun.Cancel.Request - (*SimulationRun_Cancel_Response)(nil), // 35: livekit.SimulationRun.Cancel.Response - (*Scenario_CreateFromSession)(nil), // 36: livekit.Scenario.CreateFromSession - nil, // 37: livekit.Scenario.TagsEntry - (*Scenario_CreateFromSession_Request)(nil), // 38: livekit.Scenario.CreateFromSession.Request - (*Scenario_CreateFromSession_Response)(nil), // 39: livekit.Scenario.CreateFromSession.Response - (*timestamppb.Timestamp)(nil), // 40: google.protobuf.Timestamp - (*agent.ChatContext)(nil), // 41: livekit.agent.ChatContext - (agent.ChatRole)(0), // 42: livekit.agent.ChatRole - (*PresignedPostRequest)(nil), // 43: livekit.PresignedPostRequest - (*TokenPagination)(nil), // 44: livekit.TokenPagination + (*SimulationRun_JobMetrics_Turn)(nil), // 24: livekit.SimulationRun.JobMetrics.Turn + (*SimulationRun_Create_Request)(nil), // 25: livekit.SimulationRun.Create.Request + (*SimulationRun_Create_Response)(nil), // 26: livekit.SimulationRun.Create.Response + (*SimulationRun_ConfirmSourceUpload_Request)(nil), // 27: livekit.SimulationRun.ConfirmSourceUpload.Request + (*SimulationRun_ConfirmSourceUpload_Response)(nil), // 28: livekit.SimulationRun.ConfirmSourceUpload.Response + (*SimulationRun_Get_Request)(nil), // 29: livekit.SimulationRun.Get.Request + (*SimulationRun_Get_Response)(nil), // 30: livekit.SimulationRun.Get.Response + (*SimulationRun_List_Request)(nil), // 31: livekit.SimulationRun.List.Request + (*SimulationRun_List_Response)(nil), // 32: livekit.SimulationRun.List.Response + (*SimulationRun_Cancel_Request)(nil), // 33: livekit.SimulationRun.Cancel.Request + (*SimulationRun_Cancel_Response)(nil), // 34: livekit.SimulationRun.Cancel.Response + (*Scenario_CreateFromSession)(nil), // 35: livekit.Scenario.CreateFromSession + nil, // 36: livekit.Scenario.TagsEntry + (*Scenario_CreateFromSession_Request)(nil), // 37: livekit.Scenario.CreateFromSession.Request + (*Scenario_CreateFromSession_Response)(nil), // 38: livekit.Scenario.CreateFromSession.Response + (*timestamppb.Timestamp)(nil), // 39: google.protobuf.Timestamp + (*agent.ChatContext)(nil), // 40: livekit.agent.ChatContext + (agent.ChatRole)(0), // 41: livekit.agent.ChatRole + (*PresignedPostRequest)(nil), // 42: livekit.PresignedPostRequest + (*TokenPagination)(nil), // 43: livekit.TokenPagination } var file_livekit_agent_simulation_proto_depIdxs = []int32{ 9, // 0: livekit.SimulationRunSummary.issues:type_name -> livekit.SimulationRunSummary.Issue 8, // 1: livekit.SimulationRunSummary.chat_history:type_name -> livekit.SimulationRunSummary.ChatHistoryEntry 1, // 2: livekit.SimulationRun.status:type_name -> livekit.SimulationRun.Status - 40, // 3: livekit.SimulationRun.created_at:type_name -> google.protobuf.Timestamp + 39, // 3: livekit.SimulationRun.created_at:type_name -> google.protobuf.Timestamp 10, // 4: livekit.SimulationRun.jobs:type_name -> livekit.SimulationRun.Job 6, // 5: livekit.SimulationRun.scenario_group:type_name -> livekit.ScenarioGroup - 40, // 6: livekit.SimulationRun.ended_at:type_name -> google.protobuf.Timestamp + 39, // 6: livekit.SimulationRun.ended_at:type_name -> google.protobuf.Timestamp 18, // 7: livekit.SimulationRun.usage:type_name -> livekit.SimulationRun.Usage 0, // 8: livekit.SimulationRun.mode:type_name -> livekit.SimulationMode 12, // 9: livekit.SimulationRun.metrics:type_name -> livekit.SimulationRun.RunMetrics - 37, // 10: livekit.Scenario.tags:type_name -> livekit.Scenario.TagsEntry + 36, // 10: livekit.Scenario.tags:type_name -> livekit.Scenario.TagsEntry 5, // 11: livekit.ScenarioGroup.scenarios:type_name -> livekit.Scenario 5, // 12: livekit.SimulationDispatch.scenario:type_name -> livekit.Scenario 0, // 13: livekit.SimulationDispatch.mode:type_name -> livekit.SimulationMode - 41, // 14: livekit.SimulationRunSummary.ChatHistoryEntry.value:type_name -> livekit.agent.ChatContext + 40, // 14: livekit.SimulationRunSummary.ChatHistoryEntry.value:type_name -> livekit.agent.ChatContext 2, // 15: livekit.SimulationRun.Job.status:type_name -> livekit.SimulationRun.Job.Status - 40, // 16: livekit.SimulationRun.Job.started_at:type_name -> google.protobuf.Timestamp - 40, // 17: livekit.SimulationRun.Job.ended_at:type_name -> google.protobuf.Timestamp + 39, // 16: livekit.SimulationRun.Job.started_at:type_name -> google.protobuf.Timestamp + 39, // 17: livekit.SimulationRun.Job.ended_at:type_name -> google.protobuf.Timestamp 19, // 18: livekit.SimulationRun.Job.usage:type_name -> livekit.SimulationRun.Job.Usage 11, // 19: livekit.SimulationRun.Job.metrics:type_name -> livekit.SimulationRun.JobMetrics 20, // 20: livekit.SimulationRun.JobMetrics.stt:type_name -> livekit.SimulationRun.JobMetrics.STT 21, // 21: livekit.SimulationRun.JobMetrics.llm:type_name -> livekit.SimulationRun.JobMetrics.LLM 22, // 22: livekit.SimulationRun.JobMetrics.tts:type_name -> livekit.SimulationRun.JobMetrics.TTS 23, // 23: livekit.SimulationRun.JobMetrics.conversation:type_name -> livekit.SimulationRun.JobMetrics.Conversation - 24, // 24: livekit.SimulationRun.JobMetrics.simulator:type_name -> livekit.SimulationRun.JobMetrics.Simulator - 25, // 25: livekit.SimulationRun.JobMetrics.turns:type_name -> livekit.SimulationRun.JobMetrics.Turn - 40, // 26: livekit.SimulationRun.JobMetrics.t0:type_name -> google.protobuf.Timestamp - 20, // 27: livekit.SimulationRun.RunMetrics.stt:type_name -> livekit.SimulationRun.JobMetrics.STT - 21, // 28: livekit.SimulationRun.RunMetrics.llm:type_name -> livekit.SimulationRun.JobMetrics.LLM - 22, // 29: livekit.SimulationRun.RunMetrics.tts:type_name -> livekit.SimulationRun.JobMetrics.TTS - 23, // 30: livekit.SimulationRun.RunMetrics.conversation:type_name -> livekit.SimulationRun.JobMetrics.Conversation - 42, // 31: livekit.SimulationRun.JobMetrics.Turn.role:type_name -> livekit.agent.ChatRole - 6, // 32: livekit.SimulationRun.Create.Request.scenario_group:type_name -> livekit.ScenarioGroup - 0, // 33: livekit.SimulationRun.Create.Request.mode:type_name -> livekit.SimulationMode - 43, // 34: livekit.SimulationRun.Create.Response.presigned_post_request:type_name -> livekit.PresignedPostRequest - 4, // 35: livekit.SimulationRun.Get.Response.run:type_name -> livekit.SimulationRun - 1, // 36: livekit.SimulationRun.List.Request.status:type_name -> livekit.SimulationRun.Status - 44, // 37: livekit.SimulationRun.List.Request.page_token:type_name -> livekit.TokenPagination - 4, // 38: livekit.SimulationRun.List.Response.runs:type_name -> livekit.SimulationRun - 44, // 39: livekit.SimulationRun.List.Response.next_page_token:type_name -> livekit.TokenPagination - 5, // 40: livekit.Scenario.CreateFromSession.Response.scenario:type_name -> livekit.Scenario - 26, // 41: livekit.AgentSimulation.CreateSimulationRun:input_type -> livekit.SimulationRun.Create.Request - 28, // 42: livekit.AgentSimulation.ConfirmSimulationSourceUpload:input_type -> livekit.SimulationRun.ConfirmSourceUpload.Request - 30, // 43: livekit.AgentSimulation.GetSimulationRun:input_type -> livekit.SimulationRun.Get.Request - 32, // 44: livekit.AgentSimulation.ListSimulationRuns:input_type -> livekit.SimulationRun.List.Request - 34, // 45: livekit.AgentSimulation.CancelSimulationRun:input_type -> livekit.SimulationRun.Cancel.Request - 38, // 46: livekit.AgentSimulation.CreateScenarioFromSession:input_type -> livekit.Scenario.CreateFromSession.Request - 27, // 47: livekit.AgentSimulation.CreateSimulationRun:output_type -> livekit.SimulationRun.Create.Response - 29, // 48: livekit.AgentSimulation.ConfirmSimulationSourceUpload:output_type -> livekit.SimulationRun.ConfirmSourceUpload.Response - 31, // 49: livekit.AgentSimulation.GetSimulationRun:output_type -> livekit.SimulationRun.Get.Response - 33, // 50: livekit.AgentSimulation.ListSimulationRuns:output_type -> livekit.SimulationRun.List.Response - 35, // 51: livekit.AgentSimulation.CancelSimulationRun:output_type -> livekit.SimulationRun.Cancel.Response - 39, // 52: livekit.AgentSimulation.CreateScenarioFromSession:output_type -> livekit.Scenario.CreateFromSession.Response - 47, // [47:53] is the sub-list for method output_type - 41, // [41:47] is the sub-list for method input_type - 41, // [41:41] is the sub-list for extension type_name - 41, // [41:41] is the sub-list for extension extendee - 0, // [0:41] is the sub-list for field type_name + 24, // 24: livekit.SimulationRun.JobMetrics.turns:type_name -> livekit.SimulationRun.JobMetrics.Turn + 39, // 25: livekit.SimulationRun.JobMetrics.t0:type_name -> google.protobuf.Timestamp + 20, // 26: livekit.SimulationRun.RunMetrics.stt:type_name -> livekit.SimulationRun.JobMetrics.STT + 21, // 27: livekit.SimulationRun.RunMetrics.llm:type_name -> livekit.SimulationRun.JobMetrics.LLM + 22, // 28: livekit.SimulationRun.RunMetrics.tts:type_name -> livekit.SimulationRun.JobMetrics.TTS + 23, // 29: livekit.SimulationRun.RunMetrics.conversation:type_name -> livekit.SimulationRun.JobMetrics.Conversation + 41, // 30: livekit.SimulationRun.JobMetrics.Turn.role:type_name -> livekit.agent.ChatRole + 6, // 31: livekit.SimulationRun.Create.Request.scenario_group:type_name -> livekit.ScenarioGroup + 0, // 32: livekit.SimulationRun.Create.Request.mode:type_name -> livekit.SimulationMode + 42, // 33: livekit.SimulationRun.Create.Response.presigned_post_request:type_name -> livekit.PresignedPostRequest + 4, // 34: livekit.SimulationRun.Get.Response.run:type_name -> livekit.SimulationRun + 1, // 35: livekit.SimulationRun.List.Request.status:type_name -> livekit.SimulationRun.Status + 43, // 36: livekit.SimulationRun.List.Request.page_token:type_name -> livekit.TokenPagination + 4, // 37: livekit.SimulationRun.List.Response.runs:type_name -> livekit.SimulationRun + 43, // 38: livekit.SimulationRun.List.Response.next_page_token:type_name -> livekit.TokenPagination + 5, // 39: livekit.Scenario.CreateFromSession.Response.scenario:type_name -> livekit.Scenario + 25, // 40: livekit.AgentSimulation.CreateSimulationRun:input_type -> livekit.SimulationRun.Create.Request + 27, // 41: livekit.AgentSimulation.ConfirmSimulationSourceUpload:input_type -> livekit.SimulationRun.ConfirmSourceUpload.Request + 29, // 42: livekit.AgentSimulation.GetSimulationRun:input_type -> livekit.SimulationRun.Get.Request + 31, // 43: livekit.AgentSimulation.ListSimulationRuns:input_type -> livekit.SimulationRun.List.Request + 33, // 44: livekit.AgentSimulation.CancelSimulationRun:input_type -> livekit.SimulationRun.Cancel.Request + 37, // 45: livekit.AgentSimulation.CreateScenarioFromSession:input_type -> livekit.Scenario.CreateFromSession.Request + 26, // 46: livekit.AgentSimulation.CreateSimulationRun:output_type -> livekit.SimulationRun.Create.Response + 28, // 47: livekit.AgentSimulation.ConfirmSimulationSourceUpload:output_type -> livekit.SimulationRun.ConfirmSourceUpload.Response + 30, // 48: livekit.AgentSimulation.GetSimulationRun:output_type -> livekit.SimulationRun.Get.Response + 32, // 49: livekit.AgentSimulation.ListSimulationRuns:output_type -> livekit.SimulationRun.List.Response + 34, // 50: livekit.AgentSimulation.CancelSimulationRun:output_type -> livekit.SimulationRun.Cancel.Response + 38, // 51: livekit.AgentSimulation.CreateScenarioFromSession:output_type -> livekit.Scenario.CreateFromSession.Response + 46, // [46:52] is the sub-list for method output_type + 40, // [40:46] is the sub-list for method input_type + 40, // [40:40] is the sub-list for extension type_name + 40, // [40:40] is the sub-list for extension extendee + 0, // [0:40] is the sub-list for field type_name } func init() { file_livekit_agent_simulation_proto_init() } @@ -3278,15 +3208,14 @@ func file_livekit_agent_simulation_proto_init() { file_livekit_agent_simulation_proto_msgTypes[20].OneofWrappers = []any{} file_livekit_agent_simulation_proto_msgTypes[21].OneofWrappers = []any{} file_livekit_agent_simulation_proto_msgTypes[22].OneofWrappers = []any{} - file_livekit_agent_simulation_proto_msgTypes[23].OneofWrappers = []any{} - file_livekit_agent_simulation_proto_msgTypes[29].OneofWrappers = []any{} + file_livekit_agent_simulation_proto_msgTypes[28].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_livekit_agent_simulation_proto_rawDesc), len(file_livekit_agent_simulation_proto_rawDesc)), NumEnums: 3, - NumMessages: 37, + NumMessages: 36, NumExtensions: 0, NumServices: 1, }, diff --git a/livekit/livekit_agent_simulation.twirp.go b/livekit/livekit_agent_simulation.twirp.go index 4be280096..90faee36b 100644 --- a/livekit/livekit_agent_simulation.twirp.go +++ b/livekit/livekit_agent_simulation.twirp.go @@ -1912,220 +1912,216 @@ func (s *agentSimulationServer) PathPrefix() string { } var twirpFileDescriptor9 = []byte{ - // 3439 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcb, 0x6f, 0x1b, 0x49, - 0x73, 0x37, 0xdf, 0x64, 0x51, 0x7c, 0xa8, 0xf5, 0x30, 0x3d, 0xde, 0x87, 0x2d, 0xef, 0xc3, 0xb1, - 0xbd, 0xb4, 0xa3, 0x5d, 0xef, 0x46, 0xde, 0x07, 0x22, 0x4a, 0xb4, 0x49, 0x47, 0x92, 0xb5, 0x4d, - 0x0a, 0xc9, 0x3a, 0x08, 0x06, 0xa3, 0x99, 0x36, 0x35, 0xf2, 0x70, 0x9a, 0x3b, 0xdd, 0x63, 0x5b, - 0x0b, 0xe4, 0x90, 0x9b, 0x81, 0x1c, 0x82, 0xdc, 0x72, 0x0a, 0x92, 0xc3, 0x1e, 0xb2, 0xd7, 0x5c, - 0x03, 0xe4, 0x6f, 0xc8, 0x25, 0x40, 0x80, 0xfc, 0x05, 0xdf, 0xf5, 0xc3, 0xde, 0x3f, 0xf4, 0x63, - 0x86, 0xc3, 0x97, 0x2c, 0x7f, 0x58, 0xdf, 0xbe, 0x1b, 0xa7, 0xea, 0x57, 0x3d, 0xdd, 0xd5, 0xbf, - 0xaa, 0xea, 0xe9, 0x22, 0x7c, 0xe0, 0xb9, 0x2f, 0xc8, 0x73, 0x97, 0x9b, 0xd6, 0x80, 0xf8, 0xdc, - 0x64, 0xee, 0x30, 0xf4, 0x2c, 0xee, 0x52, 0xbf, 0x39, 0x0a, 0x28, 0xa7, 0xa8, 0xa0, 0xf5, 0xc6, - 0x75, 0x09, 0xb8, 0x3b, 0x05, 0x27, 0x8c, 0xc5, 0x58, 0xe3, 0xc3, 0x01, 0xa5, 0x03, 0x8f, 0xdc, - 0x95, 0x4f, 0xc7, 0xe1, 0xb3, 0xbb, 0xdc, 0x1d, 0x12, 0xc6, 0xad, 0xe1, 0x48, 0x03, 0xae, 0x44, - 0xd6, 0xb6, 0x47, 0x43, 0x47, 0x8d, 0xa1, 0x55, 0xab, 0x91, 0x6a, 0x48, 0x1d, 0xe2, 0x31, 0x25, - 0xdd, 0xf8, 0x9f, 0x0c, 0xac, 0xf6, 0xe2, 0x29, 0xe1, 0xd0, 0xef, 0x85, 0xc3, 0xa1, 0x15, 0x9c, - 0xa1, 0x75, 0xc8, 0x8f, 0x2c, 0xc6, 0x88, 0xd3, 0x48, 0x5d, 0x4b, 0xdd, 0xcc, 0x61, 0xfd, 0x24, - 0xe4, 0xcf, 0x2c, 0xd7, 0x23, 0x4e, 0x23, 0xad, 0xe4, 0xea, 0x09, 0xbd, 0x0f, 0x30, 0xa0, 0xae, - 0x3f, 0x30, 0x5f, 0x12, 0xcf, 0x6b, 0x64, 0xae, 0xa5, 0x6e, 0x96, 0x70, 0x49, 0x4a, 0xfe, 0x9a, - 0x78, 0x9e, 0x50, 0x73, 0x6a, 0xba, 0xc3, 0x51, 0x40, 0x5f, 0x90, 0x46, 0x56, 0xa9, 0x39, 0xed, - 0x2a, 0x01, 0xfa, 0x1a, 0xf2, 0x2e, 0x63, 0x21, 0x61, 0x8d, 0xdc, 0xb5, 0xcc, 0xcd, 0xf2, 0xe6, - 0x8d, 0xa6, 0x9e, 0x6d, 0x73, 0xde, 0xe4, 0x9a, 0x5d, 0x81, 0xc5, 0xda, 0x04, 0x7d, 0x0f, 0x4b, - 0xf6, 0x89, 0xc5, 0xcd, 0x13, 0x97, 0x71, 0x1a, 0x9c, 0x35, 0xf2, 0x72, 0x88, 0xe6, 0xf9, 0x43, - 0xec, 0x9c, 0x58, 0xbc, 0xa3, 0x0c, 0xda, 0x3e, 0x0f, 0xce, 0x70, 0xd9, 0x1e, 0x4b, 0x8c, 0xa7, - 0x50, 0x9f, 0x06, 0xa0, 0x3a, 0x64, 0x9e, 0x93, 0x33, 0xe9, 0x8e, 0x12, 0x16, 0x3f, 0xd1, 0x3d, - 0xc8, 0xbd, 0xb0, 0xbc, 0x90, 0x48, 0x57, 0x94, 0x37, 0x8d, 0xf8, 0x8d, 0xca, 0xef, 0x62, 0x84, - 0x1d, 0xea, 0x73, 0xf2, 0x8a, 0x63, 0x05, 0x7c, 0x90, 0xfe, 0x8b, 0x94, 0x61, 0x42, 0x4e, 0xce, - 0x1f, 0x5d, 0x83, 0xb2, 0x43, 0x98, 0x1d, 0xb8, 0x23, 0x31, 0x37, 0x3d, 0x70, 0x52, 0x84, 0x3e, - 0x00, 0x60, 0xe1, 0x60, 0x40, 0x98, 0x04, 0xa4, 0x25, 0x20, 0x21, 0x41, 0xab, 0x90, 0xf3, 0xac, - 0x63, 0x12, 0xf9, 0x5b, 0x3d, 0x6c, 0xfc, 0xfe, 0x3b, 0xa8, 0x4c, 0xac, 0x19, 0x55, 0x21, 0xed, - 0x3a, 0xfa, 0x05, 0x69, 0x57, 0x6e, 0xd6, 0x28, 0xa0, 0xa7, 0xc4, 0xe6, 0xa6, 0xeb, 0xe8, 0x71, - 0x4b, 0x5a, 0xd2, 0x75, 0xd0, 0x7d, 0xc8, 0x33, 0x6e, 0xf1, 0x90, 0xc9, 0x71, 0xab, 0x9b, 0xef, - 0xcf, 0x77, 0x65, 0xb3, 0x27, 0x41, 0x58, 0x83, 0xd1, 0x6d, 0x58, 0x56, 0xa4, 0x4d, 0xae, 0x4a, - 0x6d, 0x75, 0x5d, 0x2a, 0x76, 0x13, 0x4b, 0x5b, 0x85, 0x1c, 0x09, 0x02, 0x1a, 0x34, 0x72, 0x6a, - 0xea, 0xf2, 0x01, 0x6d, 0x01, 0xd8, 0x01, 0xb1, 0x38, 0x71, 0x4c, 0x8b, 0x37, 0xf2, 0xda, 0xad, - 0x8a, 0xf5, 0xcd, 0x88, 0xf5, 0xcd, 0x7e, 0xc4, 0x7a, 0x5c, 0xd2, 0xe8, 0x6d, 0x8e, 0x9a, 0x90, - 0x3d, 0xa5, 0xc7, 0xac, 0x51, 0x90, 0xbb, 0x6f, 0x2c, 0x98, 0xf2, 0x63, 0x7a, 0x8c, 0x25, 0x4e, - 0xf8, 0x40, 0xcd, 0xd6, 0xb7, 0x86, 0xa4, 0x51, 0x52, 0x3e, 0x90, 0x92, 0x03, 0x6b, 0x48, 0xd0, - 0xb7, 0x50, 0x65, 0x36, 0xf1, 0xad, 0xc0, 0xa5, 0xe6, 0x20, 0xa0, 0xe1, 0xa8, 0x01, 0x72, 0x36, - 0xeb, 0xe3, 0x81, 0xb5, 0xfa, 0x91, 0xd0, 0xe2, 0x0a, 0x4b, 0x3e, 0xa2, 0xfb, 0x50, 0x24, 0xbe, - 0xa3, 0x96, 0x51, 0x7e, 0xe3, 0x32, 0x0a, 0x12, 0xbb, 0xcd, 0xd1, 0x55, 0x28, 0x9d, 0xd2, 0x63, - 0xd3, 0xa6, 0xa1, 0xcf, 0x1b, 0x4b, 0x32, 0xc0, 0x8a, 0xa7, 0xf4, 0x78, 0x47, 0x3c, 0xa3, 0xeb, - 0xb0, 0xa4, 0x82, 0x50, 0xeb, 0x2b, 0x52, 0x5f, 0x56, 0xb2, 0x18, 0xa2, 0xe2, 0x51, 0x43, 0xaa, - 0x0a, 0xa2, 0x64, 0x0a, 0xf2, 0x29, 0xd4, 0xfc, 0x70, 0x98, 0xc8, 0x43, 0xac, 0x51, 0x93, 0xa8, - 0xaa, 0x1f, 0x0e, 0xc7, 0xce, 0x62, 0x68, 0x13, 0x72, 0x21, 0xb3, 0x06, 0xa4, 0x51, 0x97, 0xf3, - 0x7f, 0x6f, 0x81, 0x47, 0x8f, 0x04, 0x06, 0x2b, 0xa8, 0xa0, 0xb4, 0x4d, 0x7d, 0x3b, 0x0c, 0x02, - 0xe2, 0xdb, 0x67, 0x8d, 0x65, 0xf5, 0xfa, 0x84, 0x08, 0xdd, 0x86, 0xac, 0x48, 0x40, 0x0d, 0x24, - 0x99, 0x75, 0x79, 0xce, 0xa0, 0xfb, 0xd4, 0x21, 0x58, 0x82, 0xd0, 0xd7, 0x50, 0x18, 0x12, 0x1e, - 0xb8, 0x36, 0x6b, 0xac, 0xc8, 0x49, 0x5c, 0x5f, 0x30, 0x09, 0x1c, 0xfa, 0xfb, 0x0a, 0x88, 0x23, - 0x0b, 0xe1, 0x0b, 0xa6, 0x82, 0xdd, 0xfc, 0x89, 0x71, 0xa7, 0xb1, 0x7a, 0x2d, 0x75, 0x73, 0x09, - 0x97, 0xb5, 0xec, 0x29, 0xe3, 0x8e, 0xf1, 0xbf, 0x39, 0xc8, 0x3c, 0xa6, 0xc7, 0x33, 0xf1, 0xb1, - 0x15, 0x07, 0x40, 0x5a, 0x4e, 0xf3, 0xfa, 0x62, 0x36, 0x4d, 0x07, 0xc1, 0x06, 0x2c, 0xb9, 0x3e, - 0xe3, 0x41, 0x68, 0x2b, 0xdf, 0xaa, 0xc8, 0x9c, 0x90, 0x8d, 0xb9, 0x9f, 0x4d, 0x72, 0xff, 0x33, - 0x40, 0x8a, 0x90, 0xe4, 0xd5, 0x88, 0xd8, 0x5c, 0xef, 0x8d, 0x0a, 0x0f, 0x15, 0x58, 0xed, 0x84, - 0x62, 0x1c, 0xfb, 0xf9, 0x44, 0xec, 0x23, 0x04, 0x59, 0x6e, 0x0d, 0x54, 0x14, 0x94, 0xb0, 0xfc, - 0x2d, 0x48, 0x15, 0x50, 0x3a, 0x54, 0x44, 0x2f, 0x4a, 0x74, 0x51, 0x08, 0x24, 0xcf, 0xb7, 0x00, - 0x18, 0xb7, 0x02, 0x1d, 0x71, 0xf0, 0xe6, 0x88, 0xd3, 0xe8, 0x6d, 0xfe, 0xc7, 0x72, 0xfc, 0x32, - 0x14, 0xe4, 0x74, 0x5c, 0x47, 0x32, 0xbc, 0x84, 0xf3, 0xe2, 0xb1, 0xeb, 0xa0, 0x2f, 0x23, 0xc2, - 0x55, 0xe4, 0x60, 0xd7, 0xce, 0x71, 0xfa, 0x04, 0xe9, 0x12, 0x2c, 0xa9, 0x9e, 0xcb, 0x92, 0xc7, - 0xf4, 0x78, 0x9a, 0x25, 0xc6, 0xdf, 0x41, 0x4e, 0x0e, 0x86, 0x6e, 0x42, 0x5d, 0x64, 0x6a, 0x93, - 0x87, 0x81, 0xcf, 0x74, 0xf8, 0xa8, 0xd2, 0x57, 0x15, 0xf2, 0xbe, 0x10, 0xab, 0x08, 0xba, 0x05, - 0xcb, 0x56, 0xe8, 0xb8, 0x74, 0x02, 0xaa, 0xaa, 0x61, 0x4d, 0x2a, 0xc6, 0xd8, 0x0d, 0x0a, 0x79, - 0x45, 0x10, 0x84, 0xa0, 0xda, 0xeb, 0x6f, 0xf7, 0x8f, 0x7a, 0xe6, 0x61, 0xfb, 0x60, 0xb7, 0x7b, - 0xf0, 0xa8, 0x7e, 0x29, 0x21, 0xc3, 0x47, 0x07, 0x07, 0x42, 0x96, 0x42, 0xab, 0x50, 0xd7, 0xb2, - 0x9d, 0x27, 0xfb, 0x87, 0x7b, 0xed, 0x7e, 0x7b, 0xb7, 0x9e, 0x46, 0xcb, 0x50, 0xd1, 0xd2, 0x87, - 0xdb, 0xdd, 0xbd, 0xf6, 0x6e, 0x3d, 0x93, 0x04, 0x6e, 0x1f, 0xec, 0xb4, 0xf7, 0x84, 0x34, 0xfb, - 0x38, 0x5b, 0x2c, 0xd5, 0xc1, 0xf8, 0xf7, 0x1b, 0x00, 0xe3, 0xd5, 0xa2, 0x5b, 0x50, 0xb5, 0x6c, - 0x3b, 0x0c, 0x2c, 0xfb, 0xcc, 0x64, 0x36, 0x0d, 0x88, 0x5c, 0x59, 0xba, 0x73, 0x09, 0x57, 0x22, - 0x79, 0x4f, 0x88, 0x5f, 0xa7, 0x52, 0xa8, 0x09, 0x75, 0x41, 0xc0, 0xc0, 0x25, 0xbe, 0x4d, 0x34, - 0x3a, 0x2d, 0xd1, 0x29, 0x5c, 0x1b, 0x6b, 0x62, 0xfc, 0x1d, 0xa8, 0x71, 0x8b, 0x3d, 0x37, 0x6d, - 0x3a, 0x1c, 0x79, 0x44, 0xe6, 0xfc, 0x8c, 0x84, 0xa7, 0x71, 0x55, 0x28, 0x76, 0x62, 0xb9, 0x40, - 0x7f, 0x05, 0x19, 0xc6, 0xb9, 0x24, 0x7e, 0x79, 0xf3, 0xe3, 0x37, 0xee, 0x53, 0xb3, 0xd7, 0xef, - 0x63, 0x61, 0x21, 0x0c, 0x3d, 0x6f, 0x28, 0xc3, 0xe1, 0x42, 0x86, 0x7b, 0x7b, 0xfb, 0x58, 0x58, - 0x08, 0x43, 0xce, 0x99, 0xae, 0x25, 0x17, 0x30, 0xec, 0xf7, 0x7b, 0x58, 0x58, 0x20, 0x0c, 0x4b, - 0x36, 0xf5, 0x5f, 0x90, 0x80, 0x49, 0x58, 0xa3, 0x20, 0x47, 0x68, 0xbe, 0x79, 0x84, 0x9d, 0x84, - 0x15, 0x9e, 0x18, 0x03, 0x75, 0xa1, 0xa4, 0x13, 0x2f, 0x0d, 0x64, 0x28, 0x96, 0x37, 0x6f, 0x5f, - 0xc0, 0x09, 0x91, 0x09, 0x1e, 0x5b, 0xa3, 0x6f, 0x20, 0x27, 0xf9, 0xd7, 0x28, 0xc9, 0x82, 0xf7, - 0xc9, 0x05, 0x56, 0x16, 0x06, 0x3e, 0x56, 0x46, 0xe8, 0x43, 0x28, 0x9f, 0x86, 0xce, 0x80, 0xa8, - 0xd3, 0xa0, 0x8c, 0xfb, 0x12, 0x06, 0x29, 0x12, 0xf9, 0xd7, 0x43, 0x77, 0x00, 0x9d, 0x58, 0xcc, - 0x0c, 0xc8, 0x90, 0x72, 0x12, 0x1d, 0x43, 0x65, 0xc0, 0x16, 0x71, 0xfd, 0xc4, 0x62, 0x58, 0x2a, - 0x7a, 0x4a, 0x8e, 0x6e, 0x41, 0x9a, 0xdf, 0xd3, 0x71, 0x7b, 0x5e, 0x12, 0x48, 0xf3, 0x7b, 0xe8, - 0x63, 0x55, 0x23, 0x5c, 0x46, 0x7c, 0xc2, 0x54, 0xc8, 0xa6, 0x3b, 0x19, 0x9c, 0x14, 0x0a, 0xa6, - 0x6c, 0xc1, 0x7a, 0xe8, 0xfb, 0xc4, 0x26, 0x8c, 0x89, 0x14, 0xce, 0x29, 0xf5, 0x4c, 0xdb, 0xf2, - 0x3c, 0x55, 0xae, 0x8a, 0x9d, 0x2c, 0x5e, 0x4d, 0xe8, 0xfb, 0x94, 0x7a, 0x3b, 0x42, 0xab, 0x29, - 0xec, 0xfa, 0xcf, 0x68, 0x30, 0x94, 0x5e, 0x30, 0x3d, 0xca, 0x98, 0x2c, 0x62, 0xc5, 0x4e, 0x0e, - 0xd7, 0x12, 0x9a, 0x3d, 0xaa, 0x5e, 0xf5, 0x25, 0xac, 0x06, 0xc4, 0x09, 0x7d, 0xc7, 0x12, 0x27, - 0x6e, 0x6e, 0x71, 0x32, 0x24, 0x3e, 0x67, 0xb2, 0x7c, 0x15, 0x3b, 0x79, 0xbc, 0x12, 0x6b, 0x7b, - 0xb1, 0x52, 0x91, 0x79, 0x6d, 0x44, 0x69, 0x60, 0xfe, 0x18, 0xaa, 0xf3, 0x98, 0xf9, 0x63, 0x68, - 0x79, 0x2e, 0x3f, 0x93, 0xc5, 0xad, 0xd8, 0x29, 0xe0, 0x15, 0xa1, 0xfe, 0x5e, 0x6b, 0xbf, 0x57, - 0x4a, 0x61, 0xf8, 0x1d, 0x34, 0x92, 0xb4, 0x30, 0x47, 0x01, 0x1d, 0x04, 0xda, 0xc5, 0x2b, 0xd2, - 0x1f, 0x45, 0x7c, 0x39, 0x89, 0x38, 0x1c, 0x03, 0x5e, 0xa7, 0x52, 0xc6, 0x3f, 0x65, 0x21, 0xd3, - 0xeb, 0xf7, 0xd1, 0x1a, 0x64, 0x5e, 0x92, 0x20, 0x0e, 0x66, 0xf1, 0x20, 0x86, 0xbf, 0x02, 0xb9, - 0x97, 0x34, 0x70, 0x54, 0xf5, 0xaa, 0x74, 0x52, 0x58, 0x3d, 0x0a, 0xd5, 0x47, 0x50, 0x16, 0xbf, - 0x4d, 0x59, 0x72, 0x54, 0x75, 0xaa, 0x74, 0xd2, 0x18, 0x84, 0xb0, 0x2d, 0x65, 0x02, 0xb5, 0x06, - 0x19, 0x9b, 0xa8, 0xf2, 0x24, 0xb6, 0x46, 0x3c, 0xe8, 0x71, 0xed, 0x13, 0x2b, 0x60, 0xf2, 0xb4, - 0x54, 0xe9, 0x64, 0xb1, 0x7a, 0xd4, 0xe3, 0x8a, 0xdf, 0xd1, 0xb8, 0x20, 0x01, 0x39, 0x0c, 0x42, - 0x38, 0x1e, 0xf7, 0x63, 0x58, 0x62, 0x5c, 0x9c, 0x0f, 0x3d, 0xeb, 0xcc, 0x1c, 0x32, 0x19, 0x01, - 0x95, 0x4e, 0x1e, 0x03, 0xe3, 0x7c, 0x57, 0x08, 0xf7, 0x25, 0x6c, 0x13, 0x10, 0xf1, 0xb9, 0xcb, - 0xcf, 0xcc, 0x80, 0xd8, 0x74, 0xe0, 0xbb, 0x32, 0xfe, 0xca, 0x72, 0x36, 0x05, 0xbc, 0xac, 0x74, - 0x78, 0xac, 0x8a, 0xd2, 0x96, 0x90, 0xbb, 0x84, 0x99, 0x21, 0xe7, 0x24, 0x20, 0xaa, 0xbc, 0x54, - 0x3a, 0x45, 0x5c, 0x8b, 0x34, 0x47, 0x4a, 0x21, 0xf0, 0x5f, 0xc0, 0x4a, 0x8c, 0xd7, 0x6f, 0xf9, - 0x89, 0x38, 0x92, 0xc2, 0x95, 0x4e, 0x09, 0xa3, 0x48, 0x89, 0x63, 0xdd, 0xeb, 0x54, 0xaa, 0x95, - 0x87, 0xac, 0xf9, 0x92, 0x04, 0xad, 0x22, 0xe4, 0x4d, 0xe9, 0xd3, 0x56, 0x15, 0x96, 0xcc, 0x84, - 0x47, 0x25, 0xc2, 0xd6, 0x08, 0xe9, 0x1d, 0x89, 0x48, 0xf8, 0xa6, 0x55, 0x83, 0x8a, 0x99, 0xf4, - 0x42, 0x6b, 0x0d, 0x56, 0xcc, 0xd9, 0xf5, 0xb6, 0x56, 0x60, 0xd9, 0x9c, 0x5e, 0x52, 0x6b, 0x1d, - 0x56, 0xcd, 0x39, 0xf3, 0x36, 0xfe, 0x2d, 0x05, 0x99, 0xbd, 0xbd, 0x7d, 0xf4, 0x1e, 0x14, 0x38, - 0x7f, 0xc6, 0x85, 0x73, 0x53, 0x72, 0x29, 0x97, 0x70, 0x5e, 0x08, 0x94, 0x63, 0x95, 0x96, 0x09, - 0x6d, 0x44, 0x0d, 0xa1, 0x65, 0x4a, 0x7b, 0x17, 0x96, 0x39, 0x7d, 0x4e, 0x7c, 0x66, 0x8e, 0x48, - 0x60, 0x32, 0x62, 0x53, 0xdf, 0x89, 0x73, 0x79, 0x4d, 0xa9, 0x0e, 0x49, 0xd0, 0x93, 0x0a, 0xe1, - 0x0d, 0x80, 0xa2, 0xa9, 0xdf, 0x16, 0xfd, 0x16, 0x63, 0xb7, 0x56, 0x01, 0x99, 0x33, 0x23, 0x19, - 0xff, 0x90, 0x85, 0x4c, 0xbf, 0xdf, 0xd3, 0x93, 0x38, 0x1e, 0x4f, 0x42, 0x4d, 0xf1, 0x78, 0x3f, - 0xa2, 0x9e, 0xa0, 0x74, 0x46, 0x57, 0x9c, 0x19, 0x4a, 0x17, 0x34, 0x63, 0x17, 0x52, 0x5a, 0x71, - 0x2a, 0xb3, 0x80, 0xd2, 0x25, 0x39, 0x6e, 0x76, 0x96, 0xd2, 0x11, 0x63, 0x17, 0x52, 0xba, 0x1c, - 0x71, 0x75, 0x92, 0xd2, 0xf3, 0xb9, 0x5a, 0x7d, 0x6b, 0xae, 0xd6, 0xde, 0x9e, 0xab, 0xf5, 0xf3, - 0xb9, 0xaa, 0x77, 0x44, 0x38, 0xfa, 0x37, 0xe1, 0xed, 0x6f, 0x41, 0xd3, 0x5f, 0x0b, 0xb0, 0x94, - 0x2c, 0x8f, 0x92, 0x73, 0x61, 0xe0, 0x9b, 0xdc, 0x7a, 0xee, 0xfa, 0x83, 0xa9, 0xc3, 0x49, 0x4d, - 0xa8, 0xfa, 0x52, 0x13, 0x1f, 0x37, 0xbe, 0x86, 0xc6, 0x09, 0xb1, 0xc4, 0xbc, 0x37, 0x89, 0xe9, - 0x59, 0x5c, 0x7c, 0x54, 0x98, 0xa3, 0xfb, 0xf7, 0x22, 0x3a, 0xe5, 0x3a, 0x29, 0xbc, 0x2a, 0x11, - 0xed, 0x4d, 0xb2, 0xa7, 0xf4, 0x87, 0xf7, 0xef, 0x29, 0x72, 0xcd, 0x37, 0xde, 0xba, 0x2f, 0x8c, - 0x33, 0xd2, 0x38, 0x3d, 0x6b, 0xbc, 0x75, 0xff, 0x5c, 0xe3, 0x2d, 0x61, 0x9c, 0x95, 0xc6, 0x99, - 0x39, 0xc6, 0x5b, 0xca, 0xf8, 0x0e, 0xd4, 0xb9, 0x3b, 0x24, 0x26, 0xa7, 0xe6, 0x99, 0x4b, 0x3c, - 0x47, 0x18, 0xe5, 0x74, 0x16, 0xad, 0x08, 0x4d, 0x9f, 0xfe, 0x20, 0xe4, 0xd1, 0xab, 0x2e, 0x13, - 0xca, 0xcd, 0xa1, 0xcb, 0x46, 0x01, 0x71, 0x5c, 0xf9, 0xd9, 0xa0, 0xcf, 0x99, 0x79, 0xcd, 0xd3, - 0x35, 0x42, 0xf9, 0x7e, 0x52, 0x2f, 0xcf, 0x9b, 0xc2, 0xf8, 0x26, 0x54, 0xe8, 0x0b, 0x12, 0x78, - 0xd6, 0xc8, 0x0c, 0x84, 0x93, 0x65, 0xc8, 0xa4, 0x3b, 0x79, 0xbc, 0xa4, 0xc5, 0x58, 0x48, 0x75, - 0xc0, 0x47, 0x48, 0x36, 0x22, 0xc4, 0x3e, 0x19, 0xe7, 0xe4, 0x02, 0xae, 0x69, 0x55, 0x4f, 0x6a, - 0xd4, 0xbc, 0x6e, 0x43, 0x8d, 0x53, 0x6e, 0x79, 0x09, 0x78, 0x49, 0xf3, 0xb6, 0x22, 0x15, 0x49, - 0xf0, 0x57, 0xb0, 0x66, 0xbd, 0x7c, 0xfe, 0x52, 0x78, 0x8c, 0xb9, 0x9e, 0x3c, 0x4d, 0xaa, 0x25, - 0x94, 0x35, 0x6f, 0x57, 0xb4, 0xba, 0xa7, 0xb4, 0xf1, 0x02, 0x9a, 0x50, 0x0f, 0x7d, 0xcb, 0x67, - 0x2f, 0x05, 0x95, 0xd4, 0x21, 0x5b, 0xa7, 0x72, 0xc0, 0xb5, 0xb1, 0x46, 0x9e, 0xb2, 0x05, 0xfe, - 0x5b, 0x68, 0x3c, 0xb3, 0x3c, 0x46, 0x4c, 0xd7, 0xe7, 0x24, 0x08, 0xc2, 0x51, 0xc2, 0x5d, 0x2a, - 0x9f, 0x97, 0xf1, 0xba, 0x44, 0x74, 0x13, 0x80, 0xf8, 0x75, 0x7f, 0x06, 0xd5, 0xe4, 0x8e, 0x0e, - 0x99, 0x8e, 0xc5, 0x25, 0xbc, 0x44, 0xe2, 0x8d, 0x94, 0x4b, 0x52, 0x89, 0x6d, 0x9a, 0xae, 0xad, - 0xab, 0x70, 0xc5, 0x5c, 0xc4, 0xc9, 0x45, 0x4a, 0xc9, 0xb9, 0x85, 0x4a, 0xc1, 0x29, 0x19, 0x58, - 0xd3, 0x9c, 0x69, 0x19, 0xd0, 0x30, 0x17, 0x50, 0xa3, 0x55, 0x87, 0xaa, 0x39, 0xb1, 0xf3, 0x72, - 0xbe, 0x33, 0x3b, 0xdc, 0x42, 0x50, 0x37, 0xa7, 0xb6, 0xb1, 0xd5, 0x80, 0x75, 0x73, 0xee, 0x6e, - 0xc9, 0x69, 0x4c, 0x6f, 0x87, 0x9c, 0xf8, 0x22, 0x9f, 0xb7, 0x96, 0xa1, 0x66, 0x4e, 0x7a, 0xd4, - 0xf8, 0x97, 0x14, 0x94, 0xe2, 0x53, 0x2c, 0xba, 0x07, 0xcb, 0xc4, 0x0a, 0xbc, 0x33, 0x93, 0x93, - 0x60, 0xe8, 0xfa, 0x56, 0x7c, 0xfd, 0x55, 0xec, 0x5c, 0xc2, 0x75, 0xa9, 0xea, 0x8f, 0x35, 0x9a, - 0x12, 0x62, 0xb4, 0x09, 0x83, 0xb4, 0x34, 0x48, 0xe1, 0x9a, 0xd0, 0x4c, 0xe2, 0xe5, 0xc2, 0x67, - 0x5e, 0x21, 0x97, 0x32, 0x3d, 0x8c, 0xf1, 0x4b, 0x01, 0xb2, 0x82, 0x4a, 0xe2, 0x83, 0xda, 0xf5, - 0x1d, 0xf2, 0x4a, 0x15, 0x4e, 0xac, 0x1e, 0xd0, 0x6d, 0xc8, 0x06, 0xd4, 0x23, 0xfa, 0x22, 0xe0, - 0xf2, 0x9c, 0x2b, 0x3e, 0x4c, 0x3d, 0x82, 0x25, 0x08, 0x7d, 0x00, 0x45, 0xf9, 0x79, 0x1c, 0xe5, - 0x13, 0x51, 0xdb, 0x0a, 0x52, 0xa2, 0x42, 0xc2, 0x80, 0x3c, 0xf1, 0x9d, 0x28, 0x61, 0xc8, 0x93, - 0x19, 0xf1, 0x75, 0xcc, 0x4f, 0x9f, 0x8d, 0x72, 0xd1, 0xd1, 0x6c, 0xf2, 0x6c, 0x74, 0x03, 0xca, - 0x9e, 0x37, 0x8c, 0xca, 0xae, 0x4e, 0x07, 0x19, 0x5c, 0xf2, 0xbc, 0x61, 0x3f, 0xae, 0xf3, 0x63, - 0x90, 0xac, 0xf5, 0x05, 0x9d, 0x68, 0x34, 0x88, 0xc5, 0x87, 0x01, 0x09, 0x1a, 0xa9, 0x98, 0x4f, - 0x77, 0x72, 0x38, 0x2f, 0x00, 0xa3, 0x68, 0x08, 0xce, 0x59, 0x54, 0x40, 0x74, 0x98, 0xe7, 0x71, - 0x89, 0x73, 0xd6, 0x8f, 0x8b, 0xf5, 0x6c, 0xe8, 0x80, 0xce, 0x1e, 0xd3, 0xa1, 0x83, 0xbe, 0x80, - 0xd5, 0x59, 0xa6, 0x0f, 0x55, 0x59, 0xcd, 0x75, 0x8a, 0x78, 0x79, 0x2a, 0x73, 0x2e, 0x4e, 0x9b, - 0x4b, 0x3a, 0x7d, 0xcc, 0xa6, 0xcd, 0xb9, 0xc5, 0xa4, 0x22, 0xd7, 0x06, 0x73, 0x8b, 0xc9, 0xdc, - 0x4f, 0x91, 0xf2, 0xcc, 0xa7, 0x88, 0xe0, 0xeb, 0x74, 0xcc, 0xe9, 0xaf, 0x90, 0x25, 0x5c, 0x9f, - 0x4e, 0xc4, 0xfa, 0xa3, 0x78, 0x2a, 0x9a, 0xf4, 0x07, 0x48, 0x05, 0x57, 0x27, 0xb3, 0x9e, 0xf2, - 0x35, 0x8c, 0x23, 0x4c, 0x7f, 0x75, 0x54, 0x71, 0x42, 0x26, 0x28, 0x5d, 0x86, 0x92, 0x19, 0x91, - 0xab, 0x55, 0x82, 0x82, 0xa9, 0x98, 0x34, 0x7b, 0x9c, 0x14, 0x75, 0x3b, 0x41, 0x91, 0xe4, 0x33, - 0x8b, 0x4e, 0x6a, 0x7a, 0xe3, 0xa5, 0x2e, 0xb1, 0xcd, 0x73, 0x42, 0xb7, 0x75, 0x19, 0xd6, 0xcc, - 0x79, 0x3b, 0x37, 0x3f, 0x3f, 0xcd, 0xcf, 0x90, 0xf2, 0x28, 0x31, 0xf6, 0xa9, 0x0a, 0xcf, 0x69, - 0x8f, 0xca, 0xbc, 0x34, 0xe5, 0xb5, 0x56, 0x05, 0xca, 0x89, 0xec, 0x23, 0xe7, 0x37, 0x79, 0x93, - 0xa1, 0xce, 0x1f, 0x53, 0x17, 0x16, 0x2a, 0xc5, 0x4d, 0xde, 0x4a, 0xcc, 0x4c, 0xe2, 0x0a, 0x5c, - 0x36, 0xe7, 0x7f, 0x61, 0xca, 0x31, 0xa7, 0xbf, 0x20, 0xa5, 0x23, 0xe6, 0x7d, 0x26, 0xca, 0xdc, - 0x39, 0xf7, 0x3b, 0x50, 0xa6, 0xc9, 0x45, 0x1f, 0x7a, 0xc6, 0xff, 0x65, 0x00, 0xc6, 0xf7, 0x96, - 0xef, 0xf4, 0x8e, 0xe6, 0xcf, 0x01, 0xc5, 0x97, 0xd9, 0x23, 0x8b, 0x31, 0x51, 0x1e, 0x48, 0x7c, - 0xb4, 0xaf, 0x47, 0xba, 0x43, 0x8b, 0x31, 0x6c, 0x71, 0xf2, 0xa7, 0x8b, 0x9a, 0x0b, 0x13, 0x4d, - 0x1c, 0x8a, 0x67, 0x5d, 0x6b, 0xfc, 0x9a, 0x81, 0xfc, 0x8e, 0x6c, 0x4d, 0x18, 0xff, 0x9f, 0x86, - 0x02, 0x26, 0x92, 0x1a, 0x53, 0x7d, 0x97, 0xd4, 0x74, 0xdf, 0x65, 0xb2, 0x25, 0x91, 0x9e, 0x6e, - 0x49, 0xcc, 0xb9, 0xb9, 0xcf, 0xce, 0xbd, 0xb9, 0x5f, 0x87, 0x7c, 0x40, 0x06, 0xc2, 0x15, 0x79, - 0x7d, 0xc1, 0x2a, 0x9f, 0x50, 0x6b, 0xa6, 0xa7, 0x51, 0x38, 0xaf, 0xa7, 0x21, 0xa8, 0x37, 0xd1, - 0xd5, 0x48, 0xa4, 0xcc, 0xe8, 0x86, 0xbf, 0xa8, 0x8f, 0xdc, 0x49, 0xa1, 0x3a, 0x29, 0xaa, 0x6b, - 0xfe, 0xd2, 0x05, 0xae, 0xf9, 0xa5, 0xb3, 0x27, 0x27, 0x16, 0x07, 0xab, 0x1e, 0xf2, 0x71, 0xb6, - 0x98, 0xa9, 0x67, 0xf1, 0x6c, 0x7f, 0xc9, 0xf8, 0xc7, 0x14, 0x14, 0x31, 0x61, 0x23, 0xea, 0x33, - 0x82, 0x6e, 0xc1, 0xf2, 0xd8, 0x3b, 0x66, 0x10, 0xfa, 0x63, 0x37, 0xd7, 0x58, 0x92, 0x05, 0x5d, - 0x07, 0xf5, 0x60, 0x7d, 0x14, 0x10, 0xe6, 0x0e, 0x7c, 0xe2, 0x98, 0x23, 0xca, 0xb8, 0x19, 0xa8, - 0x5d, 0xd2, 0xdd, 0xbc, 0x71, 0xd3, 0xeb, 0x30, 0x82, 0x1d, 0x52, 0xc6, 0xf5, 0x56, 0xe2, 0xd5, - 0xd1, 0x1c, 0xa9, 0xf8, 0x0c, 0x5f, 0xd9, 0xa1, 0xfe, 0x33, 0x37, 0x18, 0xf6, 0x68, 0x18, 0xd8, - 0xe4, 0x68, 0xe4, 0x51, 0xcb, 0x31, 0xfe, 0xfe, 0xc2, 0x1c, 0x98, 0xbb, 0x84, 0xf4, 0xfc, 0x25, - 0x7c, 0x0a, 0x35, 0x9b, 0x3a, 0x44, 0x7c, 0x69, 0x05, 0x67, 0x23, 0xea, 0xfa, 0x5c, 0xb7, 0x1b, - 0xaa, 0x42, 0xdc, 0x8e, 0xa5, 0x06, 0x8c, 0x7d, 0x64, 0xfc, 0x73, 0x0a, 0x32, 0x8f, 0x08, 0x37, - 0xfa, 0xef, 0x62, 0x4a, 0xc6, 0x17, 0x89, 0xdd, 0xb8, 0x09, 0x99, 0x20, 0x54, 0x07, 0xbb, 0x09, - 0x8e, 0x25, 0x4d, 0xb0, 0x80, 0x18, 0xff, 0x9d, 0x86, 0xec, 0x9e, 0xcb, 0xb8, 0xf1, 0x5f, 0xa9, - 0x0b, 0xcf, 0xea, 0xc1, 0x54, 0x8f, 0xe6, 0xfc, 0x26, 0x65, 0xe7, 0x52, 0xd4, 0xa1, 0x11, 0xec, - 0xfc, 0x06, 0x60, 0x64, 0x0d, 0x88, 0xba, 0xa4, 0x90, 0x3e, 0x2b, 0x6f, 0x36, 0x62, 0xfb, 0xbe, - 0x90, 0x1e, 0x5a, 0x03, 0x7d, 0x42, 0xec, 0xa4, 0x70, 0x49, 0xa0, 0xa5, 0x58, 0x54, 0x62, 0x51, - 0x7c, 0xd5, 0x58, 0xb2, 0x3c, 0x8d, 0x47, 0x32, 0x5e, 0x4d, 0x70, 0x31, 0x1b, 0x84, 0x3e, 0x6b, - 0xa4, 0xe4, 0xf5, 0xec, 0xa2, 0xe5, 0x4b, 0x0c, 0xfa, 0x4b, 0xa8, 0xf9, 0xe4, 0x15, 0x4f, 0x0c, - 0xa5, 0x49, 0xb8, 0x70, 0x52, 0xb8, 0x22, 0x0c, 0x0e, 0xa3, 0x69, 0x19, 0xa7, 0x90, 0xdf, 0xb1, - 0x7c, 0x9b, 0x78, 0xef, 0x68, 0x5f, 0x93, 0x0c, 0x7a, 0xc7, 0x2d, 0x93, 0x9f, 0x53, 0x71, 0xcf, - 0xe4, 0x0a, 0xac, 0x4d, 0xf6, 0x4c, 0xcc, 0xa3, 0xc3, 0xbd, 0x27, 0xdb, 0xbb, 0xf5, 0x4b, 0x68, - 0x0d, 0x96, 0xb5, 0xea, 0x51, 0xfb, 0xa0, 0x8d, 0xb7, 0xfb, 0xaa, 0x7b, 0x32, 0xdb, 0x51, 0x49, - 0xa3, 0x75, 0x40, 0x5a, 0xd6, 0x3b, 0xda, 0xdf, 0xdf, 0xc6, 0xdd, 0xa7, 0x42, 0x9e, 0x99, 0xdb, - 0x69, 0xc9, 0xce, 0x76, 0x5a, 0x72, 0x73, 0x3b, 0x2d, 0xf9, 0xc7, 0xd9, 0x62, 0xb1, 0x5e, 0xc2, - 0x05, 0xdd, 0x4f, 0xdc, 0xf8, 0x39, 0x03, 0xc5, 0x28, 0x7d, 0x8e, 0x9b, 0x73, 0xa9, 0x64, 0x73, - 0x6e, 0xba, 0x37, 0x98, 0x9e, 0xd3, 0x1b, 0x9c, 0xdf, 0x05, 0xcc, 0x2c, 0xea, 0x02, 0xde, 0xd5, - 0xfd, 0xbe, 0xac, 0x64, 0xd9, 0xd5, 0x99, 0x44, 0xde, 0xec, 0x5b, 0x03, 0xa6, 0xfe, 0xe0, 0xa0, - 0x9a, 0x81, 0x06, 0x14, 0x43, 0x46, 0x02, 0xc7, 0xe2, 0x96, 0xee, 0x2d, 0xc6, 0xcf, 0xc6, 0x7f, - 0xa4, 0x60, 0x59, 0x55, 0xad, 0x87, 0x01, 0x1d, 0xea, 0xbb, 0x7d, 0xe3, 0x87, 0x0b, 0x13, 0x2a, - 0xd1, 0xd9, 0x4b, 0x4f, 0x74, 0xf6, 0xc6, 0x05, 0x29, 0x93, 0x2c, 0x48, 0xc6, 0x56, 0x22, 0x5e, - 0x3e, 0x83, 0x62, 0x54, 0x03, 0x74, 0xca, 0x58, 0x9e, 0x59, 0x0d, 0x8e, 0x21, 0xc6, 0x57, 0x50, - 0x8a, 0x97, 0x36, 0xe7, 0xaf, 0x19, 0xab, 0xc9, 0xbf, 0x66, 0x94, 0x12, 0x7f, 0xbf, 0xd8, 0xe8, - 0x43, 0x65, 0xa2, 0xca, 0x21, 0x04, 0x59, 0x59, 0x6f, 0x95, 0xb5, 0xfc, 0x8d, 0xee, 0x42, 0x29, - 0x7a, 0x93, 0xd8, 0xa6, 0xcc, 0xfc, 0xd9, 0x8c, 0x31, 0x1b, 0xff, 0x99, 0x02, 0x34, 0x8e, 0xec, - 0x5d, 0x97, 0x8d, 0x2c, 0x6e, 0x9f, 0xbc, 0x55, 0x41, 0x5a, 0x83, 0xfc, 0x29, 0x3d, 0x1e, 0x3b, - 0x2f, 0x77, 0x4a, 0x8f, 0xbb, 0xce, 0x84, 0x5f, 0x32, 0x6f, 0xf4, 0x4b, 0x5c, 0x78, 0xb3, 0x17, - 0x28, 0xbc, 0xb7, 0x9e, 0x41, 0x75, 0x52, 0x8e, 0x3e, 0x84, 0xab, 0xbd, 0xee, 0xfe, 0xd1, 0xde, - 0x76, 0xbf, 0xfb, 0xe4, 0xc0, 0xdc, 0x7f, 0xb2, 0xdb, 0x36, 0x8f, 0x0e, 0x7a, 0x87, 0xed, 0x9d, - 0xee, 0xc3, 0x6e, 0x5b, 0xc4, 0x5d, 0x03, 0x56, 0xa7, 0x01, 0xfd, 0xf6, 0xdf, 0xf4, 0xeb, 0x29, - 0x19, 0xac, 0x53, 0x9a, 0xed, 0xa3, 0xdd, 0xee, 0x93, 0x7a, 0x7a, 0xf3, 0x5f, 0x73, 0x50, 0xdb, - 0x16, 0xdc, 0x1d, 0xbf, 0x0d, 0x39, 0xb0, 0xa2, 0xb8, 0x36, 0xf9, 0x57, 0x95, 0x45, 0x07, 0x3f, - 0x85, 0x6d, 0x46, 0x85, 0xf6, 0x93, 0x37, 0xc1, 0x34, 0xab, 0x5e, 0xa7, 0xe0, 0xfd, 0xa8, 0x20, - 0xc7, 0xc0, 0x64, 0x69, 0x46, 0x9b, 0x8b, 0x46, 0x9a, 0x2d, 0xe3, 0xf1, 0xdb, 0x3f, 0x7f, 0x2b, - 0x1b, 0x3d, 0x95, 0xbf, 0x85, 0xfa, 0x23, 0xc2, 0x27, 0x57, 0xbb, 0xb1, 0x60, 0xa0, 0x47, 0x84, - 0xc7, 0x2f, 0xbb, 0x71, 0x2e, 0x46, 0x0f, 0x6e, 0x02, 0x12, 0x05, 0x74, 0x02, 0xc1, 0xd0, 0x22, - 0x53, 0x01, 0x8d, 0xc7, 0xff, 0xe8, 0x7c, 0x90, 0x7e, 0x81, 0xd8, 0x2e, 0x59, 0x60, 0x2e, 0xb8, - 0x5d, 0x12, 0xfb, 0xe6, 0xed, 0x8a, 0x60, 0xfa, 0x2d, 0x2f, 0xe0, 0x8a, 0x26, 0x85, 0xe6, 0x73, - 0x22, 0x11, 0xa1, 0xdb, 0xb3, 0xd9, 0x6d, 0x26, 0x5b, 0xc5, 0x6f, 0xbc, 0x73, 0x31, 0xb0, 0x7a, - 0x6f, 0xeb, 0xe1, 0xd3, 0x1b, 0x03, 0x97, 0x9f, 0x84, 0xc7, 0x4d, 0x9b, 0x0e, 0xa3, 0xbf, 0xe0, - 0xa9, 0xbf, 0xd9, 0xd9, 0xd4, 0x8b, 0x04, 0xbf, 0xa4, 0x2b, 0x7b, 0xee, 0x0b, 0xf2, 0x57, 0xf2, - 0x4c, 0x48, 0x39, 0xfd, 0x5d, 0xba, 0xaa, 0x9f, 0x1f, 0x3c, 0x90, 0x82, 0xe3, 0xbc, 0x34, 0xf9, - 0xfc, 0x0f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x1a, 0x62, 0xb5, 0x34, 0xf5, 0x27, 0x00, 0x00, + // 3361 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0x4b, 0x6f, 0x1b, 0xc9, + 0xb5, 0x36, 0xdf, 0xe4, 0xa1, 0xf8, 0x50, 0xe9, 0x61, 0xba, 0x3d, 0x0f, 0x5b, 0x9e, 0x87, 0xaf, + 0xed, 0xa1, 0x7d, 0x35, 0xe3, 0x99, 0x2b, 0xcf, 0xcc, 0xc5, 0x15, 0x25, 0xda, 0x94, 0xaf, 0x24, + 0x6b, 0x8a, 0x14, 0x92, 0x71, 0x10, 0x34, 0x5a, 0xdd, 0x65, 0xaa, 0xe5, 0x66, 0x17, 0xa7, 0xab, + 0xda, 0xb6, 0x06, 0xc8, 0x22, 0x3b, 0x03, 0x41, 0x10, 0xe4, 0x0f, 0x04, 0xd9, 0xcc, 0x22, 0xb3, + 0xcd, 0x32, 0x01, 0xf2, 0x1b, 0xb2, 0x09, 0x10, 0x20, 0xbf, 0x20, 0xfb, 0xd9, 0x07, 0xf5, 0xe8, + 0x66, 0xf3, 0x25, 0xcb, 0xc1, 0x78, 0x97, 0x1d, 0xeb, 0x9c, 0xaf, 0xaa, 0x4f, 0x9d, 0xfa, 0xce, + 0x39, 0xf5, 0x20, 0xbc, 0xe3, 0xb9, 0xcf, 0xc8, 0x53, 0x97, 0x9b, 0x56, 0x9f, 0xf8, 0xdc, 0x64, + 0xee, 0x20, 0xf4, 0x2c, 0xee, 0x52, 0xbf, 0x39, 0x0c, 0x28, 0xa7, 0xa8, 0xa0, 0xf5, 0xc6, 0x55, + 0x09, 0xb8, 0x3d, 0x01, 0x27, 0x8c, 0xc5, 0x58, 0xe3, 0xdd, 0x3e, 0xa5, 0x7d, 0x8f, 0xdc, 0x96, + 0xad, 0xa3, 0xf0, 0xc9, 0x6d, 0xee, 0x0e, 0x08, 0xe3, 0xd6, 0x60, 0xa8, 0x01, 0x97, 0xa2, 0xde, + 0xb6, 0x47, 0x43, 0x47, 0x8d, 0xa1, 0x55, 0xcb, 0x91, 0x6a, 0x40, 0x1d, 0xe2, 0x31, 0x25, 0x5d, + 0xfb, 0x6b, 0x06, 0x96, 0xbb, 0xb1, 0x49, 0x38, 0xf4, 0xbb, 0xe1, 0x60, 0x60, 0x05, 0xa7, 0x68, + 0x15, 0xf2, 0x43, 0x8b, 0x31, 0xe2, 0x34, 0x52, 0x57, 0x52, 0xd7, 0x73, 0x58, 0xb7, 0x84, 0xfc, + 0x89, 0xe5, 0x7a, 0xc4, 0x69, 0xa4, 0x95, 0x5c, 0xb5, 0xd0, 0xdb, 0x00, 0x7d, 0xea, 0xfa, 0x7d, + 0xf3, 0x39, 0xf1, 0xbc, 0x46, 0xe6, 0x4a, 0xea, 0x7a, 0x09, 0x97, 0xa4, 0xe4, 0x27, 0xc4, 0xf3, + 0x84, 0x9a, 0x53, 0xd3, 0x1d, 0x0c, 0x03, 0xfa, 0x8c, 0x34, 0xb2, 0x4a, 0xcd, 0xe9, 0x8e, 0x12, + 0xa0, 0xcf, 0x21, 0xef, 0x32, 0x16, 0x12, 0xd6, 0xc8, 0x5d, 0xc9, 0x5c, 0x2f, 0xaf, 0x5f, 0x6b, + 0x6a, 0x6b, 0x9b, 0xb3, 0x8c, 0x6b, 0xee, 0x08, 0x2c, 0xd6, 0x5d, 0xd0, 0x57, 0xb0, 0x60, 0x1f, + 0x5b, 0xdc, 0x3c, 0x76, 0x19, 0xa7, 0xc1, 0x69, 0x23, 0x2f, 0x87, 0x68, 0x9e, 0x3d, 0xc4, 0xd6, + 0xb1, 0xc5, 0x3b, 0xaa, 0x43, 0xdb, 0xe7, 0xc1, 0x29, 0x2e, 0xdb, 0x23, 0x89, 0xf1, 0x18, 0xea, + 0x93, 0x00, 0x54, 0x87, 0xcc, 0x53, 0x72, 0x2a, 0xdd, 0x51, 0xc2, 0xe2, 0x27, 0xba, 0x03, 0xb9, + 0x67, 0x96, 0x17, 0x12, 0xe9, 0x8a, 0xf2, 0xba, 0x11, 0x7f, 0x51, 0xf9, 0x5d, 0x8c, 0xb0, 0x45, + 0x7d, 0x4e, 0x5e, 0x70, 0xac, 0x80, 0xf7, 0xd2, 0xff, 0x93, 0x32, 0x4c, 0xc8, 0x49, 0xfb, 0xd1, + 0x15, 0x28, 0x3b, 0x84, 0xd9, 0x81, 0x3b, 0x14, 0xb6, 0xe9, 0x81, 0x93, 0x22, 0xf4, 0x0e, 0x00, + 0x0b, 0xfb, 0x7d, 0xc2, 0x24, 0x20, 0x2d, 0x01, 0x09, 0x09, 0x5a, 0x86, 0x9c, 0x67, 0x1d, 0x91, + 0xc8, 0xdf, 0xaa, 0xb1, 0xf6, 0xeb, 0x2f, 0xa1, 0x32, 0x36, 0x67, 0x54, 0x85, 0xb4, 0xeb, 0xe8, + 0x0f, 0xa4, 0x5d, 0xb9, 0x58, 0xc3, 0x80, 0x9e, 0x10, 0x9b, 0x9b, 0xae, 0xa3, 0xc7, 0x2d, 0x69, + 0xc9, 0x8e, 0x83, 0xee, 0x42, 0x9e, 0x71, 0x8b, 0x87, 0x4c, 0x8e, 0x5b, 0x5d, 0x7f, 0x7b, 0xb6, + 0x2b, 0x9b, 0x5d, 0x09, 0xc2, 0x1a, 0x8c, 0x6e, 0xc2, 0xa2, 0x22, 0x6d, 0x72, 0x56, 0x6a, 0xa9, + 0xeb, 0x52, 0xb1, 0x9d, 0x98, 0xda, 0x32, 0xe4, 0x48, 0x10, 0xd0, 0xa0, 0x91, 0x53, 0xa6, 0xcb, + 0x06, 0xda, 0x00, 0xb0, 0x03, 0x62, 0x71, 0xe2, 0x98, 0x16, 0x6f, 0xe4, 0xb5, 0x5b, 0x15, 0xeb, + 0x9b, 0x11, 0xeb, 0x9b, 0xbd, 0x88, 0xf5, 0xb8, 0xa4, 0xd1, 0x9b, 0x1c, 0x35, 0x21, 0x7b, 0x42, + 0x8f, 0x58, 0xa3, 0x20, 0x57, 0xdf, 0x98, 0x63, 0xf2, 0x43, 0x7a, 0x84, 0x25, 0x4e, 0xf8, 0x40, + 0x59, 0xeb, 0x5b, 0x03, 0xd2, 0x28, 0x29, 0x1f, 0x48, 0xc9, 0xbe, 0x35, 0x20, 0xe8, 0x4b, 0xa8, + 0x32, 0x9b, 0xf8, 0x56, 0xe0, 0x52, 0xb3, 0x1f, 0xd0, 0x70, 0xd8, 0x00, 0x69, 0xcd, 0xea, 0x68, + 0x60, 0xad, 0x7e, 0x20, 0xb4, 0xb8, 0xc2, 0x92, 0x4d, 0x74, 0x17, 0x8a, 0xc4, 0x77, 0xd4, 0x34, + 0xca, 0xaf, 0x9c, 0x46, 0x41, 0x62, 0x37, 0x39, 0xba, 0x0c, 0xa5, 0x13, 0x7a, 0x64, 0xda, 0x34, + 0xf4, 0x79, 0x63, 0x41, 0x06, 0x58, 0xf1, 0x84, 0x1e, 0x6d, 0x89, 0x36, 0xba, 0x0a, 0x0b, 0x2a, + 0x08, 0xb5, 0xbe, 0x22, 0xf5, 0x65, 0x25, 0x8b, 0x21, 0x2a, 0x1e, 0x35, 0xa4, 0xaa, 0x20, 0x4a, + 0xa6, 0x20, 0x1f, 0x42, 0xcd, 0x0f, 0x07, 0x89, 0x3c, 0xc4, 0x1a, 0x35, 0x89, 0xaa, 0xfa, 0xe1, + 0x60, 0xe4, 0x2c, 0x86, 0xd6, 0x21, 0x17, 0x32, 0xab, 0x4f, 0x1a, 0x75, 0x69, 0xff, 0x5b, 0x73, + 0x3c, 0x7a, 0x28, 0x30, 0x58, 0x41, 0x05, 0xa5, 0x6d, 0xea, 0xdb, 0x61, 0x10, 0x10, 0xdf, 0x3e, + 0x6d, 0x2c, 0xaa, 0xcf, 0x27, 0x44, 0xe8, 0x26, 0x64, 0x45, 0x02, 0x6a, 0x20, 0xc9, 0xac, 0x8b, + 0x33, 0x06, 0xdd, 0xa3, 0x0e, 0xc1, 0x12, 0x84, 0x3e, 0x87, 0xc2, 0x80, 0xf0, 0xc0, 0xb5, 0x59, + 0x63, 0x49, 0x1a, 0x71, 0x75, 0x8e, 0x11, 0x38, 0xf4, 0xf7, 0x14, 0x10, 0x47, 0x3d, 0x84, 0x2f, + 0x98, 0x0a, 0x76, 0xf3, 0x5b, 0xc6, 0x9d, 0xc6, 0xf2, 0x95, 0xd4, 0xf5, 0x05, 0x5c, 0xd6, 0xb2, + 0xc7, 0x8c, 0x3b, 0xc6, 0xdf, 0x72, 0x90, 0x79, 0x48, 0x8f, 0xa6, 0xe2, 0x63, 0x23, 0x0e, 0x80, + 0xb4, 0x34, 0xf3, 0xea, 0x7c, 0x36, 0x4d, 0x06, 0xc1, 0x1a, 0x2c, 0xb8, 0x3e, 0xe3, 0x41, 0x68, + 0x2b, 0xdf, 0xaa, 0xc8, 0x1c, 0x93, 0x8d, 0xb8, 0x9f, 0x4d, 0x72, 0xff, 0x23, 0x40, 0x8a, 0x90, + 0xe4, 0xc5, 0x90, 0xd8, 0x5c, 0xaf, 0x8d, 0x0a, 0x0f, 0x15, 0x58, 0xed, 0x84, 0x62, 0x14, 0xfb, + 0xf9, 0x44, 0xec, 0x23, 0x04, 0x59, 0x6e, 0xf5, 0x55, 0x14, 0x94, 0xb0, 0xfc, 0x2d, 0x48, 0x15, + 0x50, 0x3a, 0x50, 0x44, 0x2f, 0x4a, 0x74, 0x51, 0x08, 0x24, 0xcf, 0x37, 0x00, 0x18, 0xb7, 0x02, + 0x1d, 0x71, 0xf0, 0xea, 0x88, 0xd3, 0xe8, 0x4d, 0xfe, 0xef, 0x72, 0xfc, 0x22, 0x14, 0xa4, 0x39, + 0xae, 0x23, 0x19, 0x5e, 0xc2, 0x79, 0xd1, 0xdc, 0x71, 0xd0, 0xa7, 0x11, 0xe1, 0x2a, 0x72, 0xb0, + 0x2b, 0x67, 0x38, 0x7d, 0x8c, 0x74, 0x09, 0x96, 0x54, 0xcf, 0x64, 0xc9, 0x43, 0x7a, 0x34, 0xc9, + 0x12, 0xe3, 0xe7, 0x90, 0x93, 0x83, 0xa1, 0xeb, 0x50, 0x17, 0x99, 0xda, 0xe4, 0x61, 0xe0, 0x33, + 0x1d, 0x3e, 0xaa, 0xf4, 0x55, 0x85, 0xbc, 0x27, 0xc4, 0x2a, 0x82, 0x6e, 0xc0, 0xa2, 0x15, 0x3a, + 0x2e, 0x1d, 0x83, 0xaa, 0x6a, 0x58, 0x93, 0x8a, 0x11, 0x76, 0x8d, 0x42, 0x5e, 0x11, 0x04, 0x21, + 0xa8, 0x76, 0x7b, 0x9b, 0xbd, 0xc3, 0xae, 0x79, 0xd0, 0xde, 0xdf, 0xde, 0xd9, 0x7f, 0x50, 0xbf, + 0x90, 0x90, 0xe1, 0xc3, 0xfd, 0x7d, 0x21, 0x4b, 0xa1, 0x65, 0xa8, 0x6b, 0xd9, 0xd6, 0xa3, 0xbd, + 0x83, 0xdd, 0x76, 0xaf, 0xbd, 0x5d, 0x4f, 0xa3, 0x45, 0xa8, 0x68, 0xe9, 0xfd, 0xcd, 0x9d, 0xdd, + 0xf6, 0x76, 0x3d, 0x93, 0x04, 0x6e, 0xee, 0x6f, 0xb5, 0x77, 0x85, 0x34, 0xfb, 0x30, 0x5b, 0x2c, + 0xd5, 0xc1, 0xf8, 0xd3, 0x55, 0x80, 0xd1, 0x6c, 0xd1, 0x0d, 0xa8, 0x5a, 0xb6, 0x1d, 0x06, 0x96, + 0x7d, 0x6a, 0x32, 0x9b, 0x06, 0x44, 0xce, 0x2c, 0xdd, 0xb9, 0x80, 0x2b, 0x91, 0xbc, 0x2b, 0xc4, + 0x2f, 0x53, 0x29, 0xd4, 0x84, 0xba, 0x20, 0x60, 0xe0, 0x12, 0xdf, 0x26, 0x1a, 0x9d, 0x96, 0xe8, + 0x14, 0xae, 0x8d, 0x34, 0x31, 0xfe, 0x16, 0xd4, 0xb8, 0xc5, 0x9e, 0x9a, 0x36, 0x1d, 0x0c, 0x3d, + 0x22, 0x73, 0x7e, 0x46, 0xc2, 0xd3, 0xb8, 0x2a, 0x14, 0x5b, 0xb1, 0x5c, 0xa0, 0x3f, 0x83, 0x0c, + 0xe3, 0x5c, 0x12, 0xbf, 0xbc, 0xfe, 0xfe, 0x2b, 0xd7, 0xa9, 0xd9, 0xed, 0xf5, 0xb0, 0xe8, 0x21, + 0x3a, 0x7a, 0xde, 0x40, 0x86, 0xc3, 0xb9, 0x3a, 0xee, 0xee, 0xee, 0x61, 0xd1, 0x43, 0x74, 0xe4, + 0x9c, 0xe9, 0x5a, 0x72, 0x8e, 0x8e, 0xbd, 0x5e, 0x17, 0x8b, 0x1e, 0x08, 0xc3, 0x82, 0x4d, 0xfd, + 0x67, 0x24, 0x60, 0x12, 0xd6, 0x28, 0xc8, 0x11, 0x9a, 0xaf, 0x1e, 0x61, 0x2b, 0xd1, 0x0b, 0x8f, + 0x8d, 0x81, 0xbe, 0x80, 0x9c, 0x24, 0x4d, 0xa3, 0x24, 0xab, 0xd4, 0x07, 0xe7, 0x30, 0x27, 0x0c, + 0x7c, 0xac, 0x3a, 0xa1, 0x77, 0xa1, 0x7c, 0x12, 0x3a, 0x7d, 0xa2, 0xb6, 0x70, 0x32, 0x58, 0x4b, + 0x18, 0xa4, 0x48, 0x24, 0x4d, 0x0f, 0xdd, 0x02, 0x74, 0x6c, 0x31, 0x33, 0x20, 0x03, 0xca, 0x49, + 0xb4, 0x77, 0x94, 0x51, 0x56, 0xc4, 0xf5, 0x63, 0x8b, 0x61, 0xa9, 0xe8, 0x2a, 0x39, 0xba, 0x01, + 0x69, 0x7e, 0x47, 0x07, 0xdb, 0x59, 0x91, 0x9b, 0xe6, 0x77, 0xd0, 0xfb, 0x2a, 0xb1, 0xbb, 0x8c, + 0xf8, 0x84, 0xa9, 0x38, 0x4b, 0x77, 0x32, 0x38, 0x29, 0x14, 0xcb, 0xbb, 0x01, 0xab, 0xa1, 0xef, + 0x13, 0x9b, 0x30, 0x26, 0xf2, 0x2e, 0xa7, 0xd4, 0x33, 0x6d, 0xcb, 0xf3, 0x54, 0x8d, 0x29, 0x76, + 0xb2, 0x78, 0x39, 0xa1, 0xef, 0x51, 0xea, 0x6d, 0x09, 0xad, 0xe6, 0x9d, 0xeb, 0x3f, 0xa1, 0xc1, + 0x40, 0x7a, 0xc1, 0xf4, 0x28, 0x63, 0xb2, 0xf2, 0x14, 0x3b, 0x39, 0x5c, 0x4b, 0x68, 0x76, 0xa9, + 0xfa, 0xd4, 0xa7, 0xb0, 0x1c, 0x10, 0x27, 0xf4, 0x1d, 0x4b, 0x6c, 0x93, 0xb9, 0xc5, 0xc9, 0x80, + 0xf8, 0x9c, 0xc9, 0x9a, 0x53, 0xec, 0xe4, 0xf1, 0x52, 0xac, 0xed, 0xc6, 0x4a, 0xc5, 0xc0, 0x95, + 0x21, 0xa5, 0x81, 0xf9, 0x4d, 0xa8, 0x36, 0x51, 0xe6, 0x37, 0xa1, 0xe5, 0xb9, 0xfc, 0x54, 0x56, + 0xa4, 0x62, 0xa7, 0x80, 0x97, 0x84, 0xfa, 0x2b, 0xad, 0xfd, 0x4a, 0x29, 0x45, 0xc7, 0xff, 0x85, + 0x46, 0x72, 0x2d, 0xcd, 0x61, 0x40, 0xfb, 0x81, 0x76, 0xf1, 0x92, 0xf4, 0x47, 0x11, 0x5f, 0x4c, + 0x22, 0x0e, 0x46, 0x80, 0x97, 0xa9, 0x94, 0xf1, 0x9b, 0x2c, 0x64, 0xba, 0xbd, 0x1e, 0x5a, 0x81, + 0xcc, 0x73, 0x12, 0xc4, 0x11, 0x28, 0x1a, 0x62, 0xf8, 0x4b, 0x90, 0x7b, 0x4e, 0x03, 0x47, 0x95, + 0x9c, 0x4a, 0x27, 0x85, 0x55, 0x53, 0xa8, 0xde, 0x83, 0xb2, 0xf8, 0x6d, 0xca, 0x3a, 0xa1, 0x4a, + 0x4a, 0xa5, 0x93, 0xc6, 0x20, 0x84, 0x6d, 0x29, 0x13, 0xa8, 0x15, 0xc8, 0xd8, 0x44, 0xd5, 0x14, + 0xb1, 0x34, 0xa2, 0xa1, 0xc7, 0xb5, 0x8f, 0xad, 0x80, 0xc9, 0x2d, 0x4e, 0xa5, 0x93, 0xc5, 0xaa, + 0xa9, 0xc7, 0x15, 0xbf, 0xa3, 0x71, 0x41, 0x02, 0x72, 0x18, 0x84, 0x70, 0x34, 0xee, 0xfb, 0xb0, + 0xc0, 0xb8, 0xd8, 0xd4, 0x79, 0xd6, 0xa9, 0x39, 0x60, 0xb2, 0x82, 0x54, 0x3a, 0x79, 0x0c, 0x8c, + 0xf3, 0x6d, 0x21, 0xdc, 0x93, 0xb0, 0x75, 0x40, 0xc4, 0xe7, 0x2e, 0x3f, 0x35, 0x03, 0x62, 0xd3, + 0xbe, 0xef, 0xca, 0xa0, 0x29, 0x4b, 0x6b, 0x0a, 0x78, 0x51, 0xe9, 0xf0, 0x48, 0x15, 0xe5, 0x1a, + 0x21, 0x77, 0x09, 0x33, 0x43, 0xce, 0x49, 0x40, 0x54, 0x4d, 0xa8, 0x74, 0x8a, 0xb8, 0x16, 0x69, + 0x0e, 0x95, 0x42, 0xe0, 0x3f, 0x81, 0xa5, 0x18, 0xaf, 0xbf, 0xf2, 0x2d, 0x71, 0x24, 0x85, 0x2b, + 0x9d, 0x12, 0x46, 0x91, 0x12, 0xc7, 0xba, 0x97, 0xa9, 0x54, 0x2b, 0x0f, 0x59, 0xf3, 0x39, 0x09, + 0x5a, 0x45, 0xc8, 0x9b, 0xd2, 0xa7, 0xad, 0x2a, 0x2c, 0x98, 0x09, 0x8f, 0x4a, 0x84, 0xad, 0x11, + 0xd2, 0x3b, 0x12, 0x91, 0xf0, 0x4d, 0xab, 0x06, 0x15, 0x33, 0xe9, 0x85, 0xd6, 0x0a, 0x2c, 0x99, + 0xd3, 0xf3, 0x6d, 0x2d, 0xc1, 0xa2, 0x39, 0x39, 0xa5, 0xd6, 0x2a, 0x2c, 0x9b, 0x33, 0xec, 0x36, + 0x7e, 0x9f, 0x82, 0xcc, 0xee, 0xee, 0x1e, 0x7a, 0x0b, 0x0a, 0x9c, 0x3f, 0xe1, 0xc2, 0xb9, 0x29, + 0x39, 0x95, 0x0b, 0x38, 0x2f, 0x04, 0xca, 0xb1, 0x4a, 0xcb, 0x84, 0x36, 0xa2, 0x86, 0xd0, 0x32, + 0xa5, 0xbd, 0x0d, 0x8b, 0x9c, 0x3e, 0x25, 0x3e, 0x33, 0x87, 0x24, 0x30, 0x19, 0xb1, 0xa9, 0xef, + 0xc4, 0x09, 0xb8, 0xa6, 0x54, 0x07, 0x24, 0xe8, 0x4a, 0x85, 0xf0, 0x06, 0x40, 0xd1, 0xd4, 0x5f, + 0x8b, 0x7e, 0x8b, 0xb1, 0x5b, 0xcb, 0x80, 0xcc, 0xa9, 0x91, 0x8c, 0x5f, 0x66, 0x21, 0xd3, 0xeb, + 0x75, 0xb5, 0x11, 0x47, 0x23, 0x23, 0x94, 0x89, 0x47, 0x7b, 0x11, 0xf5, 0x04, 0xa5, 0x33, 0xba, + 0x4c, 0x4c, 0x51, 0xba, 0xa0, 0x19, 0x3b, 0x97, 0xd2, 0x8a, 0x53, 0x99, 0x39, 0x94, 0x2e, 0xc9, + 0x71, 0xb3, 0xd3, 0x94, 0x8e, 0x18, 0x3b, 0x97, 0xd2, 0xe5, 0x88, 0xab, 0xe3, 0x94, 0x9e, 0xcd, + 0xd5, 0xea, 0x6b, 0x73, 0xb5, 0xf6, 0xfa, 0x5c, 0xad, 0x9f, 0xcd, 0x55, 0xbd, 0x22, 0xc2, 0xd1, + 0x3f, 0x0a, 0x6f, 0x7f, 0x0c, 0x9a, 0xfe, 0x50, 0x80, 0x85, 0x64, 0x4d, 0x93, 0x9c, 0x0b, 0x03, + 0xdf, 0xe4, 0xd6, 0x53, 0x71, 0xe2, 0x1f, 0xdf, 0x51, 0xd4, 0x84, 0xaa, 0x27, 0x35, 0xf1, 0x1e, + 0xe1, 0x73, 0x68, 0x1c, 0x13, 0x4b, 0xd8, 0xbd, 0x4e, 0x4c, 0xcf, 0xe2, 0xe2, 0x24, 0x60, 0x0e, + 0xef, 0xde, 0x89, 0xe8, 0x94, 0xeb, 0xa4, 0xf0, 0xb2, 0x44, 0xb4, 0xd7, 0xc9, 0xae, 0xd2, 0x1f, + 0xdc, 0xbd, 0xa3, 0xc8, 0x35, 0xbb, 0xf3, 0xc6, 0x5d, 0xd1, 0x39, 0x23, 0x3b, 0xa7, 0xa7, 0x3b, + 0x6f, 0xdc, 0x3d, 0xb3, 0xf3, 0x86, 0xe8, 0x9c, 0x95, 0x9d, 0x33, 0x33, 0x3a, 0x6f, 0xa8, 0xce, + 0xb7, 0xa0, 0xce, 0xdd, 0x01, 0x31, 0x39, 0x35, 0x4f, 0x5d, 0xe2, 0x39, 0xa2, 0x53, 0x4e, 0x67, + 0xd1, 0x8a, 0xd0, 0xf4, 0xe8, 0xd7, 0x42, 0x1e, 0x7d, 0xea, 0x22, 0xa1, 0xdc, 0x1c, 0xb8, 0x6c, + 0x18, 0x10, 0xc7, 0x95, 0x7b, 0x7d, 0xbd, 0x39, 0xcc, 0x6b, 0x9e, 0xae, 0x10, 0xca, 0xf7, 0x92, + 0x7a, 0xb9, 0x49, 0x14, 0x9d, 0xaf, 0x43, 0x85, 0x3e, 0x23, 0x81, 0x67, 0x0d, 0xcd, 0x40, 0x38, + 0x59, 0x86, 0x4c, 0xba, 0x93, 0xc7, 0x0b, 0x5a, 0x8c, 0x85, 0x54, 0x07, 0x7c, 0x84, 0x64, 0x43, + 0x42, 0xec, 0xe3, 0x51, 0x4e, 0x2e, 0xe0, 0x9a, 0x56, 0x75, 0xa5, 0x46, 0xd9, 0x75, 0x13, 0x6a, + 0x9c, 0x72, 0xcb, 0x4b, 0xc0, 0x4b, 0x9a, 0xb7, 0x15, 0xa9, 0x48, 0x82, 0x3f, 0x83, 0x15, 0xeb, + 0xf9, 0xd3, 0xe7, 0xc2, 0x63, 0xcc, 0xf5, 0xe4, 0x16, 0x50, 0x4d, 0xa1, 0xac, 0x79, 0xbb, 0xa4, + 0xd5, 0x5d, 0xa5, 0x8d, 0x27, 0xd0, 0x84, 0x7a, 0xe8, 0x5b, 0x3e, 0x7b, 0x2e, 0xa8, 0xa4, 0x76, + 0xc6, 0x3a, 0x95, 0x03, 0xae, 0x8d, 0x34, 0x72, 0x6b, 0x2c, 0xf0, 0x5f, 0x42, 0xe3, 0x89, 0xe5, + 0x31, 0x62, 0xba, 0x3e, 0x27, 0x41, 0x10, 0x0e, 0x13, 0xee, 0x52, 0xf9, 0xbc, 0x8c, 0x57, 0x25, + 0x62, 0x27, 0x01, 0x88, 0x3f, 0xf7, 0x5f, 0x50, 0x4d, 0xae, 0xe8, 0x80, 0xe9, 0x58, 0x5c, 0xc0, + 0x0b, 0x24, 0x5e, 0x48, 0x39, 0x25, 0x95, 0xd8, 0x26, 0xe9, 0xda, 0xba, 0x0c, 0x97, 0xcc, 0x79, + 0x9c, 0x9c, 0xa7, 0x94, 0x9c, 0x9b, 0xab, 0x14, 0x9c, 0x92, 0x81, 0x35, 0xc9, 0x99, 0x96, 0x01, + 0x0d, 0x73, 0x0e, 0x35, 0x5a, 0x75, 0xa8, 0x9a, 0x63, 0x2b, 0x2f, 0xed, 0x9d, 0x5a, 0xe1, 0x16, + 0x82, 0xba, 0x39, 0xb1, 0x8c, 0xad, 0x06, 0xac, 0x9a, 0x33, 0x57, 0x4b, 0x9a, 0x31, 0xb9, 0x1c, + 0xd2, 0xf0, 0x79, 0x3e, 0x6f, 0x2d, 0x42, 0xcd, 0x1c, 0xf7, 0xa8, 0xf1, 0x7d, 0x01, 0xb2, 0x62, + 0xbd, 0xc4, 0x51, 0xd3, 0xf5, 0x1d, 0xf2, 0x42, 0x55, 0x27, 0xac, 0x1a, 0xe2, 0x24, 0x1f, 0x50, + 0x8f, 0xe8, 0x23, 0xf2, 0xc5, 0x19, 0x97, 0x5f, 0x98, 0x7a, 0x04, 0x4b, 0x10, 0x7a, 0x07, 0x8a, + 0xf2, 0xe0, 0x18, 0x05, 0xad, 0x28, 0x20, 0x05, 0x29, 0x51, 0xbc, 0x33, 0x20, 0x4f, 0x7c, 0x27, + 0x8a, 0x4a, 0xb9, 0xfd, 0x21, 0xbe, 0x0e, 0xac, 0xc9, 0x0d, 0x48, 0x2e, 0xda, 0xff, 0x8c, 0x6f, + 0x40, 0xae, 0x41, 0xd9, 0xf3, 0x06, 0x51, 0x6d, 0xd3, 0x31, 0x97, 0xc1, 0x25, 0xcf, 0x1b, 0xf4, + 0xe2, 0x62, 0x3a, 0x02, 0xc9, 0x82, 0x5a, 0xd0, 0xd1, 0xac, 0x41, 0x2c, 0xae, 0xb8, 0x12, 0x34, + 0x54, 0x81, 0x95, 0xee, 0xe4, 0x70, 0x5e, 0x00, 0x86, 0xd1, 0x10, 0x9c, 0xb3, 0x28, 0x4b, 0xeb, + 0x58, 0xca, 0xe3, 0x12, 0xe7, 0xac, 0x17, 0x57, 0xc4, 0x69, 0x7e, 0x82, 0x0e, 0xd1, 0x49, 0x7e, + 0xa2, 0x4f, 0x60, 0x79, 0x9a, 0x4e, 0x03, 0x55, 0xbb, 0x72, 0x9d, 0x22, 0x5e, 0x9c, 0x48, 0x4f, + 0xf3, 0x73, 0xd3, 0x82, 0x8e, 0xd1, 0xe9, 0xdc, 0x34, 0x33, 0x63, 0x57, 0xe4, 0xdc, 0x60, 0x66, + 0xc6, 0x9e, 0xb9, 0xdf, 0x2f, 0x4f, 0xed, 0xf7, 0xef, 0xc0, 0xe2, 0x14, 0xb1, 0xf5, 0x56, 0x7f, + 0x01, 0xd7, 0x27, 0xb3, 0x9d, 0x3e, 0x2e, 0x4e, 0x50, 0x56, 0xef, 0xf2, 0x2b, 0xb8, 0x3a, 0x9e, + 0x5a, 0x94, 0xaf, 0x61, 0x44, 0x63, 0xbd, 0xb5, 0xaf, 0xe2, 0x84, 0x4c, 0x04, 0x78, 0x19, 0x4a, + 0x66, 0x44, 0xae, 0x56, 0x09, 0x0a, 0xa6, 0x62, 0xd2, 0xf4, 0x9e, 0x4d, 0x14, 0xc7, 0x04, 0x45, + 0x92, 0x6d, 0x16, 0x6d, 0x87, 0xf4, 0xc2, 0x4b, 0x5d, 0x62, 0x99, 0x67, 0xc4, 0x47, 0xeb, 0x22, + 0xac, 0x98, 0xb3, 0x56, 0x6e, 0x76, 0x12, 0x98, 0x9d, 0x86, 0x64, 0xbd, 0x1e, 0xf9, 0x54, 0xa2, + 0xa6, 0x3c, 0x2a, 0x83, 0x7f, 0xc2, 0x6b, 0xad, 0x0a, 0x94, 0x13, 0x21, 0x2e, 0xed, 0x1b, 0x3f, + 0xe3, 0xab, 0x22, 0x3f, 0x71, 0x94, 0x57, 0x79, 0x64, 0xfc, 0xbc, 0x3e, 0x65, 0xc4, 0x25, 0xb8, + 0x68, 0xce, 0x3e, 0xc6, 0xc9, 0x31, 0x27, 0x8f, 0x69, 0xd2, 0x11, 0xb3, 0xce, 0x62, 0x32, 0x41, + 0xcd, 0x3c, 0x6c, 0xc9, 0x5c, 0x34, 0xef, 0x34, 0x65, 0xfc, 0x3d, 0x03, 0x30, 0xba, 0xd1, 0x7b, + 0xa3, 0xb7, 0x17, 0xff, 0x0d, 0x28, 0xbe, 0xe6, 0x1d, 0x5a, 0x8c, 0x89, 0x1c, 0x4c, 0xe2, 0xfd, + 0x73, 0x3d, 0xd2, 0x1d, 0x58, 0x8c, 0x61, 0x8b, 0x93, 0xff, 0x5c, 0x61, 0x9c, 0x9b, 0x68, 0x62, + 0xe7, 0x39, 0xed, 0x5a, 0xe3, 0x87, 0x0c, 0xe4, 0xb7, 0xe4, 0xa5, 0xbd, 0xf1, 0x8f, 0x34, 0x14, + 0x30, 0x91, 0xd4, 0x98, 0x78, 0x91, 0x48, 0x4d, 0xbe, 0x48, 0x8c, 0x5f, 0xd6, 0xa7, 0x27, 0x2f, + 0xeb, 0x67, 0xdc, 0x69, 0x67, 0x67, 0xde, 0x69, 0xaf, 0x42, 0x3e, 0x20, 0x7d, 0xe1, 0x8a, 0xbc, + 0xbe, 0x7a, 0x94, 0x2d, 0xd4, 0x9a, 0xba, 0xed, 0x2f, 0x9c, 0x75, 0xdb, 0x2f, 0xa8, 0x37, 0x76, + 0xdf, 0x9f, 0x48, 0x99, 0xd1, 0xdd, 0x77, 0x51, 0xef, 0x6b, 0x93, 0x42, 0xb5, 0x1d, 0x53, 0x17, + 0xe0, 0xa5, 0x73, 0x5c, 0x80, 0x4b, 0x67, 0x8f, 0x1b, 0x16, 0x07, 0xab, 0x1e, 0xf2, 0x61, 0xb6, + 0x98, 0xa9, 0x67, 0xf1, 0xf4, 0xcb, 0x8b, 0xf1, 0xab, 0x14, 0x14, 0x31, 0x61, 0x43, 0xea, 0x33, + 0x82, 0x6e, 0xc0, 0xe2, 0xc8, 0x3b, 0x66, 0x10, 0xfa, 0x23, 0x37, 0xd7, 0x58, 0x92, 0x05, 0x3b, + 0x0e, 0xea, 0xc2, 0xea, 0x30, 0x20, 0xcc, 0xed, 0xfb, 0xc4, 0x31, 0x87, 0x94, 0x71, 0x33, 0x50, + 0xab, 0xa4, 0xdf, 0xb9, 0x46, 0xcf, 0x41, 0x07, 0x11, 0xec, 0x80, 0x32, 0xae, 0x97, 0x12, 0x2f, + 0x0f, 0x67, 0x48, 0xc5, 0x59, 0x77, 0x69, 0x8b, 0xfa, 0x4f, 0xdc, 0x60, 0xd0, 0xa5, 0x61, 0x60, + 0x93, 0xc3, 0xa1, 0x47, 0x2d, 0xc7, 0xf8, 0xc5, 0xb9, 0x39, 0x30, 0x73, 0x0a, 0xe9, 0xd9, 0x53, + 0xf8, 0x10, 0x6a, 0x36, 0x75, 0x88, 0x38, 0xce, 0x04, 0xa7, 0x43, 0xea, 0xfa, 0x5c, 0x5f, 0xc4, + 0x57, 0x85, 0xb8, 0x1d, 0x4b, 0x0d, 0x18, 0xf9, 0xc8, 0xf8, 0x6d, 0x0a, 0x32, 0x0f, 0x08, 0x37, + 0x7a, 0x6f, 0xc2, 0x24, 0xe3, 0x93, 0xc4, 0x6a, 0x5c, 0x87, 0x4c, 0x10, 0xaa, 0x17, 0xbf, 0x31, + 0x8e, 0x25, 0xbb, 0x60, 0x01, 0x31, 0xfe, 0x92, 0x86, 0xec, 0xae, 0xcb, 0xb8, 0xf1, 0xe7, 0xd4, + 0xb9, 0xad, 0xba, 0x37, 0xf1, 0x7a, 0x71, 0xf6, 0xf3, 0x9d, 0x38, 0xc9, 0x2b, 0xb8, 0x60, 0xe7, + 0x17, 0x00, 0x43, 0xab, 0x4f, 0xd4, 0x4d, 0x80, 0xf4, 0x59, 0x79, 0xbd, 0x11, 0xf7, 0xef, 0x09, + 0xe9, 0x81, 0xd5, 0x77, 0x7d, 0x39, 0x48, 0x27, 0x85, 0x4b, 0x02, 0x2d, 0xc5, 0xa2, 0x12, 0x8b, + 0xe2, 0xab, 0xc6, 0x92, 0xe5, 0x69, 0x34, 0x92, 0xf1, 0x62, 0x8c, 0x8b, 0xd9, 0x20, 0xf4, 0x59, + 0x23, 0x25, 0xef, 0x40, 0xe7, 0x4d, 0x5f, 0x62, 0xd0, 0xff, 0x41, 0xcd, 0x27, 0x2f, 0x78, 0x62, + 0x28, 0x4d, 0xc2, 0xb9, 0x46, 0xe1, 0x8a, 0xe8, 0x70, 0x10, 0x99, 0x65, 0x9c, 0x40, 0x7e, 0xcb, + 0xf2, 0x6d, 0xe2, 0xbd, 0xa1, 0x75, 0x4d, 0x32, 0xe8, 0x0d, 0x3f, 0x26, 0x7c, 0x97, 0x8a, 0x5f, + 0x13, 0x2e, 0xc1, 0xca, 0xf8, 0x6b, 0x82, 0x79, 0x78, 0xb0, 0xfb, 0x68, 0x73, 0xbb, 0x7e, 0x01, + 0xad, 0xc0, 0xa2, 0x56, 0x3d, 0x68, 0xef, 0xb7, 0xf1, 0x66, 0x4f, 0xbd, 0x2b, 0x4c, 0xbf, 0x35, + 0xa4, 0xd1, 0x2a, 0x20, 0x2d, 0xeb, 0x1e, 0xee, 0xed, 0x6d, 0xe2, 0x9d, 0xc7, 0x42, 0x9e, 0x99, + 0xf9, 0x06, 0x91, 0x9d, 0x7e, 0x83, 0xc8, 0xcd, 0x7c, 0x83, 0xc8, 0x3f, 0xcc, 0x16, 0x8b, 0xf5, + 0x12, 0x2e, 0xe8, 0x97, 0xb6, 0xb5, 0xef, 0x32, 0x50, 0x8c, 0xd2, 0xe7, 0xe8, 0xd9, 0x2a, 0x95, + 0x7c, 0xb6, 0x9a, 0x7c, 0x35, 0x4b, 0xcf, 0x78, 0x35, 0x9b, 0xfd, 0x3e, 0x96, 0x99, 0xf7, 0x3e, + 0x76, 0x5b, 0xbf, 0x84, 0x65, 0x25, 0xcb, 0x2e, 0x4f, 0x25, 0xf2, 0x66, 0xcf, 0xea, 0x33, 0xf5, + 0xf4, 0xaf, 0x9e, 0xc9, 0x0c, 0x28, 0x86, 0x8c, 0x04, 0x8e, 0xc5, 0x2d, 0xfd, 0xea, 0x16, 0xb7, + 0x8d, 0x3f, 0xa4, 0x60, 0x51, 0x55, 0xad, 0xfb, 0x01, 0x1d, 0xe8, 0x0b, 0x74, 0xe3, 0xeb, 0x73, + 0x13, 0x2a, 0xf1, 0xe6, 0x95, 0x1e, 0x7b, 0xf3, 0x1a, 0x15, 0xa4, 0x4c, 0xb2, 0x20, 0x19, 0x1b, + 0x89, 0x78, 0xf9, 0x08, 0x8a, 0x51, 0x0d, 0xd0, 0x29, 0x63, 0x71, 0x6a, 0x36, 0x38, 0x86, 0x18, + 0x9f, 0x41, 0x29, 0x9e, 0xda, 0x8c, 0x3f, 0x2d, 0x2c, 0x27, 0xff, 0xb4, 0x50, 0x4a, 0xfc, 0x31, + 0x61, 0xad, 0x07, 0x95, 0xb1, 0x2a, 0x87, 0x10, 0x64, 0x65, 0xbd, 0x55, 0xbd, 0xe5, 0x6f, 0x74, + 0x1b, 0x4a, 0xd1, 0x97, 0xc4, 0x32, 0x65, 0x66, 0x5b, 0x33, 0xc2, 0xac, 0xfd, 0x31, 0x05, 0x68, + 0x14, 0xd9, 0xdb, 0x2e, 0x1b, 0x5a, 0xdc, 0x3e, 0x7e, 0xad, 0x82, 0xb4, 0x02, 0xf9, 0x13, 0x7a, + 0x34, 0x72, 0x5e, 0xee, 0x84, 0x1e, 0xed, 0x38, 0x63, 0x7e, 0xc9, 0xbc, 0xd2, 0x2f, 0x71, 0xe1, + 0xcd, 0x9e, 0xa3, 0xf0, 0xde, 0x78, 0x02, 0xd5, 0x71, 0x39, 0x7a, 0x17, 0x2e, 0x77, 0x77, 0xf6, + 0x0e, 0x77, 0x37, 0x7b, 0x3b, 0x8f, 0xf6, 0xcd, 0xbd, 0x47, 0xdb, 0x6d, 0xf3, 0x70, 0xbf, 0x7b, + 0xd0, 0xde, 0xda, 0xb9, 0xbf, 0xd3, 0x16, 0x71, 0xd7, 0x80, 0xe5, 0x49, 0x40, 0xaf, 0xfd, 0xd3, + 0x5e, 0x3d, 0x25, 0x83, 0x75, 0x42, 0xb3, 0x79, 0xb8, 0xbd, 0xf3, 0xa8, 0x9e, 0x5e, 0xff, 0x5d, + 0x0e, 0x6a, 0x9b, 0x82, 0xbb, 0xa3, 0xaf, 0x21, 0x07, 0x96, 0x14, 0xd7, 0xc6, 0xff, 0xc4, 0x31, + 0x6f, 0xe3, 0xa7, 0xb0, 0xcd, 0xa8, 0xd0, 0x7e, 0xf0, 0x2a, 0x98, 0x66, 0xd5, 0xcb, 0x14, 0xbc, + 0x1d, 0x15, 0xe4, 0x18, 0x98, 0x2c, 0xcd, 0x68, 0x7d, 0xde, 0x48, 0xd3, 0x65, 0x3c, 0xfe, 0xfa, + 0xc7, 0xaf, 0xd5, 0x47, 0x9b, 0xf2, 0x33, 0xa8, 0x3f, 0x20, 0x7c, 0x7c, 0xb6, 0x6b, 0x73, 0x06, + 0x7a, 0x40, 0x78, 0xfc, 0xb1, 0x6b, 0x67, 0x62, 0xf4, 0xe0, 0x26, 0x20, 0x51, 0x40, 0xc7, 0x10, + 0x0c, 0xcd, 0xeb, 0x2a, 0xa0, 0xf1, 0xf8, 0xef, 0x9d, 0x0d, 0xd2, 0x1f, 0x10, 0xcb, 0x25, 0x0b, + 0xcc, 0x39, 0x97, 0x4b, 0x62, 0x5f, 0xbd, 0x5c, 0x11, 0x4c, 0x7f, 0xe5, 0x19, 0x5c, 0xd2, 0xa4, + 0xd0, 0x7c, 0x4e, 0x24, 0x22, 0x74, 0x73, 0x3a, 0xbb, 0x4d, 0x65, 0xab, 0xf8, 0x8b, 0xb7, 0xce, + 0x07, 0x56, 0xdf, 0x6d, 0xdd, 0x7f, 0x7c, 0xad, 0xef, 0xf2, 0xe3, 0xf0, 0xa8, 0x69, 0xd3, 0x41, + 0xf4, 0xe7, 0x34, 0xf5, 0x07, 0x34, 0x9b, 0x7a, 0x91, 0xe0, 0xfb, 0x74, 0x65, 0xd7, 0x7d, 0x46, + 0xfe, 0x5f, 0xee, 0x09, 0x29, 0xa7, 0xff, 0x4c, 0x57, 0x75, 0xfb, 0xde, 0x3d, 0x29, 0x38, 0xca, + 0xcb, 0x2e, 0x1f, 0xff, 0x2b, 0x00, 0x00, 0xff, 0xff, 0xe2, 0xb6, 0x12, 0xa1, 0x0f, 0x27, 0x00, + 0x00, } From 1b5b2fdd119b054bd6e6bb5f831729dbdb17cbcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Mon, 3 Aug 2026 12:59:23 -0700 Subject: [PATCH 31/32] agent-simulation: entity recall, alongside recognition Recognition alone cannot separate never hearing an entity from hearing it once and then losing it. An entity is acquired at the first saying heard right; the acquired counts cover only the sayings after that, so recall measures retention. Both ears carry it: the agent's on the caller, and the caller's on the agent's voice. --- protobufs/livekit_agent_simulation.proto | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/protobufs/livekit_agent_simulation.proto b/protobufs/livekit_agent_simulation.proto index 8e413ee44..8be7ccfc1 100644 --- a/protobufs/livekit_agent_simulation.proto +++ b/protobufs/livekit_agent_simulation.proto @@ -122,6 +122,12 @@ message SimulationRun { optional float entity_recognition = 11; // recognized / uttered optional uint32 entities_uttered = 12; optional uint32 entities_recognized = 13; + // Retention: an entity is acquired at the first saying heard right, and + // these count only the sayings after that, so recall separates keeping an + // entity from ever getting it. + optional float entity_recall = 14; // acquired_recognized / acquired_uttered + optional uint32 entities_acquired_uttered = 15; + optional uint32 entities_acquired_recognized = 16; } message LLM { @@ -144,6 +150,9 @@ message SimulationRun { optional float entity_recognition = 14; // recognized / uttered optional uint32 entities_uttered = 15; optional uint32 entities_recognized = 16; + optional float entity_recall = 17; // acquired_recognized / acquired_uttered + optional uint32 entities_acquired_uttered = 18; + optional uint32 entities_acquired_recognized = 19; } // Audio only. From f205a5bc80ed264be1f80bef272ba2fa1a34680f Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 20:00:28 +0000 Subject: [PATCH 32/32] generated protobuf --- livekit/livekit_agent_simulation.pb.go | 95 ++++- livekit/livekit_agent_simulation.twirp.go | 429 +++++++++++----------- 2 files changed, 297 insertions(+), 227 deletions(-) diff --git a/livekit/livekit_agent_simulation.pb.go b/livekit/livekit_agent_simulation.pb.go index 7c2468f71..82dff485d 100644 --- a/livekit/livekit_agent_simulation.pb.go +++ b/livekit/livekit_agent_simulation.pb.go @@ -1456,8 +1456,14 @@ type SimulationRun_JobMetrics_STT struct { EntityRecognition *float32 `protobuf:"fixed32,11,opt,name=entity_recognition,json=entityRecognition,proto3,oneof" json:"entity_recognition,omitempty"` // recognized / uttered EntitiesUttered *uint32 `protobuf:"varint,12,opt,name=entities_uttered,json=entitiesUttered,proto3,oneof" json:"entities_uttered,omitempty"` EntitiesRecognized *uint32 `protobuf:"varint,13,opt,name=entities_recognized,json=entitiesRecognized,proto3,oneof" json:"entities_recognized,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Retention: an entity is acquired at the first saying heard right, and + // these count only the sayings after that, so recall separates keeping an + // entity from ever getting it. + EntityRecall *float32 `protobuf:"fixed32,14,opt,name=entity_recall,json=entityRecall,proto3,oneof" json:"entity_recall,omitempty"` // acquired_recognized / acquired_uttered + EntitiesAcquiredUttered *uint32 `protobuf:"varint,15,opt,name=entities_acquired_uttered,json=entitiesAcquiredUttered,proto3,oneof" json:"entities_acquired_uttered,omitempty"` + EntitiesAcquiredRecognized *uint32 `protobuf:"varint,16,opt,name=entities_acquired_recognized,json=entitiesAcquiredRecognized,proto3,oneof" json:"entities_acquired_recognized,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimulationRun_JobMetrics_STT) Reset() { @@ -1560,6 +1566,27 @@ func (x *SimulationRun_JobMetrics_STT) GetEntitiesRecognized() uint32 { return 0 } +func (x *SimulationRun_JobMetrics_STT) GetEntityRecall() float32 { + if x != nil && x.EntityRecall != nil { + return *x.EntityRecall + } + return 0 +} + +func (x *SimulationRun_JobMetrics_STT) GetEntitiesAcquiredUttered() uint32 { + if x != nil && x.EntitiesAcquiredUttered != nil { + return *x.EntitiesAcquiredUttered + } + return 0 +} + +func (x *SimulationRun_JobMetrics_STT) GetEntitiesAcquiredRecognized() uint32 { + if x != nil && x.EntitiesAcquiredRecognized != nil { + return *x.EntitiesAcquiredRecognized + } + return 0 +} + type SimulationRun_JobMetrics_LLM struct { state protoimpl.MessageState `protogen:"open.v1"` TtftMs *uint32 `protobuf:"varint,1,opt,name=ttft_ms,json=ttftMs,proto3,oneof" json:"ttft_ms,omitempty"` // needs the RemoteSession; time to first token @@ -1631,11 +1658,14 @@ type SimulationRun_JobMetrics_TTS struct { Chars *uint32 `protobuf:"varint,10,opt,name=chars,proto3,oneof" json:"chars,omitempty"` // needs the RemoteSession CharErrors *uint32 `protobuf:"varint,11,opt,name=char_errors,json=charErrors,proto3,oneof" json:"char_errors,omitempty"` // needs the RemoteSession // Key entities the agent said, as the caller heard them. Needs the text judge. - EntityRecognition *float32 `protobuf:"fixed32,14,opt,name=entity_recognition,json=entityRecognition,proto3,oneof" json:"entity_recognition,omitempty"` // recognized / uttered - EntitiesUttered *uint32 `protobuf:"varint,15,opt,name=entities_uttered,json=entitiesUttered,proto3,oneof" json:"entities_uttered,omitempty"` - EntitiesRecognized *uint32 `protobuf:"varint,16,opt,name=entities_recognized,json=entitiesRecognized,proto3,oneof" json:"entities_recognized,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + EntityRecognition *float32 `protobuf:"fixed32,14,opt,name=entity_recognition,json=entityRecognition,proto3,oneof" json:"entity_recognition,omitempty"` // recognized / uttered + EntitiesUttered *uint32 `protobuf:"varint,15,opt,name=entities_uttered,json=entitiesUttered,proto3,oneof" json:"entities_uttered,omitempty"` + EntitiesRecognized *uint32 `protobuf:"varint,16,opt,name=entities_recognized,json=entitiesRecognized,proto3,oneof" json:"entities_recognized,omitempty"` + EntityRecall *float32 `protobuf:"fixed32,17,opt,name=entity_recall,json=entityRecall,proto3,oneof" json:"entity_recall,omitempty"` // acquired_recognized / acquired_uttered + EntitiesAcquiredUttered *uint32 `protobuf:"varint,18,opt,name=entities_acquired_uttered,json=entitiesAcquiredUttered,proto3,oneof" json:"entities_acquired_uttered,omitempty"` + EntitiesAcquiredRecognized *uint32 `protobuf:"varint,19,opt,name=entities_acquired_recognized,json=entitiesAcquiredRecognized,proto3,oneof" json:"entities_acquired_recognized,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimulationRun_JobMetrics_TTS) Reset() { @@ -1738,6 +1768,27 @@ func (x *SimulationRun_JobMetrics_TTS) GetEntitiesRecognized() uint32 { return 0 } +func (x *SimulationRun_JobMetrics_TTS) GetEntityRecall() float32 { + if x != nil && x.EntityRecall != nil { + return *x.EntityRecall + } + return 0 +} + +func (x *SimulationRun_JobMetrics_TTS) GetEntitiesAcquiredUttered() uint32 { + if x != nil && x.EntitiesAcquiredUttered != nil { + return *x.EntitiesAcquiredUttered + } + return 0 +} + +func (x *SimulationRun_JobMetrics_TTS) GetEntitiesAcquiredRecognized() uint32 { + if x != nil && x.EntitiesAcquiredRecognized != nil { + return *x.EntitiesAcquiredRecognized + } + return 0 +} + // Audio only. type SimulationRun_JobMetrics_Conversation struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -2756,7 +2807,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\n" + "suggestion\x18\x02 \x01(\tR\n" + "suggestion\x12\x14\n" + - "\x05label\x18\x03 \x01(\tR\x05label\"\x8d=\n" + + "\x05label\x18\x03 \x01(\tR\x05label\"\x93A\n" + "\rSimulationRun\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + "\n" + @@ -2806,7 +2857,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x10STATUS_COMPLETED\x10\x02\x12\x11\n" + "\rSTATUS_FAILED\x10\x03\x12\x14\n" + "\x10STATUS_CANCELLED\x10\x04J\x04\b\t\x10\n" + - "\x1a\xbb!\n" + + "\x1a\xc1%\n" + "\n" + "JobMetrics\x12*\n" + "\x0eaccuracy_score\x18\x01 \x01(\x02H\x00R\raccuracyScore\x88\x01\x01\x12.\n" + @@ -2827,7 +2878,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\x10information_loss\x18\x10 \x01(\bH\x05R\x0finformationLoss\x88\x01\x01\x126\n" + "\x14redundant_statements\x18\x11 \x01(\bH\x06R\x13redundantStatements\x88\x01\x01\x127\n" + "\x15poor_question_quality\x18\x12 \x01(\bH\aR\x13poorQuestionQuality\x88\x01\x01\x12>\n" + - "\x18conversation_progression\x18\x13 \x01(\x02H\bR\x17conversationProgression\x88\x01\x01\x1a\x8f\x04\n" + + "\x18conversation_progression\x18\x13 \x01(\x02H\bR\x17conversationProgression\x88\x01\x01\x1a\x92\x06\n" + "\x03STT\x12\x15\n" + "\x03wer\x18\x01 \x01(\x02H\x00R\x03wer\x88\x01\x01\x12\x19\n" + "\x05words\x18\x02 \x01(\rH\x01R\x05words\x88\x01\x01\x12$\n" + @@ -2842,7 +2893,11 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "sttDelayMs\x88\x01\x01\x122\n" + "\x12entity_recognition\x18\v \x01(\x02H\aR\x11entityRecognition\x88\x01\x01\x12.\n" + "\x10entities_uttered\x18\f \x01(\rH\bR\x0fentitiesUttered\x88\x01\x01\x124\n" + - "\x13entities_recognized\x18\r \x01(\rH\tR\x12entitiesRecognized\x88\x01\x01B\x06\n" + + "\x13entities_recognized\x18\r \x01(\rH\tR\x12entitiesRecognized\x88\x01\x01\x12(\n" + + "\rentity_recall\x18\x0e \x01(\x02H\n" + + "R\fentityRecall\x88\x01\x01\x12?\n" + + "\x19entities_acquired_uttered\x18\x0f \x01(\rH\vR\x17entitiesAcquiredUttered\x88\x01\x01\x12E\n" + + "\x1centities_acquired_recognized\x18\x10 \x01(\rH\fR\x1aentitiesAcquiredRecognized\x88\x01\x01B\x06\n" + "\x04_werB\b\n" + "\x06_wordsB\x0e\n" + "\f_word_errorsB\x06\n" + @@ -2852,7 +2907,10 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\r_stt_delay_msB\x15\n" + "\x13_entity_recognitionB\x13\n" + "\x11_entities_utteredB\x16\n" + - "\x14_entities_recognized\x1a\xa0\x01\n" + + "\x14_entities_recognizedB\x10\n" + + "\x0e_entity_recallB\x1c\n" + + "\x1a_entities_acquired_utteredB\x1f\n" + + "\x1d_entities_acquired_recognized\x1a\xa0\x01\n" + "\x03LLM\x12\x1c\n" + "\attft_ms\x18\x01 \x01(\rH\x00R\x06ttftMs\x88\x01\x01\x12\x1c\n" + "\attfs_ms\x18\x02 \x01(\rH\x01R\x06ttfsMs\x88\x01\x01\x12/\n" + @@ -2861,7 +2919,7 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\b_ttft_msB\n" + "\n" + "\b_ttfs_msB\x14\n" + - "\x12_tokens_per_second\x1a\x81\x04\n" + + "\x12_tokens_per_second\x1a\x84\x06\n" + "\x03TTS\x12\x1c\n" + "\attfb_ms\x18\x02 \x01(\rH\x00R\x06ttfbMs\x88\x01\x01\x12\x15\n" + "\x03wer\x18\x03 \x01(\x02H\x01R\x03wer\x88\x01\x01\x12\x19\n" + @@ -2875,7 +2933,11 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "charErrors\x88\x01\x01\x122\n" + "\x12entity_recognition\x18\x0e \x01(\x02H\aR\x11entityRecognition\x88\x01\x01\x12.\n" + "\x10entities_uttered\x18\x0f \x01(\rH\bR\x0fentitiesUttered\x88\x01\x01\x124\n" + - "\x13entities_recognized\x18\x10 \x01(\rH\tR\x12entitiesRecognized\x88\x01\x01B\n" + + "\x13entities_recognized\x18\x10 \x01(\rH\tR\x12entitiesRecognized\x88\x01\x01\x12(\n" + + "\rentity_recall\x18\x11 \x01(\x02H\n" + + "R\fentityRecall\x88\x01\x01\x12?\n" + + "\x19entities_acquired_uttered\x18\x12 \x01(\rH\vR\x17entitiesAcquiredUttered\x88\x01\x01\x12E\n" + + "\x1centities_acquired_recognized\x18\x13 \x01(\rH\fR\x1aentitiesAcquiredRecognized\x88\x01\x01B\n" + "\n" + "\b_ttfb_msB\x06\n" + "\x04_werB\b\n" + @@ -2886,7 +2948,10 @@ const file_livekit_agent_simulation_proto_rawDesc = "" + "\f_char_errorsB\x15\n" + "\x13_entity_recognitionB\x13\n" + "\x11_entities_utteredB\x16\n" + - "\x14_entities_recognized\x1a\xf5\a\n" + + "\x14_entities_recognizedB\x10\n" + + "\x0e_entity_recallB\x1c\n" + + "\x1a_entities_acquired_utteredB\x1f\n" + + "\x1d_entities_acquired_recognized\x1a\xf5\a\n" + "\fConversation\x12/\n" + "\x11turn_taking_score\x18\x01 \x01(\x02H\x00R\x0fturnTakingScore\x88\x01\x01\x12;\n" + "\x18heard_e2e_latency_p50_ms\x18\x02 \x01(\x05H\x01R\x14heardE2eLatencyP50Ms\x88\x01\x01\x12;\n" + diff --git a/livekit/livekit_agent_simulation.twirp.go b/livekit/livekit_agent_simulation.twirp.go index 90faee36b..ea1e91970 100644 --- a/livekit/livekit_agent_simulation.twirp.go +++ b/livekit/livekit_agent_simulation.twirp.go @@ -1912,216 +1912,221 @@ func (s *agentSimulationServer) PathPrefix() string { } var twirpFileDescriptor9 = []byte{ - // 3361 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0x4b, 0x6f, 0x1b, 0xc9, - 0xb5, 0x36, 0xdf, 0xe4, 0xa1, 0xf8, 0x50, 0xe9, 0x61, 0xba, 0x3d, 0x0f, 0x5b, 0x9e, 0x87, 0xaf, - 0xed, 0xa1, 0x7d, 0x35, 0xe3, 0x99, 0x2b, 0xcf, 0xcc, 0xc5, 0x15, 0x25, 0xda, 0x94, 0xaf, 0x24, - 0x6b, 0x8a, 0x14, 0x92, 0x71, 0x10, 0x34, 0x5a, 0xdd, 0x65, 0xaa, 0xe5, 0x66, 0x17, 0xa7, 0xab, - 0xda, 0xb6, 0x06, 0xc8, 0x22, 0x3b, 0x03, 0x41, 0x10, 0xe4, 0x0f, 0x04, 0xd9, 0xcc, 0x22, 0xb3, - 0xcd, 0x32, 0x01, 0xf2, 0x1b, 0xb2, 0x09, 0x10, 0x20, 0xbf, 0x20, 0xfb, 0xd9, 0x07, 0xf5, 0xe8, - 0x66, 0xf3, 0x25, 0xcb, 0xc1, 0x78, 0x97, 0x1d, 0xeb, 0x9c, 0xaf, 0xaa, 0x4f, 0x9d, 0xfa, 0xce, - 0x39, 0xf5, 0x20, 0xbc, 0xe3, 0xb9, 0xcf, 0xc8, 0x53, 0x97, 0x9b, 0x56, 0x9f, 0xf8, 0xdc, 0x64, - 0xee, 0x20, 0xf4, 0x2c, 0xee, 0x52, 0xbf, 0x39, 0x0c, 0x28, 0xa7, 0xa8, 0xa0, 0xf5, 0xc6, 0x55, - 0x09, 0xb8, 0x3d, 0x01, 0x27, 0x8c, 0xc5, 0x58, 0xe3, 0xdd, 0x3e, 0xa5, 0x7d, 0x8f, 0xdc, 0x96, - 0xad, 0xa3, 0xf0, 0xc9, 0x6d, 0xee, 0x0e, 0x08, 0xe3, 0xd6, 0x60, 0xa8, 0x01, 0x97, 0xa2, 0xde, - 0xb6, 0x47, 0x43, 0x47, 0x8d, 0xa1, 0x55, 0xcb, 0x91, 0x6a, 0x40, 0x1d, 0xe2, 0x31, 0x25, 0x5d, - 0xfb, 0x6b, 0x06, 0x96, 0xbb, 0xb1, 0x49, 0x38, 0xf4, 0xbb, 0xe1, 0x60, 0x60, 0x05, 0xa7, 0x68, - 0x15, 0xf2, 0x43, 0x8b, 0x31, 0xe2, 0x34, 0x52, 0x57, 0x52, 0xd7, 0x73, 0x58, 0xb7, 0x84, 0xfc, - 0x89, 0xe5, 0x7a, 0xc4, 0x69, 0xa4, 0x95, 0x5c, 0xb5, 0xd0, 0xdb, 0x00, 0x7d, 0xea, 0xfa, 0x7d, - 0xf3, 0x39, 0xf1, 0xbc, 0x46, 0xe6, 0x4a, 0xea, 0x7a, 0x09, 0x97, 0xa4, 0xe4, 0x27, 0xc4, 0xf3, - 0x84, 0x9a, 0x53, 0xd3, 0x1d, 0x0c, 0x03, 0xfa, 0x8c, 0x34, 0xb2, 0x4a, 0xcd, 0xe9, 0x8e, 0x12, - 0xa0, 0xcf, 0x21, 0xef, 0x32, 0x16, 0x12, 0xd6, 0xc8, 0x5d, 0xc9, 0x5c, 0x2f, 0xaf, 0x5f, 0x6b, - 0x6a, 0x6b, 0x9b, 0xb3, 0x8c, 0x6b, 0xee, 0x08, 0x2c, 0xd6, 0x5d, 0xd0, 0x57, 0xb0, 0x60, 0x1f, - 0x5b, 0xdc, 0x3c, 0x76, 0x19, 0xa7, 0xc1, 0x69, 0x23, 0x2f, 0x87, 0x68, 0x9e, 0x3d, 0xc4, 0xd6, - 0xb1, 0xc5, 0x3b, 0xaa, 0x43, 0xdb, 0xe7, 0xc1, 0x29, 0x2e, 0xdb, 0x23, 0x89, 0xf1, 0x18, 0xea, - 0x93, 0x00, 0x54, 0x87, 0xcc, 0x53, 0x72, 0x2a, 0xdd, 0x51, 0xc2, 0xe2, 0x27, 0xba, 0x03, 0xb9, - 0x67, 0x96, 0x17, 0x12, 0xe9, 0x8a, 0xf2, 0xba, 0x11, 0x7f, 0x51, 0xf9, 0x5d, 0x8c, 0xb0, 0x45, - 0x7d, 0x4e, 0x5e, 0x70, 0xac, 0x80, 0xf7, 0xd2, 0xff, 0x93, 0x32, 0x4c, 0xc8, 0x49, 0xfb, 0xd1, - 0x15, 0x28, 0x3b, 0x84, 0xd9, 0x81, 0x3b, 0x14, 0xb6, 0xe9, 0x81, 0x93, 0x22, 0xf4, 0x0e, 0x00, - 0x0b, 0xfb, 0x7d, 0xc2, 0x24, 0x20, 0x2d, 0x01, 0x09, 0x09, 0x5a, 0x86, 0x9c, 0x67, 0x1d, 0x91, - 0xc8, 0xdf, 0xaa, 0xb1, 0xf6, 0xeb, 0x2f, 0xa1, 0x32, 0x36, 0x67, 0x54, 0x85, 0xb4, 0xeb, 0xe8, - 0x0f, 0xa4, 0x5d, 0xb9, 0x58, 0xc3, 0x80, 0x9e, 0x10, 0x9b, 0x9b, 0xae, 0xa3, 0xc7, 0x2d, 0x69, - 0xc9, 0x8e, 0x83, 0xee, 0x42, 0x9e, 0x71, 0x8b, 0x87, 0x4c, 0x8e, 0x5b, 0x5d, 0x7f, 0x7b, 0xb6, - 0x2b, 0x9b, 0x5d, 0x09, 0xc2, 0x1a, 0x8c, 0x6e, 0xc2, 0xa2, 0x22, 0x6d, 0x72, 0x56, 0x6a, 0xa9, - 0xeb, 0x52, 0xb1, 0x9d, 0x98, 0xda, 0x32, 0xe4, 0x48, 0x10, 0xd0, 0xa0, 0x91, 0x53, 0xa6, 0xcb, - 0x06, 0xda, 0x00, 0xb0, 0x03, 0x62, 0x71, 0xe2, 0x98, 0x16, 0x6f, 0xe4, 0xb5, 0x5b, 0x15, 0xeb, - 0x9b, 0x11, 0xeb, 0x9b, 0xbd, 0x88, 0xf5, 0xb8, 0xa4, 0xd1, 0x9b, 0x1c, 0x35, 0x21, 0x7b, 0x42, - 0x8f, 0x58, 0xa3, 0x20, 0x57, 0xdf, 0x98, 0x63, 0xf2, 0x43, 0x7a, 0x84, 0x25, 0x4e, 0xf8, 0x40, - 0x59, 0xeb, 0x5b, 0x03, 0xd2, 0x28, 0x29, 0x1f, 0x48, 0xc9, 0xbe, 0x35, 0x20, 0xe8, 0x4b, 0xa8, - 0x32, 0x9b, 0xf8, 0x56, 0xe0, 0x52, 0xb3, 0x1f, 0xd0, 0x70, 0xd8, 0x00, 0x69, 0xcd, 0xea, 0x68, - 0x60, 0xad, 0x7e, 0x20, 0xb4, 0xb8, 0xc2, 0x92, 0x4d, 0x74, 0x17, 0x8a, 0xc4, 0x77, 0xd4, 0x34, - 0xca, 0xaf, 0x9c, 0x46, 0x41, 0x62, 0x37, 0x39, 0xba, 0x0c, 0xa5, 0x13, 0x7a, 0x64, 0xda, 0x34, - 0xf4, 0x79, 0x63, 0x41, 0x06, 0x58, 0xf1, 0x84, 0x1e, 0x6d, 0x89, 0x36, 0xba, 0x0a, 0x0b, 0x2a, - 0x08, 0xb5, 0xbe, 0x22, 0xf5, 0x65, 0x25, 0x8b, 0x21, 0x2a, 0x1e, 0x35, 0xa4, 0xaa, 0x20, 0x4a, - 0xa6, 0x20, 0x1f, 0x42, 0xcd, 0x0f, 0x07, 0x89, 0x3c, 0xc4, 0x1a, 0x35, 0x89, 0xaa, 0xfa, 0xe1, - 0x60, 0xe4, 0x2c, 0x86, 0xd6, 0x21, 0x17, 0x32, 0xab, 0x4f, 0x1a, 0x75, 0x69, 0xff, 0x5b, 0x73, - 0x3c, 0x7a, 0x28, 0x30, 0x58, 0x41, 0x05, 0xa5, 0x6d, 0xea, 0xdb, 0x61, 0x10, 0x10, 0xdf, 0x3e, - 0x6d, 0x2c, 0xaa, 0xcf, 0x27, 0x44, 0xe8, 0x26, 0x64, 0x45, 0x02, 0x6a, 0x20, 0xc9, 0xac, 0x8b, - 0x33, 0x06, 0xdd, 0xa3, 0x0e, 0xc1, 0x12, 0x84, 0x3e, 0x87, 0xc2, 0x80, 0xf0, 0xc0, 0xb5, 0x59, - 0x63, 0x49, 0x1a, 0x71, 0x75, 0x8e, 0x11, 0x38, 0xf4, 0xf7, 0x14, 0x10, 0x47, 0x3d, 0x84, 0x2f, - 0x98, 0x0a, 0x76, 0xf3, 0x5b, 0xc6, 0x9d, 0xc6, 0xf2, 0x95, 0xd4, 0xf5, 0x05, 0x5c, 0xd6, 0xb2, - 0xc7, 0x8c, 0x3b, 0xc6, 0xdf, 0x72, 0x90, 0x79, 0x48, 0x8f, 0xa6, 0xe2, 0x63, 0x23, 0x0e, 0x80, - 0xb4, 0x34, 0xf3, 0xea, 0x7c, 0x36, 0x4d, 0x06, 0xc1, 0x1a, 0x2c, 0xb8, 0x3e, 0xe3, 0x41, 0x68, - 0x2b, 0xdf, 0xaa, 0xc8, 0x1c, 0x93, 0x8d, 0xb8, 0x9f, 0x4d, 0x72, 0xff, 0x23, 0x40, 0x8a, 0x90, - 0xe4, 0xc5, 0x90, 0xd8, 0x5c, 0xaf, 0x8d, 0x0a, 0x0f, 0x15, 0x58, 0xed, 0x84, 0x62, 0x14, 0xfb, - 0xf9, 0x44, 0xec, 0x23, 0x04, 0x59, 0x6e, 0xf5, 0x55, 0x14, 0x94, 0xb0, 0xfc, 0x2d, 0x48, 0x15, - 0x50, 0x3a, 0x50, 0x44, 0x2f, 0x4a, 0x74, 0x51, 0x08, 0x24, 0xcf, 0x37, 0x00, 0x18, 0xb7, 0x02, - 0x1d, 0x71, 0xf0, 0xea, 0x88, 0xd3, 0xe8, 0x4d, 0xfe, 0xef, 0x72, 0xfc, 0x22, 0x14, 0xa4, 0x39, - 0xae, 0x23, 0x19, 0x5e, 0xc2, 0x79, 0xd1, 0xdc, 0x71, 0xd0, 0xa7, 0x11, 0xe1, 0x2a, 0x72, 0xb0, - 0x2b, 0x67, 0x38, 0x7d, 0x8c, 0x74, 0x09, 0x96, 0x54, 0xcf, 0x64, 0xc9, 0x43, 0x7a, 0x34, 0xc9, - 0x12, 0xe3, 0xe7, 0x90, 0x93, 0x83, 0xa1, 0xeb, 0x50, 0x17, 0x99, 0xda, 0xe4, 0x61, 0xe0, 0x33, - 0x1d, 0x3e, 0xaa, 0xf4, 0x55, 0x85, 0xbc, 0x27, 0xc4, 0x2a, 0x82, 0x6e, 0xc0, 0xa2, 0x15, 0x3a, - 0x2e, 0x1d, 0x83, 0xaa, 0x6a, 0x58, 0x93, 0x8a, 0x11, 0x76, 0x8d, 0x42, 0x5e, 0x11, 0x04, 0x21, - 0xa8, 0x76, 0x7b, 0x9b, 0xbd, 0xc3, 0xae, 0x79, 0xd0, 0xde, 0xdf, 0xde, 0xd9, 0x7f, 0x50, 0xbf, - 0x90, 0x90, 0xe1, 0xc3, 0xfd, 0x7d, 0x21, 0x4b, 0xa1, 0x65, 0xa8, 0x6b, 0xd9, 0xd6, 0xa3, 0xbd, - 0x83, 0xdd, 0x76, 0xaf, 0xbd, 0x5d, 0x4f, 0xa3, 0x45, 0xa8, 0x68, 0xe9, 0xfd, 0xcd, 0x9d, 0xdd, - 0xf6, 0x76, 0x3d, 0x93, 0x04, 0x6e, 0xee, 0x6f, 0xb5, 0x77, 0x85, 0x34, 0xfb, 0x30, 0x5b, 0x2c, - 0xd5, 0xc1, 0xf8, 0xd3, 0x55, 0x80, 0xd1, 0x6c, 0xd1, 0x0d, 0xa8, 0x5a, 0xb6, 0x1d, 0x06, 0x96, - 0x7d, 0x6a, 0x32, 0x9b, 0x06, 0x44, 0xce, 0x2c, 0xdd, 0xb9, 0x80, 0x2b, 0x91, 0xbc, 0x2b, 0xc4, - 0x2f, 0x53, 0x29, 0xd4, 0x84, 0xba, 0x20, 0x60, 0xe0, 0x12, 0xdf, 0x26, 0x1a, 0x9d, 0x96, 0xe8, - 0x14, 0xae, 0x8d, 0x34, 0x31, 0xfe, 0x16, 0xd4, 0xb8, 0xc5, 0x9e, 0x9a, 0x36, 0x1d, 0x0c, 0x3d, - 0x22, 0x73, 0x7e, 0x46, 0xc2, 0xd3, 0xb8, 0x2a, 0x14, 0x5b, 0xb1, 0x5c, 0xa0, 0x3f, 0x83, 0x0c, - 0xe3, 0x5c, 0x12, 0xbf, 0xbc, 0xfe, 0xfe, 0x2b, 0xd7, 0xa9, 0xd9, 0xed, 0xf5, 0xb0, 0xe8, 0x21, - 0x3a, 0x7a, 0xde, 0x40, 0x86, 0xc3, 0xb9, 0x3a, 0xee, 0xee, 0xee, 0x61, 0xd1, 0x43, 0x74, 0xe4, - 0x9c, 0xe9, 0x5a, 0x72, 0x8e, 0x8e, 0xbd, 0x5e, 0x17, 0x8b, 0x1e, 0x08, 0xc3, 0x82, 0x4d, 0xfd, - 0x67, 0x24, 0x60, 0x12, 0xd6, 0x28, 0xc8, 0x11, 0x9a, 0xaf, 0x1e, 0x61, 0x2b, 0xd1, 0x0b, 0x8f, - 0x8d, 0x81, 0xbe, 0x80, 0x9c, 0x24, 0x4d, 0xa3, 0x24, 0xab, 0xd4, 0x07, 0xe7, 0x30, 0x27, 0x0c, - 0x7c, 0xac, 0x3a, 0xa1, 0x77, 0xa1, 0x7c, 0x12, 0x3a, 0x7d, 0xa2, 0xb6, 0x70, 0x32, 0x58, 0x4b, - 0x18, 0xa4, 0x48, 0x24, 0x4d, 0x0f, 0xdd, 0x02, 0x74, 0x6c, 0x31, 0x33, 0x20, 0x03, 0xca, 0x49, - 0xb4, 0x77, 0x94, 0x51, 0x56, 0xc4, 0xf5, 0x63, 0x8b, 0x61, 0xa9, 0xe8, 0x2a, 0x39, 0xba, 0x01, - 0x69, 0x7e, 0x47, 0x07, 0xdb, 0x59, 0x91, 0x9b, 0xe6, 0x77, 0xd0, 0xfb, 0x2a, 0xb1, 0xbb, 0x8c, - 0xf8, 0x84, 0xa9, 0x38, 0x4b, 0x77, 0x32, 0x38, 0x29, 0x14, 0xcb, 0xbb, 0x01, 0xab, 0xa1, 0xef, - 0x13, 0x9b, 0x30, 0x26, 0xf2, 0x2e, 0xa7, 0xd4, 0x33, 0x6d, 0xcb, 0xf3, 0x54, 0x8d, 0x29, 0x76, - 0xb2, 0x78, 0x39, 0xa1, 0xef, 0x51, 0xea, 0x6d, 0x09, 0xad, 0xe6, 0x9d, 0xeb, 0x3f, 0xa1, 0xc1, - 0x40, 0x7a, 0xc1, 0xf4, 0x28, 0x63, 0xb2, 0xf2, 0x14, 0x3b, 0x39, 0x5c, 0x4b, 0x68, 0x76, 0xa9, - 0xfa, 0xd4, 0xa7, 0xb0, 0x1c, 0x10, 0x27, 0xf4, 0x1d, 0x4b, 0x6c, 0x93, 0xb9, 0xc5, 0xc9, 0x80, - 0xf8, 0x9c, 0xc9, 0x9a, 0x53, 0xec, 0xe4, 0xf1, 0x52, 0xac, 0xed, 0xc6, 0x4a, 0xc5, 0xc0, 0x95, - 0x21, 0xa5, 0x81, 0xf9, 0x4d, 0xa8, 0x36, 0x51, 0xe6, 0x37, 0xa1, 0xe5, 0xb9, 0xfc, 0x54, 0x56, - 0xa4, 0x62, 0xa7, 0x80, 0x97, 0x84, 0xfa, 0x2b, 0xad, 0xfd, 0x4a, 0x29, 0x45, 0xc7, 0xff, 0x85, - 0x46, 0x72, 0x2d, 0xcd, 0x61, 0x40, 0xfb, 0x81, 0x76, 0xf1, 0x92, 0xf4, 0x47, 0x11, 0x5f, 0x4c, - 0x22, 0x0e, 0x46, 0x80, 0x97, 0xa9, 0x94, 0xf1, 0x9b, 0x2c, 0x64, 0xba, 0xbd, 0x1e, 0x5a, 0x81, - 0xcc, 0x73, 0x12, 0xc4, 0x11, 0x28, 0x1a, 0x62, 0xf8, 0x4b, 0x90, 0x7b, 0x4e, 0x03, 0x47, 0x95, - 0x9c, 0x4a, 0x27, 0x85, 0x55, 0x53, 0xa8, 0xde, 0x83, 0xb2, 0xf8, 0x6d, 0xca, 0x3a, 0xa1, 0x4a, - 0x4a, 0xa5, 0x93, 0xc6, 0x20, 0x84, 0x6d, 0x29, 0x13, 0xa8, 0x15, 0xc8, 0xd8, 0x44, 0xd5, 0x14, - 0xb1, 0x34, 0xa2, 0xa1, 0xc7, 0xb5, 0x8f, 0xad, 0x80, 0xc9, 0x2d, 0x4e, 0xa5, 0x93, 0xc5, 0xaa, - 0xa9, 0xc7, 0x15, 0xbf, 0xa3, 0x71, 0x41, 0x02, 0x72, 0x18, 0x84, 0x70, 0x34, 0xee, 0xfb, 0xb0, - 0xc0, 0xb8, 0xd8, 0xd4, 0x79, 0xd6, 0xa9, 0x39, 0x60, 0xb2, 0x82, 0x54, 0x3a, 0x79, 0x0c, 0x8c, - 0xf3, 0x6d, 0x21, 0xdc, 0x93, 0xb0, 0x75, 0x40, 0xc4, 0xe7, 0x2e, 0x3f, 0x35, 0x03, 0x62, 0xd3, - 0xbe, 0xef, 0xca, 0xa0, 0x29, 0x4b, 0x6b, 0x0a, 0x78, 0x51, 0xe9, 0xf0, 0x48, 0x15, 0xe5, 0x1a, - 0x21, 0x77, 0x09, 0x33, 0x43, 0xce, 0x49, 0x40, 0x54, 0x4d, 0xa8, 0x74, 0x8a, 0xb8, 0x16, 0x69, - 0x0e, 0x95, 0x42, 0xe0, 0x3f, 0x81, 0xa5, 0x18, 0xaf, 0xbf, 0xf2, 0x2d, 0x71, 0x24, 0x85, 0x2b, - 0x9d, 0x12, 0x46, 0x91, 0x12, 0xc7, 0xba, 0x97, 0xa9, 0x54, 0x2b, 0x0f, 0x59, 0xf3, 0x39, 0x09, - 0x5a, 0x45, 0xc8, 0x9b, 0xd2, 0xa7, 0xad, 0x2a, 0x2c, 0x98, 0x09, 0x8f, 0x4a, 0x84, 0xad, 0x11, - 0xd2, 0x3b, 0x12, 0x91, 0xf0, 0x4d, 0xab, 0x06, 0x15, 0x33, 0xe9, 0x85, 0xd6, 0x0a, 0x2c, 0x99, - 0xd3, 0xf3, 0x6d, 0x2d, 0xc1, 0xa2, 0x39, 0x39, 0xa5, 0xd6, 0x2a, 0x2c, 0x9b, 0x33, 0xec, 0x36, - 0x7e, 0x9f, 0x82, 0xcc, 0xee, 0xee, 0x1e, 0x7a, 0x0b, 0x0a, 0x9c, 0x3f, 0xe1, 0xc2, 0xb9, 0x29, - 0x39, 0x95, 0x0b, 0x38, 0x2f, 0x04, 0xca, 0xb1, 0x4a, 0xcb, 0x84, 0x36, 0xa2, 0x86, 0xd0, 0x32, - 0xa5, 0xbd, 0x0d, 0x8b, 0x9c, 0x3e, 0x25, 0x3e, 0x33, 0x87, 0x24, 0x30, 0x19, 0xb1, 0xa9, 0xef, - 0xc4, 0x09, 0xb8, 0xa6, 0x54, 0x07, 0x24, 0xe8, 0x4a, 0x85, 0xf0, 0x06, 0x40, 0xd1, 0xd4, 0x5f, - 0x8b, 0x7e, 0x8b, 0xb1, 0x5b, 0xcb, 0x80, 0xcc, 0xa9, 0x91, 0x8c, 0x5f, 0x66, 0x21, 0xd3, 0xeb, - 0x75, 0xb5, 0x11, 0x47, 0x23, 0x23, 0x94, 0x89, 0x47, 0x7b, 0x11, 0xf5, 0x04, 0xa5, 0x33, 0xba, - 0x4c, 0x4c, 0x51, 0xba, 0xa0, 0x19, 0x3b, 0x97, 0xd2, 0x8a, 0x53, 0x99, 0x39, 0x94, 0x2e, 0xc9, - 0x71, 0xb3, 0xd3, 0x94, 0x8e, 0x18, 0x3b, 0x97, 0xd2, 0xe5, 0x88, 0xab, 0xe3, 0x94, 0x9e, 0xcd, - 0xd5, 0xea, 0x6b, 0x73, 0xb5, 0xf6, 0xfa, 0x5c, 0xad, 0x9f, 0xcd, 0x55, 0xbd, 0x22, 0xc2, 0xd1, - 0x3f, 0x0a, 0x6f, 0x7f, 0x0c, 0x9a, 0xfe, 0x50, 0x80, 0x85, 0x64, 0x4d, 0x93, 0x9c, 0x0b, 0x03, - 0xdf, 0xe4, 0xd6, 0x53, 0x71, 0xe2, 0x1f, 0xdf, 0x51, 0xd4, 0x84, 0xaa, 0x27, 0x35, 0xf1, 0x1e, - 0xe1, 0x73, 0x68, 0x1c, 0x13, 0x4b, 0xd8, 0xbd, 0x4e, 0x4c, 0xcf, 0xe2, 0xe2, 0x24, 0x60, 0x0e, - 0xef, 0xde, 0x89, 0xe8, 0x94, 0xeb, 0xa4, 0xf0, 0xb2, 0x44, 0xb4, 0xd7, 0xc9, 0xae, 0xd2, 0x1f, - 0xdc, 0xbd, 0xa3, 0xc8, 0x35, 0xbb, 0xf3, 0xc6, 0x5d, 0xd1, 0x39, 0x23, 0x3b, 0xa7, 0xa7, 0x3b, - 0x6f, 0xdc, 0x3d, 0xb3, 0xf3, 0x86, 0xe8, 0x9c, 0x95, 0x9d, 0x33, 0x33, 0x3a, 0x6f, 0xa8, 0xce, - 0xb7, 0xa0, 0xce, 0xdd, 0x01, 0x31, 0x39, 0x35, 0x4f, 0x5d, 0xe2, 0x39, 0xa2, 0x53, 0x4e, 0x67, - 0xd1, 0x8a, 0xd0, 0xf4, 0xe8, 0xd7, 0x42, 0x1e, 0x7d, 0xea, 0x22, 0xa1, 0xdc, 0x1c, 0xb8, 0x6c, - 0x18, 0x10, 0xc7, 0x95, 0x7b, 0x7d, 0xbd, 0x39, 0xcc, 0x6b, 0x9e, 0xae, 0x10, 0xca, 0xf7, 0x92, - 0x7a, 0xb9, 0x49, 0x14, 0x9d, 0xaf, 0x43, 0x85, 0x3e, 0x23, 0x81, 0x67, 0x0d, 0xcd, 0x40, 0x38, - 0x59, 0x86, 0x4c, 0xba, 0x93, 0xc7, 0x0b, 0x5a, 0x8c, 0x85, 0x54, 0x07, 0x7c, 0x84, 0x64, 0x43, - 0x42, 0xec, 0xe3, 0x51, 0x4e, 0x2e, 0xe0, 0x9a, 0x56, 0x75, 0xa5, 0x46, 0xd9, 0x75, 0x13, 0x6a, - 0x9c, 0x72, 0xcb, 0x4b, 0xc0, 0x4b, 0x9a, 0xb7, 0x15, 0xa9, 0x48, 0x82, 0x3f, 0x83, 0x15, 0xeb, - 0xf9, 0xd3, 0xe7, 0xc2, 0x63, 0xcc, 0xf5, 0xe4, 0x16, 0x50, 0x4d, 0xa1, 0xac, 0x79, 0xbb, 0xa4, - 0xd5, 0x5d, 0xa5, 0x8d, 0x27, 0xd0, 0x84, 0x7a, 0xe8, 0x5b, 0x3e, 0x7b, 0x2e, 0xa8, 0xa4, 0x76, - 0xc6, 0x3a, 0x95, 0x03, 0xae, 0x8d, 0x34, 0x72, 0x6b, 0x2c, 0xf0, 0x5f, 0x42, 0xe3, 0x89, 0xe5, - 0x31, 0x62, 0xba, 0x3e, 0x27, 0x41, 0x10, 0x0e, 0x13, 0xee, 0x52, 0xf9, 0xbc, 0x8c, 0x57, 0x25, - 0x62, 0x27, 0x01, 0x88, 0x3f, 0xf7, 0x5f, 0x50, 0x4d, 0xae, 0xe8, 0x80, 0xe9, 0x58, 0x5c, 0xc0, - 0x0b, 0x24, 0x5e, 0x48, 0x39, 0x25, 0x95, 0xd8, 0x26, 0xe9, 0xda, 0xba, 0x0c, 0x97, 0xcc, 0x79, - 0x9c, 0x9c, 0xa7, 0x94, 0x9c, 0x9b, 0xab, 0x14, 0x9c, 0x92, 0x81, 0x35, 0xc9, 0x99, 0x96, 0x01, - 0x0d, 0x73, 0x0e, 0x35, 0x5a, 0x75, 0xa8, 0x9a, 0x63, 0x2b, 0x2f, 0xed, 0x9d, 0x5a, 0xe1, 0x16, - 0x82, 0xba, 0x39, 0xb1, 0x8c, 0xad, 0x06, 0xac, 0x9a, 0x33, 0x57, 0x4b, 0x9a, 0x31, 0xb9, 0x1c, - 0xd2, 0xf0, 0x79, 0x3e, 0x6f, 0x2d, 0x42, 0xcd, 0x1c, 0xf7, 0xa8, 0xf1, 0x7d, 0x01, 0xb2, 0x62, - 0xbd, 0xc4, 0x51, 0xd3, 0xf5, 0x1d, 0xf2, 0x42, 0x55, 0x27, 0xac, 0x1a, 0xe2, 0x24, 0x1f, 0x50, - 0x8f, 0xe8, 0x23, 0xf2, 0xc5, 0x19, 0x97, 0x5f, 0x98, 0x7a, 0x04, 0x4b, 0x10, 0x7a, 0x07, 0x8a, - 0xf2, 0xe0, 0x18, 0x05, 0xad, 0x28, 0x20, 0x05, 0x29, 0x51, 0xbc, 0x33, 0x20, 0x4f, 0x7c, 0x27, - 0x8a, 0x4a, 0xb9, 0xfd, 0x21, 0xbe, 0x0e, 0xac, 0xc9, 0x0d, 0x48, 0x2e, 0xda, 0xff, 0x8c, 0x6f, - 0x40, 0xae, 0x41, 0xd9, 0xf3, 0x06, 0x51, 0x6d, 0xd3, 0x31, 0x97, 0xc1, 0x25, 0xcf, 0x1b, 0xf4, - 0xe2, 0x62, 0x3a, 0x02, 0xc9, 0x82, 0x5a, 0xd0, 0xd1, 0xac, 0x41, 0x2c, 0xae, 0xb8, 0x12, 0x34, - 0x54, 0x81, 0x95, 0xee, 0xe4, 0x70, 0x5e, 0x00, 0x86, 0xd1, 0x10, 0x9c, 0xb3, 0x28, 0x4b, 0xeb, - 0x58, 0xca, 0xe3, 0x12, 0xe7, 0xac, 0x17, 0x57, 0xc4, 0x69, 0x7e, 0x82, 0x0e, 0xd1, 0x49, 0x7e, - 0xa2, 0x4f, 0x60, 0x79, 0x9a, 0x4e, 0x03, 0x55, 0xbb, 0x72, 0x9d, 0x22, 0x5e, 0x9c, 0x48, 0x4f, - 0xf3, 0x73, 0xd3, 0x82, 0x8e, 0xd1, 0xe9, 0xdc, 0x34, 0x33, 0x63, 0x57, 0xe4, 0xdc, 0x60, 0x66, - 0xc6, 0x9e, 0xb9, 0xdf, 0x2f, 0x4f, 0xed, 0xf7, 0xef, 0xc0, 0xe2, 0x14, 0xb1, 0xf5, 0x56, 0x7f, - 0x01, 0xd7, 0x27, 0xb3, 0x9d, 0x3e, 0x2e, 0x4e, 0x50, 0x56, 0xef, 0xf2, 0x2b, 0xb8, 0x3a, 0x9e, - 0x5a, 0x94, 0xaf, 0x61, 0x44, 0x63, 0xbd, 0xb5, 0xaf, 0xe2, 0x84, 0x4c, 0x04, 0x78, 0x19, 0x4a, - 0x66, 0x44, 0xae, 0x56, 0x09, 0x0a, 0xa6, 0x62, 0xd2, 0xf4, 0x9e, 0x4d, 0x14, 0xc7, 0x04, 0x45, - 0x92, 0x6d, 0x16, 0x6d, 0x87, 0xf4, 0xc2, 0x4b, 0x5d, 0x62, 0x99, 0x67, 0xc4, 0x47, 0xeb, 0x22, - 0xac, 0x98, 0xb3, 0x56, 0x6e, 0x76, 0x12, 0x98, 0x9d, 0x86, 0x64, 0xbd, 0x1e, 0xf9, 0x54, 0xa2, - 0xa6, 0x3c, 0x2a, 0x83, 0x7f, 0xc2, 0x6b, 0xad, 0x0a, 0x94, 0x13, 0x21, 0x2e, 0xed, 0x1b, 0x3f, - 0xe3, 0xab, 0x22, 0x3f, 0x71, 0x94, 0x57, 0x79, 0x64, 0xfc, 0xbc, 0x3e, 0x65, 0xc4, 0x25, 0xb8, - 0x68, 0xce, 0x3e, 0xc6, 0xc9, 0x31, 0x27, 0x8f, 0x69, 0xd2, 0x11, 0xb3, 0xce, 0x62, 0x32, 0x41, - 0xcd, 0x3c, 0x6c, 0xc9, 0x5c, 0x34, 0xef, 0x34, 0x65, 0xfc, 0x3d, 0x03, 0x30, 0xba, 0xd1, 0x7b, - 0xa3, 0xb7, 0x17, 0xff, 0x0d, 0x28, 0xbe, 0xe6, 0x1d, 0x5a, 0x8c, 0x89, 0x1c, 0x4c, 0xe2, 0xfd, - 0x73, 0x3d, 0xd2, 0x1d, 0x58, 0x8c, 0x61, 0x8b, 0x93, 0xff, 0x5c, 0x61, 0x9c, 0x9b, 0x68, 0x62, - 0xe7, 0x39, 0xed, 0x5a, 0xe3, 0x87, 0x0c, 0xe4, 0xb7, 0xe4, 0xa5, 0xbd, 0xf1, 0x8f, 0x34, 0x14, - 0x30, 0x91, 0xd4, 0x98, 0x78, 0x91, 0x48, 0x4d, 0xbe, 0x48, 0x8c, 0x5f, 0xd6, 0xa7, 0x27, 0x2f, - 0xeb, 0x67, 0xdc, 0x69, 0x67, 0x67, 0xde, 0x69, 0xaf, 0x42, 0x3e, 0x20, 0x7d, 0xe1, 0x8a, 0xbc, - 0xbe, 0x7a, 0x94, 0x2d, 0xd4, 0x9a, 0xba, 0xed, 0x2f, 0x9c, 0x75, 0xdb, 0x2f, 0xa8, 0x37, 0x76, - 0xdf, 0x9f, 0x48, 0x99, 0xd1, 0xdd, 0x77, 0x51, 0xef, 0x6b, 0x93, 0x42, 0xb5, 0x1d, 0x53, 0x17, - 0xe0, 0xa5, 0x73, 0x5c, 0x80, 0x4b, 0x67, 0x8f, 0x1b, 0x16, 0x07, 0xab, 0x1e, 0xf2, 0x61, 0xb6, - 0x98, 0xa9, 0x67, 0xf1, 0xf4, 0xcb, 0x8b, 0xf1, 0xab, 0x14, 0x14, 0x31, 0x61, 0x43, 0xea, 0x33, - 0x82, 0x6e, 0xc0, 0xe2, 0xc8, 0x3b, 0x66, 0x10, 0xfa, 0x23, 0x37, 0xd7, 0x58, 0x92, 0x05, 0x3b, - 0x0e, 0xea, 0xc2, 0xea, 0x30, 0x20, 0xcc, 0xed, 0xfb, 0xc4, 0x31, 0x87, 0x94, 0x71, 0x33, 0x50, - 0xab, 0xa4, 0xdf, 0xb9, 0x46, 0xcf, 0x41, 0x07, 0x11, 0xec, 0x80, 0x32, 0xae, 0x97, 0x12, 0x2f, - 0x0f, 0x67, 0x48, 0xc5, 0x59, 0x77, 0x69, 0x8b, 0xfa, 0x4f, 0xdc, 0x60, 0xd0, 0xa5, 0x61, 0x60, - 0x93, 0xc3, 0xa1, 0x47, 0x2d, 0xc7, 0xf8, 0xc5, 0xb9, 0x39, 0x30, 0x73, 0x0a, 0xe9, 0xd9, 0x53, - 0xf8, 0x10, 0x6a, 0x36, 0x75, 0x88, 0x38, 0xce, 0x04, 0xa7, 0x43, 0xea, 0xfa, 0x5c, 0x5f, 0xc4, - 0x57, 0x85, 0xb8, 0x1d, 0x4b, 0x0d, 0x18, 0xf9, 0xc8, 0xf8, 0x6d, 0x0a, 0x32, 0x0f, 0x08, 0x37, - 0x7a, 0x6f, 0xc2, 0x24, 0xe3, 0x93, 0xc4, 0x6a, 0x5c, 0x87, 0x4c, 0x10, 0xaa, 0x17, 0xbf, 0x31, - 0x8e, 0x25, 0xbb, 0x60, 0x01, 0x31, 0xfe, 0x92, 0x86, 0xec, 0xae, 0xcb, 0xb8, 0xf1, 0xe7, 0xd4, - 0xb9, 0xad, 0xba, 0x37, 0xf1, 0x7a, 0x71, 0xf6, 0xf3, 0x9d, 0x38, 0xc9, 0x2b, 0xb8, 0x60, 0xe7, - 0x17, 0x00, 0x43, 0xab, 0x4f, 0xd4, 0x4d, 0x80, 0xf4, 0x59, 0x79, 0xbd, 0x11, 0xf7, 0xef, 0x09, - 0xe9, 0x81, 0xd5, 0x77, 0x7d, 0x39, 0x48, 0x27, 0x85, 0x4b, 0x02, 0x2d, 0xc5, 0xa2, 0x12, 0x8b, - 0xe2, 0xab, 0xc6, 0x92, 0xe5, 0x69, 0x34, 0x92, 0xf1, 0x62, 0x8c, 0x8b, 0xd9, 0x20, 0xf4, 0x59, - 0x23, 0x25, 0xef, 0x40, 0xe7, 0x4d, 0x5f, 0x62, 0xd0, 0xff, 0x41, 0xcd, 0x27, 0x2f, 0x78, 0x62, - 0x28, 0x4d, 0xc2, 0xb9, 0x46, 0xe1, 0x8a, 0xe8, 0x70, 0x10, 0x99, 0x65, 0x9c, 0x40, 0x7e, 0xcb, - 0xf2, 0x6d, 0xe2, 0xbd, 0xa1, 0x75, 0x4d, 0x32, 0xe8, 0x0d, 0x3f, 0x26, 0x7c, 0x97, 0x8a, 0x5f, - 0x13, 0x2e, 0xc1, 0xca, 0xf8, 0x6b, 0x82, 0x79, 0x78, 0xb0, 0xfb, 0x68, 0x73, 0xbb, 0x7e, 0x01, - 0xad, 0xc0, 0xa2, 0x56, 0x3d, 0x68, 0xef, 0xb7, 0xf1, 0x66, 0x4f, 0xbd, 0x2b, 0x4c, 0xbf, 0x35, - 0xa4, 0xd1, 0x2a, 0x20, 0x2d, 0xeb, 0x1e, 0xee, 0xed, 0x6d, 0xe2, 0x9d, 0xc7, 0x42, 0x9e, 0x99, - 0xf9, 0x06, 0x91, 0x9d, 0x7e, 0x83, 0xc8, 0xcd, 0x7c, 0x83, 0xc8, 0x3f, 0xcc, 0x16, 0x8b, 0xf5, - 0x12, 0x2e, 0xe8, 0x97, 0xb6, 0xb5, 0xef, 0x32, 0x50, 0x8c, 0xd2, 0xe7, 0xe8, 0xd9, 0x2a, 0x95, - 0x7c, 0xb6, 0x9a, 0x7c, 0x35, 0x4b, 0xcf, 0x78, 0x35, 0x9b, 0xfd, 0x3e, 0x96, 0x99, 0xf7, 0x3e, - 0x76, 0x5b, 0xbf, 0x84, 0x65, 0x25, 0xcb, 0x2e, 0x4f, 0x25, 0xf2, 0x66, 0xcf, 0xea, 0x33, 0xf5, - 0xf4, 0xaf, 0x9e, 0xc9, 0x0c, 0x28, 0x86, 0x8c, 0x04, 0x8e, 0xc5, 0x2d, 0xfd, 0xea, 0x16, 0xb7, - 0x8d, 0x3f, 0xa4, 0x60, 0x51, 0x55, 0xad, 0xfb, 0x01, 0x1d, 0xe8, 0x0b, 0x74, 0xe3, 0xeb, 0x73, - 0x13, 0x2a, 0xf1, 0xe6, 0x95, 0x1e, 0x7b, 0xf3, 0x1a, 0x15, 0xa4, 0x4c, 0xb2, 0x20, 0x19, 0x1b, - 0x89, 0x78, 0xf9, 0x08, 0x8a, 0x51, 0x0d, 0xd0, 0x29, 0x63, 0x71, 0x6a, 0x36, 0x38, 0x86, 0x18, - 0x9f, 0x41, 0x29, 0x9e, 0xda, 0x8c, 0x3f, 0x2d, 0x2c, 0x27, 0xff, 0xb4, 0x50, 0x4a, 0xfc, 0x31, - 0x61, 0xad, 0x07, 0x95, 0xb1, 0x2a, 0x87, 0x10, 0x64, 0x65, 0xbd, 0x55, 0xbd, 0xe5, 0x6f, 0x74, - 0x1b, 0x4a, 0xd1, 0x97, 0xc4, 0x32, 0x65, 0x66, 0x5b, 0x33, 0xc2, 0xac, 0xfd, 0x31, 0x05, 0x68, - 0x14, 0xd9, 0xdb, 0x2e, 0x1b, 0x5a, 0xdc, 0x3e, 0x7e, 0xad, 0x82, 0xb4, 0x02, 0xf9, 0x13, 0x7a, - 0x34, 0x72, 0x5e, 0xee, 0x84, 0x1e, 0xed, 0x38, 0x63, 0x7e, 0xc9, 0xbc, 0xd2, 0x2f, 0x71, 0xe1, - 0xcd, 0x9e, 0xa3, 0xf0, 0xde, 0x78, 0x02, 0xd5, 0x71, 0x39, 0x7a, 0x17, 0x2e, 0x77, 0x77, 0xf6, - 0x0e, 0x77, 0x37, 0x7b, 0x3b, 0x8f, 0xf6, 0xcd, 0xbd, 0x47, 0xdb, 0x6d, 0xf3, 0x70, 0xbf, 0x7b, - 0xd0, 0xde, 0xda, 0xb9, 0xbf, 0xd3, 0x16, 0x71, 0xd7, 0x80, 0xe5, 0x49, 0x40, 0xaf, 0xfd, 0xd3, - 0x5e, 0x3d, 0x25, 0x83, 0x75, 0x42, 0xb3, 0x79, 0xb8, 0xbd, 0xf3, 0xa8, 0x9e, 0x5e, 0xff, 0x5d, - 0x0e, 0x6a, 0x9b, 0x82, 0xbb, 0xa3, 0xaf, 0x21, 0x07, 0x96, 0x14, 0xd7, 0xc6, 0xff, 0xc4, 0x31, - 0x6f, 0xe3, 0xa7, 0xb0, 0xcd, 0xa8, 0xd0, 0x7e, 0xf0, 0x2a, 0x98, 0x66, 0xd5, 0xcb, 0x14, 0xbc, - 0x1d, 0x15, 0xe4, 0x18, 0x98, 0x2c, 0xcd, 0x68, 0x7d, 0xde, 0x48, 0xd3, 0x65, 0x3c, 0xfe, 0xfa, - 0xc7, 0xaf, 0xd5, 0x47, 0x9b, 0xf2, 0x33, 0xa8, 0x3f, 0x20, 0x7c, 0x7c, 0xb6, 0x6b, 0x73, 0x06, - 0x7a, 0x40, 0x78, 0xfc, 0xb1, 0x6b, 0x67, 0x62, 0xf4, 0xe0, 0x26, 0x20, 0x51, 0x40, 0xc7, 0x10, - 0x0c, 0xcd, 0xeb, 0x2a, 0xa0, 0xf1, 0xf8, 0xef, 0x9d, 0x0d, 0xd2, 0x1f, 0x10, 0xcb, 0x25, 0x0b, - 0xcc, 0x39, 0x97, 0x4b, 0x62, 0x5f, 0xbd, 0x5c, 0x11, 0x4c, 0x7f, 0xe5, 0x19, 0x5c, 0xd2, 0xa4, - 0xd0, 0x7c, 0x4e, 0x24, 0x22, 0x74, 0x73, 0x3a, 0xbb, 0x4d, 0x65, 0xab, 0xf8, 0x8b, 0xb7, 0xce, - 0x07, 0x56, 0xdf, 0x6d, 0xdd, 0x7f, 0x7c, 0xad, 0xef, 0xf2, 0xe3, 0xf0, 0xa8, 0x69, 0xd3, 0x41, - 0xf4, 0xe7, 0x34, 0xf5, 0x07, 0x34, 0x9b, 0x7a, 0x91, 0xe0, 0xfb, 0x74, 0x65, 0xd7, 0x7d, 0x46, - 0xfe, 0x5f, 0xee, 0x09, 0x29, 0xa7, 0xff, 0x4c, 0x57, 0x75, 0xfb, 0xde, 0x3d, 0x29, 0x38, 0xca, - 0xcb, 0x2e, 0x1f, 0xff, 0x2b, 0x00, 0x00, 0xff, 0xff, 0xe2, 0xb6, 0x12, 0xa1, 0x0f, 0x27, 0x00, - 0x00, + // 3454 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x1b, 0x49, + 0x76, 0x37, 0xbf, 0xc9, 0xc7, 0x4f, 0x95, 0x28, 0x89, 0xee, 0xb1, 0xc7, 0xb6, 0xbc, 0xde, 0x75, + 0x6c, 0x2f, 0xed, 0x68, 0xc7, 0x3b, 0x91, 0x67, 0x37, 0x89, 0x28, 0xd1, 0xa6, 0x1c, 0x49, 0xd6, + 0x14, 0x29, 0x24, 0xeb, 0x20, 0x68, 0xb4, 0xba, 0xcb, 0x54, 0xcb, 0xcd, 0x2e, 0x4e, 0x57, 0xb5, + 0x6d, 0x2d, 0x90, 0x5b, 0x0e, 0x03, 0xe4, 0x94, 0xe4, 0x1e, 0xe4, 0xb2, 0x87, 0xec, 0x35, 0xd7, + 0x00, 0x41, 0xfe, 0x84, 0x5c, 0x02, 0x04, 0xc8, 0x5f, 0x90, 0xfb, 0xde, 0x83, 0xfa, 0xe8, 0x66, + 0xf3, 0x4b, 0x96, 0x17, 0x63, 0x20, 0x87, 0xdc, 0xd8, 0xef, 0xfd, 0xea, 0xd5, 0xeb, 0x57, 0xef, + 0x57, 0xaf, 0xaa, 0x1f, 0xe1, 0x4b, 0xcf, 0x7d, 0x47, 0xde, 0xba, 0xdc, 0xb4, 0x86, 0xc4, 0xe7, + 0x26, 0x73, 0x47, 0xa1, 0x67, 0x71, 0x97, 0xfa, 0xed, 0x71, 0x40, 0x39, 0x45, 0x05, 0xad, 0x37, + 0xee, 0x48, 0xc0, 0xe3, 0x19, 0x38, 0x61, 0x2c, 0xc6, 0x1a, 0xb7, 0x86, 0x94, 0x0e, 0x3d, 0xf2, + 0x58, 0x3e, 0x9d, 0x86, 0x6f, 0x1e, 0x73, 0x77, 0x44, 0x18, 0xb7, 0x46, 0x63, 0x0d, 0xb8, 0x1e, + 0x8d, 0xb6, 0x3d, 0x1a, 0x3a, 0xca, 0x86, 0x56, 0x35, 0x23, 0xd5, 0x88, 0x3a, 0xc4, 0x63, 0x4a, + 0xba, 0xf9, 0x1f, 0x19, 0x68, 0xf6, 0x63, 0x97, 0x70, 0xe8, 0xf7, 0xc3, 0xd1, 0xc8, 0x0a, 0x2e, + 0xd0, 0x3a, 0xe4, 0xc7, 0x16, 0x63, 0xc4, 0x69, 0xa5, 0x6e, 0xa7, 0xee, 0xe7, 0xb0, 0x7e, 0x12, + 0xf2, 0x37, 0x96, 0xeb, 0x11, 0xa7, 0x95, 0x56, 0x72, 0xf5, 0x84, 0x6e, 0x02, 0x0c, 0xa9, 0xeb, + 0x0f, 0xcd, 0xf7, 0xc4, 0xf3, 0x5a, 0x99, 0xdb, 0xa9, 0xfb, 0x25, 0x5c, 0x92, 0x92, 0x3f, 0x27, + 0x9e, 0x27, 0xd4, 0x9c, 0x9a, 0xee, 0x68, 0x1c, 0xd0, 0x77, 0xa4, 0x95, 0x55, 0x6a, 0x4e, 0xf7, + 0x95, 0x00, 0x7d, 0x03, 0x79, 0x97, 0xb1, 0x90, 0xb0, 0x56, 0xee, 0x76, 0xe6, 0x7e, 0x79, 0xeb, + 0x6e, 0x5b, 0x7b, 0xdb, 0x5e, 0xe4, 0x5c, 0x7b, 0x5f, 0x60, 0xb1, 0x1e, 0x82, 0xbe, 0x85, 0x8a, + 0x7d, 0x66, 0x71, 0xf3, 0xcc, 0x65, 0x9c, 0x06, 0x17, 0xad, 0xbc, 0x34, 0xd1, 0xbe, 0xdc, 0xc4, + 0xee, 0x99, 0xc5, 0x7b, 0x6a, 0x40, 0xd7, 0xe7, 0xc1, 0x05, 0x2e, 0xdb, 0x13, 0x89, 0xf1, 0x1a, + 0x1a, 0xb3, 0x00, 0xd4, 0x80, 0xcc, 0x5b, 0x72, 0x21, 0xc3, 0x51, 0xc2, 0xe2, 0x27, 0x7a, 0x02, + 0xb9, 0x77, 0x96, 0x17, 0x12, 0x19, 0x8a, 0xf2, 0x96, 0x11, 0xcf, 0xa8, 0xe2, 0x2e, 0x2c, 0xec, + 0x52, 0x9f, 0x93, 0x0f, 0x1c, 0x2b, 0xe0, 0xb3, 0xf4, 0x1f, 0xa5, 0x0c, 0x13, 0x72, 0xd2, 0x7f, + 0x74, 0x1b, 0xca, 0x0e, 0x61, 0x76, 0xe0, 0x8e, 0x85, 0x6f, 0xda, 0x70, 0x52, 0x84, 0xbe, 0x04, + 0x60, 0xe1, 0x70, 0x48, 0x98, 0x04, 0xa4, 0x25, 0x20, 0x21, 0x41, 0x4d, 0xc8, 0x79, 0xd6, 0x29, + 0x89, 0xe2, 0xad, 0x1e, 0x36, 0xff, 0x61, 0x07, 0xaa, 0x53, 0xef, 0x8c, 0x6a, 0x90, 0x76, 0x1d, + 0x3d, 0x41, 0xda, 0x95, 0x8b, 0x35, 0x0e, 0xe8, 0x39, 0xb1, 0xb9, 0xe9, 0x3a, 0xda, 0x6e, 0x49, + 0x4b, 0xf6, 0x1d, 0xf4, 0x14, 0xf2, 0x8c, 0x5b, 0x3c, 0x64, 0xd2, 0x6e, 0x6d, 0xeb, 0xe6, 0xe2, + 0x50, 0xb6, 0xfb, 0x12, 0x84, 0x35, 0x18, 0x3d, 0x84, 0x15, 0x95, 0xb4, 0xc9, 0xb7, 0x52, 0x4b, + 0xdd, 0x90, 0x8a, 0xbd, 0xc4, 0xab, 0x35, 0x21, 0x47, 0x82, 0x80, 0x06, 0xad, 0x9c, 0x72, 0x5d, + 0x3e, 0xa0, 0x6d, 0x00, 0x3b, 0x20, 0x16, 0x27, 0x8e, 0x69, 0xf1, 0x56, 0x5e, 0x87, 0x55, 0x65, + 0x7d, 0x3b, 0xca, 0xfa, 0xf6, 0x20, 0xca, 0x7a, 0x5c, 0xd2, 0xe8, 0x1d, 0x8e, 0xda, 0x90, 0x3d, + 0xa7, 0xa7, 0xac, 0x55, 0x90, 0xab, 0x6f, 0x2c, 0x71, 0xf9, 0x25, 0x3d, 0xc5, 0x12, 0x27, 0x62, + 0xa0, 0xbc, 0xf5, 0xad, 0x11, 0x69, 0x95, 0x54, 0x0c, 0xa4, 0xe4, 0xc8, 0x1a, 0x11, 0xf4, 0x4b, + 0xa8, 0x31, 0x9b, 0xf8, 0x56, 0xe0, 0x52, 0x73, 0x18, 0xd0, 0x70, 0xdc, 0x02, 0xe9, 0xcd, 0xfa, + 0xc4, 0xb0, 0x56, 0xbf, 0x10, 0x5a, 0x5c, 0x65, 0xc9, 0x47, 0xf4, 0x14, 0x8a, 0xc4, 0x77, 0xd4, + 0x6b, 0x94, 0x3f, 0xfa, 0x1a, 0x05, 0x89, 0xdd, 0xe1, 0xe8, 0x0b, 0x28, 0x9d, 0xd3, 0x53, 0xd3, + 0xa6, 0xa1, 0xcf, 0x5b, 0x15, 0x49, 0xb0, 0xe2, 0x39, 0x3d, 0xdd, 0x15, 0xcf, 0xe8, 0x0e, 0x54, + 0x14, 0x09, 0xb5, 0xbe, 0x2a, 0xf5, 0x65, 0x25, 0x8b, 0x21, 0x8a, 0x8f, 0x1a, 0x52, 0x53, 0x10, + 0x25, 0x53, 0x90, 0x9f, 0x40, 0xdd, 0x0f, 0x47, 0x89, 0x7d, 0x88, 0xb5, 0xea, 0x12, 0x55, 0xf3, + 0xc3, 0xd1, 0x24, 0x58, 0x0c, 0x6d, 0x41, 0x2e, 0x64, 0xd6, 0x90, 0xb4, 0x1a, 0xd2, 0xff, 0x1b, + 0x4b, 0x22, 0x7a, 0x22, 0x30, 0x58, 0x41, 0x45, 0x4a, 0xdb, 0xd4, 0xb7, 0xc3, 0x20, 0x20, 0xbe, + 0x7d, 0xd1, 0x5a, 0x51, 0xd3, 0x27, 0x44, 0xe8, 0x21, 0x64, 0xc5, 0x06, 0xd4, 0x42, 0x32, 0xb3, + 0x36, 0x16, 0x18, 0x3d, 0xa4, 0x0e, 0xc1, 0x12, 0x84, 0xbe, 0x81, 0xc2, 0x88, 0xf0, 0xc0, 0xb5, + 0x59, 0x6b, 0x55, 0x3a, 0x71, 0x67, 0x89, 0x13, 0x38, 0xf4, 0x0f, 0x15, 0x10, 0x47, 0x23, 0x44, + 0x2c, 0x98, 0x22, 0xbb, 0xf9, 0x6b, 0xc6, 0x9d, 0x56, 0xf3, 0x76, 0xea, 0x7e, 0x05, 0x97, 0xb5, + 0xec, 0x35, 0xe3, 0x8e, 0xf1, 0x9f, 0x39, 0xc8, 0xbc, 0xa4, 0xa7, 0x73, 0xfc, 0xd8, 0x8e, 0x09, + 0x90, 0x96, 0x6e, 0xde, 0x59, 0x9e, 0x4d, 0xb3, 0x24, 0xd8, 0x84, 0x8a, 0xeb, 0x33, 0x1e, 0x84, + 0xb6, 0x8a, 0xad, 0x62, 0xe6, 0x94, 0x6c, 0x92, 0xfb, 0xd9, 0x64, 0xee, 0xff, 0x14, 0x90, 0x4a, + 0x48, 0xf2, 0x61, 0x4c, 0x6c, 0xae, 0xd7, 0x46, 0xd1, 0x43, 0x11, 0xab, 0x9b, 0x50, 0x4c, 0xb8, + 0x9f, 0x4f, 0x70, 0x1f, 0x21, 0xc8, 0x72, 0x6b, 0xa8, 0x58, 0x50, 0xc2, 0xf2, 0xb7, 0x48, 0xaa, + 0x80, 0xd2, 0x91, 0x4a, 0xf4, 0xa2, 0x44, 0x17, 0x85, 0x40, 0xe6, 0xf9, 0x36, 0x00, 0xe3, 0x56, + 0xa0, 0x19, 0x07, 0x1f, 0x67, 0x9c, 0x46, 0xef, 0xf0, 0xdf, 0x37, 0xc7, 0x37, 0xa0, 0x20, 0xdd, + 0x71, 0x1d, 0x99, 0xe1, 0x25, 0x9c, 0x17, 0x8f, 0xfb, 0x0e, 0xfa, 0x79, 0x94, 0x70, 0x55, 0x69, + 0xec, 0xf6, 0x25, 0x41, 0x9f, 0x4a, 0xba, 0x44, 0x96, 0xd4, 0x2e, 0xcd, 0x92, 0x97, 0xf4, 0x74, + 0x36, 0x4b, 0x8c, 0xbf, 0x82, 0x9c, 0x34, 0x86, 0xee, 0x43, 0x43, 0xec, 0xd4, 0x26, 0x0f, 0x03, + 0x9f, 0x69, 0xfa, 0xa8, 0xd2, 0x57, 0x13, 0xf2, 0x81, 0x10, 0x2b, 0x06, 0x3d, 0x80, 0x15, 0x2b, + 0x74, 0x5c, 0x3a, 0x05, 0x55, 0xd5, 0xb0, 0x2e, 0x15, 0x13, 0xec, 0x26, 0x85, 0xbc, 0x4a, 0x10, + 0x84, 0xa0, 0xd6, 0x1f, 0xec, 0x0c, 0x4e, 0xfa, 0xe6, 0x71, 0xf7, 0x68, 0x6f, 0xff, 0xe8, 0x45, + 0xe3, 0x5a, 0x42, 0x86, 0x4f, 0x8e, 0x8e, 0x84, 0x2c, 0x85, 0x9a, 0xd0, 0xd0, 0xb2, 0xdd, 0x57, + 0x87, 0xc7, 0x07, 0xdd, 0x41, 0x77, 0xaf, 0x91, 0x46, 0x2b, 0x50, 0xd5, 0xd2, 0xe7, 0x3b, 0xfb, + 0x07, 0xdd, 0xbd, 0x46, 0x26, 0x09, 0xdc, 0x39, 0xda, 0xed, 0x1e, 0x08, 0x69, 0xf6, 0x65, 0xb6, + 0x58, 0x6a, 0x80, 0xf1, 0xef, 0xf7, 0x00, 0x26, 0x6f, 0x8b, 0x1e, 0x40, 0xcd, 0xb2, 0xed, 0x30, + 0xb0, 0xec, 0x0b, 0x93, 0xd9, 0x34, 0x20, 0xf2, 0xcd, 0xd2, 0xbd, 0x6b, 0xb8, 0x1a, 0xc9, 0xfb, + 0x42, 0xfc, 0x7d, 0x2a, 0x85, 0xda, 0xd0, 0x10, 0x09, 0x18, 0xb8, 0xc4, 0xb7, 0x89, 0x46, 0xa7, + 0x25, 0x3a, 0x85, 0xeb, 0x13, 0x4d, 0x8c, 0x7f, 0x04, 0x75, 0x6e, 0xb1, 0xb7, 0xa6, 0x4d, 0x47, + 0x63, 0x8f, 0xc8, 0x3d, 0x3f, 0x23, 0xe1, 0x69, 0x5c, 0x13, 0x8a, 0xdd, 0x58, 0x2e, 0xd0, 0x5f, + 0x43, 0x86, 0x71, 0x2e, 0x13, 0xbf, 0xbc, 0x75, 0xef, 0xa3, 0xeb, 0xd4, 0xee, 0x0f, 0x06, 0x58, + 0x8c, 0x10, 0x03, 0x3d, 0x6f, 0x24, 0xe9, 0x70, 0xa5, 0x81, 0x07, 0x07, 0x87, 0x58, 0x8c, 0x10, + 0x03, 0x39, 0x67, 0xba, 0x96, 0x5c, 0x61, 0xe0, 0x60, 0xd0, 0xc7, 0x62, 0x04, 0xc2, 0x50, 0xb1, + 0xa9, 0xff, 0x8e, 0x04, 0x4c, 0xc2, 0x5a, 0x05, 0x69, 0xa1, 0xfd, 0x71, 0x0b, 0xbb, 0x89, 0x51, + 0x78, 0xca, 0x06, 0xfa, 0x05, 0xe4, 0x64, 0xd2, 0xb4, 0x4a, 0xb2, 0x4a, 0xfd, 0xf8, 0x0a, 0xee, + 0x84, 0x81, 0x8f, 0xd5, 0x20, 0x74, 0x0b, 0xca, 0xe7, 0xa1, 0x33, 0x24, 0xea, 0x08, 0x27, 0xc9, + 0x5a, 0xc2, 0x20, 0x45, 0x62, 0xd3, 0xf4, 0xd0, 0x23, 0x40, 0x67, 0x16, 0x33, 0x03, 0x32, 0xa2, + 0x9c, 0x44, 0x67, 0x47, 0xc9, 0xb2, 0x22, 0x6e, 0x9c, 0x59, 0x0c, 0x4b, 0x45, 0x5f, 0xc9, 0xd1, + 0x03, 0x48, 0xf3, 0x27, 0x9a, 0x6c, 0x97, 0x31, 0x37, 0xcd, 0x9f, 0xa0, 0x7b, 0x6a, 0x63, 0x77, + 0x19, 0xf1, 0x09, 0x53, 0x3c, 0x4b, 0xf7, 0x32, 0x38, 0x29, 0x14, 0xcb, 0xbb, 0x0d, 0xeb, 0xa1, + 0xef, 0x13, 0x9b, 0x30, 0x26, 0xf6, 0x5d, 0x4e, 0xa9, 0x67, 0xda, 0x96, 0xe7, 0xa9, 0x1a, 0x53, + 0xec, 0x65, 0x71, 0x33, 0xa1, 0x1f, 0x50, 0xea, 0xed, 0x0a, 0xad, 0xce, 0x3b, 0xd7, 0x7f, 0x43, + 0x83, 0x91, 0x8c, 0x82, 0xe9, 0x51, 0xc6, 0x64, 0xe5, 0x29, 0xf6, 0x72, 0xb8, 0x9e, 0xd0, 0x1c, + 0x50, 0x35, 0xd5, 0xcf, 0xa1, 0x19, 0x10, 0x27, 0xf4, 0x1d, 0x4b, 0x1c, 0x93, 0xb9, 0xc5, 0xc9, + 0x88, 0xf8, 0x9c, 0xc9, 0x9a, 0x53, 0xec, 0xe5, 0xf1, 0x6a, 0xac, 0xed, 0xc7, 0x4a, 0x95, 0x81, + 0x6b, 0x63, 0x4a, 0x03, 0xf3, 0xbb, 0x50, 0x1d, 0xa2, 0xcc, 0xef, 0x42, 0xcb, 0x73, 0xf9, 0x85, + 0xac, 0x48, 0xc5, 0x5e, 0x01, 0xaf, 0x0a, 0xf5, 0xb7, 0x5a, 0xfb, 0xad, 0x52, 0x8a, 0x81, 0x7f, + 0x0c, 0xad, 0xe4, 0x5a, 0x9a, 0xe3, 0x80, 0x0e, 0x03, 0x1d, 0xe2, 0x55, 0x19, 0x8f, 0x22, 0xde, + 0x48, 0x22, 0x8e, 0x27, 0x80, 0xef, 0x53, 0x29, 0xe3, 0xef, 0xf3, 0x90, 0xe9, 0x0f, 0x06, 0x68, + 0x0d, 0x32, 0xef, 0x49, 0x10, 0x33, 0x50, 0x3c, 0x08, 0xf3, 0xd7, 0x21, 0xf7, 0x9e, 0x06, 0x8e, + 0x2a, 0x39, 0xd5, 0x5e, 0x0a, 0xab, 0x47, 0xa1, 0xfa, 0x11, 0x94, 0xc5, 0x6f, 0x53, 0xd6, 0x09, + 0x55, 0x52, 0xaa, 0xbd, 0x34, 0x06, 0x21, 0xec, 0x4a, 0x99, 0x40, 0xad, 0x41, 0xc6, 0x26, 0xaa, + 0xa6, 0x88, 0xa5, 0x11, 0x0f, 0xda, 0xae, 0x7d, 0x66, 0x05, 0x4c, 0x1e, 0x71, 0xaa, 0xbd, 0x2c, + 0x56, 0x8f, 0xda, 0xae, 0xf8, 0x1d, 0xd9, 0x05, 0x09, 0xc8, 0x61, 0x10, 0xc2, 0x89, 0xdd, 0x7b, + 0x50, 0x61, 0x5c, 0x1c, 0xea, 0x3c, 0xeb, 0xc2, 0x1c, 0x31, 0x59, 0x41, 0xaa, 0xbd, 0x3c, 0x06, + 0xc6, 0xf9, 0x9e, 0x10, 0x1e, 0x4a, 0xd8, 0x16, 0x20, 0xe2, 0x73, 0x97, 0x5f, 0x98, 0x01, 0xb1, + 0xe9, 0xd0, 0x77, 0x25, 0x69, 0xca, 0xd2, 0x9b, 0x02, 0x5e, 0x51, 0x3a, 0x3c, 0x51, 0x45, 0x7b, + 0x8d, 0x90, 0xbb, 0x84, 0x99, 0x21, 0xe7, 0x24, 0x20, 0xaa, 0x26, 0x54, 0x7b, 0x45, 0x5c, 0x8f, + 0x34, 0x27, 0x4a, 0x21, 0xf0, 0x5f, 0xc1, 0x6a, 0x8c, 0xd7, 0xb3, 0xfc, 0x9a, 0x38, 0x32, 0x85, + 0xab, 0xbd, 0x12, 0x46, 0x91, 0x12, 0xc7, 0x3a, 0x31, 0xea, 0x3e, 0x54, 0x27, 0x9e, 0x59, 0x9e, + 0xa7, 0xb3, 0x17, 0x70, 0x25, 0x76, 0xca, 0xf2, 0x3c, 0x81, 0xfc, 0x13, 0xb8, 0x1e, 0xdb, 0xb7, + 0xec, 0xef, 0x42, 0x37, 0x20, 0x4e, 0xec, 0x58, 0x5d, 0xce, 0x52, 0xc6, 0x1b, 0x11, 0x64, 0x47, + 0x23, 0x12, 0x0e, 0x76, 0xe1, 0xc6, 0xbc, 0x81, 0x84, 0xa7, 0x0d, 0x69, 0xa3, 0x82, 0x8d, 0x59, + 0x1b, 0x53, 0x1e, 0x77, 0xf2, 0x90, 0x35, 0xdf, 0x93, 0xa0, 0x53, 0x84, 0xbc, 0x29, 0xb3, 0xa0, + 0x53, 0x83, 0x8a, 0x99, 0xc8, 0x01, 0x89, 0xb0, 0x35, 0x42, 0xae, 0xa7, 0x44, 0x24, 0x56, 0xb3, + 0x53, 0x87, 0xaa, 0x99, 0x5c, 0xb7, 0xce, 0x1a, 0xac, 0x9a, 0xf3, 0x2b, 0xd4, 0x59, 0x85, 0x15, + 0x73, 0x76, 0x11, 0x3a, 0xeb, 0xd0, 0x34, 0x17, 0x44, 0xba, 0xd3, 0x80, 0x9a, 0x39, 0x15, 0xcb, + 0xce, 0x0d, 0x30, 0xcc, 0xa5, 0x31, 0xeb, 0xdc, 0x82, 0x9b, 0xe6, 0x65, 0x01, 0x31, 0xfe, 0x29, + 0x05, 0x99, 0x83, 0x83, 0x43, 0x74, 0x03, 0x0a, 0x9c, 0xbf, 0xe1, 0x22, 0xbf, 0x52, 0x32, 0x46, + 0xd7, 0x70, 0x5e, 0x08, 0x54, 0x6e, 0x29, 0x2d, 0x13, 0xda, 0x88, 0x1d, 0x42, 0xcb, 0x94, 0xf6, + 0x31, 0xac, 0x70, 0xfa, 0x96, 0xf8, 0xcc, 0x1c, 0x93, 0xc0, 0x64, 0xc4, 0xa6, 0xbe, 0x13, 0xd7, + 0xa0, 0xba, 0x52, 0x1d, 0x93, 0xa0, 0x2f, 0x15, 0x22, 0xbc, 0x00, 0x45, 0x53, 0xcf, 0x16, 0xfd, + 0x16, 0xb6, 0x3b, 0x4d, 0x40, 0xe6, 0x9c, 0x25, 0xe3, 0x6f, 0xf2, 0x90, 0x19, 0x0c, 0xfa, 0xda, + 0x89, 0xd3, 0x89, 0x13, 0xca, 0xc5, 0xd3, 0xc3, 0x88, 0x7d, 0x82, 0xd5, 0x19, 0x5d, 0x29, 0xe7, + 0x58, 0x5d, 0xd0, 0xa4, 0x5d, 0xca, 0x6a, 0x45, 0xab, 0xcc, 0x12, 0x56, 0x97, 0xa4, 0xdd, 0xec, + 0x3c, 0xab, 0x23, 0xd2, 0x2e, 0x65, 0x75, 0x39, 0xa2, 0xeb, 0x34, 0xab, 0x17, 0xd3, 0xb5, 0xf6, + 0xc9, 0x74, 0xad, 0x7f, 0x3a, 0x5d, 0x1b, 0x9f, 0x48, 0xd7, 0x95, 0xdf, 0x8b, 0xae, 0xe8, 0x07, + 0xa0, 0xeb, 0xea, 0xd5, 0xe8, 0xaa, 0x73, 0x48, 0xa4, 0xc6, 0x0f, 0x42, 0xdd, 0xff, 0x93, 0x4c, + 0xfd, 0x5d, 0x01, 0x2a, 0xc9, 0x93, 0x8d, 0xa4, 0x5d, 0x18, 0xf8, 0x26, 0xb7, 0xde, 0xba, 0xfe, + 0x70, 0xe6, 0x5c, 0x59, 0x17, 0xaa, 0x81, 0xd4, 0xc4, 0x27, 0xc5, 0x6f, 0xa0, 0x75, 0x46, 0x2c, + 0x11, 0x88, 0x2d, 0x62, 0x7a, 0x16, 0x17, 0xf7, 0x41, 0x73, 0xfc, 0xf4, 0x49, 0xc4, 0xa8, 0x5c, + 0x2f, 0x85, 0x9b, 0x12, 0xd1, 0xdd, 0x22, 0x07, 0x4a, 0x7f, 0xfc, 0xf4, 0x89, 0xe2, 0xd7, 0xe2, + 0xc1, 0xdb, 0x4f, 0xc5, 0xe0, 0x8c, 0x1c, 0x9c, 0x9e, 0x1f, 0xbc, 0xfd, 0xf4, 0xd2, 0xc1, 0xdb, + 0x62, 0x70, 0x56, 0x0e, 0xce, 0x2c, 0x18, 0xbc, 0xad, 0x06, 0x3f, 0x82, 0x06, 0x77, 0x47, 0xc4, + 0xe4, 0xd4, 0xbc, 0x70, 0x89, 0xe7, 0x88, 0x41, 0x39, 0x5d, 0x4b, 0xab, 0x42, 0x33, 0xa0, 0xbf, + 0x12, 0xf2, 0x68, 0xaa, 0x0d, 0x42, 0xb9, 0x39, 0x72, 0xd9, 0x38, 0x20, 0x8e, 0x2b, 0x6f, 0x7c, + 0xfa, 0x8a, 0x90, 0xd7, 0x54, 0x5d, 0x23, 0x94, 0x1f, 0x26, 0xf5, 0xf2, 0xaa, 0xa0, 0x53, 0x9f, + 0xbe, 0x23, 0x81, 0x67, 0x8d, 0xcd, 0x40, 0x04, 0x59, 0xee, 0x1a, 0xe9, 0x5e, 0x1e, 0x57, 0xb4, + 0x18, 0x0b, 0xa9, 0xde, 0xf3, 0x22, 0x24, 0x1b, 0x13, 0x62, 0x9f, 0x4d, 0x2a, 0x73, 0x01, 0xd7, + 0xb5, 0xaa, 0x2f, 0x35, 0xca, 0xaf, 0x87, 0x50, 0xe7, 0x94, 0x5b, 0x5e, 0x02, 0x5e, 0xd2, 0xd4, + 0xad, 0x4a, 0x45, 0x12, 0xfc, 0x35, 0xac, 0x59, 0xef, 0xdf, 0xbe, 0x17, 0x11, 0x63, 0xae, 0x27, + 0x2f, 0x02, 0xea, 0x15, 0xca, 0x9a, 0xba, 0xab, 0x5a, 0xdd, 0x57, 0xda, 0xf8, 0x05, 0xda, 0xd0, + 0x08, 0x7d, 0xcb, 0x67, 0xef, 0x45, 0x4e, 0xa9, 0xfb, 0x91, 0x2e, 0xe8, 0x80, 0xeb, 0x13, 0x8d, + 0xbc, 0x20, 0x09, 0xfc, 0x2f, 0xa1, 0xf5, 0xc6, 0xf2, 0x18, 0x31, 0x5d, 0x9f, 0x93, 0x20, 0x08, + 0xc7, 0x89, 0x70, 0x55, 0x35, 0x81, 0xd7, 0x25, 0x62, 0x3f, 0x01, 0x88, 0xa7, 0xfb, 0x03, 0xa8, + 0x25, 0x57, 0x74, 0xc4, 0xf4, 0x76, 0x54, 0xc1, 0x15, 0x12, 0x2f, 0xa4, 0x7c, 0x25, 0xb5, 0xb7, + 0xcf, 0xa6, 0x6b, 0xe7, 0x0b, 0xb8, 0x6e, 0x2e, 0xcb, 0xc9, 0x65, 0x4a, 0x99, 0x73, 0x4b, 0x95, + 0x22, 0xa7, 0x24, 0x53, 0x67, 0x73, 0xa6, 0x63, 0x40, 0xcb, 0x5c, 0x92, 0x1a, 0x92, 0xad, 0x53, + 0x2b, 0x2f, 0xfd, 0x9d, 0x5b, 0xe1, 0x0e, 0x82, 0x86, 0x39, 0xb3, 0x8c, 0x9d, 0x16, 0xac, 0x9b, + 0x0b, 0x57, 0x4b, 0xba, 0x31, 0xbb, 0x1c, 0xd2, 0xf1, 0x65, 0x31, 0xef, 0xac, 0x40, 0xdd, 0x9c, + 0x8e, 0xa8, 0xf1, 0xdb, 0x02, 0x64, 0xc5, 0x7a, 0xa1, 0x26, 0xe4, 0x5c, 0xdf, 0x21, 0x1f, 0x54, + 0x81, 0xc6, 0xea, 0x01, 0x3d, 0x84, 0x6c, 0x40, 0x3d, 0xa2, 0x3f, 0x94, 0x6c, 0x2c, 0xf8, 0x04, + 0x8a, 0xa9, 0x47, 0xb0, 0x04, 0xa1, 0x2f, 0xa1, 0x28, 0x3f, 0x1f, 0x44, 0xa4, 0x15, 0x35, 0xb4, + 0x20, 0x25, 0x2a, 0xef, 0x0c, 0xc8, 0x13, 0xdf, 0x89, 0x58, 0x29, 0x0f, 0xc1, 0xc4, 0xd7, 0xc4, + 0x9a, 0x3d, 0x86, 0xe6, 0xa2, 0x53, 0xf0, 0xf4, 0x31, 0xf4, 0x2e, 0x94, 0x3d, 0x6f, 0x14, 0x95, + 0x77, 0xcd, 0xb9, 0x0c, 0x2e, 0x79, 0xde, 0x68, 0x10, 0x9f, 0x27, 0x26, 0x20, 0x79, 0xa6, 0x28, + 0x68, 0x36, 0x6b, 0x10, 0x8b, 0x0f, 0x1d, 0x12, 0x34, 0x56, 0xc4, 0x4a, 0xf7, 0x72, 0x38, 0x2f, + 0x00, 0xe3, 0xc8, 0x04, 0xe7, 0x2c, 0xda, 0xf6, 0x35, 0x97, 0xf2, 0xb8, 0xc4, 0x39, 0x1b, 0xc4, + 0x87, 0x82, 0xf9, 0xfc, 0x04, 0x4d, 0xd1, 0xd9, 0xfc, 0x44, 0x5f, 0x41, 0x73, 0x3e, 0x9d, 0x46, + 0xaa, 0x7c, 0xe7, 0x7a, 0x45, 0xbc, 0x32, 0xb3, 0x3d, 0x2d, 0xdf, 0x9b, 0x2a, 0x9a, 0xa3, 0xf3, + 0x7b, 0xd3, 0xc2, 0x1d, 0xbb, 0xaa, 0xab, 0xeb, 0xa2, 0x1d, 0x7b, 0xe1, 0xad, 0xaf, 0x3c, 0x77, + 0xeb, 0x7b, 0x02, 0x2b, 0x73, 0x89, 0xad, 0x2f, 0x7c, 0x15, 0xdc, 0x98, 0xdd, 0xed, 0xf4, 0x47, + 0x83, 0x99, 0x94, 0xd5, 0x77, 0xbd, 0x2a, 0xae, 0x4d, 0x6f, 0x2d, 0x2a, 0xd6, 0x30, 0x49, 0x63, + 0x7d, 0xc1, 0xab, 0xe1, 0x84, 0x4c, 0x10, 0xbc, 0x0c, 0x25, 0x33, 0x4a, 0xae, 0x4e, 0x09, 0x0a, + 0xa6, 0xca, 0xa4, 0xf9, 0x73, 0xb0, 0xa8, 0xb6, 0x89, 0x14, 0x49, 0x3e, 0xb3, 0xe8, 0x44, 0xa8, + 0x17, 0x5e, 0xea, 0x12, 0xcb, 0xbc, 0x80, 0x1f, 0x9d, 0x0d, 0x58, 0x33, 0x17, 0xad, 0xdc, 0xe2, + 0x4d, 0x60, 0xf1, 0x36, 0x24, 0x0f, 0x00, 0x93, 0x98, 0x4a, 0xd4, 0x5c, 0x44, 0x25, 0xf9, 0x67, + 0xa2, 0xd6, 0xa9, 0x42, 0x39, 0x41, 0x71, 0xe9, 0xdf, 0xf4, 0x97, 0x1e, 0x75, 0x6a, 0x98, 0xf9, + 0xa0, 0xa3, 0xf6, 0x91, 0xe9, 0xaf, 0x36, 0x73, 0x4e, 0x5c, 0x87, 0x0d, 0x73, 0xf1, 0x65, 0x5e, + 0xda, 0x9c, 0xbd, 0xac, 0xcb, 0x40, 0x2c, 0xba, 0x91, 0xcb, 0x0d, 0x6a, 0xe1, 0x95, 0x5b, 0xee, + 0x45, 0xcb, 0xee, 0xd4, 0xc6, 0x7f, 0x65, 0x00, 0x26, 0xdf, 0x75, 0x3f, 0xeb, 0x37, 0xac, 0x3f, + 0x04, 0x14, 0x7f, 0xec, 0x1f, 0x5b, 0x8c, 0x89, 0x3d, 0x98, 0xc4, 0x57, 0x88, 0x46, 0xa4, 0x3b, + 0xb6, 0x18, 0xc3, 0x16, 0x27, 0xff, 0xff, 0x21, 0xeb, 0xca, 0x89, 0x26, 0x8e, 0xb2, 0xf3, 0xa1, + 0x35, 0x7e, 0x97, 0x81, 0xfc, 0xae, 0x6c, 0xdd, 0x18, 0xff, 0x9d, 0x86, 0x02, 0x26, 0x32, 0x35, + 0x66, 0xfa, 0x52, 0xa9, 0xd9, 0xbe, 0xd4, 0x74, 0xcb, 0x26, 0x3d, 0xdb, 0xb2, 0x59, 0xd0, 0xd9, + 0xc8, 0x2e, 0xec, 0x6c, 0xac, 0x43, 0x3e, 0x20, 0x43, 0x11, 0x8a, 0xbc, 0xfe, 0x00, 0x2d, 0x9f, + 0x50, 0x67, 0xae, 0xe7, 0x53, 0xb8, 0xac, 0xe7, 0x23, 0x52, 0x6f, 0xaa, 0xeb, 0x93, 0xd8, 0x32, + 0xa3, 0x0e, 0x48, 0x51, 0x9f, 0x6b, 0x93, 0x42, 0x75, 0x1c, 0x53, 0x6d, 0x90, 0xd2, 0x15, 0xda, + 0x20, 0x32, 0xd8, 0xd3, 0x8e, 0xc5, 0x64, 0xd5, 0x26, 0x5f, 0x66, 0x8b, 0x99, 0x46, 0x16, 0xcf, + 0xf7, 0xdf, 0x8c, 0xbf, 0x4d, 0x41, 0x11, 0x13, 0x36, 0xa6, 0x3e, 0x23, 0xe8, 0x01, 0xac, 0x4c, + 0xa2, 0x63, 0x06, 0xa1, 0x3f, 0x09, 0x73, 0x9d, 0x25, 0xb3, 0x60, 0xdf, 0x41, 0x7d, 0x58, 0x1f, + 0x07, 0x84, 0xb9, 0x43, 0x9f, 0x38, 0xe6, 0x98, 0x32, 0x6e, 0x06, 0x6a, 0x95, 0x74, 0xb7, 0x73, + 0xd2, 0x14, 0x3c, 0x8e, 0x60, 0xc7, 0x94, 0x71, 0xbd, 0x94, 0xb8, 0x39, 0x5e, 0x20, 0x15, 0xd7, + 0xfd, 0xd5, 0x5d, 0xea, 0xbf, 0x71, 0x83, 0x51, 0x9f, 0x86, 0x81, 0x4d, 0x4e, 0xc6, 0x1e, 0xb5, + 0x1c, 0xe3, 0xaf, 0xaf, 0x9c, 0x03, 0x0b, 0x5f, 0x21, 0xbd, 0xf8, 0x15, 0x7e, 0x02, 0x75, 0x9b, + 0x3a, 0x44, 0xdc, 0x6b, 0x82, 0x8b, 0x31, 0x75, 0x7d, 0xae, 0xdb, 0x31, 0x35, 0x21, 0xee, 0xc6, + 0x52, 0x03, 0x26, 0x31, 0x32, 0xfe, 0x2e, 0x05, 0x99, 0x17, 0x84, 0x1b, 0x83, 0xcf, 0xe1, 0x92, + 0xf1, 0x55, 0x62, 0x35, 0xee, 0x43, 0x26, 0x08, 0x55, 0xdf, 0x77, 0x2a, 0xc7, 0x92, 0x43, 0xb0, + 0x80, 0x18, 0xff, 0x96, 0x86, 0xec, 0x81, 0xcb, 0xb8, 0xf1, 0xaf, 0xa9, 0x2b, 0x7b, 0xf5, 0x6c, + 0xa6, 0x87, 0x75, 0x79, 0x13, 0xb7, 0x77, 0x2d, 0xea, 0x60, 0x89, 0xec, 0xfc, 0x05, 0xc0, 0xd8, + 0x1a, 0x12, 0xf5, 0x31, 0x44, 0xc6, 0xac, 0xbc, 0xd5, 0x8a, 0xc7, 0x0f, 0x84, 0xf4, 0xd8, 0x1a, + 0xba, 0xbe, 0x34, 0xd2, 0x4b, 0xe1, 0x92, 0x40, 0x4b, 0xb1, 0xa8, 0xc4, 0xa2, 0xf8, 0x2a, 0x5b, + 0xb2, 0x3c, 0x4d, 0x2c, 0x19, 0x1f, 0xa6, 0x72, 0x31, 0x1b, 0x84, 0x3e, 0x6b, 0xa5, 0xe4, 0x97, + 0xf0, 0x65, 0xaf, 0x2f, 0x31, 0xe8, 0x4f, 0xa1, 0xee, 0x93, 0x0f, 0x3c, 0x61, 0x4a, 0x27, 0xe1, + 0x52, 0xa7, 0x70, 0x55, 0x0c, 0x38, 0x8e, 0xdc, 0x32, 0xce, 0x21, 0xbf, 0x6b, 0xf9, 0x36, 0xf1, + 0x3e, 0xd3, 0xba, 0x26, 0x33, 0xe8, 0x33, 0xb7, 0x94, 0x7e, 0x93, 0x8a, 0x7b, 0x4a, 0xd7, 0x61, + 0x6d, 0xba, 0xa7, 0x64, 0x9e, 0x1c, 0x1f, 0xbc, 0xda, 0xd9, 0x6b, 0x5c, 0x43, 0x6b, 0xb0, 0xa2, + 0x55, 0x2f, 0xba, 0x47, 0x5d, 0xbc, 0x33, 0x50, 0xdd, 0xa5, 0xf9, 0x8e, 0x53, 0x1a, 0xad, 0x03, + 0xd2, 0xb2, 0xfe, 0xc9, 0xe1, 0xe1, 0x0e, 0xde, 0x7f, 0x2d, 0xe4, 0x99, 0x85, 0x9d, 0xa8, 0xec, + 0x7c, 0x27, 0x2a, 0xb7, 0xb0, 0x13, 0x95, 0x7f, 0x99, 0x2d, 0x16, 0x1b, 0x25, 0x5c, 0xd0, 0xfd, + 0xd6, 0xcd, 0xdf, 0x64, 0xa0, 0x18, 0x6d, 0x9f, 0x93, 0xe6, 0x65, 0x2a, 0xd9, 0xbc, 0x9c, 0xed, + 0x9d, 0xa6, 0x17, 0xf4, 0x4e, 0x17, 0x77, 0x49, 0x33, 0xcb, 0xba, 0xa4, 0x8f, 0x75, 0x3f, 0x34, + 0x2b, 0xb3, 0xec, 0x8b, 0xb9, 0x8d, 0xbc, 0x3d, 0xb0, 0x86, 0x4c, 0xfd, 0x01, 0x44, 0x35, 0x4b, + 0x0d, 0x28, 0x86, 0x8c, 0x04, 0x8e, 0xc5, 0x2d, 0xdd, 0x7b, 0x8d, 0x9f, 0x8d, 0x7f, 0x4e, 0xc1, + 0x8a, 0xaa, 0x5a, 0xcf, 0x03, 0x3a, 0xd2, 0x6d, 0x14, 0xe3, 0x57, 0x57, 0x4e, 0xa8, 0x44, 0xe7, + 0x33, 0x3d, 0xd5, 0xf9, 0x9c, 0x14, 0xa4, 0x4c, 0xb2, 0x20, 0x19, 0xdb, 0x09, 0xbe, 0xfc, 0x14, + 0x8a, 0x51, 0x0d, 0xd0, 0x5b, 0xc6, 0xca, 0xdc, 0xdb, 0xe0, 0x18, 0x62, 0x7c, 0x0d, 0xa5, 0xf8, + 0xd5, 0x16, 0xfc, 0x75, 0xa5, 0x99, 0xfc, 0xeb, 0x4a, 0x29, 0xf1, 0xf7, 0x94, 0xcd, 0x01, 0x54, + 0xa7, 0xaa, 0x1c, 0x42, 0x90, 0x95, 0xf5, 0x56, 0x8d, 0x96, 0xbf, 0xd1, 0x63, 0x28, 0x45, 0x33, + 0x89, 0x65, 0xca, 0x2c, 0xf6, 0x66, 0x82, 0xd9, 0xfc, 0x97, 0x14, 0xa0, 0x09, 0xb3, 0xf7, 0x5c, + 0x36, 0xb6, 0xb8, 0x7d, 0xf6, 0x49, 0x05, 0x69, 0x0d, 0xf2, 0xe7, 0xf4, 0x74, 0x12, 0xbc, 0xdc, + 0x39, 0x3d, 0xdd, 0x77, 0xa6, 0xe2, 0x92, 0xf9, 0x68, 0x5c, 0xe2, 0xc2, 0x9b, 0xbd, 0x42, 0xe1, + 0x7d, 0xf0, 0x06, 0x6a, 0xd3, 0x72, 0x74, 0x0b, 0xbe, 0xe8, 0xef, 0x1f, 0x9e, 0x1c, 0xec, 0x0c, + 0xf6, 0x5f, 0x1d, 0x99, 0x87, 0xaf, 0xf6, 0xba, 0xe6, 0xc9, 0x51, 0xff, 0xb8, 0xbb, 0xbb, 0xff, + 0x7c, 0xbf, 0x2b, 0x78, 0xd7, 0x82, 0xe6, 0x2c, 0x60, 0xd0, 0xfd, 0x8b, 0x41, 0x23, 0x25, 0xc9, + 0x3a, 0xa3, 0xd9, 0x39, 0xd9, 0xdb, 0x7f, 0xd5, 0x48, 0x6f, 0xfd, 0x63, 0x0e, 0xea, 0x3b, 0x22, + 0x77, 0x27, 0xb3, 0x21, 0x07, 0x56, 0x55, 0xae, 0x4d, 0xff, 0x95, 0x67, 0xd9, 0xc1, 0x4f, 0x61, + 0xdb, 0x51, 0xa1, 0xfd, 0xf1, 0xc7, 0x60, 0x3a, 0xab, 0xbe, 0x4f, 0xc1, 0xcd, 0xa8, 0x20, 0xc7, + 0xc0, 0x64, 0x69, 0x46, 0x5b, 0xcb, 0x2c, 0xcd, 0x97, 0xf1, 0x78, 0xf6, 0x9f, 0x7d, 0xd2, 0x18, + 0xed, 0xca, 0x5f, 0x42, 0xe3, 0x05, 0xe1, 0xd3, 0x6f, 0xbb, 0xb9, 0xc4, 0xd0, 0x0b, 0xc2, 0xe3, + 0xc9, 0xee, 0x5e, 0x8a, 0xd1, 0xc6, 0x4d, 0x40, 0xa2, 0x80, 0x4e, 0x21, 0x18, 0x5a, 0x36, 0x54, + 0x40, 0x63, 0xfb, 0x3f, 0xba, 0x1c, 0xa4, 0x27, 0x10, 0xcb, 0x25, 0x0b, 0xcc, 0x15, 0x97, 0x4b, + 0x62, 0x3f, 0xbe, 0x5c, 0x11, 0x4c, 0xcf, 0xf2, 0x0e, 0xae, 0xeb, 0xa4, 0xd0, 0xf9, 0x9c, 0xd8, + 0x88, 0xd0, 0xc3, 0xf9, 0xdd, 0x6d, 0x6e, 0xb7, 0x8a, 0x67, 0x7c, 0x74, 0x35, 0xb0, 0x9a, 0xb7, + 0xf3, 0xfc, 0xf5, 0xdd, 0xa1, 0xcb, 0xcf, 0xc2, 0xd3, 0xb6, 0x4d, 0x47, 0xd1, 0x5f, 0x14, 0xd5, + 0xdf, 0x10, 0x6d, 0xea, 0x45, 0x82, 0xdf, 0xa6, 0xab, 0x07, 0xee, 0x3b, 0xf2, 0x67, 0xf2, 0x4c, + 0x48, 0x39, 0xfd, 0x9f, 0x74, 0x4d, 0x3f, 0x3f, 0x7b, 0x26, 0x05, 0xa7, 0x79, 0x39, 0xe4, 0x67, + 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x26, 0x6e, 0x51, 0x9a, 0x15, 0x29, 0x00, 0x00, }