@irrelon/battlescript 3.2.1 → 3.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/bin/index.js +24685 -25477
  2. package/bin/index.js.map +1 -1
  3. package/dist/exports/typescript/enums/EnumNodeKind.d.ts +54 -51
  4. package/dist/exports/typescript/enums/EnumNodeKind.d.ts.map +1 -1
  5. package/dist/exports/typescript/enums/EnumNodeProp.d.ts +6 -7
  6. package/dist/exports/typescript/enums/EnumNodeProp.d.ts.map +1 -1
  7. package/dist/exports/typescript/helpers/miniAstLayout.d.ts.map +1 -1
  8. package/dist/index.cjs +40540 -0
  9. package/dist/index.cjs.map +1 -0
  10. package/dist/{index.js → index.mjs} +24692 -25487
  11. package/dist/index.mjs.map +1 -0
  12. package/dist/scripts/exportGen/helpers/generateHelpers.d.ts.map +1 -1
  13. package/dist/scripts/regenerateTestBinaries.d.ts +2 -0
  14. package/dist/scripts/regenerateTestBinaries.d.ts.map +1 -0
  15. package/dist/services/fullAst/BattleScriptFromAST.d.ts +6 -2
  16. package/dist/services/fullAst/BattleScriptFromAST.d.ts.map +1 -1
  17. package/dist/services/fullAst/BattleScriptToAST.d.ts +8 -3
  18. package/dist/services/fullAst/BattleScriptToAST.d.ts.map +1 -1
  19. package/dist/services/grammar/ts/language/BattleScriptLexer.d.ts +99 -97
  20. package/dist/services/grammar/ts/language/BattleScriptLexer.d.ts.map +1 -1
  21. package/dist/services/grammar/ts/language/BattleScriptListener.d.ts +49 -16
  22. package/dist/services/grammar/ts/language/BattleScriptListener.d.ts.map +1 -1
  23. package/dist/services/grammar/ts/language/BattleScriptParser.d.ts +226 -176
  24. package/dist/services/grammar/ts/language/BattleScriptParser.d.ts.map +1 -1
  25. package/dist/services/grammar/ts/language/BattleScriptVisitor.d.ts +31 -10
  26. package/dist/services/grammar/ts/language/BattleScriptVisitor.d.ts.map +1 -1
  27. package/dist/services/miniAst/BattleScriptToMiniAST.d.ts.map +1 -1
  28. package/dist/services/miniAst/binaryTypeToByteSize.d.ts +1 -1
  29. package/dist/services/miniAst/miniAstLayout.d.ts.map +1 -1
  30. package/dist/tsconfig.types.tsbuildinfo +1 -1
  31. package/dist/types/ast/nodes/AstNode.d.ts +3 -2
  32. package/dist/types/ast/nodes/AstNode.d.ts.map +1 -1
  33. package/dist/types/ast/nodes/DebuggerStatementNode.d.ts +12 -0
  34. package/dist/types/ast/nodes/DebuggerStatementNode.d.ts.map +1 -0
  35. package/dist/types/ast/nodes/EnumAssignmentNode.d.ts +14 -0
  36. package/dist/types/ast/nodes/EnumAssignmentNode.d.ts.map +1 -0
  37. package/dist/types/ast/nodes/EvaluateCaseNode.d.ts.map +1 -1
  38. package/dist/types/ast/nodes/EvaluateFallbackNode.d.ts.map +1 -1
  39. package/dist/types/ast/nodes/EvaluateStatementNode.d.ts.map +1 -1
  40. package/dist/types/ast/nodes/EventDeclarationNode.d.ts +4 -4
  41. package/dist/types/ast/nodes/EventDeclarationNode.d.ts.map +1 -1
  42. package/dist/types/ast/nodes/StateDeclarationNode.d.ts +2 -2
  43. package/dist/types/ast/nodes/StateDeclarationNode.d.ts.map +1 -1
  44. package/dist/types/ast/nodes/StateModuleDeclarationNode.d.ts +14 -0
  45. package/dist/types/ast/nodes/StateModuleDeclarationNode.d.ts.map +1 -0
  46. package/dist/types/ast/nodes/StateModuleEventDeclarationNode.d.ts +15 -0
  47. package/dist/types/ast/nodes/StateModuleEventDeclarationNode.d.ts.map +1 -0
  48. package/dist/types/ast/nodes/index.d.ts +4 -1
  49. package/dist/types/ast/nodes/index.d.ts.map +1 -1
  50. package/dist/types/ast/unions/BlockStatementUnion.d.ts +2 -2
  51. package/dist/types/ast/unions/BlockStatementUnion.d.ts.map +1 -1
  52. package/package.json +17 -5
  53. package/dist/index.js.map +0 -1
  54. package/dist/services/byteCode/byteCodeInterpreter.d.ts +0 -17
  55. package/dist/services/byteCode/byteCodeInterpreter.d.ts.map +0 -1
  56. package/dist/services/byteCode/disassembler.d.ts +0 -3
  57. package/dist/services/byteCode/disassembler.d.ts.map +0 -1
  58. package/dist/services/byteCode/index.d.ts +0 -3
  59. package/dist/services/byteCode/index.d.ts.map +0 -1
  60. package/dist/tests/bytecode/fixtures/ASSIGNMENT_EXPRESSION/basic1-out.d.ts +0 -20
  61. package/dist/tests/bytecode/fixtures/ASSIGNMENT_EXPRESSION/basic1-out.d.ts.map +0 -1
  62. package/dist/tests/bytecode/fixtures/ASSIGNMENT_EXPRESSION/binary-expression1-out.d.ts +0 -20
  63. package/dist/tests/bytecode/fixtures/ASSIGNMENT_EXPRESSION/binary-expression1-out.d.ts.map +0 -1
  64. package/dist/tests/bytecode/fixtures/ASSIGNMENT_EXPRESSION/member-expression1-out.d.ts +0 -20
  65. package/dist/tests/bytecode/fixtures/ASSIGNMENT_EXPRESSION/member-expression1-out.d.ts.map +0 -1
  66. package/dist/tests/bytecode/fixtures/ASSIGNMENT_EXPRESSION/member-expression2-out.d.ts +0 -20
  67. package/dist/tests/bytecode/fixtures/ASSIGNMENT_EXPRESSION/member-expression2-out.d.ts.map +0 -1
  68. package/dist/tests/bytecode/fixtures/IDENTIFIER/basic1-out.d.ts +0 -21
  69. package/dist/tests/bytecode/fixtures/IDENTIFIER/basic1-out.d.ts.map +0 -1
  70. package/dist/tests/bytecode/fixtures/LITERAL/basic1-int-out.d.ts +0 -21
  71. package/dist/tests/bytecode/fixtures/LITERAL/basic1-int-out.d.ts.map +0 -1
  72. package/dist/tests/bytecode/fixtures/MEMBER_EXPRESSION/basic1-out.d.ts +0 -20
  73. package/dist/tests/bytecode/fixtures/MEMBER_EXPRESSION/basic1-out.d.ts.map +0 -1
  74. package/dist/tests/bytecode/interpreter.test.d.ts +0 -2
  75. package/dist/tests/bytecode/interpreter.test.d.ts.map +0 -1
  76. package/dist/tests/bytecode/utils.d.ts +0 -21
  77. package/dist/tests/bytecode/utils.d.ts.map +0 -1
  78. package/dist/types/ast/nodes/TransportStatementNode.d.ts +0 -13
  79. package/dist/types/ast/nodes/TransportStatementNode.d.ts.map +0 -1
  80. package/dist/types/byteCode/ByteCodeInstruction.d.ts +0 -8
  81. package/dist/types/byteCode/ByteCodeInstruction.d.ts.map +0 -1
  82. package/dist/types/byteCode/ByteCodeJson.d.ts +0 -6
  83. package/dist/types/byteCode/ByteCodeJson.d.ts.map +0 -1
