diff --git a/packages/ai/src/protocols/open-responses.ts b/packages/ai/src/protocols/open-responses.ts index 3372145087..961eec01f4 100644 --- a/packages/ai/src/protocols/open-responses.ts +++ b/packages/ai/src/protocols/open-responses.ts @@ -193,6 +193,14 @@ const OpenResponsesUsage = Schema.Struct({ }) type OpenResponsesUsage = Schema.Schema.Type +const StreamContent = Schema.StructWithRest( + Schema.Struct({ + type: Schema.String, + text: Schema.optional(Schema.String), + }), + [Schema.Record(Schema.String, Schema.Unknown)], +) + export const StreamItem = Schema.StructWithRest( Schema.Struct({ type: Schema.String, @@ -201,6 +209,8 @@ export const StreamItem = Schema.StructWithRest( name: Schema.optional(Schema.String), arguments: Schema.optional(Schema.String), encrypted_content: optionalNull(Schema.String), + content: optionalArray(StreamContent), + summary: optionalArray(StreamContent), }), [Schema.Record(Schema.String, Schema.Unknown)], ) @@ -221,7 +231,10 @@ export const Event = Schema.StructWithRest( type: Schema.String, delta: Schema.optional(Schema.String), text: Schema.optional(Schema.String), + arguments: Schema.optional(Schema.String), item_id: Schema.optional(Schema.String), + output_index: Schema.optional(Schema.Number), + content_index: Schema.optional(Schema.Number), summary_index: Schema.optional(Schema.Number), item: Schema.optional(StreamItem), response: Schema.optional( @@ -232,6 +245,7 @@ export const Event = Schema.StructWithRest( incomplete_details: optionalNull(Schema.Struct({ reason: Schema.optional(Schema.String) })), usage: optionalNull(OpenResponsesUsage), error: optionalNull(OpenResponsesErrorPayload), + output: optionalArray(StreamItem), }), [Schema.Record(Schema.String, Schema.Unknown)], ), @@ -268,6 +282,8 @@ export interface ParserState { readonly messageItems: ReadonlySet readonly messagePhase: (value: unknown) => MessagePhase | null | undefined readonly messagePhases: Readonly> + readonly outputText: Readonly> + readonly reasoningText: Readonly> readonly reasoningItems: Readonly> readonly store: boolean | undefined } @@ -647,19 +663,43 @@ const onOutputTextDelta = (state: ParserState, event: Event, id: string): StepRe const metadata = phase === undefined ? undefined : providerMetadata(state, { phase }) const lifecycle = Lifecycle.textStart(state.lifecycle, events, id, metadata) return [ - { ...state, lifecycle: Lifecycle.textDelta(lifecycle, events, id, event.delta) }, + { + ...state, + lifecycle: Lifecycle.textDelta(lifecycle, events, id, event.delta), + outputText: { ...state.outputText, [id]: `${state.outputText[id] ?? ""}${event.delta}` }, + }, events, ] } -const onOutputTextDone = (state: ParserState, event: Event, id: string): StepResult => { - if (state.messageItems.has(id)) { - if (state.lifecycle.text.has(id) || event.text === undefined) return [state, NO_EVENTS] - return onOutputTextDelta(state, { ...event, delta: event.text }, id) - } +const authoritativeSuffix = Effect.fn("OpenResponses.authoritativeSuffix")(function* ( + state: ParserState, + kind: string, + id: string, + current: string, + value: string, +) { + if (value.startsWith(current)) return value.slice(current.length) + return yield* ProviderShared.eventError( + state.id, + `${kind} ${id} completed with content that conflicts with its streamed deltas`, + value, + ) +}) + +const onOutputTextDone = Effect.fn("OpenResponses.onOutputTextDone")(function* ( + state: ParserState, + event: Event, + id: string, +) { + const suffix = + event.text === undefined ? "" : yield* authoritativeSuffix(state, "output text", id, state.outputText[id] ?? "", event.text) + const [reconciled, deltaEvents] = onOutputTextDelta(state, { ...event, delta: suffix }, id) + if (reconciled.messageItems.has(id)) return [reconciled, deltaEvents] satisfies StepResult const events: LLMEvent[] = [] - return [{ ...state, lifecycle: Lifecycle.textEnd(state.lifecycle, events, id) }, events] -} + const lifecycle = Lifecycle.textEnd(reconciled.lifecycle, events, id) + return [{ ...reconciled, lifecycle }, [...deltaEvents, ...events]] satisfies StepResult +}) export const onReasoningDelta = (state: ParserState, event: Event, itemID: string): StepResult => { if (!event.delta) return [state, NO_EVENTS] @@ -670,12 +710,39 @@ export const onReasoningDelta = (state: ParserState, event: Event, itemID: strin { ...state, lifecycle: Lifecycle.reasoningDelta(state.lifecycle, events, id, event.delta), + reasoningText: { ...state.reasoningText, [id]: `${state.reasoningText[id] ?? ""}${event.delta}` }, }, events, ] } -export const onReasoningDone = (state: ParserState, _event: Event): StepResult => [state, NO_EVENTS] +export const onReasoningDone = Effect.fn("OpenResponses.onReasoningDone")(function* ( + state: ParserState, + event: Event, +) { + if (!event.item_id || event.text === undefined) return [state, NO_EVENTS] satisfies StepResult + const id = + event.summary_index !== undefined || state.reasoningItems[event.item_id] + ? `${event.item_id}:${event.summary_index ?? 0}` + : event.item_id + const suffix = yield* authoritativeSuffix(state, "reasoning", id, state.reasoningText[id] ?? "", event.text) + const [reconciled, events] = onReasoningDelta(state, { ...event, delta: suffix }, event.item_id) + const item = reconciled.reasoningItems[event.item_id] + if (!suffix || !item || event.summary_index === undefined) return [reconciled, events] satisfies StepResult + return [ + { + ...reconciled, + reasoningItems: { + ...reconciled.reasoningItems, + [event.item_id]: { + ...item, + summaryParts: { ...item.summaryParts, [event.summary_index]: "active" }, + }, + }, + }, + events, + ] satisfies StepResult +}) const reasoningMetadata = (state: ParserState, item: StreamItem & { id: string }) => providerMetadata(state, { itemId: item.id, reasoningEncryptedContent: item.encrypted_content ?? null }) @@ -865,23 +932,32 @@ const onOutputItemDone = Effect.fn("OpenResponses.onOutputItemDone")(function* ( if (item.type === "message" && item.id) { const itemPhase = state.messagePhase(item.phase) const phase = itemPhase === undefined ? state.messagePhases[item.id] : itemPhase + const messageItems = new Set([...state.messageItems, item.id]) + const messagePhases = phase === undefined ? state.messagePhases : { ...state.messagePhases, [item.id]: phase } + const text = item.content + ?.filter((part) => part.type === "output_text" && part.text !== undefined) + .map((part) => part.text) + .join("") + const [reconciled, reconciledEvents] = + text === undefined + ? [{ ...state, messageItems, messagePhases }, NO_EVENTS] + : yield* onOutputTextDone({ ...state, messageItems, messagePhases }, { ...event, text }, item.id) const events: LLMEvent[] = [] - const messageItems = new Set(state.messageItems) messageItems.delete(item.id) - const { [item.id]: _phase, ...messagePhases } = state.messagePhases + const { [item.id]: _phase, ...remainingPhases } = reconciled.messagePhases return [ { - ...state, + ...reconciled, lifecycle: Lifecycle.textEnd( - state.lifecycle, + reconciled.lifecycle, events, item.id, phase === undefined ? undefined : providerMetadata(state, { phase }), ), messageItems, - messagePhases, + messagePhases: remainingPhases, }, - events, + [...reconciledEvents, ...events], ] satisfies StepResult } @@ -914,25 +990,75 @@ const onOutputItemDone = Effect.fn("OpenResponses.onOutputItemDone")(function* ( if (isReasoningItem(item)) { const events: LLMEvent[] = [] const metadata = reasoningMetadata(state, item) - const reasoningItem = state.reasoningItems[item.id] + const summaries = item.summary?.filter((part) => part.type === "summary_text" && part.text !== undefined) ?? [] + if (summaries.length === 1 && !state.reasoningItems[item.id] && state.reasoningText[item.id] !== undefined) { + const [reconciled, reconciledEvents] = yield* onReasoningDone(state, { + ...event, + item_id: item.id, + text: summaries[0]?.text, + }) + events.push(...reconciledEvents) + return [ + { ...reconciled, lifecycle: Lifecycle.reasoningEnd(reconciled.lifecycle, events, item.id, metadata) }, + events, + ] satisfies StepResult + } + const needsSummaryReconciliation = summaries.some( + (part, index) => part.text !== state.reasoningText[`${item.id}:${index}`], + ) + const seeded = + needsSummaryReconciliation && !state.reasoningItems[item.id] + ? onOutputItemAdded(state, { ...event, item }) + : ([state, NO_EVENTS] satisfies StepResult) + events.push(...seeded[1]) + const reconciled = yield* (needsSummaryReconciliation ? summaries : []) + .map((part, index) => ({ part, index })) + .reduce>( + (effect, entry) => + effect.pipe( + Effect.flatMap( + Effect.fnUntraced(function* (current) { + const added = current.reasoningItems[item.id]?.summaryParts[entry.index] + ? ([current, NO_EVENTS] satisfies StepResult) + : onReasoningSummaryPartAdded(current, { + ...event, + item_id: item.id, + summary_index: entry.index, + }) + events.push(...added[1]) + const [next, nextEvents] = yield* onReasoningDone(added[0], { + ...event, + item_id: item.id, + summary_index: entry.index, + text: entry.part.text, + }) + events.push(...nextEvents) + return next + }), + ), + ), + Effect.succeed(seeded[0]), + ) + const reasoningItem = reconciled.reasoningItems[item.id] if (reasoningItem) { const lifecycle = Object.entries(reasoningItem.summaryParts) .filter((entry) => entry[1] === "active" || entry[1] === "can-conclude") .reduce( (lifecycle, entry) => Lifecycle.reasoningEnd(lifecycle, events, `${item.id}:${entry[0]}`, metadata), - state.lifecycle, + reconciled.lifecycle, ) - const { [item.id]: _removed, ...reasoningItems } = state.reasoningItems - return [{ ...state, lifecycle, reasoningItems }, events] satisfies StepResult + const { [item.id]: _removed, ...reasoningItems } = reconciled.reasoningItems + return [{ ...reconciled, lifecycle, reasoningItems }, events] satisfies StepResult } - if (!state.lifecycle.reasoning.has(item.id)) { - const lifecycle = Lifecycle.stepStart(state.lifecycle, events) + if (summaries.length) return [reconciled, events] satisfies StepResult + if (!reconciled.lifecycle.reasoning.has(item.id)) { + const lifecycle = Lifecycle.stepStart(reconciled.lifecycle, events) events.push(LLMEvent.reasoningStart({ id: item.id, providerMetadata: metadata })) events.push(LLMEvent.reasoningEnd({ id: item.id, providerMetadata: metadata })) - return [{ ...state, lifecycle }, events] satisfies StepResult + return [{ ...reconciled, lifecycle }, events] satisfies StepResult } return [ - { ...state, lifecycle: Lifecycle.reasoningEnd(state.lifecycle, events, item.id, metadata) }, + { ...reconciled, lifecycle: Lifecycle.reasoningEnd(reconciled.lifecycle, events, item.id, metadata) }, events, ] satisfies StepResult } @@ -940,11 +1066,24 @@ const onOutputItemDone = Effect.fn("OpenResponses.onOutputItemDone")(function* ( return [state, NO_EVENTS] satisfies StepResult }) -const onResponseFinish = (state: ParserState, event: Event): StepResult => { +const onResponseFinish = Effect.fn("OpenResponses.onResponseFinish")(function* (state: ParserState, event: Event) { const events: LLMEvent[] = [] - const lifecycle = Lifecycle.finish(state.lifecycle, events, { + const reconciled = yield* (event.response?.output ?? []).reduce>( + (effect, item) => + effect.pipe( + Effect.flatMap( + Effect.fnUntraced(function* (current) { + const [next, nextEvents] = yield* onOutputItemDone(current, { ...event, item }) + events.push(...nextEvents) + return next + }), + ), + ), + Effect.succeed(state), + ) + const lifecycle = Lifecycle.finish(reconciled.lifecycle, events, { reason: { - normalized: mapFinishReason(event, state.hasFunctionCall), + normalized: mapFinishReason(event, reconciled.hasFunctionCall), raw: event.response?.incomplete_details?.reason, }, usage: mapUsage(event.response?.usage, state.providerMetadataKey), @@ -956,8 +1095,8 @@ const onResponseFinish = (state: ParserState, event: Event): StepResult => { }) : undefined, }) - return [{ ...state, lifecycle }, events] -} + return [{ ...reconciled, lifecycle }, events] satisfies StepResult +}) // Build a single human-readable message from whatever the provider supplied. // When both code and message are present, prefix the code so consumers see @@ -985,11 +1124,9 @@ const providerError = (state: ParserState, event: Event, fallback: string) => { export const step = (state: ParserState, event: Event) => { if (event.type === "response.output_text.delta" || event.type === "response.output_text.done") { if (!event.item_id) return ProviderShared.eventError(state.id, `${event.type} is missing item_id`) - return Effect.succeed( - event.type === "response.output_text.delta" - ? onOutputTextDelta(state, event, event.item_id) - : onOutputTextDone(state, event, event.item_id), - ) + return event.type === "response.output_text.delta" + ? Effect.succeed(onOutputTextDelta(state, event, event.item_id)) + : onOutputTextDone(state, event, event.item_id) } if (event.type === "response.reasoning.delta" || event.type === "response.reasoning_summary_text.delta") { if (!event.item_id) return ProviderShared.eventError(state.id, `${event.type} is missing item_id`) @@ -997,7 +1134,7 @@ export const step = (state: ParserState, event: Event) => { } if (event.type === "response.reasoning.done" || event.type === "response.reasoning_summary_text.done") { if (!event.item_id) return ProviderShared.eventError(state.id, `${event.type} is missing item_id`) - return Effect.succeed(onReasoningDone(state, event)) + return onReasoningDone(state, event) } if (event.type === "response.reasoning_summary_part.added") return event.item_id @@ -1013,13 +1150,29 @@ export const step = (state: ParserState, event: Event) => { return Effect.succeed(onOutputItemAdded(state, event)) } if (event.type === "response.function_call_arguments.delta") return onFunctionCallArgumentsDelta(state, event) + if (event.type === "response.function_call_arguments.done") { + if (!event.item_id) return ProviderShared.eventError(state.id, `${event.type} is missing item_id`) + if (event.arguments === undefined) return ProviderShared.eventError(state.id, `${event.type} is missing arguments`) + const tool = state.tools[event.item_id] + if (!tool) + return ProviderShared.eventError(state.id, `${state.name} completed tool arguments are missing their tool call`) + return Effect.succeed( + [ + { + ...state, + tools: { ...state.tools, [event.item_id]: { ...tool, input: event.arguments } }, + }, + NO_EVENTS, + ] satisfies StepResult, + ) + } if (event.type === "response.output_item.done") { if (event.item?.type === "message" && !event.item.id) return ProviderShared.eventError(state.id, `${event.type} message is missing id`) return onOutputItemDone(state, event) } if (event.type === "response.completed" || event.type === "response.incomplete") - return Effect.succeed(onResponseFinish(state, event)) + return onResponseFinish(state, event) if (event.type === "response.failed") return providerError(state, event, `${state.name} response failed`) if (event.type === "error") return providerError(state, event, `${state.name} stream error`) return Effect.succeed([state, NO_EVENTS]) @@ -1042,6 +1195,8 @@ export const initial = (request: LLMRequest, extension: Extension = BASE): Parse messageItems: new Set(), messagePhase: (value) => messagePhase(value, extension), messagePhases: {}, + outputText: {}, + reasoningText: {}, reasoningItems: {}, store: OpenResponsesOptions.resolve(request).store, }) diff --git a/packages/ai/src/protocols/openai-responses.ts b/packages/ai/src/protocols/openai-responses.ts index 43237e89f6..9c2a7db45e 100644 --- a/packages/ai/src/protocols/openai-responses.ts +++ b/packages/ai/src/protocols/openai-responses.ts @@ -224,7 +224,7 @@ const step = (state: OpenResponses.ParserState, event: OpenResponses.Event) => { : ProviderShared.eventError(ADAPTER, `${event.type} is missing item_id`) if (event.type === "response.reasoning_text.done" || event.type === "response.reasoning_summary.done") return event.item_id - ? Effect.succeed(OpenResponses.onReasoningDone(state, event)) + ? OpenResponses.onReasoningDone(state, event) : ProviderShared.eventError(ADAPTER, `${event.type} is missing item_id`) if (event.type === "response.output_item.done" && event.item && isHostedToolItem(event.item)) return onHostedToolDone(state, event.item) diff --git a/packages/ai/test/fixtures/recordings/openai-responses-images/generates-and-edits-an-image-with-the-hosted-tool.json b/packages/ai/test/fixtures/recordings/openai-responses-images/generates-and-edits-an-image-with-the-hosted-tool.json index b1c24341ae..ac78579325 100644 --- a/packages/ai/test/fixtures/recordings/openai-responses-images/generates-and-edits-an-image-with-the-hosted-tool.json +++ b/packages/ai/test/fixtures/recordings/openai-responses-images/generates-and-edits-an-image-with-the-hosted-tool.json @@ -36,7 +36,7 @@ "headers": { "content-type": "application/json" }, - "body": "{\"model\":\"gpt-5-mini\",\"input\":[{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"Generate a simple flat black triangle centered on a plain white background.\"}]},{\"type\":\"reasoning\",\"summary\":[],\"encrypted_content\":\"gAAAAABqXOWpnAP0UBYvlSBekoHJCZH4q8xzRle879t05tnZpveHS-lRgcpzHWBcNwm8Qs8hBSGdQZgdOM-EKf0EJvBo27ynkLRL18hL29zaj_TqlNVZW3P9a0cij_UGUhhh7JFDXUJcxn2CNJs6hfZIs5vjS3zd0QvDSW-iCRPqT_NaT-VJIyXwZaZI8txwYY-buZg83BwkZidY1AGGv12xkyKCn7vhrTf_JM3tDgiWIIOd5bhaYLDlId3n_IKixf5mo8CKN0oyZyPz01XK82EwKVg8rkpdwW7XOiirQ7Ro0-oT_0TJCRa2uYxAyjzCoYWNXPsouRiyter3YdetjJkUR0-yNwmsJVv9ofkaeL5x5R7OcrA_YMsuqyXyyPIl1vpDqy7iA_U_4gwDnDJi5mOg3Y5fE4a3MwewwQgVcZx427UhTLltyaPCWZIcNVhey57hJxCt3RjWZGSWV-GMV2GC2dD5dHlXQiiCJ_Mkr3xyPXdjTyoe94KQlsfmO267RN3NyW74L2TqPEP_HnR0TyNtg-nClTYQPuhvx34nzqZQresJwksxHQU_W9AoBD2DTQMVL9DAoayVy5aB0fyyzwrT82xLkMP6XredNROM-qJSuBWRVVsG4f_mFriYv0yFgjwrtohLlGpPKEbjIsEKBFCyfQ2ERIVYYv8I80EaVTwPuKljMJFcYDa065ZNh8k-rFhg2Q_iQB-yLPH7kx4de3qvYrxZ7DTY2U5wVvZdPmW7sYzqN-8RnktWmUx-fSoGxVbClW6c7Gn_GkE9FmZ8qYcCRizpzSWfec41lS2dD-9g0Biow04K65k6R9Z1-TU-JMNgEn6t_1W5sOL8izzdXOTVZXxe-zlFbm_PNWpE4rMRuL8usVOB-cD4NVACqBvYQOrZ9Cp7scYfDX9KockxtPOpy6gKsn1VJdNWnwNgH_aKKrSO8WFePD3Mcw167HcPQpZ_wnJouWaPrFWKC_k0Iz6CFHvuu_WoTiREItFp10FibQEe-kQJ1PANwxWhjwBKsW7zJDOhhEtWrYpPUZq4eA6OyZgAzVQ6KMvgP38ZR0NxFoi4qwbcPoNY_Fp3AvcmTKLdQiOQ54DSM24LDQbT2LusMaQjr6pKuOwrj5glaGjK4JmBGu_6J05TIdZ6V7WLn39R3PU8tVI3RdEpam3Go6wBjU7yu4cp5O4eWc3XzKzh8bI5f1i_-toPgtJxodv6xGFMErYxxXgD5nWLo_0ELXd4SlcVKGA6o9vpctrkE9fNdWL6CDpXn6mh444E5gJMiPWGG5ZsdtolN1EVgesNwQBwFu4rkWQ5OwzT2liqOW4hEQTHI6W-L2jmKxejveBX0ai2FCmHBrb8Zboi17-CdK8yr3A6oUqUh6dcu5s_xiMAT-TyhOlCdWKJav-wjutKx4IJdACOSKZV6ePToTg43Hsm5PPKWgyg-hdb0zE6uCKKcjYT31zRqYCqhhrWbkAh4Dj7vZgNyZ0RhLfDcVZ5Oa-vAstRTv0MHzv9wOSitIQDMQdw8AJNQwgJfzc_TVtGNOi0-cR7tJjrcZZrMrLDXscgQc3MbQXoKtiiXNuR6nxX53rFFsEVC-J8T2T0pLFqsI9neSh69DGhdXS2PvggM1GD1ibNPbwcY_2uKPlImYoy8eyq1uXZ1GmgIfuFSV4wwct59BfV2l_WQ6nNOwmjCsY_KOO3yOkmdpQHOOwNbiHWpQ0CQ-KVnzpxqz9PaHpBhJwgcnOrAs9LXnWCDOETgnR8tc8MYQEAxgWLvEC1wpqGrOSZSCWoaZTUtQ52IrNJNB3qazGeIgOJSi_C42U2mnPhC34Bxcdutp0lYf_NVmiPzPil7L-qBSoyvAcrhJ6RM_39z77lXgNr7Zrl6wNbYej3qo6t8MoHyCxtnMHO8L_Dk2ug0EGl65TK6Hp3lqPTPY57XaXfxVkjUZczaKpxP4HeFAbRIVYh5Ygdi1beUUMqtgyG8_UF23ccgTLcwN4NminghUqdj0RJtZNxP8RIr-3F4qpWCAmTqthfZ1ncdaRHv90j0EnxoGdoYBY9jgkqFE8BOLrhD41ykwBSSiqx9JQTeMwZ5yLVYJSxshUhwP1OBeu97vaS6gfDqpG2anRXpf9dcqH5P-RCrPB1E-BphEQw3BFDeNC57Bwb4Sbt29wZTu87yqQO6WIrUOLK2psyG6lllPrlOz0MYko-rJMnDIGiQ92S4ddeh5Kqklia1q9SHIP36mxqN86gBczqJKmvutiIwBnZb8yLSNy04ppCb9fhqCFaIMazEXChkxwkQv2730Ffx4wxMRqJJbSFvC_4yg3sMgNPgBwbHGIpQTRh4R_4fKGaFnT1dNRrrPUraRcQZQSIpV81G3mxtyRWxxKyCZ-TWwOvE7SmTZu84UFPEUFA5MpLsM4SPw_loZTCTNs-4zkNbKD3dEYJjDafU3xS0eEZoBmHaGsG6UuRNjq_Es2qqOb7HPvHQU7OsDuvNju7t-RfBDFydfkTrBODvDLkKr8Y9erd81wzq8vwHswO-qT90coHnacAn7-AI6Dx-rR0wkSwJl9HIQ7pC5-zDHyDAa-Rt7gXZJxyEyoRdB6Xr-9xIrLvyWHjhtmmqY7kw9OpObgjw031cKnmcYtvykXT9dG4vb_ZJosy0froYxZMMlnmV3TT27Vhm85apQ53wCM2D8lp8xc4yUlkSBF-Mob28bm_z8gaymSIeMkMk46TROw86nKqJG_MwjE7394LbTQ4AQL63UdabVbJ-vE7w_D7ke3RQ93xFC2GYybqTQqA-oL4TGW4GTANjHNBYGFPrZLQgB57QWNsK0zOJ2w6X8zcF4pl4fkmOlRFUhjFMmOhCRRbuW3U-2h8012xhpYhTTGpWR0ODa891aN7NlxAC8Y6nMsYhrht0mJltMcep5D8lnXEytkWlIOnOVCDsj5jjYIgj5ZfLcmFcuoYFBr5XOGkt1PyCUOSPL8_WQOkousHn3sdONSyUmqpGar1YGsMAiBt-f4ZldsxN9pTslTwP_duhMPzGfRLXF4frnGBzaZHvxnV4eBCtEprRZAdM50bbD6QOhsudTVfZyv6I1c9XJgnxSVvfak4-niMex8lZ22pmnvi5-METukxdt0T9ZgI9CdPCs5aU3GpAZ9T1WMqRYox4MsuRAlIUGlyRDWa94fvtpoOi_6KI0r6-sM859y7xIaILPRdY0P2wnqVxtVOXhpi10mEU3BFz9eaBC1GifG7IzHH4rIqtohpK-Xi3J1U2iNEdO5JHqVkubzth-3iv0InsMYYrM3W0jHn9sbMYAGOvyFZLBIFStpCmLbIgBLT16G0nCEZWwaZZzv8o_o7yghO4I8f-G5G1u-55Lfa2P5073ILkQXyl-pYp8n3P2lrOHb3Ujq3KOZ78YNgKwUtg7JiVRs3Xz6AurppkNlauEDOOmIjY8OtcbPxFXoDrC1qXv5DZSD1RnTJSScF4YGXeFW1shMK6l6BI3Mi1_gQ4isftA_Ow-WDCZ1grgazDcpKOYzbKI8UBJwOLkueNx3ieQ9HTaVg3rQ2eLN_znh_StlW0GH0vZQCi2fBONUXD1OueNnKpkGy-iz5iXL7XOAnkLbLHqujcNhkL1pGJGQOHYaahnXb8gXMy6I7tIuGiIfe7GV8X3u0hac2s6ViKt4gyh1njIGdjYCyvm1bXu7pNNGUkdm2D-CsYEyjRwkeGYC4lVwbRqMM8IWB-baNLioS28dkviSTIX96a5FVrhzUGPe0TdLgCP77SSky09BXweWwXpYDeh0me1EAbI9ePGouKLvheoltIEF9C5m5XR-CKcaTPz0K1UBxWQLy8IWtU5D2F_Jhirc0nPsALWXvUxAZRMP1Jt4fGomIo8sX97PaDNXPalG2tc2lBxDHbI2g_AwzZGJj-97iMxTWuav3EJlqQThL1QAQ65kicLUeeZGvjT8vNK3AIKfp5tU6XimhtyZ2ezdZdywL68AbqVT6h6b3RTZufY7L82c96RRzx4csMp6WdGFHGtBvE7ZrCUQbxfE1MNfax2HlEViX4iIN1LA6rUisiG4ZGimb_YjkbtWW1MKVFbPUHAPVqOb4-w2vG5FVIhtdvhdk1KY2rFN6nSuR0rHKu3R5DZpAsplAVkGwi7EmFmPC7TbpS7fJDODubr69KD64xptKC9ebP1DbYZyRWMTwHnD7n2BVQT4vJtu4IaMwjlGduJyV-nV6r5k0WCwk5jwuV_S9Z5TZzPuJMFh7FhTzDEQzFPCzyjRfIYJIFOVjdWZKe2BPqi0r671xO0XoBCl-EHxqZ9QAU_ufz4PmhiL5WVcDG4ta0iNXzkQMcNIjfx0M79_f_DtFgfUPxaAVcOSFIupx2nN8nFqWqzmR1NbB6Swlssw62iYYenC9aCBGzdwxmun-EukSp83B_Mt9sJKk5ejeslc8iEFUTclxWcJkNjdbx8qvqTWzG2fedqcTsWdbk3Ezlr6uH-V9Wg4C8poFiRyztGfRxdwOFki_a3RM1M4DihrJMyca-FRrvudnp-AiJsgaxGRObHwnADvSCRh4cUrjOBYNMHaGiznk4MpEUEu3S2L5q1Slnc5cFs8Ww99H2Br-AN-wI5wYX6EmP-L5olxFUeMFNqELrk3FQJ8xEi_3yjYXT4mO2F_AoHzOVE3cdITR6LKmPI81_z7T2sOxszEnOn-hQNeC-BpwMVJ9bKgM1W3BbQGFBBB_izGAq0WGgajr-ryJ2tSsC5ijOl5usxis-oFwTmE7QVdW17JmUGZ9wqgFhkQv_O84so5d8_cRHzPuPIWRRygmXrS2PKNm1k5n67WC1oNa6mq6eO8IXAqeAyIugBIe0fVySnB-4v8f7Ca9ASIrY1Zt0jnH0ls9FLN3fIWfXaGTjZHp1uE2129YCyyFkLuRHRlrbphyOFmQps-oVikkB3pwbV3ZtLYNAEjsRVpUMQ1LuKt3NFIswavOq-Gnv1tYaOH325YxAJ_TUJBKKXmwHyXmecymZgDDuv7K5xGkg1Hpiz0Hubl3rbgJj-5Ms5eC_636-2Rj_FIBc_Vs2phBsSvYqgIYprENgd7Mx-CRI9eNE4R7qGKoAwyx2ccojKP5tmqnaO3Dg3T297hnUrHy4o49f9M3NOTOjGLhQTatAPXdbAgeoHZZEud3ZfYMtpAnqH1RLtqt6Lr8K7YbcnL9an0HM7f-Cv6C1Jgl6IU-axkPyLLTG7Az0AYvRDDvh4RadwKHiAVAoOqRODbEwfwrnsBoCbBRr1ahCE21lFnaMPKUectY45Fq6BPdTIgM3_kznWPVlu6HCuj72sQyRKykYHtSuekx_M4gG2pnbprvt6nLKewuOYCbMQAk7B8s8yCwT6TqT2o9gGxSHoH1NgwAWXVEVjZ14upn1wHWq7sR729Ph7jvHwIiRsALVpAo5En6vd6uvcA8MA8G8-Q9yC3G7wuGw51IhknZphdWRLZ99veJCqACplM8MW3trtMI1isYnuGG5VU9LIgddQCLHuSqJCfWf7uEudvy43nZ-u9LKHPqIYCu_V-WzPTbqFLCb2QeFXetvG4SZahpiwRW6gnP8ZDLXLOPuqpPGPTgf14kHRbHnXmYTA3-IitF4ZTFXUrg-mCJTOawfsnIt7SdCo57HA-dznt5M3ZvsRIvHrRLjMyb_NbvUPTdu7-YD4PbZ_tFduovizKb4XdZIq_OnNtKku2jy0DYb52Gz-5T9OEm2we2Dqd-WvGxy55Ezke75C8MjLgEeJL3eqQeqdGiiXpXtP3LWl99iKbKpnaxTHipFUAtxyf6cZ68gReZqIPIwj-hnqmSiwJj-9fpAMtzhNJ-893myYRH-KgfMnObHsFH9k3vB-D5CalDkLcK_SlS1g9GzeAKBPAwLpQPIQRHQTUxIQBsGnkiALF4d97AJTCETJsBQ4L2ajxnUs1uZe7l4Y_06vL-nfwH5q_e1t08aUwGvbbrPBzB_eOFbc_20SJwNmJjAPF_gl1ar_o0fbTZUWBfXmUqbWwsiiVu2EQLjfuOE8Y2-Scfl3Hyq3HUejJki6HU2j1hQNhqi8opi-lTksY3pvsa53LGQ8JFBuceRdRafgEIKa57kKIDvvBCRv87qz96AoS3hElBx9U_zEAgLKXFoMh1RAx_Xl1irUqLuR_7m-1xsj_ZVaHZm_3NZHATchHIleNlzMpjVNTl4k9rxn3VGMKQwb8BqIN-zLnwasI9eWLSUMZQJyQINk90ai96rayuG1OUQ4kis_XhiJMEQaAu8FJ0kpSk8tOlV0wmBI3LkV1WtfRPOdImKB6wo28uTByjU36yVivVGaa7LL6fVzJcelFRad6CEXLFKKLcAe3YQjN6-ANW_kmM7ogFN6flMbKJRpqWsWCOClECB60YK-oJtoHsYQBI8dqKNvpC9droooGQi3HyeXIXVk2v7qt3Oh3GiacQSir6UKrI4MCGmCd-KlHFVoNPmrK_LSwwK3NRDpxPtQa9D-rV4DNK4iTfOQGAXJM7l0DDMGxTS0ZtLA12hDmym2WIkvP6y_ldy4EUXIYko8c6aswFHKN-ww_Z9RJ4UZw73GDHMFELoxVN_OIgPPFI6QxpkCnommAkCUFTksjKcyWzFVEj6NhfzfzntfkGT3-e5TU-i_jbq30DKes8btyA3NcyRTOAWNY7GwbpQL78dg_iLJwjOndZA-kdwAk2zj0MdszoIVNWmMce0AtUqumKDn6qNNUnaTnpc3Nac7jO50CDTPkIVtFiTnNNABtHeoV4hD6ztJhkta1IB4tdAeqCm6ei20lhxqhbzYj_j3VXyzbMmbJ-dIBcdegvQDVPMGJxCJ0SwQp2QxKtWT3n3y2mZiXYxHsnIaXcX5TsuNStBTAXfTVrc-Ru4K77uoDMY7L1APh86Wi_DM6FjOktfH-8j7fFfQOygrpifx6asvnWn16Si29HxLiDD4bSs4gcx_l4E--aM0mRNPqgQrMM3mqyRpaR_yUJxvyy6nZQwg-dmpMDB2o2gLYpSCxQatzTiI80T3l8Pc6E-br3_dPXeRFdDabps-muLlfNMaxTqFmburJW6qxYaks4cm_wVxYOeyeQewLc_t3hE9d5JhKOVUSeF79kmFMHSV7dqjz7PB_Tut5s8paNNtjvKa0LHtoQ38gTbe2m6xjNKrBPZqM_0PoM3Er7pFbuDFC8GknJ5XiD9rmtfN95uJOiCbueEwgXKf2nDnbAMjfQk__fmEFD7SqaT7b5-nxPcXUH9aqozjN0GEafvGQnLOifqaedlk5ICDfrA71dGZJH_W2GCFBJe1Cb_wsDz61OAyltrtWBadyHn3LtS-pmlpYIjLOOB-y7p6bIsG1zIoA-p_lLDfq_vv5RdN9_V3OExBulH4AQLN8mKXoUwM1gfMBF2k37NJBp5qwAt7b_idBlHMo2RRoEWKtdNLjQh6fVAJGMAij2WHIAON_M8SorJ7crC12eULM6lOMDilxUGO3c8yvmhdYt5n5cAagEQshORZagIbcatjdSUguNi9aZxkCt0baBwG5FJGFIgwRBYupW63uZydMxDAsFEr5JAPUDQXDZvVKzh_rl3HpVKRI7KhL0v6ZpC_PNzKBdTjhJlMzlzk8YmWjr7fBwjPRjqQ3Iw0QoQlpJQlwetMK_egWAt9SqHcYc_HAHZvLm2rqJKgWj0Fr59dtt80gpKnkyWYM6C7Z9oWqP29TOJfv_loB4I_jN7caZuTq37F0ewkwdndGm4v_pSFPAIwHAgSfESkhBe5OQ0IUVXV92pVOYkQgBtW0JbIP1z87NbKJwG3yi1m4dXHHj2waDUId2dF9j9rRteFchaIa4QuuBx8k53CzkEhk26z6vyAfXdbzbV4O46FexQWezGUr5ngXydfpueLUPLCyXZrR1l7KCcPx-4WWsCMdYtMbsK9TQIT3SJlXGAw_f9nSeybJGjMV3t1T_oJYCuLaWFrr6ICoqPDBI5S8JO9YHnEcVvR7t7CS2iEVd7IBXxpyKyqSp6Rfq-1u8ZX8JIoqgwI18_iZ9gkZg5XpJZS0oDXLDrWg4I7zeqKBO-ex4GWFSB_5Gq1KarIdZkQcwagdDTEAcj0VeajV6wCbseKtrfhl9342JBrjFuOARd2jYuhb1266rmRIDjTk37OQkF1bvJPKuWcAzYyIeoEKRbQXd4N2XGnp_HDrvOxrMZ3dTsgX_JzoQVydTQSI3HQg2U42KzzFJRxWWN_MnC_aGFLJ3PmjGI791L6eFefoXM54IqoXoqgXa0VoHw_6r4u5I2zQ1Bqvmp-u3Yf_2GK-L8pgwQsnb5uGS_9VnLunuNXiMllgEA9yUzLh3yUBCyRvxm-uzFILkzAhN-ejEu3Ckm8qrYdKz0mRk4ugSHVhH6VkRZFj6-nv6inK_6ll1c3RpVfItDxHI3Y8xN3zAGwmJ3ruRx2voSDP2_qfiGumN4N2AdUvP_hr7r1s5HjGC7lX8EMAMyzeTwpp8c8GL9vi_F9PRL6ohQei6X_FbMcAvxDkagsLvRElOTbV8xe4bUSr4TiIxypOGir5ro94Wmv54tLKzs46jz7_glOFCPePOG9NRoypvolrF7vV8UOTbYP7RrltTPCxdtSvhjiOVHmut2Ms7axXBsWEP7nsQVFvhw6UaQCz4W17QlerlKZMFIqB3b6ZL78s5BVMT6HApD-kLW4YBhssNJUC0D3o4nhBst_aOWItZJCeOU8pwd7lYI1yk1mN2EULAoc97-QvS-FbkP2JVrdsVfNk9qeNNVJl68EGK6_eBORUwe4DEMdoWeBZgmJjkZTGQPXLScOvfCN5gyen14ig_z0ubXPZuDccKwdVD_MfGInuSyYCj6sAUnX4x1TBbQviBcSdY0hTm5VaHCfjPE54bnKnJCpc4c6L43vJFp7-FuKgS2mvFflZU0mY8kPC9_dWYP4qOIg3YmZVmhM1nR4cTo1P4fknaPHrmsA-RJQeh9zlZePiEs7bYrJBwAe864kK7o4PeyYF4e-dhlw_ci7K3aXegSBXgLwT4p1uvMChN2PeYmZAB0ph12BYUbi0J9BuZA3k-TlJB_2OClTIxUlGTGXVF3IHrCOIS01k9Yf0SpdJIiw3CsBrMissa-cJi4jXlGIM-S6ODRUmk1W3gQvhFlco=\"},{\"role\":\"user\",\"content\":[{\"type\":\"input_image\",\"image_url\":\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/62FlSlACEQAAAAEAAGFbanVtYgAAAB5qdW1kYzJwYQARABCAAACqADibcQNjMnBhAAAAYTVqdW1iAAAAR2p1bWRjMm1hABEAEIAAAKoAOJtxA3VybjpjMnBhOjY1M2EzZTVkLThlNzUtNDA0Ni1iNDU2LWU1MDRjMThkODA4NAAAABf9anVtYgAAAClqdW1kYzJhcwARABCAAACqADibcQNjMnBhLmFzc2VydGlvbnMAAAAJ0Wp1bWIAAAA7anVtZEDLDDK7ikidpwsq1vR/Q2kTYzJwYS5pY29uAAAAABhjMnNo7jOSha7DqlpqKw+PkKJzMQAAABdiZmRiAGltYWdlL3N2Zyt4bWwAAAAJd2JpZGI8c3ZnIHdpZHRoPSI3MTYiIGhlaWdodD0iNzE2IiB2aWV3Qm94PSIwIDAgNzE2IDcxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUwOC43NDkgMzE3LjM5OUM1MTYuNzc3IDI4Ny4zMTQgNTA4Ljk5MSAyNTMuODg0IDQ4NS4zODkgMjMwLjI4MkM0NjEuNzg4IDIwNi42ODEgNDI4LjM2IDE5OC44OTUgMzk4LjI3MyAyMDYuOTIzQzM3Ni4yMzEgMTg0LjkyOCAzNDMuMzkgMTc0Ljk1NiAzMTEuMTQ4IDE4My41OTZDMjc4LjkwNiAxOTIuMjM0IDI1NS40NSAyMTcuMjkyIDI0Ny4zNiAyNDcuMzYxQzIxNy4yOTEgMjU1LjQ1MSAxOTIuMjMzIDI3OC45MSAxODMuNTk1IDMxMS4xNDlDMTc0Ljk1NyAzNDMuMzkxIDE4NC45MjcgMzc2LjIzMiAyMDYuOTI0IDM5OC4yNzRDMTk4Ljg5NiA0MjguMzU5IDIwNi42ODMgNDYxLjc4OSAyMzAuMjg0IDQ4NS4zOTFDMjUzLjg4NSA1MDguOTkyIDI4Ny4zMTMgNTE2Ljc3OSAzMTcuNDAxIDUwOC43NUMzMzkuNDQyIDUzMC43NDUgMzcyLjI4NiA1NDAuNzE3IDQwNC41MjUgNTMyLjA3OUM0MzYuNzY3IDUyMy40NDEgNDYwLjIyMyA0OTguMzg0IDQ2OC4zMTMgNDY4LjMxNUM0OTguMzgzIDQ2MC4yMjQgNTIzLjQ0IDQzNi43NjYgNTMyLjA3OCA0MDQuNTI2QzU0MC43MTYgMzcyLjI4NSA1MzAuNzQ3IDMzOS40NDMgNTA4Ljc0OSAzMTcuNDAyVjMxNy4zOTlaTTQ3MC44OTkgMjQ0Ljc3NkM0ODYuODkyIDI2MC43NyA0OTMuNDg4IDI4Mi42MDEgNDkwLjY4NyAzMDMuNDEyTDQxNS41NzcgMjYwLjA0NkM0MTIuNDExIDI1OC4yMTggNDA4LjUwOSAyNTguMjE4IDQwNS4zNDUgMjYwLjA0NkwzMTcuNDAxIDMxMC44MlYyNzcuNTI2QzMxNy40MDEgMjc1LjE5MSAzMTguNjUyIDI3My4wMDUgMzIwLjY3NiAyNzEuODM3TDM4Ny42NDQgMjMzLjE3NEM0MTQuMTc4IDIxOC4zNTMgNDQ4LjM0NiAyMjIuMjIzIDQ3MC45MDEgMjQ0Ljc3Nkg0NzAuODk5Wk0zNTcuODM3IDMxMS4xNDRMMzk4LjI3NSAzMzQuNDkxVjM4MS4xODVMMzU3LjgzNyA0MDQuNTMyTDMxNy4zOTggMzgxLjE4NVYzMzQuNDkxTDM1Ny44MzcgMzExLjE0NFpNMjY0Ljc3NiAyNjkuNjkzQzI2NS4yMDcgMjM5LjMwNSAyODUuNjQ0IDIxMS42NDkgMzE2LjQ1MyAyMDMuMzkzQzMzOC4zIDE5Ny41NCAzNjAuNTA1IDIwMi43NDQgMzc3LjEyNyAyMTUuNTczTDMwMi4wMTQgMjU4LjkzN0MyOTguODQ4IDI2MC43NjQgMjk2Ljg5OCAyNjQuMTQ0IDI5Ni44OTggMjY3Ljc5OFYzNjkuMzQ2TDI2OC4wNjUgMzUyLjY5OUMyNjYuMDQzIDM1MS41MzEgMjY0Ljc3NiAzNDkuMzUzIDI2NC43NzYgMzQ3LjAxN1YyNjkuNjkxVjI2OS42OTNaTTIwMy4zOTEgMzE2LjQ1NEMyMDkuMjQ0IDI5NC42MDggMjI0Ljg1NCAyNzcuOTc4IDI0NC4yNzYgMjY5Ljk5OVYzNTYuNzNDMjQ0LjI3NiAzNjAuMzg0IDI0Ni4yMjYgMzYzLjc2MyAyNDkuMzkyIDM2NS41OTFMMzM3LjMzNyA0MTYuMzY1TDMwOC41MDMgNDMzLjAxM0MzMDYuNDgxIDQzNC4xODEgMzAzLjk2MSA0MzQuMTg4IDMwMS45MzkgNDMzLjAyTDIzNC45NzEgMzk0LjM1N0MyMDguODY4IDM3OC43ODkgMTk1LjEzOCAzNDcuMjYxIDIwMy4zOTEgMzE2LjQ1NFpNMjQ0Ljc3NSA0NzAuOUMyMjguNzgxIDQ1NC45MDYgMjIyLjE4NiA0MzMuMDc1IDIyNC45ODYgNDEyLjI2NEwzMDAuMDk2IDQ1NS42M0MzMDMuMjYzIDQ1Ny40NTcgMzA3LjE2NCA0NTcuNDU3IDMxMC4zMjggNDU1LjYzTDM5OC4yNzMgNDA0Ljg1NlY0MzguMTQ5QzM5OC4yNzMgNDQwLjQ4NSAzOTcuMDIyIDQ0Mi42NzEgMzk0Ljk5NyA0NDMuODM5TDMyOC4wMjkgNDgyLjUwMkMzMDEuNDk1IDQ5Ny4zMjIgMjY3LjMyNyA0OTMuNDUyIDI0NC43NzIgNDcwLjlIMjQ0Ljc3NVpNNDUwLjg5NyA0NDUuOTgyQzQ1MC40NjYgNDc2LjM3MSA0MzAuMDI5IDUwNC4wMjcgMzk5LjIyIDUxMi4yODNDMzc3LjM3MyA1MTguMTM2IDM1NS4xNjggNTEyLjkzMiAzMzguNTQ3IDUwMC4xMDJMNDEzLjY1OSA0NTYuNzM4QzQxNi44MjYgNDU0LjkxMSA0MTguNzc1IDQ1MS41MzIgNDE4Ljc3NSA0NDcuODc3VjM0Ni4zMjlMNDQ3LjYwOSAzNjIuOTc3QzQ0OS42MzEgMzY0LjE0NSA0NTAuODk3IDM2Ni4zMjMgNDUwLjg5NyAzNjguNjU5VjQ0NS45ODVWNDQ1Ljk4MlpNNTEyLjI4MiAzOTkuMjIxQzUwNi40MjkgNDIxLjA2OCA0OTAuODE5IDQzNy42OTcgNDcxLjM5NyA0NDUuNjc2VjM1OC45NDZDNDcxLjM5NyAzNTUuMjkyIDQ2OS40NDggMzUxLjkxMiA0NjYuMjgxIDM1MC4wODVMMzc4LjMzNiAyOTkuMzExTDQwNy4xNyAyODIuNjYzQzQwOS4xOTIgMjgxLjQ5NSA0MTEuNzEyIDI4MS40ODcgNDEzLjczNCAyODIuNjU1TDQ4MC43MDIgMzIxLjMxOEM1MDYuODA1IDMzNi44ODcgNTIwLjUzNiAzNjguNDE1IDUxMi4yODIgMzk5LjIyMVoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgoAAAF+anVtYgAAAEFqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmFjdGlvbnMudjIAAAAAGGMyc2hdSkvjFmKRxUgNqSNNJa5ZAAABNWNib3KhZ2FjdGlvbnODpGZhY3Rpb25sYzJwYS5jcmVhdGVkZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBabXNvZnR3YXJlQWdlbnSiZG5hbWVpZ3B0LWltYWdlZ3ZlcnNpb25jMi4wcWRpZ2l0YWxTb3VyY2VUeXBleEZodHRwOi8vY3YuaXB0Yy5vcmcvbmV3c2NvZGVzL2RpZ2l0YWxzb3VyY2V0eXBlL3RyYWluZWRBbGdvcml0aG1pY01lZGlhomZhY3Rpb25uYzJwYS5jb252ZXJ0ZWRkd2hlbsB0MjAyNi0wNy0xOVQwMDowMDowMFqiZmFjdGlvbngYYzJwYS53YXRlcm1hcmtlZC51bmJvdW5kZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBaAAALump1bWIAAABJanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5jZXJ0aWZpY2F0ZS1zdGF0dXMAAAAAGGMyc2htwRZizBAqU+ypnOv4HGAmAAALaWNib3KhaG9jc3BWYWxzgnkFhE1JSUVId29CQUtDQ0JCZ3dnZ1FVQmdrckJnRUZCUWN3QVFFRWdnUUZNSUlFQVRDQm9xSVdCQlErQkh2WmhwRXNxV2tkcUc0YU55NXVZQmdMeXhnUE1qQXlOakEzTVRnd09URXlORGRhTUhjd2RUQk5NQWtHQlNzT0F3SWFCUUFFRkQ1TWZJNVFDNGRzY3hXK3IyNlg2aER1bENESkJCVERzeVNXTkpPaFdlcFNHR3VlRitDcHV0YXdUQUlVVXBRbEI0RzFhb2I1TXhkNGNOYU9yZTlpR2tHQUFCZ1BNakF5TmpBM01UZ3dPVEV5TkRaYW9CRVlEekl3TWpZd056STFNRGt4TWpRMldqQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUE5cTc1WEo2d3VvQS9ESlRXS0F3ekQ1bGw1N3pxdXRRUzdONzFDWVlvRU40Q0lRRGRIcGRvYTUySEQ0OC9zcDh2NmVWNUQxMWFESS85MkVNU3l5dVVxY2pBaGFDQ0F3RXdnZ0w5TUlJQytUQ0NBbjZnQXdJQkFnSVVLNXZHUDVEZXFocTFUV2hVYUZRRlFmNWxUSll3Q2dZSUtvWkl6ajBFQXdNd2dhY3hDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoT1pYY2dXVzl5YXpFUk1BOEdBMVVFQnd3SVRtVjNJRmx2Y21zeEV6QVJCZ05WQkFvTUNsUnlkV1p2SUVsdVl5NHhGREFTQmdOVkJBc01DME5CSUVScGRtbHphVzl1TVJvd0dBWUpLb1pJaHZjTkFRa0JGZ3RqWVVCMGNuVm1ieTVoYVRFck1Da0dBMVVFQXd3aVZISjFabThnUXpKUVFTQkRiR0ZwYlNCVGFXZHVhVzVuSUVOQklDZ3lNREkxS1RBZUZ3MHlOakEzTVRjd01EQXpNakZhRncweU5qQTRNVFl3TURBek1qRmFNSUdsTVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lUbVYzSUZsdmNtc3hFVEFQQmdOVkJBY01DRTVsZHlCWmIzSnJNUk13RVFZRFZRUUtEQXBVY25WbWJ5QkpibU11TVJRd0VnWURWUVFMREF0RFFTQkVhWFpwYzJsdmJqRWFNQmdHQ1NxR1NJYjNEUUVKQVJZTFkyRkFkSEoxWm04dVlXa3hLVEFuQmdOVkJBTU1JRlJ5ZFdadklFTXlVRUVnVDBOVFVDQlNaWE53YjI1a1pYSWdLREl3TWpVcE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVpFQVo1NnFMcG1ncU4zb3ZMcWg0VFh6cWJHTDV2dndCczgrWDhHdVhxOWE4SXZHL3lzNG5ycWRlbms1U2xaUEJZdmJYUlIzT0JMVHB6UkpoWUxLZnhxT0JoekNCaERBZEJnTlZIUTRFRmdRVVBnUjcyWWFSTEtscEhhaHVHamN1Ym1BWUM4c3dId1lEVlIwakJCZ3dGb0FVdzdNa2xqU1RvVm5xVWhocm5oZmdxYnJXc0V3d0RBWURWUjBUQVFIL0JBSXdBREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd2t3RHdZSkt3WUJCUVVITUFFRkJBSUZBREFLQmdncWhrak9QUVFEQXdOcEFEQm1BakVBdTROOElsVksrZVBWd1cxTFBCUzVOU2F3ZkRvM1ZmRUI4TTlrUC9WL0dEdGlpU1A1NUROWlZKd0JFNHorM3ZVWUFqRUEzaHNZakdVL2FpaG5ZMGFEU3pPQkFvT0ZJVFpKQWYxK1ozTEVZM0ZRcmdOd2VuNHhuRGM4ZHhhL0w3cUQzL2RieQXMTUlJRVZBb0JBS0NDQkUwd2dnUkpCZ2tyQmdFRkJRY3dBUUVFZ2dRNk1JSUVOakNCb3FJV0JCVEwySTQyaWlFUmN5eTU3NG9hbzJxZXZGTk1RQmdQTWpBeU5qQTNNVGd3T1RFMU1qVmFNSGN3ZFRCTk1Ba0dCU3NPQXdJYUJRQUVGSUFnOWJ6aUpPbHR2Tlp2eGhjcFpYd2t5UEg5QkJRRDFWK3Zmb1BsQkIxWmdDZEtOUDlGL2V0SmVBSVVNT2loOEtXSlFtdlN1WUpJUjVrWjNCWTNBc3VBQUJnUE1qQXlOakEzTVRnd09URTFNalZhb0JFWUR6SXdNall3TnpJMU1Ea3hOVEkxV2pBS0JnZ3Foa2pPUFFRREF3Tm9BREJsQWpFQWt1Z0g1TklqOXU3Y2F5YTB2TmluN09rMExIeE5XaW9WencvS1poaTRpWlFsTGx3SGpnbTNLZmZ5T0JEQWtkZ1VBakJOcmhCS1ZYQ1M0bk01a2wwRSs4dXZsNmM4ajV2MENDYWc5Z2JJK0plOXVaMnBQL3hzeDZvQzVCbmNWQnNSeUVxZ2dnTVhNSUlERXpDQ0F3OHdnZ0tWb0FNQ0FRSUNGQVBRZlRTU2JWY1pjTWJZRkpCTWM4WFQ1WnZnTUFvR0NDcUdTTTQ5QkFNRE1JR29NUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVRtVjNJRmx2Y21zeEVUQVBCZ05WQkFjTUNFNWxkeUJaYjNKck1STXdFUVlEVlFRS0RBcFVjblZtYnlCSmJtTXVNUlF3RWdZRFZRUUxEQXREUVNCRWFYWnBjMmx2YmpFYU1CZ0dDU3FHU0liM0RRRUpBUllMWTJGQWRISjFabTh1WVdreExEQXFCZ05WQkFNTUkxUnlkV1p2SUVNeVVFRWdVbTl2ZENCRFFTQW9NakF5TlN3Z1JVTkRJRkF6T0RRcE1CNFhEVEkyTURVeE1USXpOREl5TlZvWERUTTJNRFV3T0RJek5ESXlOVm93Z1o0eEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUlEQWhPWlhjZ1dXOXlhekVSTUE4R0ExVUVCd3dJVG1WM0lGbHZjbXN4RXpBUkJnTlZCQW9NQ2xSeWRXWnZJRWx1WXk0eEZEQVNCZ05WQkFzTUMwTkJJRVJwZG1semFXOXVNUm93R0FZSktvWklodmNOQVFrQkZndGpZVUIwY25WbWJ5NWhhVEVpTUNBR0ExVUVBd3daVkhKMVptOGdVbTl2ZENCUFExTlFJRkpsYzNCdmJtUmxjakIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJHTDMxMnlnb0xYaHJOdkloaUxaeVhMTWU1ajRMSU1EaHJoMHdObFphTDlhV1Buc01WZVVFY1NCUVV1c29uL0pWaVhESSs3YVd5T3BzV3JLVm51cVcwcVhrOVFvNjN2cnlUZGszejlTYVJpbTYySkhOR1FKbkxzQ0lWaUNKN2tkT2FPQmh6Q0JoREFkQmdOVkhRNEVGZ1FVeTlpT05vb2hFWE1zdWUrS0dxTnFucnhUVEVBd0h3WURWUjBqQkJnd0ZvQVVBOVZmcjM2RDVRUWRXWUFuU2pUL1JmM3JTWGd3REFZRFZSMFRBUUgvQkFJd0FEQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3a3dEd1lKS3dZQkJRVUhNQUVGQkFJRkFEQUtCZ2dxaGtqT1BRUURBd05vQURCbEFqRUE3ZTBmaS9mTHpNNFRVOE42OUJyUXpBd1BHZ1RweERwV2hUV2FLcjRIaWJKR21WNUovTFdHNVZUV1VqckdhY2Q4QWpBWEdDVGEzdy9GZk1HVmlkUzFjZFRLckNuaEE2aUlxeTgzOE9sQi9sdCtHZU1TYnEydzZ2UVMza3oxc0ZFanh4Zz0AAADDanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaJlF/+7opq9IrrjxiEzjrUgAAAB7Y2JvcqVqZXhjbHVzaW9uc4GiZXN0YXJ0FGZsZW5ndGgZYWdkbmFtZW5qdW1iZiBtYW5pZmVzdGNhbGdmc2hhMjU2ZGhhc2hYIAP5TkXl4191NS6N5LxLsOsH7r80GXXiCSzB6FJOZ6QlY3BhZEkAAAAAAAAAAAAAAAMbanVtYgAAACdqdW1kYzJjbAARABCAAACqADibcQNjMnBhLmNsYWltLnYyAAAAAuxjYm9ypmppbnN0YW5jZUlEeCx4bXA6aWlkOjY0YTdjNjkyLWQ5NTAtNGYwNS04MzUzLTA2YmNmZTlhYTgwNnRjbGFpbV9nZW5lcmF0b3JfaW5mb6RkbmFtZXgYT3BlbkFJIE1lZGlhIFNlcnZpY2UgQVBJZGljb26iY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIGiAoLKucP6DZW3n4G7oYobIrrgNIyysPIIIe95cIrQCd29yZy5jb250ZW50YXV0aC5jMnBhX3JzZjAuNzkuMmtzcGVjVmVyc2lvbmUyLjIuMGlzaWduYXR1cmV4TXNlbGYjanVtYmY9L2MycGEvdXJuOmMycGE6NjUzYTNlNWQtOGU3NS00MDQ2LWI0NTYtZTUwNGMxOGQ4MDg0L2MycGEuc2lnbmF0dXJlcmNyZWF0ZWRfYXNzZXJ0aW9uc4SiY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIGiAoLKucP6DZW3n4G7oYobIrrgNIyysPIIIe95cIrQComN1cmx4KnNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuYWN0aW9ucy52MmRoYXNoWCBSdrAznwM8WZOUtQcQ1wRzPhHjLcFrKo2gZnmx1eGLE6JjdXJseDJzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmNlcnRpZmljYXRlLXN0YXR1c2RoYXNoWCDOxOKbUidd7VeAgFE6yiUOeCDxZ2Qub1+Luar7CkkyuKJjdXJseClzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmhhc2guZGF0YWRoYXNoWCCNWe16fsv3drz877n+3X0wnpu6iTBm8qHNyrRVzPkpqmhkYzp0aXRsZWppbWFnZS5qcGVnY2FsZ2ZzaGEyNTYAAEXOanVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAAEWeY2JvctKEWQdVogEmGCGCWQNyMIIDbjCCAvOgAwIBAgIUUpQlB4G1aob5Mxd4cNaOre9iGkEwCgYIKoZIzj0E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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9lhAHrKMfwR3AJQ0QJhSYC5PQUPeDVQef+9uk4Mqi5f5tMZD5pRErn9dMUbgF8DIDuJfCMq6YVLE7vycgqoIXKt2Yf/bAEMAUDc8RjwyUEZBRlpVUF94yIJ4bm549a+5kcj////////////////////////////////////////////////////bAEMBVVpaeGl464KC6//////////////////////////////////////////////////////////////////////////AABEIBAAEAAMBIgACEQEDEQH/xAAZAAEBAQEBAQAAAAAAAAAAAAAABAUDAQL/xAApEAEAAgEBCAMBAQADAQAAAAAAAQMCBBITFCExQVGRETJxsSJCQ4Fh/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/ALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHj1LrLdjDYjrl/AUvUujt28NieuP8VAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/Z\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"Now make the triangle blue.\"}]}],\"tools\":[{\"type\":\"image_generation\",\"action\":\"auto\",\"output_compression\":10,\"output_format\":\"jpeg\",\"partial_images\":0,\"quality\":\"low\",\"size\":\"1024x1024\"}],\"tool_choice\":{\"type\":\"image_generation\"},\"store\":false,\"include\":[\"reasoning.encrypted_content\"],\"reasoning\":{\"effort\":\"medium\",\"summary\":\"auto\"},\"stream\":true}" + "body": "{\"model\":\"gpt-5-mini\",\"input\":[{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"Generate a simple flat black triangle centered on a plain white background.\"}]},{\"type\":\"reasoning\",\"summary\":[],\"encrypted_content\":\"gAAAAABqXOW2RoFJWpA81w_vweFr0iHQ5uCpsReoKbmPpyUhCwlm5lLubRBc3D2Ken8UNoPaPHzA0IAUTPoQ4CmwTAzRBn9nTz0upKnytFs2ilrchJskeslMO7WGA0otkbPG_ZDvYTSj1lfofNGbyDHiVnFyt5yhQ_MmIs2l5yjTK6TgHV3towKRrp7YFKbmVE9z3RJ2WBRFzZ3YIb4i4GuctmtedrplMjZR86kuvxZuePz_1iEV3sq0vpazrC1OMHtchHTeX_KSM1Xv_GoK9narTYcEv2V5yw3ssbu27qRAEzy_ZlwIphQdUP2wzRd0UxYKuEe6HEnyBUBnh8hymbhg7UC7-fKgBpcUHNnBID5m8Mr38yg-ZSALNhrJex_5PSpna0WdZRODUkJGxxiUf2LP7HS8hJe7aQafSAZWoPvv7d83urjyqF7rwHsDgWpvzd_wEUWsOns-W6cpNkdSotMOOcFgajCyY3RwsYLqR0Kdv3S3cMvxx55jUwXEcNT8JWkIH9yzS9OWwvo0a4aJPW_UbyfuAW4ube5Q1AuJngq2AUxOeuOFwHgVW-Vgunnt4xuFG0-EsoMsZDR7xBkhsV8wcx7QUTsbVhZPALDDgAxFFyJBrj3ST7JRFs9QcJG7a-uqpinkbhHeMid2Il8g2mN5Su6UjF024PGFLiYx_k3x9RBkpAaA60pzTsUzyHDRFPwiwQluSA9mYYB66M-mHNNFy_NmsHeZmJCFz6HHqInY3rjmG0VoPYitDFZWbjPk8-bm8X3j7oCofYrau-axXESc7D5XNrA1hzT6FYtn7QTg5SeeQ6Bd8LolJ2C54josvOzXIiWoR8rJnOSf6Q7JOC5jRely5rSoJ_pUVc-G3-m9wkgfquRj0hTQ_B8WpSzmVcyibAFjaSzHb2u-9J8bnmMT5NyYGxmI3XTQgPghAP6LnjA71PLCKEmYA4OxCqfhelwRZMdee9ggZFTqwGa9Q9WYj6WbI3Ke-JN0cdPa_BSTgv7fVOMY7e1hjNMtlcnzDp-VImKryaezu3Vj29H0nO-g1HNC3mqhx912UJ_dyuKlDSNjsnNDTVA_taLXT41AVJwM84eCA9N5ocIvmPh9zwngi8zKyLYzcoEM5OqmQgM04usrXG9z8A4mKuuMFFgVvKEh46TYlfGICLH2mK5ojxnQq5DBTuoOvlAqciaYwb4I4PhBUxvwFN3-_hLxVp8d21zI02mfjq4zdlN2BkfwE5uvZUucukx-dbhzbarMMybM3xfu5_ihFOg43JeABYTmjmTceBW2kpuVU6GiAb09Yr8kQkKsUD9RkjO6uCaSJIgxUEfUZMym1Flg7eHFPJns56YEMXOw_Gk-nz_HfDvdkw3NmW7J089jx7ixjTP6dPI2ZcQBwze_41Zy64CnuV2ddDytWM5-nKIHuTAZzXpTsdJ4l7TPkl3VdvkF4cWnKCY0Zh80RVAegFU4iNp2pchxbAUWBOAUSF4wI6ccOmstwiPk3-NXN3Q5hWKP_ut5Qu34GB4avJDFFDz9xLNNJMEuxP3q2Y_qe1inSxSWmMXPBrzsPufR_x2Og4lj4U3eMVlcby0YL3hXw8nRnmFLh3zTEfNneiEon3u2DpKhgXJJSulS3oGq2qLBxqBS2dkwZ9rdR-sg5j-B6M2IME0Vnmp_Mqpd4sjQYj31LMr9SYhlCzmRup6SZCLmkw8Ryi1zNy49Qk4K3SYsS8P11hCuXZP9FV9tRP7uszKElguPeD28vgZIUuHgyW15dscWwGcwuOjIrl2RhiKOdLWUJLWS54yQWwHbCPUDea-3mI6ZXH2cEb_jKoODFAKYPYXcD4-g5l8m1q9_J2TiDnXyHXpmddT84W8yDzmxS5TWhWyNvvaVBHcH2e2jsiSCZkKdBSsT9irmt7A68GX6kSmBfN6xBa0zgRKapKdB-t9lFMgKJX58LtIgkJ4GyEa3Vljqkr6p_ogxbDvxdLBQQQKmROCGYWsY8vwj7xKkvGvDzP9LSowmy1r7WAWQRvhVltWWXnFR6C7gAQY5jFz4JjTgoDehAZk16GEYAyUMsGPdFCw6DqcuTf70bAmp40fMBbiz-Ezvw4fHXbAyuxJDDmik-7SS_fGnO0apwMxrmICMhuMEfofiu0TXeAwBwq1ztLEkf1jvAqNLyx6VKIrhqumgtmAObIGqNyIvN6uDGQe-3EEEQOLEoNf-25OQotsq0xXRgnxoCnF8vX4Y2gf_wIGf3_5AueR-lJFfU_R81FmRYfWWxT9o510aIS6BOLi7Yaw4WDM9hWSyyOwD4wcCa1jY6-e1DAFmk24oqp_DzriJz3gh_m69YeRyAbxgmMec82XjbUTrIKszr__QodFVeSxwZxhBXkp2fNIRN3orgQ1iccdS7BExLrP8iboYGdvZMUHZwQzBl9rioLFk1mwdghBsV4v-63haXKAm7-UKZmSXnslygCCtZ5bsBcgudZBtaEzEbFDbQcPKyQYycxdN69KpRnc7g8NPrFtWoT1Mkg1uhqA6FEYsH0QIuM_xvob-_F04ihHLL-93VcHPxoSosHynh1epp9PcfUzfC74SI8_TaKJ5OjT81i3lJCdVUH9UlJf2xFSswM5JJfRKAdU8u-ljQ1-uxafK5w9UWnlDcyhtikDGB8WNH27EPgb35b9rZJ1HzkURy6_5OoZAyLmNzs8cbt53cQeZf1QL4HrzkQHjLPOF-DGJvP-YEEQh-_Jicy6_aagtgl7sQ3AHSJwa5fc3kALE7j-vkMxRmP9tINYAw0pADx5TstQNTirMTB7-qAMOqfW_UyCVtBgG84OcFvlrsFzTERYW8Pidv6olXc8Lb8IbykePvtxrhufCFv5jNbO3GpXp62wW3kbmBxvTszwWecfVHxZ23CstGoDwbAmJDYVtYE7rOlobLGWkI01Q4IZmmAvus6tbqG3Lyt5If1F0DPEjjSkGY_dxwxTlFlc9rGG13o5a_FTAV2pSS5odrUvxWsaGOsG1FgnJKwf1NH00BeJzVlEUfIwLjZdAhs-l18ekU3Yikq4IegvXkEydFvpoqnqYA1fncdX9fuaI1ibPCO3t1HIVivSM2jNG00z9yrWX-5gYbUlyJ-7r5EUYDZBgZpogzFg6CPBQrcMtrtPBLuTpyrrR_E6Ck1ZBRV_rO0DXqM-Ku-MWY5X_nLa2CPROqlDfgakbqn038ARmxMbD-xrJBtCG4puNpuUwhwxgGuoVyFqObUDB0gGVoPAu1KjSj4ZD8nLE3sH7_l2pCCuyPEJDZTDWYBCSA7toushvVQCOnHEUwNlIK6Qr9AMZVjJTZEK5tXq1DsvH76J73No_y9CZXUiphjvKOVChsZqymtwyaadUkipCDVNsnK9_mmUttXQKSUxGRo-hsQV72_7cIsjwsrLCGH7DRLEKbHODTjt7pswikdFZVR69acRtbiL_bmaAirG3TXYXn9kyZw6ogPnGojwesjXZbW6nCpqCihQFzGQ6w0vKhj7kIaWvQXgiX5I8FtaN5sC1HTFmXgSUY05C0fQ0CfsFTossamPcAQ5h4fphLTTkpPP2qowiI3BVEE02HKGxl9FCHpvExuwrojvwuNxy_7EE9zzOL_bvKDESeX_aogsc6aAakFo74oGyQVN6LB5rrUYThrgBED6r41pYHQ7opvA2ZY76ixV_pCwt9LtBF8s7Vp-xrreBc_Qq5uQjY6LmDQTVbJ2M4iBCnkhV3B4jSBnlKIxxq2ZkFZwZlIcrP9T5se0KXBvzGZLRE5m_6J9jT8FNKhhho9QIsGomWsw5LtR4ZgFgXbnNlQZ6WNPMnfbNXFtYSVAvOZpa3v3-54kmcfyRa2gBXVN5PIh85fbjn2PL2GM1biqZ_fHU3huAWdH78mBa9S90cF-4_PKCwtUE6M3Uwkaik24uZwohy4F67YmE1jfQqIdcLIPC9Mk9AJj-ja35PI-FYSAdjGdJj57mBnneTW6vP-SXrE99vPtZa0lYa4OYnXpYE8_YJG6WZMaSSrLSQAZX2pQV5u3fTKSXd6EgXCLBZtxkxbsubsgrWa7OpOFDGWnj25zulb2KOrZYN4cAf5VMMqBc9f14Z8MnLMvTJ2JsnJAyzOAH2EH00Kyi2axkNs76KcumtJbrzIMQkmXnCsm0CTIwqPuDR6PxWWmNjKzGT-YVeEzWe26vHvDYYISBZRrMLo5owx1fP592JKM_003-uABJAjiugeYrETonQA68Uhwj63M_LDhHWbS3dNAaEaJ-qjnNMnmZFEcMVjUmLEOTvBMlo1FUHerUXmyh-8S2O4rwwuevQvTsZIw-x8CbQ4YTny_oNa0KKJ-jT56ysCod9UE-OwzrWrgLQcFxDmUrFcAmHUA0eiTFJGCut3YT0UDJEDNrETT9Dv50Et9p_B2IbhpS0sYJVQrMGtXF968tSSrSkcN8YbFmRd-f22EXR7oOANEI185gtDiFMsBSEfXd1dra60ayMoqaXRQ2FM4-agzetZau8XyjF4Hunmly69zgX-SPknE0-XGoOTId0UhjSb77JuJBTvMZDxyCfRtUiMnxRnCHYyg1rrQyiIxsfMwB9Adx0LdQzBLBTCTAGEAiKiNrxlLwG3o7xdai-8A-3XFdbuKpMw2SMYPfHgTwzixuttX44uC4A1kjA1WC59roDEzLvuNnxje77WXqy9C2DR3OHIt_bS1k2q58wTwLXWp56v23AwNNoogOsDovtQ1qF4m0hAGtBzYmPZ3S8DczXaF5TeXIx1VkK_cThLS7-wIhoU5V_F9eWjzjl6GjkUMn8FW0jqmTsO56auyzztDuxWnoBL5xTrM4epvbqKSk-Oo4k0fKCp_TlHary_ufEoLudY0iVtHUR6UxMn-8cbBHHkRkTj5G8AH2o5OGdFxtSXByTfZtOIJcEgIgKDu18rF37Jrv9ppC0EQqEQLNgWw45S2SbkSMRGv3AvU24Oy_ClfS7JhWrlGZTxIb8_oM958lL6aAVZsOVAHss9GdFxIw-ywlD-HAckWctbyquEUZQDfGPDhFymAWqbQW70jrTzcHW_Jjf0i6pdbCjDz1XP1LbTpVXcg_SGKCY4PYGCStwWf6xmaO6JcbYLyqv3TrBA23uiF3bHjX6rAqPw3Bqb6Z3sI8u50de9y6jiJma0fzUev6uEJt9pnqi1MA9ent1s3oKGkrgbX0uAQ0mrlZNNUuTLrIJMO---51BoVqQRViR4mmGIfdb1MpMwcF2HmRfVGuWTb-C50NDHZCb7x3BIlWj_5Ithwf4HNJTuRRWLO4RJ35yi_KuCF2l95ozR-h6GXdrb44pPj9uA1DvAykaYntGW_0IBZZoPoNfOKJSC_ZXXj0fG3SbeIK3MhgGUKr3NpFmm3BWbJXEF-PZlvvylEwKtZeVNFtorvOSS4F3ANorFPj_K8BFcU-MyLakPNrCBIiw8MzzgRHyO6PfySOVP78zyPNg_3mYMEnn_jnFlTLA4PHzABdxbumd0K09IHvZquTYorsNcrSsxWP0atTYG_fKH41eK6uir40vzI_unFjHXhxm5K5OiWC3LqXy6q2FZVxUaoWqF_1jzg1TeM01V6pNkVU2F2rxO9IrR8rym0w6m3REPqCNkkUo2icZ6srRWDaSJMaHd-qCEJKWsmqdnvVGa04Hk612u7i4HoCbakclXlkORzBHLVR-1XwlC2Bo_ehmVpqbWnHO7bFh5ngfFU5oQYEUsmL-J_qtMTxnAP5dFI3hD3cfQol5r2aTCn8c0qvLo7CYW-p19BzYBn8FDOqPc353e9KiIWVlYNuJSw2wHdZ5sI55lTdC94bL0pvy1Og9C5E1vJF91c3LY3fWkAFHbPWp_tQ3ORENSMxp3pzfAKRcKILpBmdrCvsk_VU14p0ijgYr4Xtl39p65jU0sqUH_LjDVS4GPXp_qObRdPO2awTycteRVXUc0V56ODwG1zU-JhtB7cs7eAXtjlEgig8VCEXW1kF608joYrlrDRMzvwoE2tzRLxzbkpWmCOARu3XzVKf35_qCkeWfAISdo0ihEtHSha6MJn1NLsOXXhGf2JqKD8WscPg2CSTaOV7MZM2Ipubulbwfw2jhAdT9c9CEcEnu-G38B8kCbbNYRrb5saF-cw7BVj3y7Ncuin0hbbRpX3dkXHKtSJgcg3JU4XOhwW1Wn9stvh3dE_exFNntgUkdOjXUp1XUbbH72yLdD9GjoG24XdMekDQ3JguQp-_V678R31CG46nlwSECcyMbFWTeNt5weNnPA2qRzoywsd2zJWR76NgXdt9X4l89ohStp044qFH-z0SdTviBIqjgQSp4ntNGrzIiPEXuMBUpysEsQFQvHDde4dw-qf9GNkdqMe_wYjsjcF1RBP0-i9DRCotHHvmwZBye8-ehQ5c_4HIGGj0vKvJGVwl1wDFU-atPFTHJ6tHk8_-0SvrNQKfaR3upzdN5ntwyQ4CGcfDyADhhAco-ft4YKo2-GXXKSrhH307mRCTmuROBSBP8kuNgEOYMVsbUFp3Yq9wRR_CJBEhvfIQYIc507MZhjYiMRkB2uvY5v6n4ji7HWcdxTp5grUd2xcv5Y0HHX6lMK333lfEBeegY2_tL5IKCsrTDZ_309twAkBXnQyjrrzBLRf7fi6Dx4UUdVfXMzdGUGbwWYzWqK70LxCdkITIdFw_fLCm72jZQe19JrHpRvYGspcpm-jb_G8t0L37QhNB2_iZXOMwVJABNpGffcNz7G7DvUGCF-mYa13uJsnBg_QIrO-ZfJpA6qI4H9ivSW7VLi_sVh_ozT4cl_K822ci1drOoeM2Jm7dKrysLbyxB9E1KqROEG7TlnqhZlxmN2znDDV8UNZElk9maJSpXysxMtRtf_8Kq_rxbzLvDcyw0-QPMpmimy_IbmtJV-g3WHKndThr33AR2h0u_Jnwbfu4oaLJbfi-hIwkePbeFi9E1JN9bbLX4uVFv1-6F7ThScFaQL9pk14fG8mFVvohzcUIVuOgSubv0PEvLklLNk5WWC4B5TkLXfUjKxlXc7w1pHuLg3pEvPcIPA9CT9g2A1Wym7gbxGvuNLT27xZGpjOVdNvXXLDJ8J1-jdKPQZ0wd3IbwhP-jEh7DL4sj2ZaSOJ1QB1ULpfkZeq8Vg-H7BLLzXlC09CQwEZI2Ehaj7kyajZlyiXx8TQwdEjxjzETPnuqPKO8tTNjkTrj2hzyIhXQJ5hnKn5OeDeJxU5dRuNSe25R9rOJknTVZlv5cponvn_NjQhCw3S5VGzVOka8nbglPM5cw7EeaJ_t1e7t-QRO5NbAhpjIzGrKvqtBuqzXyVxb63WoUUwWXTEz1f8xx5SsPslkH55wWfoRYIM9KzAAZxemMLiLfTzHVc8gwXGtYVHv9DAwt0wOqcMxfCGCpJIMa4hfmtlgZV6DDAfiz5TfErhGNQFzDNtqw9UMVtPbLsAXL7RJqmwKkkulk6SEDbEmEPxaR4Mu2S7DvuJHHG_ENf1LI3p1CHl77jqQhdKr2Mha5Wut6454233pQFlpXxd8DsPjynY_tEdCYCW6I85FhC_OEq4S-aC-NqTdIPCVVSqflSyvq-Px7qhbM3Dd-20c7NqPCJNY75nSlawBn5JNoPQSG3yINI9GWxboCU_qtIEZXzGfKb4mFnZ9xY5aRL7yuLuARtPuka5Xab4ZXO1wr52OBl4Kir8Wfl0b6TO_5C8Q9EWhOc5L3Ym2lV6UF37J8ikGiY7za7zRRxs90zZQfBhuzgizCU_PP4uVAxhyC0gSDhytOK_MdO6PCNvkIDZvyBnjT4W_Zku4Sf3MXUgFxo7W8Q0Ipus1RUvIM-EZD-2yEKCDEcORF8H9kZb2kP7IZgcBp4_GSzyktDN5VkfnCiU8qYacx07ZFataXiXb0SQzTAtoYr13Y28hWk75xbCYeTNBGLlwQl112Hl2xSdoErMPUfMxXlZfdyGyaY_Q9uBrM48flEHec3QjNSgHCbibJGNp3HZE2gBozd1jcbcC9nLNotrJ3ONBAbRA4tEP6JNorNrCl9_bN3iw5975XWy4SwBssarhSG0Pbq9dsdRtE2YyYRUTovy1y_1zFZLBlYXRbabVvYe-cLeVJKi_UGGcBbfLeor_XWOUGB48V_pBLD2qPQGFOzJy7_qOLD2uzHynpBct91kz2KUZ-IX6tZO7cpnQFCxnNfzzNTzlz_4VcN1RDBCAH-U2Y3SyfhtVDXwJwCcKAY1ant3hmtTtFqRekvgtTi0T7rXNHlJxE9FT5bL4P6q73HRq0pSz94NNuxS4J6-X4qNJjjJnpuRLfi_U67Op8V1YUPjRlLDGDW_bpmzFMcVulyyOdIJZTFBSEHxhb5fGpLp1T8mH94hwAbQ9MFNujT0O9_fOq8YjJCiY4jOOaG6vwn0TONeuMH3X8BZ4wfg6xWmQEhEX9EcMfQ0xcrrPGDgVhzuaRCB25IvbHOLBuQEE0UvuvT2226Dl7xj1IHFqHAywccZPuj0NCQYXm6u1Yc8o3XB7HbTxQfIQbOsA2PK5xih2mlsdp1KXUBeMTWJZ19EZ74rxpKPrUXGIB5FUl8_mRVjvnYuM0OgweL1twHCQmRFemfNpfRi1cZbGhmOJQNwAoNe8TDfjQWLFbXYz-7HYptXCN5iqFCJeXN_DnD1N9WOoktYfnhU4BpxIe90gdnaO8qE7TyHToIVl4QU4s2_gMzCnqJPKaWFrldfanwh2lHmJqj7ZRVe69nP6NpEYqWd8G6wVMLQiq9IfUFwLi6Mxatx73HoUeV5Xx0BC_71kFs40VTPI2313mLz8wPPkrPvnDYraCDixDkPFZG96pbdLARjONwntTQEH-rxlTkKgCmksrr25-7B9mBVEtxz8Tez2OxiGcVnWnGCLnVqiijo0Yr8q45ZGKoCSov8MSLS_mIHE2Q8VMZ_0WLy4I-rPkn3Ouix310Ds8FEzLPPBILgB7iH7oaXuPxGS5-bKPQH3DEdaNj3yf9vMdFrW7_Y3-zcgQ9kL68T5sS1laG2WJG_lnVdhxzjx8GyZ9wRoJyF6D38-4YtWc8Z14I3lB_kAhK01IKpi0URqFY7_71wcndO38ApYhr3dgcgzgpSXXKwsyOmF2iEE0zEflCHLnb7Byao21Co=\"},{\"role\":\"user\",\"content\":[{\"type\":\"input_image\",\"image_url\":\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/62FlSlACEQAAAAEAAGFbanVtYgAAAB5qdW1kYzJwYQARABCAAACqADibcQNjMnBhAAAAYTVqdW1iAAAAR2p1bWRjMm1hABEAEIAAAKoAOJtxA3VybjpjMnBhOjY1M2EzZTVkLThlNzUtNDA0Ni1iNDU2LWU1MDRjMThkODA4NAAAABf9anVtYgAAAClqdW1kYzJhcwARABCAAACqADibcQNjMnBhLmFzc2VydGlvbnMAAAAJ0Wp1bWIAAAA7anVtZEDLDDK7ikidpwsq1vR/Q2kTYzJwYS5pY29uAAAAABhjMnNo7jOSha7DqlpqKw+PkKJzMQAAABdiZmRiAGltYWdlL3N2Zyt4bWwAAAAJd2JpZGI8c3ZnIHdpZHRoPSI3MTYiIGhlaWdodD0iNzE2IiB2aWV3Qm94PSIwIDAgNzE2IDcxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUwOC43NDkgMzE3LjM5OUM1MTYuNzc3IDI4Ny4zMTQgNTA4Ljk5MSAyNTMuODg0IDQ4NS4zODkgMjMwLjI4MkM0NjEuNzg4IDIwNi42ODEgNDI4LjM2IDE5OC44OTUgMzk4LjI3MyAyMDYuOTIzQzM3Ni4yMzEgMTg0LjkyOCAzNDMuMzkgMTc0Ljk1NiAzMTEuMTQ4IDE4My41OTZDMjc4LjkwNiAxOTIuMjM0IDI1NS40NSAyMTcuMjkyIDI0Ny4zNiAyNDcuMzYxQzIxNy4yOTEgMjU1LjQ1MSAxOTIuMjMzIDI3OC45MSAxODMuNTk1IDMxMS4xNDlDMTc0Ljk1NyAzNDMuMzkxIDE4NC45MjcgMzc2LjIzMiAyMDYuOTI0IDM5OC4yNzRDMTk4Ljg5NiA0MjguMzU5IDIwNi42ODMgNDYxLjc4OSAyMzAuMjg0IDQ4NS4zOTFDMjUzLjg4NSA1MDguOTkyIDI4Ny4zMTMgNTE2Ljc3OSAzMTcuNDAxIDUwOC43NUMzMzkuNDQyIDUzMC43NDUgMzcyLjI4NiA1NDAuNzE3IDQwNC41MjUgNTMyLjA3OUM0MzYuNzY3IDUyMy40NDEgNDYwLjIyMyA0OTguMzg0IDQ2OC4zMTMgNDY4LjMxNUM0OTguMzgzIDQ2MC4yMjQgNTIzLjQ0IDQzNi43NjYgNTMyLjA3OCA0MDQuNTI2QzU0MC43MTYgMzcyLjI4NSA1MzAuNzQ3IDMzOS40NDMgNTA4Ljc0OSAzMTcuNDAyVjMxNy4zOTlaTTQ3MC44OTkgMjQ0Ljc3NkM0ODYuODkyIDI2MC43NyA0OTMuNDg4IDI4Mi42MDEgNDkwLjY4NyAzMDMuNDEyTDQxNS41NzcgMjYwLjA0NkM0MTIuNDExIDI1OC4yMTggNDA4LjUwOSAyNTguMjE4IDQwNS4zNDUgMjYwLjA0NkwzMTcuNDAxIDMxMC44MlYyNzcuNTI2QzMxNy40MDEgMjc1LjE5MSAzMTguNjUyIDI3My4wMDUgMzIwLjY3NiAyNzEuODM3TDM4Ny42NDQgMjMzLjE3NEM0MTQuMTc4IDIxOC4zNTMgNDQ4LjM0NiAyMjIuMjIzIDQ3MC45MDEgMjQ0Ljc3Nkg0NzAuODk5Wk0zNTcuODM3IDMxMS4xNDRMMzk4LjI3NSAzMzQuNDkxVjM4MS4xODVMMzU3LjgzNyA0MDQuNTMyTDMxNy4zOTggMzgxLjE4NVYzMzQuNDkxTDM1Ny44MzcgMzExLjE0NFpNMjY0Ljc3NiAyNjkuNjkzQzI2NS4yMDcgMjM5LjMwNSAyODUuNjQ0IDIxMS42NDkgMzE2LjQ1MyAyMDMuMzkzQzMzOC4zIDE5Ny41NCAzNjAuNTA1IDIwMi43NDQgMzc3LjEyNyAyMTUuNTczTDMwMi4wMTQgMjU4LjkzN0MyOTguODQ4IDI2MC43NjQgMjk2Ljg5OCAyNjQuMTQ0IDI5Ni44OTggMjY3Ljc5OFYzNjkuMzQ2TDI2OC4wNjUgMzUyLjY5OUMyNjYuMDQzIDM1MS41MzEgMjY0Ljc3NiAzNDkuMzUzIDI2NC43NzYgMzQ3LjAxN1YyNjkuNjkxVjI2OS42OTNaTTIwMy4zOTEgMzE2LjQ1NEMyMDkuMjQ0IDI5NC42MDggMjI0Ljg1NCAyNzcuOTc4IDI0NC4yNzYgMjY5Ljk5OVYzNTYuNzNDMjQ0LjI3NiAzNjAuMzg0IDI0Ni4yMjYgMzYzLjc2MyAyNDkuMzkyIDM2NS41OTFMMzM3LjMzNyA0MTYuMzY1TDMwOC41MDMgNDMzLjAxM0MzMDYuNDgxIDQzNC4xODEgMzAzLjk2MSA0MzQuMTg4IDMwMS45MzkgNDMzLjAyTDIzNC45NzEgMzk0LjM1N0MyMDguODY4IDM3OC43ODkgMTk1LjEzOCAzNDcuMjYxIDIwMy4zOTEgMzE2LjQ1NFpNMjQ0Ljc3NSA0NzAuOUMyMjguNzgxIDQ1NC45MDYgMjIyLjE4NiA0MzMuMDc1IDIyNC45ODYgNDEyLjI2NEwzMDAuMDk2IDQ1NS42M0MzMDMuMjYzIDQ1Ny40NTcgMzA3LjE2NCA0NTcuNDU3IDMxMC4zMjggNDU1LjYzTDM5OC4yNzMgNDA0Ljg1NlY0MzguMTQ5QzM5OC4yNzMgNDQwLjQ4NSAzOTcuMDIyIDQ0Mi42NzEgMzk0Ljk5NyA0NDMuODM5TDMyOC4wMjkgNDgyLjUwMkMzMDEuNDk1IDQ5Ny4zMjIgMjY3LjMyNyA0OTMuNDUyIDI0NC43NzIgNDcwLjlIMjQ0Ljc3NVpNNDUwLjg5NyA0NDUuOTgyQzQ1MC40NjYgNDc2LjM3MSA0MzAuMDI5IDUwNC4wMjcgMzk5LjIyIDUxMi4yODNDMzc3LjM3MyA1MTguMTM2IDM1NS4xNjggNTEyLjkzMiAzMzguNTQ3IDUwMC4xMDJMNDEzLjY1OSA0NTYuNzM4QzQxNi44MjYgNDU0LjkxMSA0MTguNzc1IDQ1MS41MzIgNDE4Ljc3NSA0NDcuODc3VjM0Ni4zMjlMNDQ3LjYwOSAzNjIuOTc3QzQ0OS42MzEgMzY0LjE0NSA0NTAuODk3IDM2Ni4zMjMgNDUwLjg5NyAzNjguNjU5VjQ0NS45ODVWNDQ1Ljk4MlpNNTEyLjI4MiAzOTkuMjIxQzUwNi40MjkgNDIxLjA2OCA0OTAuODE5IDQzNy42OTcgNDcxLjM5NyA0NDUuNjc2VjM1OC45NDZDNDcxLjM5NyAzNTUuMjkyIDQ2OS40NDggMzUxLjkxMiA0NjYuMjgxIDM1MC4wODVMMzc4LjMzNiAyOTkuMzExTDQwNy4xNyAyODIuNjYzQzQwOS4xOTIgMjgxLjQ5NSA0MTEuNzEyIDI4MS40ODcgNDEzLjczNCAyODIuNjU1TDQ4MC43MDIgMzIxLjMxOEM1MDYuODA1IDMzNi44ODcgNTIwLjUzNiAzNjguNDE1IDUxMi4yODIgMzk5LjIyMVoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgoAAAF+anVtYgAAAEFqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmFjdGlvbnMudjIAAAAAGGMyc2hdSkvjFmKRxUgNqSNNJa5ZAAABNWNib3KhZ2FjdGlvbnODpGZhY3Rpb25sYzJwYS5jcmVhdGVkZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBabXNvZnR3YXJlQWdlbnSiZG5hbWVpZ3B0LWltYWdlZ3ZlcnNpb25jMi4wcWRpZ2l0YWxTb3VyY2VUeXBleEZodHRwOi8vY3YuaXB0Yy5vcmcvbmV3c2NvZGVzL2RpZ2l0YWxzb3VyY2V0eXBlL3RyYWluZWRBbGdvcml0aG1pY01lZGlhomZhY3Rpb25uYzJwYS5jb252ZXJ0ZWRkd2hlbsB0MjAyNi0wNy0xOVQwMDowMDowMFqiZmFjdGlvbngYYzJwYS53YXRlcm1hcmtlZC51bmJvdW5kZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBaAAALump1bWIAAABJanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5jZXJ0aWZpY2F0ZS1zdGF0dXMAAAAAGGMyc2htwRZizBAqU+ypnOv4HGAmAAALaWNib3KhaG9jc3BWYWxzgnkFhE1JSUVId29CQUtDQ0JCZ3dnZ1FVQmdrckJnRUZCUWN3QVFFRWdnUUZNSUlFQVRDQm9xSVdCQlErQkh2WmhwRXNxV2tkcUc0YU55NXVZQmdMeXhnUE1qQXlOakEzTVRnd09URXlORGRhTUhjd2RUQk5NQWtHQlNzT0F3SWFCUUFFRkQ1TWZJNVFDNGRzY3hXK3IyNlg2aER1bENESkJCVERzeVNXTkpPaFdlcFNHR3VlRitDcHV0YXdUQUlVVXBRbEI0RzFhb2I1TXhkNGNOYU9yZTlpR2tHQUFCZ1BNakF5TmpBM01UZ3dPVEV5TkRaYW9CRVlEekl3TWpZd056STFNRGt4TWpRMldqQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUE5cTc1WEo2d3VvQS9ESlRXS0F3ekQ1bGw1N3pxdXRRUzdONzFDWVlvRU40Q0lRRGRIcGRvYTUySEQ0OC9zcDh2NmVWNUQxMWFESS85MkVNU3l5dVVxY2pBaGFDQ0F3RXdnZ0w5TUlJQytUQ0NBbjZnQXdJQkFnSVVLNXZHUDVEZXFocTFUV2hVYUZRRlFmNWxUSll3Q2dZSUtvWkl6ajBFQXdNd2dhY3hDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoT1pYY2dXVzl5YXpFUk1BOEdBMVVFQnd3SVRtVjNJRmx2Y21zeEV6QVJCZ05WQkFvTUNsUnlkV1p2SUVsdVl5NHhGREFTQmdOVkJBc01DME5CSUVScGRtbHphVzl1TVJvd0dBWUpLb1pJaHZjTkFRa0JGZ3RqWVVCMGNuVm1ieTVoYVRFck1Da0dBMVVFQXd3aVZISjFabThnUXpKUVFTQkRiR0ZwYlNCVGFXZHVhVzVuSUVOQklDZ3lNREkxS1RBZUZ3MHlOakEzTVRjd01EQXpNakZhRncweU5qQTRNVFl3TURBek1qRmFNSUdsTVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lUbVYzSUZsdmNtc3hFVEFQQmdOVkJBY01DRTVsZHlCWmIzSnJNUk13RVFZRFZRUUtEQXBVY25WbWJ5QkpibU11TVJRd0VnWURWUVFMREF0RFFTQkVhWFpwYzJsdmJqRWFNQmdHQ1NxR1NJYjNEUUVKQVJZTFkyRkFkSEoxWm04dVlXa3hLVEFuQmdOVkJBTU1JRlJ5ZFdadklFTXlVRUVnVDBOVFVDQlNaWE53YjI1a1pYSWdLREl3TWpVcE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVpFQVo1NnFMcG1ncU4zb3ZMcWg0VFh6cWJHTDV2dndCczgrWDhHdVhxOWE4SXZHL3lzNG5ycWRlbms1U2xaUEJZdmJYUlIzT0JMVHB6UkpoWUxLZnhxT0JoekNCaERBZEJnTlZIUTRFRmdRVVBnUjcyWWFSTEtscEhhaHVHamN1Ym1BWUM4c3dId1lEVlIwakJCZ3dGb0FVdzdNa2xqU1RvVm5xVWhocm5oZmdxYnJXc0V3d0RBWURWUjBUQVFIL0JBSXdBREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd2t3RHdZSkt3WUJCUVVITUFFRkJBSUZBREFLQmdncWhrak9QUVFEQXdOcEFEQm1BakVBdTROOElsVksrZVBWd1cxTFBCUzVOU2F3ZkRvM1ZmRUI4TTlrUC9WL0dEdGlpU1A1NUROWlZKd0JFNHorM3ZVWUFqRUEzaHNZakdVL2FpaG5ZMGFEU3pPQkFvT0ZJVFpKQWYxK1ozTEVZM0ZRcmdOd2VuNHhuRGM4ZHhhL0w3cUQzL2RieQXMTUlJRVZBb0JBS0NDQkUwd2dnUkpCZ2tyQmdFRkJRY3dBUUVFZ2dRNk1JSUVOakNCb3FJV0JCVEwySTQyaWlFUmN5eTU3NG9hbzJxZXZGTk1RQmdQTWpBeU5qQTNNVGd3T1RFMU1qVmFNSGN3ZFRCTk1Ba0dCU3NPQXdJYUJRQUVGSUFnOWJ6aUpPbHR2Tlp2eGhjcFpYd2t5UEg5QkJRRDFWK3Zmb1BsQkIxWmdDZEtOUDlGL2V0SmVBSVVNT2loOEtXSlFtdlN1WUpJUjVrWjNCWTNBc3VBQUJnUE1qQXlOakEzTVRnd09URTFNalZhb0JFWUR6SXdNall3TnpJMU1Ea3hOVEkxV2pBS0JnZ3Foa2pPUFFRREF3Tm9BREJsQWpFQWt1Z0g1TklqOXU3Y2F5YTB2TmluN09rMExIeE5XaW9WencvS1poaTRpWlFsTGx3SGpnbTNLZmZ5T0JEQWtkZ1VBakJOcmhCS1ZYQ1M0bk01a2wwRSs4dXZsNmM4ajV2MENDYWc5Z2JJK0plOXVaMnBQL3hzeDZvQzVCbmNWQnNSeUVxZ2dnTVhNSUlERXpDQ0F3OHdnZ0tWb0FNQ0FRSUNGQVBRZlRTU2JWY1pjTWJZRkpCTWM4WFQ1WnZnTUFvR0NDcUdTTTQ5QkFNRE1JR29NUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVRtVjNJRmx2Y21zeEVUQVBCZ05WQkFjTUNFNWxkeUJaYjNKck1STXdFUVlEVlFRS0RBcFVjblZtYnlCSmJtTXVNUlF3RWdZRFZRUUxEQXREUVNCRWFYWnBjMmx2YmpFYU1CZ0dDU3FHU0liM0RRRUpBUllMWTJGQWRISjFabTh1WVdreExEQXFCZ05WQkFNTUkxUnlkV1p2SUVNeVVFRWdVbTl2ZENCRFFTQW9NakF5TlN3Z1JVTkRJRkF6T0RRcE1CNFhEVEkyTURVeE1USXpOREl5TlZvWERUTTJNRFV3T0RJek5ESXlOVm93Z1o0eEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUlEQWhPWlhjZ1dXOXlhekVSTUE4R0ExVUVCd3dJVG1WM0lGbHZjbXN4RXpBUkJnTlZCQW9NQ2xSeWRXWnZJRWx1WXk0eEZEQVNCZ05WQkFzTUMwTkJJRVJwZG1semFXOXVNUm93R0FZSktvWklodmNOQVFrQkZndGpZVUIwY25WbWJ5NWhhVEVpTUNBR0ExVUVBd3daVkhKMVptOGdVbTl2ZENCUFExTlFJRkpsYzNCdmJtUmxjakIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJHTDMxMnlnb0xYaHJOdkloaUxaeVhMTWU1ajRMSU1EaHJoMHdObFphTDlhV1Buc01WZVVFY1NCUVV1c29uL0pWaVhESSs3YVd5T3BzV3JLVm51cVcwcVhrOVFvNjN2cnlUZGszejlTYVJpbTYySkhOR1FKbkxzQ0lWaUNKN2tkT2FPQmh6Q0JoREFkQmdOVkhRNEVGZ1FVeTlpT05vb2hFWE1zdWUrS0dxTnFucnhUVEVBd0h3WURWUjBqQkJnd0ZvQVVBOVZmcjM2RDVRUWRXWUFuU2pUL1JmM3JTWGd3REFZRFZSMFRBUUgvQkFJd0FEQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3a3dEd1lKS3dZQkJRVUhNQUVGQkFJRkFEQUtCZ2dxaGtqT1BRUURBd05vQURCbEFqRUE3ZTBmaS9mTHpNNFRVOE42OUJyUXpBd1BHZ1RweERwV2hUV2FLcjRIaWJKR21WNUovTFdHNVZUV1VqckdhY2Q4QWpBWEdDVGEzdy9GZk1HVmlkUzFjZFRLckNuaEE2aUlxeTgzOE9sQi9sdCtHZU1TYnEydzZ2UVMza3oxc0ZFanh4Zz0AAADDanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaJlF/+7opq9IrrjxiEzjrUgAAAB7Y2JvcqVqZXhjbHVzaW9uc4GiZXN0YXJ0FGZsZW5ndGgZYWdkbmFtZW5qdW1iZiBtYW5pZmVzdGNhbGdmc2hhMjU2ZGhhc2hYIAP5TkXl4191NS6N5LxLsOsH7r80GXXiCSzB6FJOZ6QlY3BhZEkAAAAAAAAAAAAAAAMbanVtYgAAACdqdW1kYzJjbAARABCAAACqADibcQNjMnBhLmNsYWltLnYyAAAAAuxjYm9ypmppbnN0YW5jZUlEeCx4bXA6aWlkOjY0YTdjNjkyLWQ5NTAtNGYwNS04MzUzLTA2YmNmZTlhYTgwNnRjbGFpbV9nZW5lcmF0b3JfaW5mb6RkbmFtZXgYT3BlbkFJIE1lZGlhIFNlcnZpY2UgQVBJZGljb26iY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIGiAoLKucP6DZW3n4G7oYobIrrgNIyysPIIIe95cIrQCd29yZy5jb250ZW50YXV0aC5jMnBhX3JzZjAuNzkuMmtzcGVjVmVyc2lvbmUyLjIuMGlzaWduYXR1cmV4TXNlbGYjanVtYmY9L2MycGEvdXJuOmMycGE6NjUzYTNlNWQtOGU3NS00MDQ2LWI0NTYtZTUwNGMxOGQ4MDg0L2MycGEuc2lnbmF0dXJlcmNyZWF0ZWRfYXNzZXJ0aW9uc4SiY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIGiAoLKucP6DZW3n4G7oYobIrrgNIyysPIIIe95cIrQComN1cmx4KnNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuYWN0aW9ucy52MmRoYXNoWCBSdrAznwM8WZOUtQcQ1wRzPhHjLcFrKo2gZnmx1eGLE6JjdXJseDJzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmNlcnRpZmljYXRlLXN0YXR1c2RoYXNoWCDOxOKbUidd7VeAgFE6yiUOeCDxZ2Qub1+Luar7CkkyuKJjdXJseClzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmhhc2guZGF0YWRoYXNoWCCNWe16fsv3drz877n+3X0wnpu6iTBm8qHNyrRVzPkpqmhkYzp0aXRsZWppbWFnZS5qcGVnY2FsZ2ZzaGEyNTYAAEXOanVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAAEWeY2JvctKEWQdVogEmGCGCWQNyMIIDbjCCAvOgAwIBAgIUUpQlB4G1aob5Mxd4cNaOre9iGkEwCgYIKoZIzj0E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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9lhAHrKMfwR3AJQ0QJhSYC5PQUPeDVQef+9uk4Mqi5f5tMZD5pRErn9dMUbgF8DIDuJfCMq6YVLE7vycgqoIXKt2Yf/bAEMAUDc8RjwyUEZBRlpVUF94yIJ4bm549a+5kcj////////////////////////////////////////////////////bAEMBVVpaeGl464KC6//////////////////////////////////////////////////////////////////////////AABEIBAAEAAMBIgACEQEDEQH/xAAZAAEBAQEBAQAAAAAAAAAAAAAABAUDAQL/xAApEAEAAgEBCAMBAQADAQAAAAAAAQMCBBITFCExQVGRETJxsSJCQ4Fh/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/ALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHj1LrLdjDYjrl/AUvUujt28NieuP8VAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/Z\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"Now make the triangle blue.\"}]}],\"tools\":[{\"type\":\"image_generation\",\"action\":\"auto\",\"output_compression\":10,\"output_format\":\"jpeg\",\"partial_images\":0,\"quality\":\"low\",\"size\":\"1024x1024\"}],\"tool_choice\":{\"type\":\"image_generation\"},\"store\":false,\"include\":[\"reasoning.encrypted_content\"],\"reasoning\":{\"effort\":\"medium\",\"summary\":\"auto\"},\"stream\":true}" }, "response": { "status": 200, diff --git a/packages/ai/test/provider/openai-responses.test.ts b/packages/ai/test/provider/openai-responses.test.ts index a3d75a7eeb..f96042c8a1 100644 --- a/packages/ai/test/provider/openai-responses.test.ts +++ b/packages/ai/test/provider/openai-responses.test.ts @@ -882,6 +882,87 @@ describe("OpenAI Responses route", () => { }), ) + it.effect("reconciles authoritative output text done values", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { type: "response.output_item.added", item: { type: "message", id: "msg_1" } }, + { type: "response.output_text.delta", item_id: "msg_1", delta: "Hello" }, + { type: "response.output_text.done", item_id: "msg_1", text: "Hello!" }, + { + type: "response.output_item.done", + item: { + type: "message", + id: "msg_1", + content: [{ type: "output_text", text: "Hello!" }], + }, + }, + { type: "response.completed", response: { id: "resp_1" } }, + ), + ), + ), + ) + + expect(response.text).toBe("Hello!") + expect(response.events.filter(LLMEvent.is.textDelta)).toEqual([ + { type: "text-delta", id: "msg_1", text: "Hello" }, + { type: "text-delta", id: "msg_1", text: "!" }, + ]) + }), + ) + + it.effect("recovers output from the authoritative terminal response", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { + type: "response.completed", + response: { + id: "resp_1", + output: [ + { + type: "message", + id: "msg_1", + content: [{ type: "output_text", text: "Terminal only." }], + }, + ], + }, + }, + ), + ), + ), + ) + + expect(response.text).toBe("Terminal only.") + expect(response.events.filter(LLMEvent.is.textDelta)).toEqual([ + { type: "text-delta", id: "msg_1", text: "Terminal only." }, + ]) + }), + ) + + it.effect("rejects authoritative text that conflicts with streamed deltas", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { type: "response.output_text.delta", item_id: "msg_1", delta: "Hello" }, + { type: "response.output_text.done", item_id: "msg_1", text: "Goodbye" }, + ), + ), + ), + Effect.flip, + ) + + expect(error.reason._tag).toBe("InvalidProviderOutput") + expect(error.message).toContain("completed with content that conflicts with its streamed deltas") + }), + ) + it.effect("preserves and replays assistant message phases", () => Effect.gen(function* () { const response = yield* LLMClient.generate(request).pipe( @@ -1086,6 +1167,24 @@ describe("OpenAI Responses route", () => { }), ) + it.effect("reconciles authoritative reasoning done values", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { type: "response.reasoning_summary_text.delta", item_id: "rs_1", delta: "thinking" }, + { type: "response.reasoning_summary_text.done", item_id: "rs_1", text: "thinking..." }, + { type: "response.completed", response: { id: "resp_1" } }, + ), + ), + ), + ) + + expect(response.reasoning).toBe("thinking...") + }), + ) + it.effect("preserves encrypted reasoning metadata for continuation", () => Effect.gen(function* () { const response = yield* LLMClient.generate(request).pipe( @@ -1568,6 +1667,43 @@ describe("OpenAI Responses route", () => { }), ) + it.effect("uses authoritative function argument done values", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate( + LLMRequest.update(request, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + }), + ).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { + type: "response.output_item.added", + item: { type: "function_call", id: "item_1", call_id: "call_1", name: "lookup", arguments: "" }, + }, + { type: "response.function_call_arguments.delta", item_id: "item_1", delta: '{"query":"stale"}' }, + { + type: "response.function_call_arguments.done", + item_id: "item_1", + arguments: '{"query":"authoritative"}', + }, + { + type: "response.output_item.done", + item: { type: "function_call", id: "item_1", call_id: "call_1", name: "lookup" }, + }, + { type: "response.completed", response: {} }, + ), + ), + ), + ) + + expect(response.events.find(LLMEvent.is.toolCall)).toMatchObject({ + id: "call_1", + input: { query: "authoritative" }, + }) + }), + ) + it.effect("emits malformed final function arguments as an unexecuted tool error", () => Effect.gen(function* () { const body = sseEvents(