@arizeai/phoenix-client 3.2.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/prompts/sdks/toAI.d.ts +13 -3
- package/dist/esm/prompts/sdks/toAI.d.ts.map +1 -1
- package/dist/esm/prompts/sdks/toAI.js +23 -15
- package/dist/esm/prompts/sdks/toAI.js.map +1 -1
- package/dist/esm/prompts/sdks/toSDK.d.ts +1 -1
- package/dist/esm/schemas/llm/constants.d.ts +30 -12
- package/dist/esm/schemas/llm/constants.d.ts.map +1 -1
- package/dist/esm/schemas/llm/converters.d.ts +120 -48
- package/dist/esm/schemas/llm/converters.d.ts.map +1 -1
- package/dist/esm/schemas/llm/openai/converters.d.ts +6 -3
- package/dist/esm/schemas/llm/openai/converters.d.ts.map +1 -1
- package/dist/esm/schemas/llm/openai/converters.js +7 -4
- package/dist/esm/schemas/llm/openai/converters.js.map +1 -1
- package/dist/esm/schemas/llm/schemas.d.ts +37 -16
- package/dist/esm/schemas/llm/schemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/vercel/messagePartSchemas.d.ts +42 -12
- package/dist/esm/schemas/llm/vercel/messagePartSchemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/vercel/messagePartSchemas.js +5 -2
- package/dist/esm/schemas/llm/vercel/messagePartSchemas.js.map +1 -1
- package/dist/esm/schemas/llm/vercel/messageSchemas.d.ts +31 -10
- package/dist/esm/schemas/llm/vercel/messageSchemas.d.ts.map +1 -1
- package/dist/esm/schemas/llm/vercel/toolSchemas.d.ts +3 -3
- package/dist/esm/schemas/llm/vercel/toolSchemas.js +1 -1
- package/dist/esm/schemas/llm/vercel/toolSchemas.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/src/prompts/sdks/toAI.d.ts +13 -3
- package/dist/src/prompts/sdks/toAI.d.ts.map +1 -1
- package/dist/src/prompts/sdks/toAI.js +24 -16
- package/dist/src/prompts/sdks/toAI.js.map +1 -1
- package/dist/src/prompts/sdks/toSDK.d.ts +1 -1
- package/dist/src/schemas/llm/constants.d.ts +30 -12
- package/dist/src/schemas/llm/constants.d.ts.map +1 -1
- package/dist/src/schemas/llm/converters.d.ts +120 -48
- package/dist/src/schemas/llm/converters.d.ts.map +1 -1
- package/dist/src/schemas/llm/openai/converters.d.ts +6 -3
- package/dist/src/schemas/llm/openai/converters.d.ts.map +1 -1
- package/dist/src/schemas/llm/openai/converters.js +7 -4
- package/dist/src/schemas/llm/openai/converters.js.map +1 -1
- package/dist/src/schemas/llm/schemas.d.ts +37 -16
- package/dist/src/schemas/llm/schemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/vercel/messagePartSchemas.d.ts +42 -12
- package/dist/src/schemas/llm/vercel/messagePartSchemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/vercel/messagePartSchemas.js +5 -2
- package/dist/src/schemas/llm/vercel/messagePartSchemas.js.map +1 -1
- package/dist/src/schemas/llm/vercel/messageSchemas.d.ts +31 -10
- package/dist/src/schemas/llm/vercel/messageSchemas.d.ts.map +1 -1
- package/dist/src/schemas/llm/vercel/toolSchemas.d.ts +3 -3
- package/dist/src/schemas/llm/vercel/toolSchemas.js +1 -1
- package/dist/src/schemas/llm/vercel/toolSchemas.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/src/prompts/sdks/toAI.ts +42 -32
- package/src/schemas/llm/openai/converters.ts +7 -4
- package/src/schemas/llm/vercel/messagePartSchemas.ts +5 -2
- package/src/schemas/llm/vercel/toolSchemas.ts +1 -1
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { Variables, toSDKParamsBase } from "./types";
|
|
2
|
-
import { type
|
|
3
|
-
export type
|
|
2
|
+
import { type ToolSet, type ModelMessage, type ToolChoice } from "ai";
|
|
3
|
+
export type PartialAIParams = {
|
|
4
|
+
messages: ModelMessage[];
|
|
5
|
+
/**
|
|
6
|
+
The tools that the model can call. The model needs to support calling tools.
|
|
7
|
+
*/
|
|
8
|
+
tools?: ToolSet;
|
|
9
|
+
/**
|
|
10
|
+
The tool choice strategy. Default: 'auto'.
|
|
11
|
+
*/
|
|
12
|
+
toolChoice?: ToolChoice<ToolSet>;
|
|
13
|
+
};
|
|
4
14
|
export type ToAIParams<V extends Variables> = toSDKParamsBase<V>;
|
|
5
15
|
/**
|
|
6
16
|
* Converts a Phoenix prompt to Vercel AI sdk params.
|
|
@@ -8,5 +18,5 @@ export type ToAIParams<V extends Variables> = toSDKParamsBase<V>;
|
|
|
8
18
|
* - note: To use response format, you must pass `prompt.response_format.json` to generateObject or streamObject
|
|
9
19
|
* directly, through the `schema` argument.
|
|
10
20
|
*/
|
|
11
|
-
export declare const toAI: <V extends Variables>({ prompt, variables, }: ToAIParams<V>) =>
|
|
21
|
+
export declare const toAI: <V extends Variables>({ prompt, variables, }: ToAIParams<V>) => PartialAIParams | null;
|
|
12
22
|
//# sourceMappingURL=toAI.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toAI.d.ts","sourceRoot":"","sources":["../../../../src/prompts/sdks/toAI.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"toAI.d.ts","sourceRoot":"","sources":["../../../../src/prompts/sdks/toAI.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,IAAI,CAAC;AAGtE,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB;;QAEI;IACJ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;SAEK;IACL,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,SAAS,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;AAEjE;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,SAAS,EAAE,wBAGvC,UAAU,CAAC,CAAC,CAAC,KAAG,eAAe,GAAG,IAkFpC,CAAC"}
|
|
@@ -14,7 +14,7 @@ const formatPromptMessages_1 = require("../../utils/formatPromptMessages");
|
|
|
14
14
|
* directly, through the `schema` argument.
|
|
15
15
|
*/
|
|
16
16
|
const toAI = ({ prompt, variables, }) => {
|
|
17
|
-
var _a, _b;
|
|
17
|
+
var _a, _b, _c;
|
|
18
18
|
// eslint-disable-next-line no-console
|
|
19
19
|
console.warn("Prompt invocation parameters not currently supported in AI SDK, falling back to default invocation parameters");
|
|
20
20
|
try {
|
|
@@ -38,22 +38,30 @@ const toAI = ({ prompt, variables, }) => {
|
|
|
38
38
|
return vercelAIMessage;
|
|
39
39
|
});
|
|
40
40
|
// convert tools to Vercel AI tool set, which is a map of tool name to tool
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
41
|
+
// TODO: Vercel AI SDK 5 has complex tool schema
|
|
42
|
+
// let tools: ToolSet | undefined = prompt.tools?.tools.reduce((acc, tool) => {
|
|
43
|
+
// if (!tool.function.parameters) {
|
|
44
|
+
// return acc;
|
|
45
|
+
// }
|
|
46
|
+
// const vercelAIToolDefinition = safelyConvertToolDefinitionToProvider({
|
|
47
|
+
// toolDefinition: tool,
|
|
48
|
+
// targetProvider: "VERCEL_AI",
|
|
49
|
+
// });
|
|
50
|
+
// invariant(vercelAIToolDefinition, "Tool definition is not valid");
|
|
51
|
+
// // TODO: get the symbol working here for validators
|
|
52
|
+
// acc[tool.function.name] = vercelAIToolDefinition as unknown as Tool;
|
|
53
|
+
// return acc;
|
|
54
|
+
// }, {} as ToolSet);
|
|
55
|
+
// const hasTools = Object.keys(tools ?? {}).length > 0;
|
|
56
|
+
// tools = hasTools ? tools : undefined;
|
|
57
|
+
const hasTools = false;
|
|
58
|
+
const tools = undefined;
|
|
59
|
+
if (((_a = prompt.tools) === null || _a === void 0 ? void 0 : _a.tools) && ((_b = prompt.tools) === null || _b === void 0 ? void 0 : _b.tools.length)) {
|
|
60
|
+
// eslint-disable-next-line no-console
|
|
61
|
+
console.warn("Prompt tools not currently supported in the AI SDK, falling back to no tools");
|
|
62
|
+
}
|
|
55
63
|
let toolChoice = (0, converters_1.safelyConvertToolChoiceToProvider)({
|
|
56
|
-
toolChoice: (
|
|
64
|
+
toolChoice: (_c = prompt.tools) === null || _c === void 0 ? void 0 : _c.tool_choice,
|
|
57
65
|
targetProvider: "VERCEL_AI",
|
|
58
66
|
}) || undefined;
|
|
59
67
|
toolChoice = hasTools ? toolChoice : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toAI.js","sourceRoot":"","sources":["../../../../src/prompts/sdks/toAI.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAuC;AACvC,
|
|
1
|
+
{"version":3,"file":"toAI.js","sourceRoot":"","sources":["../../../../src/prompts/sdks/toAI.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAuC;AACvC,6DAGsC;AACtC,2EAAwE;AAmBxE;;;;;GAKG;AACI,MAAM,IAAI,GAAG,CAAsB,EACxC,MAAM,EACN,SAAS,GACK,EAA0B,EAAE;;IAC1C,sCAAsC;IACtC,OAAO,CAAC,IAAI,CACV,+GAA+G,CAChH,CAAC;IACF,IAAI,CAAC;QACH,sEAAsE;QACtE,MAAM,oBAAoB,GAA6B;QACrD,0DAA0D;SAC3D,CAAC;QAEF,IAAI,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAEjD,IAAI,SAAS,EAAE,CAAC;YACd,iBAAiB,GAAG,IAAA,2CAAoB,EACtC,MAAM,CAAC,eAAe,EACtB,iBAAiB,EACjB,SAAS,CACV,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAmB,iBAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACjE,MAAM,eAAe,GAAG,IAAA,2CAA8B,EAAC;gBACrD,OAAO;gBACP,cAAc,EAAE,WAAW;aAC5B,CAAC,CAAC;YACH,IAAA,wBAAS,EAAC,eAAe,EAAE,sBAAsB,CAAC,CAAC;YACnD,OAAO,eAAe,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,2EAA2E;QAC3E,gDAAgD;QAChD,+EAA+E;QAC/E,qCAAqC;QACrC,kBAAkB;QAClB,MAAM;QACN,2EAA2E;QAC3E,4BAA4B;QAC5B,mCAAmC;QACnC,QAAQ;QACR,uEAAuE;QACvE,wDAAwD;QACxD,yEAAyE;QACzE,gBAAgB;QAChB,qBAAqB;QACrB,wDAAwD;QACxD,wCAAwC;QACxC,MAAM,QAAQ,GAAG,KAAK,CAAC;QACvB,MAAM,KAAK,GAAG,SAAS,CAAC;QACxB,IAAI,CAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,KAAK,MAAI,MAAA,MAAM,CAAC,KAAK,0CAAE,KAAK,CAAC,MAAM,CAAA,EAAE,CAAC;YACtD,sCAAsC;YACtC,OAAO,CAAC,IAAI,CACV,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,GACZ,IAAA,8CAAiC,EAAC;YAChC,UAAU,EAAE,MAAA,MAAM,CAAC,KAAK,0CAAE,WAAW;YACrC,cAAc,EAAE,WAAW;SAC5B,CAAC,IAAI,SAAS,CAAC;QAClB,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAE/C,mCAAmC;QACnC,MAAM,gBAAgB,mCACjB,oBAAoB,KACvB,QAAQ;YACR,KAAK;YACL,UAAU,GACX,CAAC;QAEF,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sCAAsC;QACtC,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACtD,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AArFW,QAAA,IAAI,QAqFf"}
|
|
@@ -15,7 +15,7 @@ export type SDKParams<T extends SupportedSDK> = Parameters<(typeof PROVIDER_TO_S
|
|
|
15
15
|
export declare const PROVIDER_TO_SDK: {
|
|
16
16
|
openai: <V extends Variables = Variables>({ prompt, variables, }: import("./toOpenAI").ToOpenAIParams<V>) => import("openai/resources/chat/completions/completions").ChatCompletionCreateParams | null;
|
|
17
17
|
anthropic: <V extends Variables = Variables>({ prompt, variables, }: import("./toAnthropic").ToAnthropicParams<V>) => import("@anthropic-ai/sdk/resources/messages/messages").MessageCreateParams | null;
|
|
18
|
-
ai: <V extends Variables>({ prompt, variables, }: import("./toAI").ToAIParams<V>) => import("./toAI").
|
|
18
|
+
ai: <V extends Variables>({ prompt, variables, }: import("./toAI").ToAIParams<V>) => import("./toAI").PartialAIParams | null;
|
|
19
19
|
};
|
|
20
20
|
/**
|
|
21
21
|
* Parameters specific to the toSDK function
|
|
@@ -7190,17 +7190,20 @@ export declare const SDKProviderConverterMap: {
|
|
|
7190
7190
|
type: "text";
|
|
7191
7191
|
} | {
|
|
7192
7192
|
type: "tool-call";
|
|
7193
|
+
input: import("../jsonLiteralSchema").JSONLiteral;
|
|
7193
7194
|
toolName: string;
|
|
7194
7195
|
toolCallId: string;
|
|
7195
|
-
args: import("../jsonLiteralSchema").JSONLiteral;
|
|
7196
7196
|
})[];
|
|
7197
7197
|
role: "assistant";
|
|
7198
7198
|
} | {
|
|
7199
7199
|
content: {
|
|
7200
7200
|
type: "tool-result";
|
|
7201
|
+
output: {
|
|
7202
|
+
value: string;
|
|
7203
|
+
type: "text";
|
|
7204
|
+
};
|
|
7201
7205
|
toolName: string;
|
|
7202
7206
|
toolCallId: string;
|
|
7203
|
-
result: import("../jsonLiteralSchema").JSONLiteral;
|
|
7204
7207
|
}[];
|
|
7205
7208
|
role: "tool";
|
|
7206
7209
|
}, z.objectInputType<{
|
|
@@ -7349,32 +7352,47 @@ export declare const SDKProviderConverterMap: {
|
|
|
7349
7352
|
type: z.ZodLiteral<"tool-call">;
|
|
7350
7353
|
toolCallId: z.ZodString;
|
|
7351
7354
|
toolName: z.ZodString;
|
|
7352
|
-
|
|
7355
|
+
input: z.ZodType<import("../jsonLiteralSchema").JSONLiteral, z.ZodTypeDef, import("../jsonLiteralSchema").JSONLiteral>;
|
|
7353
7356
|
}, "strip", z.ZodTypeAny, {
|
|
7354
7357
|
type: "tool-call";
|
|
7358
|
+
input: import("../jsonLiteralSchema").JSONLiteral;
|
|
7355
7359
|
toolName: string;
|
|
7356
7360
|
toolCallId: string;
|
|
7357
|
-
args: import("../jsonLiteralSchema").JSONLiteral;
|
|
7358
7361
|
}, {
|
|
7359
7362
|
type: "tool-call";
|
|
7363
|
+
input: import("../jsonLiteralSchema").JSONLiteral;
|
|
7360
7364
|
toolName: string;
|
|
7361
7365
|
toolCallId: string;
|
|
7362
|
-
args: import("../jsonLiteralSchema").JSONLiteral;
|
|
7363
7366
|
}>, z.ZodObject<{
|
|
7364
7367
|
type: z.ZodLiteral<"tool-result">;
|
|
7365
7368
|
toolCallId: z.ZodString;
|
|
7366
7369
|
toolName: z.ZodString;
|
|
7367
|
-
|
|
7370
|
+
output: z.ZodObject<{
|
|
7371
|
+
type: z.ZodLiteral<"text">;
|
|
7372
|
+
value: z.ZodString;
|
|
7373
|
+
}, "strip", z.ZodTypeAny, {
|
|
7374
|
+
value: string;
|
|
7375
|
+
type: "text";
|
|
7376
|
+
}, {
|
|
7377
|
+
value: string;
|
|
7378
|
+
type: "text";
|
|
7379
|
+
}>;
|
|
7368
7380
|
}, "strip", z.ZodTypeAny, {
|
|
7369
7381
|
type: "tool-result";
|
|
7382
|
+
output: {
|
|
7383
|
+
value: string;
|
|
7384
|
+
type: "text";
|
|
7385
|
+
};
|
|
7370
7386
|
toolName: string;
|
|
7371
7387
|
toolCallId: string;
|
|
7372
|
-
result: import("../jsonLiteralSchema").JSONLiteral;
|
|
7373
7388
|
}, {
|
|
7374
7389
|
type: "tool-result";
|
|
7390
|
+
output: {
|
|
7391
|
+
value: string;
|
|
7392
|
+
type: "text";
|
|
7393
|
+
};
|
|
7375
7394
|
toolName: string;
|
|
7376
7395
|
toolCallId: string;
|
|
7377
|
-
result: import("../jsonLiteralSchema").JSONLiteral;
|
|
7378
7396
|
}>]>, z.ZodEffects<z.ZodUnion<[z.ZodLiteral<"auto">, z.ZodLiteral<"none">, z.ZodLiteral<"required">, z.ZodObject<{
|
|
7379
7397
|
type: z.ZodLiteral<"function">;
|
|
7380
7398
|
function: z.ZodObject<{
|
|
@@ -7406,17 +7424,17 @@ export declare const SDKProviderConverterMap: {
|
|
|
7406
7424
|
type: z.ZodLiteral<"tool-call">;
|
|
7407
7425
|
toolCallId: z.ZodString;
|
|
7408
7426
|
toolName: z.ZodString;
|
|
7409
|
-
|
|
7427
|
+
input: z.ZodType<import("../jsonLiteralSchema").JSONLiteral, z.ZodTypeDef, import("../jsonLiteralSchema").JSONLiteral>;
|
|
7410
7428
|
}, "strip", z.ZodTypeAny, {
|
|
7411
7429
|
type: "tool-call";
|
|
7430
|
+
input: import("../jsonLiteralSchema").JSONLiteral;
|
|
7412
7431
|
toolName: string;
|
|
7413
7432
|
toolCallId: string;
|
|
7414
|
-
args: import("../jsonLiteralSchema").JSONLiteral;
|
|
7415
7433
|
}, {
|
|
7416
7434
|
type: "tool-call";
|
|
7435
|
+
input: import("../jsonLiteralSchema").JSONLiteral;
|
|
7417
7436
|
toolName: string;
|
|
7418
7437
|
toolCallId: string;
|
|
7419
|
-
args: import("../jsonLiteralSchema").JSONLiteral;
|
|
7420
7438
|
}>, z.ZodEffects<z.ZodObject<{
|
|
7421
7439
|
type: z.ZodLiteral<"function">;
|
|
7422
7440
|
function: z.ZodObject<{
|
|
@@ -8679,7 +8697,7 @@ export declare const SDKProviderConverterMap: {
|
|
|
8679
8697
|
}, z.ZodTypeAny, "passthrough">>;
|
|
8680
8698
|
}, z.ZodTypeAny, "passthrough">>, {
|
|
8681
8699
|
type: "function";
|
|
8682
|
-
|
|
8700
|
+
inputSchema: {
|
|
8683
8701
|
_type?: unknown;
|
|
8684
8702
|
validate?: unknown;
|
|
8685
8703
|
jsonSchema?: Record<string, unknown> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/schemas/llm/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAuCzD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAM/D,CAAC;AA6BF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/schemas/llm/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAuCzD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAM/D,CAAC;AA6BF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyEW,CAAC"}
|