@@ -1,17 +0,0 @@
1
- type StackValue = number | string | boolean | object | null | undefined;
2
- type StringTable = string[];
3
- export declare class BattleScriptByteCodeInterpreter {
4
- private ip;
5
- private stack;
6
- private variables;
7
- private stringTable;
8
- private metaData;
9
- setStringTable(table: StringTable): void;
10
- setMetaData(metaData: number[]): void;
11
- run(bytecode: number[]): void;
12
- getVariables(): Record<string, StackValue>;
13
- getStack(): StackValue[];
14
- private readInt32;
15
- }
16
- export {};
17
- //# sourceMappingURL=byteCodeInterpreter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"byteCodeInterpreter.d.ts","sourceRoot":"","sources":["../../../services/byteCode/byteCodeInterpreter.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AACxE,KAAK,WAAW,GAAG,MAAM,EAAE,CAAC;AAE5B,qBAAa,+BAA+B;IAC3C,OAAO,CAAC,EAAE,CAAK;IACf,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,QAAQ,CAAgB;IAEhC,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAIxC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIrC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAyE7B,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;IAI1C,QAAQ,IAAI,UAAU,EAAE;IAIxB,OAAO,CAAC,SAAS;CAQjB"}
@@ -1,3 +0,0 @@
1
- import type { ByteCodeJson } from "@/types/byteCode/ByteCodeJson";
2
- export declare function disassembleBytecode([stringTable, bytecode]: ByteCodeJson): string[];
3
- //# sourceMappingURL=disassembler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"disassembler.d.ts","sourceRoot":"","sources":["../../../services/byteCode/disassembler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,+BAA+B,CAAC;AAIhE,wBAAgB,mBAAmB,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,CAyFnF"}
@@ -1,3 +0,0 @@
1
- export * from "./disassembler";
2
- export * from "./byteCodeInterpreter";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../services/byteCode/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
@@ -1,20 +0,0 @@
1
- declare const _default: {
2
- opcode: number;
3
- args: number[];
4
- meta: {
5
- start: {
6
- line: number;
7
- column: number;
8
- offset: number;
9
- tokenIndex: number;
10
- };
11
- stop: {
12
- line: number;
13
- column: number;
14
- offset: number;
15
- tokenIndex: number;
16
- };
17
- };
18
- }[];
19
- export default _default;
20
- //# sourceMappingURL=basic1-out.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"basic1-out.d.ts","sourceRoot":"","sources":["../../../../../tests/bytecode/fixtures/ASSIGNMENT_EXPRESSION/basic1-out.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,wBA6CE"}
@@ -1,20 +0,0 @@
1
- declare const _default: {
2
- opcode: number;
3
- args: number[];
4
- meta: {
5
- start: {
6
- line: number;
7
- column: number;
8
- offset: number;
9
- tokenIndex: number;
10
- };
11
- stop: {
12
- line: number;
13
- column: number;
14
- offset: number;
15
- tokenIndex: number;
16
- };
17
- };
18
- }[];
19
- export default _default;
20
- //# sourceMappingURL=binary-expression1-out.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"binary-expression1-out.d.ts","sourceRoot":"","sources":["../../../../../tests/bytecode/fixtures/ASSIGNMENT_EXPRESSION/binary-expression1-out.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAGA,wBAuFE"}
@@ -1,20 +0,0 @@
1
- declare const _default: {
2
- opcode: number;
3
- args: number[];
4
- meta: {
5
- start: {
6
- line: number;
7
- column: number;
8
- offset: number;
9
- tokenIndex: number;
10
- };
11
- stop: {
12
- line: number;
13
- column: number;
14
- offset: number;
15
- tokenIndex: number;
16
- };
17
- };
18
- }[];
19
- export default _default;
20
- //# sourceMappingURL=member-expression1-out.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"member-expression1-out.d.ts","sourceRoot":"","sources":["../../../../../tests/bytecode/fixtures/ASSIGNMENT_EXPRESSION/member-expression1-out.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,wBAqOE"}
@@ -1,20 +0,0 @@
1
- declare const _default: {
2
- opcode: number;
3
- args: number[];
4
- meta: {
5
- start: {
6
- line: number;
7
- column: number;
8
- offset: number;
9
- tokenIndex: number;
10
- };
11
- stop: {
12
- line: number;
13
- column: number;
14
- offset: number;
15
- tokenIndex: number;
16
- };
17
- };
18
- }[];
19
- export default _default;
20
- //# sourceMappingURL=member-expression2-out.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"member-expression2-out.d.ts","sourceRoot":"","sources":["../../../../../tests/bytecode/fixtures/ASSIGNMENT_EXPRESSION/member-expression2-out.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,wBAqOE"}
@@ -1,21 +0,0 @@
1
- import { EnumOpCode } from "@/exports/typescript/enums/EnumOpCode";
2
- declare const _default: {
3
- opcode: EnumOpCode;
4
- args: number[];
5
- meta: {
6
- start: {
7
- line: number;
8
- column: number;
9
- offset: number;
10
- tokenIndex: number;
11
- };
12
- stop: {
13
- line: number;
14
- column: number;
15
- offset: number;
16
- tokenIndex: number;
17
- };
18
- };
19
- }[];
20
- export default _default;
21
- //# sourceMappingURL=basic1-out.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"basic1-out.d.ts","sourceRoot":"","sources":["../../../../../tests/bytecode/fixtures/IDENTIFIER/basic1-out.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,uCAAuC,CAAC;;;;;;;;;;;;;;;;;;;AAEjE,wBAqBC"}
@@ -1,21 +0,0 @@
1
- import { EnumOpCode } from "@/exports/typescript/enums/EnumOpCode";
2
- declare const _default: {
3
- opcode: EnumOpCode;
4
- args: number[];
5
- meta: {
6
- start: {
7
- line: number;
8
- column: number;
9
- offset: number;
10
- tokenIndex: number;
11
- };
12
- stop: {
13
- line: number;
14
- column: number;
15
- offset: number;
16
- tokenIndex: number;
17
- };
18
- };
19
- }[];
20
- export default _default;
21
- //# sourceMappingURL=basic1-int-out.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"basic1-int-out.d.ts","sourceRoot":"","sources":["../../../../../tests/bytecode/fixtures/LITERAL/basic1-int-out.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,uCAAuC,CAAC;;;;;;;;;;;;;;;;;;;AAEjE,wBAeC"}
@@ -1,20 +0,0 @@
1
- declare const _default: {
2
- opcode: number;
3
- args: number[];
4
- meta: {
5
- start: {
6
- line: number;
7
- column: number;
8
- offset: number;
9
- tokenIndex: number;
10
- };
11
- stop: {
12
- line: number;
13
- column: number;
14
- offset: number;
15
- tokenIndex: number;
16
- };
17
- };
18
- }[];
19
- export default _default;
20
- //# sourceMappingURL=basic1-out.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"basic1-out.d.ts","sourceRoot":"","sources":["../../../../../tests/bytecode/fixtures/MEMBER_EXPRESSION/basic1-out.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,wBA6IC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=interpreter.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interpreter.test.d.ts","sourceRoot":"","sources":["../../../tests/bytecode/interpreter.test.ts"],"names":[],"mappings":""}
@@ -1,21 +0,0 @@
1
- export interface ParsedBytecodeHeader {
2
- version: {
3
- major: number;
4
- minor: number;
5
- };
6
- stringIndexSize: number;
7
- stringCount: number;
8
- stringTable: string[];
9
- bytecodeOffset: number;
10
- }
11
- export declare function parseBytecodeHeader(bytecode: Uint8Array): ParsedBytecodeHeader;
12
- export declare function decodeBytecode(bytecode: Uint8Array): string[];
13
- export interface DecodedInstruction {
14
- opcode: number;
15
- name: string;
16
- args: (number | string)[];
17
- byteIndex: number;
18
- }
19
- export declare function decodeInstructions(bytecode: Uint8Array): DecodedInstruction[];
20
- export declare function getVarNameFromIndex(index: number, stringTable: string[]): string;
21
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../tests/bytecode/utils.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,GAAG,oBAAoB,CAgC9E;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,EAAE,CA+G7D;AAED,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACrB;AAoCD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,UAAU,GAAG,kBAAkB,EAAE,CAyE7E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAEhF"}
@@ -1,13 +0,0 @@
1
- import type { AstNodeBase, AstNodeLayout, LiteralStringNode } from "@/types";
2
- import type { BattleScriptToAST } from "@/services";
3
- import type { TransportStatementContext } from "@/services/grammar/ts/language/BattleScriptParser";
4
- import type { BattleScriptFromAST } from "@/services/fullAst/BattleScriptFromAST";
5
- import type { VisitOptions } from "@/types/VisitOptions";
6
- export interface TransportStatementNode extends AstNodeBase {
7
- kind: "TRANSPORT_STATEMENT";
8
- name: LiteralStringNode;
9
- }
10
- export declare const TransportStatementNodeLayout: AstNodeLayout<TransportStatementNode>[];
11
- export declare const transportStatementToAstNode: (instance: BattleScriptToAST, ctx: TransportStatementContext) => TransportStatementNode;
12
- export declare const transportStatementFromAstNode: (instance: BattleScriptFromAST, node: TransportStatementNode, options?: VisitOptions) => string;
13
- //# sourceMappingURL=TransportStatementNode.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TransportStatementNode.d.ts","sourceRoot":"","sources":["../../../../types/ast/nodes/TransportStatementNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAE3E,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,mDAAmD,CAAC;AACjG,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,wCAAwC,CAAC;AAChF,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAGvD,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IAC1D,IAAI,EAAE,qBAAqB,CAAC;IAC5B,IAAI,EAAE,iBAAiB,CAAC;CACxB;AAED,eAAO,MAAM,4BAA4B,EAAE,aAAa,CAAC,sBAAsB,CAAC,EAM9E,CAAC;AAEH,eAAO,MAAM,2BAA2B,GAAI,UAAU,iBAAiB,EAAE,KAAK,yBAAyB,KAAG,sBAMzG,CAAA;AAGD,eAAO,MAAM,6BAA6B,GAAI,UAAU,mBAAmB,EAAE,MAAM,sBAAsB,EAAE,UAAS,YAAiB,WAQnI,CAAA"}
@@ -1,8 +0,0 @@
1
- import type { EnumOpCode } from "@/exports/typescript/enums/EnumOpCode";
2
- import type { AstNodeBase } from "@/types";
3
- export interface ByteCodeInstruction {
4
- opcode: EnumOpCode;
5
- args: number[];
6
- meta: AstNodeBase["meta"];
7
- }
8
- //# sourceMappingURL=ByteCodeInstruction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ByteCodeInstruction.d.ts","sourceRoot":"","sources":["../../../types/byteCode/ByteCodeInstruction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,uCAAuC,CAAC;AACtE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC1B"}
@@ -1,6 +0,0 @@
1
- export type ByteCodeJson = [
2
- string[],
3
- number[],
4
- number[]?
5
- ];
6
- //# sourceMappingURL=ByteCodeJson.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ByteCodeJson.d.ts","sourceRoot":"","sources":["../../../types/byteCode/ByteCodeJson.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IAC1B,MAAM,EAAE;IACR,MAAM,EAAE;IACR,MAAM,EAAE,CAAC;CACT,CAAC"}