arkanalyzer 1.0.28 → 1.0.30
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/lib/Config.d.ts.map +1 -1
- package/lib/Config.js +9 -1
- package/lib/Scene.d.ts +7 -0
- package/lib/Scene.d.ts.map +1 -1
- package/lib/Scene.js +196 -173
- package/lib/VFG/builder/DVFGBuilder.d.ts.map +1 -1
- package/lib/VFG/builder/DVFGBuilder.js +11 -6
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +3 -1
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/AbstractAnalysis.js +18 -10
- package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/RapidTypeAnalysis.js +8 -7
- package/lib/callgraph/common/Statistics.d.ts.map +1 -1
- package/lib/callgraph/common/Statistics.js +25 -24
- package/lib/callgraph/model/CallGraph.d.ts +1 -1
- package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
- package/lib/callgraph/model/CallGraph.js +6 -3
- package/lib/callgraph/pointerAnalysis/Context.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Context.js +0 -1
- package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +26 -26
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +4 -0
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +138 -108
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +15 -14
- package/lib/core/base/Expr.d.ts.map +1 -1
- package/lib/core/base/Expr.js +6 -4
- package/lib/core/base/Type.d.ts +10 -1
- package/lib/core/base/Type.d.ts.map +1 -1
- package/lib/core/base/Type.js +18 -1
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +3 -1
- package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
- package/lib/core/common/DummyMainCreater.js +17 -20
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +18 -10
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +13 -2
- package/lib/core/dataflow/DataflowSolver.d.ts +1 -0
- package/lib/core/dataflow/DataflowSolver.d.ts.map +1 -1
- package/lib/core/dataflow/DataflowSolver.js +21 -17
- package/lib/core/dataflow/ReachingDef.d.ts.map +1 -1
- package/lib/core/dataflow/ReachingDef.js +6 -0
- package/lib/core/dataflow/UndefinedVariable.d.ts.map +1 -1
- package/lib/core/dataflow/UndefinedVariable.js +0 -25
- package/lib/core/graph/Cfg.d.ts +1 -0
- package/lib/core/graph/Cfg.d.ts.map +1 -1
- package/lib/core/graph/Cfg.js +49 -45
- package/lib/core/graph/DominanceFinder.js +19 -19
- package/lib/core/graph/builder/ViewTreeBuilder.d.ts +1 -0
- package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/ViewTreeBuilder.js +34 -31
- package/lib/core/model/ArkMethod.d.ts.map +1 -1
- package/lib/core/model/ArkMethod.js +13 -6
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +72 -63
- package/lib/save/serializeArkIR.d.ts.map +1 -1
- package/lib/save/serializeArkIR.js +11 -24
- package/lib/save/source/SourceBody.js +10 -10
- package/lib/save/source/SourceFilePrinter.d.ts +1 -0
- package/lib/save/source/SourceFilePrinter.d.ts.map +1 -1
- package/lib/save/source/SourceFilePrinter.js +11 -8
- package/lib/save/source/SourceNamespace.d.ts +1 -0
- package/lib/save/source/SourceNamespace.d.ts.map +1 -1
- package/lib/save/source/SourceNamespace.js +11 -8
- package/lib/save/source/SourceStmt.d.ts +1 -0
- package/lib/save/source/SourceStmt.d.ts.map +1 -1
- package/lib/save/source/SourceStmt.js +37 -35
- package/lib/save/source/SourceTransformer.d.ts +2 -0
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +64 -54
- package/lib/transformer/StaticSingleAssignmentFormer.d.ts +5 -0
- package/lib/transformer/StaticSingleAssignmentFormer.d.ts.map +1 -1
- package/lib/transformer/StaticSingleAssignmentFormer.js +119 -101
- package/lib/utils/CfgStructualAnalysis.d.ts +1 -0
- package/lib/utils/CfgStructualAnalysis.d.ts.map +1 -1
- package/lib/utils/CfgStructualAnalysis.js +28 -24
- package/lib/utils/FileUtils.d.ts.map +1 -1
- package/lib/utils/FileUtils.js +14 -12
- package/lib/utils/callGraphUtils.d.ts.map +1 -1
- package/lib/utils/callGraphUtils.js +26 -23
- package/lib/utils/entryMethodUtils.d.ts.map +1 -1
- package/lib/utils/entryMethodUtils.js +11 -8
- package/lib/utils/pathTransfer.d.ts +1 -0
- package/lib/utils/pathTransfer.d.ts.map +1 -1
- package/lib/utils/pathTransfer.js +10 -1
- package/package.json +2 -2
|
@@ -88,6 +88,41 @@ class SourceTransformer {
|
|
|
88
88
|
}
|
|
89
89
|
return `${this.valueToString(invokeExpr.getBase())}.${methodName}${genericCode}(${args.join(', ')})`;
|
|
90
90
|
}
|
|
91
|
+
transBuilderMethod(className, methodName, args, invokeExpr, genericCode) {
|
|
92
|
+
if (className === EtsConst_1.COMPONENT_CUSTOMVIEW) {
|
|
93
|
+
if (methodName === EtsConst_1.COMPONENT_CREATE_FUNCTION) {
|
|
94
|
+
// Anonymous @Builder method
|
|
95
|
+
if (args.length > 1) {
|
|
96
|
+
// remove the substring '() =>' or '(x, y): type =>' at the beginning of args[1]
|
|
97
|
+
const pattern = /^\([^)]*\)\s*:\s*\w*\s*=>\s*/;
|
|
98
|
+
args[1] = args[1].replace(pattern, '');
|
|
99
|
+
}
|
|
100
|
+
return `${args.join(' ')}`;
|
|
101
|
+
}
|
|
102
|
+
if (methodName === EtsConst_1.COMPONENT_POP_FUNCTION) {
|
|
103
|
+
return '';
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (PrinterUtils_1.PrinterUtils.isComponentCreate(invokeExpr)) {
|
|
107
|
+
if (className === EtsConst_1.COMPONENT_IF) {
|
|
108
|
+
return `if (${args.join(', ')})`;
|
|
109
|
+
}
|
|
110
|
+
return `${className}${genericCode}(${args.join(', ')})`;
|
|
111
|
+
}
|
|
112
|
+
if (PrinterUtils_1.PrinterUtils.isComponentIfBranchInvoke(invokeExpr)) {
|
|
113
|
+
let arg0 = invokeExpr.getArg(0);
|
|
114
|
+
if (arg0.getValue() === '0') {
|
|
115
|
+
return ``;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
return '} else {';
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (PrinterUtils_1.PrinterUtils.isComponentPop(invokeExpr)) {
|
|
122
|
+
return '}';
|
|
123
|
+
}
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
91
126
|
staticInvokeExprToString(invokeExpr) {
|
|
92
127
|
let methodSignature = invokeExpr.getMethodSignature();
|
|
93
128
|
let method = this.context.getMethod(methodSignature);
|
|
@@ -103,37 +138,9 @@ class SourceTransformer {
|
|
|
103
138
|
});
|
|
104
139
|
let genericCode = this.genericTypesToString(invokeExpr.getRealGenericTypes());
|
|
105
140
|
if (this.context.isInBuilderMethod()) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
if (args.length > 1) {
|
|
110
|
-
// remove the substring '() =>' or '(x, y): type =>' at the beginning of args[1]
|
|
111
|
-
const pattern = /^\([^)]*\)\s*:\s*\w*\s*=>\s*/;
|
|
112
|
-
args[1] = args[1].replace(pattern, '');
|
|
113
|
-
}
|
|
114
|
-
return `${args.join(' ')}`;
|
|
115
|
-
}
|
|
116
|
-
if (methodName === EtsConst_1.COMPONENT_POP_FUNCTION) {
|
|
117
|
-
return '';
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
if (PrinterUtils_1.PrinterUtils.isComponentCreate(invokeExpr)) {
|
|
121
|
-
if (className === EtsConst_1.COMPONENT_IF) {
|
|
122
|
-
return `if (${args.join(', ')})`;
|
|
123
|
-
}
|
|
124
|
-
return `${className}${genericCode}(${args.join(', ')})`;
|
|
125
|
-
}
|
|
126
|
-
if (PrinterUtils_1.PrinterUtils.isComponentIfBranchInvoke(invokeExpr)) {
|
|
127
|
-
let arg0 = invokeExpr.getArg(0);
|
|
128
|
-
if (arg0.getValue() === '0') {
|
|
129
|
-
return ``;
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
return '} else {';
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
if (PrinterUtils_1.PrinterUtils.isComponentPop(invokeExpr)) {
|
|
136
|
-
return '}';
|
|
141
|
+
const res = this.transBuilderMethod(className, methodName, args, invokeExpr, genericCode);
|
|
142
|
+
if (res !== null) {
|
|
143
|
+
return res;
|
|
137
144
|
}
|
|
138
145
|
}
|
|
139
146
|
if (className && className.length > 0 && methodName !== TSConst_1.SUPER_NAME) {
|
|
@@ -248,34 +255,37 @@ class SourceTransformer {
|
|
|
248
255
|
return SourceTransformer.constToString(value);
|
|
249
256
|
}
|
|
250
257
|
if (value instanceof Local_1.Local) {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
258
|
+
return this.localToString(value, operator);
|
|
259
|
+
}
|
|
260
|
+
logger.info(`valueToString ${value.constructor} not support.`);
|
|
261
|
+
return `${value}`;
|
|
262
|
+
}
|
|
263
|
+
localToString(value, operator) {
|
|
264
|
+
if (PrinterUtils_1.PrinterUtils.isAnonymousMethod(value.getName())) {
|
|
265
|
+
let methodSignature = value.getType().getMethodSignature();
|
|
266
|
+
let anonymousMethod = this.context.getMethod(methodSignature);
|
|
267
|
+
if (anonymousMethod) {
|
|
268
|
+
return this.anonymousMethodToString(anonymousMethod, this.context.getPrinter().getIndent());
|
|
257
269
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
270
|
+
}
|
|
271
|
+
if (PrinterUtils_1.PrinterUtils.isAnonymousClass(value.getName())) {
|
|
272
|
+
let clsSignature = value.getType().getClassSignature();
|
|
273
|
+
let cls = this.context.getClass(clsSignature);
|
|
274
|
+
if (cls) {
|
|
275
|
+
return this.anonymousClassToString(cls, this.context.getPrinter().getIndent());
|
|
264
276
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
}
|
|
277
|
+
}
|
|
278
|
+
if (operator === Expr_1.NormalBinaryOperator.Division ||
|
|
279
|
+
operator === Expr_1.NormalBinaryOperator.Multiplication ||
|
|
280
|
+
operator === Expr_1.NormalBinaryOperator.Remainder) {
|
|
281
|
+
if (PrinterUtils_1.PrinterUtils.isTemp(value.getName())) {
|
|
282
|
+
let stmt = value.getDeclaringStmt();
|
|
283
|
+
if (stmt instanceof Stmt_1.ArkAssignStmt && stmt.getRightOp() instanceof Expr_1.ArkNormalBinopExpr) {
|
|
284
|
+
return `(${this.context.transTemp2Code(value)})`;
|
|
273
285
|
}
|
|
274
286
|
}
|
|
275
|
-
return this.context.transTemp2Code(value);
|
|
276
287
|
}
|
|
277
|
-
|
|
278
|
-
return `${value}`;
|
|
288
|
+
return this.context.transTemp2Code(value);
|
|
279
289
|
}
|
|
280
290
|
literalObjectToString(type) {
|
|
281
291
|
let name = type.getClassSignature().getClassName();
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { ArkBody } from '../core/model/ArkBody';
|
|
2
2
|
export declare class StaticSingleAssignmentFormer {
|
|
3
3
|
transformBody(body: ArkBody): void;
|
|
4
|
+
private transformStmt;
|
|
4
5
|
private decideBlockToPhiStmts;
|
|
6
|
+
private handleDf;
|
|
7
|
+
private handleBlockWithSucc;
|
|
5
8
|
private addPhiStmts;
|
|
9
|
+
private renameUseAndDef;
|
|
6
10
|
private renameLocals;
|
|
11
|
+
private removeVisitedTree;
|
|
7
12
|
private constainsPhiExpr;
|
|
8
13
|
private getOriginalLocal;
|
|
9
14
|
private addNewArgToPhi;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticSingleAssignmentFormer.d.ts","sourceRoot":"","sources":["../../src/transformer/StaticSingleAssignmentFormer.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,qBAAa,4BAA4B;IAC9B,aAAa,CAAC,IAAI,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"StaticSingleAssignmentFormer.d.ts","sourceRoot":"","sources":["../../src/transformer/StaticSingleAssignmentFormer.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,qBAAa,4BAA4B;IAC9B,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAqBzC,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,QAAQ;IA4BhB,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,YAAY;IA8CpB,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,kBAAkB;CAI7B"}
|
|
@@ -22,25 +22,13 @@ const DominanceFinder_1 = require("../core/graph/DominanceFinder");
|
|
|
22
22
|
const DominanceTree_1 = require("../core/graph/DominanceTree");
|
|
23
23
|
class StaticSingleAssignmentFormer {
|
|
24
24
|
transformBody(body) {
|
|
25
|
-
var _a;
|
|
26
25
|
let cfg = body.getCfg();
|
|
27
26
|
let blockToDefs = new Map();
|
|
28
27
|
let localToBlocks = new Map();
|
|
29
28
|
for (const block of cfg.getBlocks()) {
|
|
30
29
|
let defs = new Set();
|
|
31
30
|
for (const stmt of block.getStmts()) {
|
|
32
|
-
|
|
33
|
-
let local = stmt.getDef();
|
|
34
|
-
defs.add(local);
|
|
35
|
-
if (localToBlocks.has(local)) {
|
|
36
|
-
(_a = localToBlocks.get(local)) === null || _a === void 0 ? void 0 : _a.add(block);
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
let blcoks = new Set();
|
|
40
|
-
blcoks.add(block);
|
|
41
|
-
localToBlocks.set(local, blcoks);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
31
|
+
this.transformStmt(stmt, defs, localToBlocks, block);
|
|
44
32
|
}
|
|
45
33
|
blockToDefs.set(block, defs);
|
|
46
34
|
}
|
|
@@ -50,8 +38,22 @@ class StaticSingleAssignmentFormer {
|
|
|
50
38
|
let dominanceTree = new DominanceTree_1.DominanceTree(dominanceFinder);
|
|
51
39
|
this.renameLocals(body, dominanceTree, blockToPhiStmts);
|
|
52
40
|
}
|
|
41
|
+
transformStmt(stmt, defs, localToBlocks, block) {
|
|
42
|
+
var _a;
|
|
43
|
+
if (stmt.getDef() != null && stmt.getDef() instanceof Local_1.Local) {
|
|
44
|
+
let local = stmt.getDef();
|
|
45
|
+
defs.add(local);
|
|
46
|
+
if (localToBlocks.has(local)) {
|
|
47
|
+
(_a = localToBlocks.get(local)) === null || _a === void 0 ? void 0 : _a.add(block);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
let blcoks = new Set();
|
|
51
|
+
blcoks.add(block);
|
|
52
|
+
localToBlocks.set(local, blcoks);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
53
56
|
decideBlockToPhiStmts(body, dominanceFinder, blockToDefs, localToBlocks) {
|
|
54
|
-
var _a, _b, _c, _d;
|
|
55
57
|
let blockToPhiStmts = new Map();
|
|
56
58
|
let blockToPhiLocals = new Map();
|
|
57
59
|
let localToPhiBlock = new Map();
|
|
@@ -63,50 +65,57 @@ class StaticSingleAssignmentFormer {
|
|
|
63
65
|
let block = blocks.splice(0, 1).at(0);
|
|
64
66
|
let dfs = dominanceFinder.getDominanceFrontiers(block);
|
|
65
67
|
for (const df of dfs) {
|
|
66
|
-
|
|
67
|
-
phiBlocks.add(df);
|
|
68
|
-
let phiStmt = this.createEmptyPhiStmt(local);
|
|
69
|
-
if (blockToPhiStmts.has(df)) {
|
|
70
|
-
(_a = blockToPhiStmts.get(df)) === null || _a === void 0 ? void 0 : _a.add(phiStmt);
|
|
71
|
-
(_b = blockToPhiLocals.get(df)) === null || _b === void 0 ? void 0 : _b.add(local);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
let phiStmts = new Set();
|
|
75
|
-
phiStmts.add(phiStmt);
|
|
76
|
-
blockToPhiStmts.set(df, phiStmts);
|
|
77
|
-
let phiLocals = new Set();
|
|
78
|
-
phiLocals.add(local);
|
|
79
|
-
blockToPhiLocals.set(df, phiLocals);
|
|
80
|
-
}
|
|
81
|
-
(_c = blockToDefs.get(df)) === null || _c === void 0 ? void 0 : _c.add(local);
|
|
82
|
-
if (!((_d = blockToDefs.get(df)) === null || _d === void 0 ? void 0 : _d.has(local))) {
|
|
83
|
-
blocks.push(df);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
68
|
+
this.handleDf(blockToPhiStmts, blockToPhiLocals, phiBlocks, df, local, blockToDefs, blocks);
|
|
86
69
|
}
|
|
87
70
|
}
|
|
88
71
|
}
|
|
89
72
|
return blockToPhiStmts;
|
|
90
73
|
}
|
|
91
|
-
|
|
74
|
+
handleDf(blockToPhiStmts, blockToPhiLocals, phiBlocks, df, local, blockToDefs, blocks) {
|
|
75
|
+
var _a, _b, _c, _d;
|
|
76
|
+
if (!phiBlocks.has(df)) {
|
|
77
|
+
phiBlocks.add(df);
|
|
78
|
+
let phiStmt = this.createEmptyPhiStmt(local);
|
|
79
|
+
if (blockToPhiStmts.has(df)) {
|
|
80
|
+
(_a = blockToPhiStmts.get(df)) === null || _a === void 0 ? void 0 : _a.add(phiStmt);
|
|
81
|
+
(_b = blockToPhiLocals.get(df)) === null || _b === void 0 ? void 0 : _b.add(local);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
let phiStmts = new Set();
|
|
85
|
+
phiStmts.add(phiStmt);
|
|
86
|
+
blockToPhiStmts.set(df, phiStmts);
|
|
87
|
+
let phiLocals = new Set();
|
|
88
|
+
phiLocals.add(local);
|
|
89
|
+
blockToPhiLocals.set(df, phiLocals);
|
|
90
|
+
}
|
|
91
|
+
(_c = blockToDefs.get(df)) === null || _c === void 0 ? void 0 : _c.add(local);
|
|
92
|
+
if (!((_d = blockToDefs.get(df)) === null || _d === void 0 ? void 0 : _d.has(local))) {
|
|
93
|
+
blocks.push(df);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
handleBlockWithSucc(blockToPhiStmts, succ, blockToDefs, block, phiArgsNum) {
|
|
92
98
|
var _a;
|
|
99
|
+
for (const phi of blockToPhiStmts.get(succ)) {
|
|
100
|
+
let local = phi.getDef();
|
|
101
|
+
if ((_a = blockToDefs.get(block)) === null || _a === void 0 ? void 0 : _a.has(local)) {
|
|
102
|
+
if (phiArgsNum.has(phi)) {
|
|
103
|
+
let num = phiArgsNum.get(phi);
|
|
104
|
+
phiArgsNum.set(phi, num + 1);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
phiArgsNum.set(phi, 1);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
addPhiStmts(blockToPhiStmts, cfg, blockToDefs) {
|
|
93
113
|
let phiArgsNum = new Map();
|
|
94
114
|
for (const block of cfg.getBlocks()) {
|
|
95
115
|
let succs = Array.from(block.getSuccessors());
|
|
96
116
|
for (const succ of succs) {
|
|
97
117
|
if (blockToPhiStmts.has(succ)) {
|
|
98
|
-
|
|
99
|
-
let local = phi.getDef();
|
|
100
|
-
if ((_a = blockToDefs.get(block)) === null || _a === void 0 ? void 0 : _a.has(local)) {
|
|
101
|
-
if (phiArgsNum.has(phi)) {
|
|
102
|
-
let num = phiArgsNum.get(phi);
|
|
103
|
-
phiArgsNum.set(phi, num + 1);
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
phiArgsNum.set(phi, 1);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
118
|
+
this.handleBlockWithSucc(blockToPhiStmts, succ, blockToDefs, block, phiArgsNum);
|
|
110
119
|
}
|
|
111
120
|
}
|
|
112
121
|
}
|
|
@@ -123,8 +132,35 @@ class StaticSingleAssignmentFormer {
|
|
|
123
132
|
}
|
|
124
133
|
}
|
|
125
134
|
}
|
|
135
|
+
renameUseAndDef(stmt, localToNameStack, nextFreeIdx, newLocals, newPhiStmts) {
|
|
136
|
+
var _a;
|
|
137
|
+
let uses = stmt.getUses();
|
|
138
|
+
if (uses.length > 0 && !this.constainsPhiExpr(stmt)) {
|
|
139
|
+
for (const use of uses) {
|
|
140
|
+
if (use instanceof Local_1.Local) {
|
|
141
|
+
let nameStack = localToNameStack.get(use);
|
|
142
|
+
let newUse = nameStack[nameStack.length - 1];
|
|
143
|
+
stmt.replaceUse(use, newUse);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// rename def
|
|
148
|
+
let def = stmt.getDef();
|
|
149
|
+
if (def != null && def instanceof Local_1.Local) {
|
|
150
|
+
let newName = def.getName() + '#' + nextFreeIdx;
|
|
151
|
+
nextFreeIdx++;
|
|
152
|
+
let newDef = new Local_1.Local(newName);
|
|
153
|
+
newDef.setOriginalValue(def);
|
|
154
|
+
newLocals.add(newDef);
|
|
155
|
+
(_a = localToNameStack.get(def)) === null || _a === void 0 ? void 0 : _a.push(newDef);
|
|
156
|
+
stmt.setLeftOp(newDef);
|
|
157
|
+
if (this.constainsPhiExpr(stmt)) {
|
|
158
|
+
newPhiStmts.add(stmt);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return nextFreeIdx;
|
|
162
|
+
}
|
|
126
163
|
renameLocals(body, dominanceTree, blockToPhiStmts) {
|
|
127
|
-
var _a, _b;
|
|
128
164
|
let newLocals = new Set(body.getLocals().values());
|
|
129
165
|
let localToNameStack = new Map();
|
|
130
166
|
for (const local of newLocals) {
|
|
@@ -137,31 +173,8 @@ class StaticSingleAssignmentFormer {
|
|
|
137
173
|
for (const block of dfsBlocks) {
|
|
138
174
|
let newPhiStmts = new Set();
|
|
139
175
|
for (const stmt of block.getStmts()) {
|
|
140
|
-
// rename uses
|
|
141
|
-
|
|
142
|
-
if (uses.length > 0 && !this.constainsPhiExpr(stmt)) {
|
|
143
|
-
for (const use of uses) {
|
|
144
|
-
if (use instanceof Local_1.Local) {
|
|
145
|
-
let nameStack = localToNameStack.get(use);
|
|
146
|
-
let newUse = nameStack[nameStack.length - 1];
|
|
147
|
-
stmt.replaceUse(use, newUse);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
// rename def
|
|
152
|
-
let def = stmt.getDef();
|
|
153
|
-
if (def != null && def instanceof Local_1.Local) {
|
|
154
|
-
let newName = def.getName() + '#' + nextFreeIdx;
|
|
155
|
-
nextFreeIdx++;
|
|
156
|
-
let newDef = new Local_1.Local(newName);
|
|
157
|
-
newDef.setOriginalValue(def);
|
|
158
|
-
newLocals.add(newDef);
|
|
159
|
-
(_a = localToNameStack.get(def)) === null || _a === void 0 ? void 0 : _a.push(newDef);
|
|
160
|
-
stmt.setLeftOp(newDef);
|
|
161
|
-
if (this.constainsPhiExpr(stmt)) {
|
|
162
|
-
newPhiStmts.add(stmt);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
176
|
+
// rename uses and def
|
|
177
|
+
nextFreeIdx = this.renameUseAndDef(stmt, localToNameStack, nextFreeIdx, newLocals, newPhiStmts);
|
|
165
178
|
}
|
|
166
179
|
visited.add(block);
|
|
167
180
|
blockStack.push(block);
|
|
@@ -171,40 +184,45 @@ class StaticSingleAssignmentFormer {
|
|
|
171
184
|
// rename phiStmts' args
|
|
172
185
|
let succs = Array.from(block.getSuccessors());
|
|
173
186
|
for (const succ of succs) {
|
|
174
|
-
if (blockToPhiStmts.has(succ)) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
187
|
+
if (!blockToPhiStmts.has(succ)) {
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
let phiStmts = blockToPhiStmts.get(succ);
|
|
191
|
+
for (const phiStmt of phiStmts) {
|
|
192
|
+
let def = phiStmt.getDef();
|
|
193
|
+
let oriDef = this.getOriginalLocal(def, new Set(localToNameStack.keys()));
|
|
194
|
+
let nameStack = localToNameStack.get(oriDef);
|
|
195
|
+
let arg = nameStack[nameStack.length - 1];
|
|
196
|
+
this.addNewArgToPhi(phiStmt, arg, block);
|
|
183
197
|
}
|
|
184
198
|
}
|
|
185
199
|
// if a block's children in dominance tree are visited, remove it
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
if (
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
break;
|
|
200
|
+
this.removeVisitedTree(blockStack, dominanceTree, visited, localToNameStack);
|
|
201
|
+
}
|
|
202
|
+
body.setLocals(newLocals);
|
|
203
|
+
}
|
|
204
|
+
removeVisitedTree(blockStack, dominanceTree, visited, localToNameStack) {
|
|
205
|
+
var _a;
|
|
206
|
+
let top = blockStack[blockStack.length - 1];
|
|
207
|
+
let children = dominanceTree.getChildren(top);
|
|
208
|
+
while (this.containsAllChildren(visited, children)) {
|
|
209
|
+
blockStack.pop();
|
|
210
|
+
for (const stmt of top.getStmts()) {
|
|
211
|
+
let def = stmt.getDef();
|
|
212
|
+
if (def != null && def instanceof Local_1.Local) {
|
|
213
|
+
let oriDef = this.getOriginalLocal(def, new Set(localToNameStack.keys()));
|
|
214
|
+
(_a = localToNameStack.get(oriDef)) === null || _a === void 0 ? void 0 : _a.pop();
|
|
204
215
|
}
|
|
205
216
|
}
|
|
217
|
+
// next block to check
|
|
218
|
+
if (blockStack.length > 0) {
|
|
219
|
+
top = blockStack[blockStack.length - 1];
|
|
220
|
+
children = dominanceTree.getChildren(top);
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
206
225
|
}
|
|
207
|
-
body.setLocals(newLocals);
|
|
208
226
|
}
|
|
209
227
|
constainsPhiExpr(stmt) {
|
|
210
228
|
if (stmt instanceof Stmt_1.ArkAssignStmt && stmt.getUses().length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CfgStructualAnalysis.d.ts","sourceRoot":"","sources":["../../src/utils/CfgStructualAnalysis.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,oBAAY,aAAa;IACrB,MAAM,IAAA;IACN,EAAE,IAAA;IACF,IAAI,IAAA;IACJ,KAAK,IAAA;IACL,QAAQ,IAAA;IACR,EAAE,IAAA;IACF,QAAQ,IAAA;IACR,KAAK,IAAA;IACL,GAAG,IAAA;IACH,YAAY,IAAA;IACZ,GAAG,KAAA;IACH,KAAK,KAAA;IACL,OAAO,KAAA;CACV;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;AAE7F,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,YAAY,CAAmD;IACvE,OAAO,CAAC,OAAO,CAAmD;gBAEtD,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE;IA0B7B,QAAQ,IAAI,YAAY;IAIxB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;IAM7C,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,GAAE,GAAG,CAAC,YAAY,CAAa;IAUvG,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,qBAAqB;
|
|
1
|
+
{"version":3,"file":"CfgStructualAnalysis.d.ts","sourceRoot":"","sources":["../../src/utils/CfgStructualAnalysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -145,22 +145,25 @@ class AbstractFlowGraph {
|
|
|
145
145
|
this.structTypes.set(region, rtype);
|
|
146
146
|
let blocks = new Set();
|
|
147
147
|
for (const s of nset) {
|
|
148
|
-
|
|
149
|
-
this.structOf.set(s, region);
|
|
150
|
-
}
|
|
151
|
-
if (this.structBlocks.has(s)) {
|
|
152
|
-
for (const b of this.structBlocks.get(s)) {
|
|
153
|
-
blocks.add(b);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
blocks.add(s);
|
|
158
|
-
}
|
|
148
|
+
this.handleRegion(s, region, blocks);
|
|
159
149
|
}
|
|
160
150
|
this.structBlocks.set(region, blocks);
|
|
161
151
|
this.loopMap.set(region.header, region);
|
|
162
152
|
}
|
|
163
153
|
}
|
|
154
|
+
handleRegion(s, region, blocks) {
|
|
155
|
+
if (!this.structOf.has(s)) {
|
|
156
|
+
this.structOf.set(s, region);
|
|
157
|
+
}
|
|
158
|
+
if (this.structBlocks.has(s)) {
|
|
159
|
+
for (const b of this.structBlocks.get(s)) {
|
|
160
|
+
blocks.add(b);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
blocks.add(s);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
164
167
|
prepareBuildLoops() {
|
|
165
168
|
let dom = this.buildDominator();
|
|
166
169
|
let loops = [];
|
|
@@ -590,22 +593,23 @@ class AbstractFlowGraph {
|
|
|
590
593
|
reduce(rtype, nodeSet) {
|
|
591
594
|
let region = this.createRegion(rtype, nodeSet);
|
|
592
595
|
region === null || region === void 0 ? void 0 : region.replace();
|
|
593
|
-
if (region) {
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
else {
|
|
604
|
-
blocks.add(s);
|
|
596
|
+
if (region === undefined) {
|
|
597
|
+
return undefined;
|
|
598
|
+
}
|
|
599
|
+
this.structTypes.set(region, rtype);
|
|
600
|
+
let blocks = new Set();
|
|
601
|
+
for (const s of nodeSet) {
|
|
602
|
+
this.structOf.set(s, region);
|
|
603
|
+
if (this.structBlocks.has(s)) {
|
|
604
|
+
for (const b of this.structBlocks.get(s)) {
|
|
605
|
+
blocks.add(b);
|
|
605
606
|
}
|
|
606
607
|
}
|
|
607
|
-
|
|
608
|
+
else {
|
|
609
|
+
blocks.add(s);
|
|
610
|
+
}
|
|
608
611
|
}
|
|
612
|
+
this.structBlocks.set(region, blocks);
|
|
609
613
|
return region;
|
|
610
614
|
}
|
|
611
615
|
setIntersect(a, b) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUtils.d.ts","sourceRoot":"","sources":["../../src/utils/FileUtils.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAIjD,qBAAa,SAAS;IAClB,gBAAuB,WAAW;;;MAGjC;WAEa,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;WASzC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;WASrC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAIrC,iBAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"FileUtils.d.ts","sourceRoot":"","sources":["../../src/utils/FileUtils.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAIjD,qBAAa,SAAS;IAClB,gBAAuB,WAAW;;;MAGjC;WAEa,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;WASzC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;WASrC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;WAIrC,iBAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;WA8BlG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,QAAQ;CAc1F;AAED,qBAAa,UAAU;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;gBAED,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAIzC;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,GAAG,CAAC,MAAM,CAAqB,GAAG,MAAM,CA0BrH"}
|
package/lib/utils/FileUtils.js
CHANGED
|
@@ -79,19 +79,21 @@ class FileUtils {
|
|
|
79
79
|
}
|
|
80
80
|
});
|
|
81
81
|
ohPkgContentMap.forEach((content, filePath) => {
|
|
82
|
-
if (content.dependencies) {
|
|
83
|
-
|
|
84
|
-
if (!moduleMap.get(name)) {
|
|
85
|
-
const modulePath = path_1.default.resolve(path_1.default.dirname(filePath), value.replace('file:', ''));
|
|
86
|
-
const key = path_1.default.resolve(modulePath, EtsConst_1.OH_PACKAGE_JSON5);
|
|
87
|
-
const target = ohPkgContentMap.get(key);
|
|
88
|
-
if (target) {
|
|
89
|
-
moduleMap.set(name, new ModulePath(modulePath, target.main ?
|
|
90
|
-
path_1.default.resolve(modulePath, target.main) : ''));
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
});
|
|
82
|
+
if (!content.dependencies) {
|
|
83
|
+
return;
|
|
94
84
|
}
|
|
85
|
+
Object.entries(content.dependencies).forEach(([name, value]) => {
|
|
86
|
+
if (moduleMap.get(name)) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const modulePath = path_1.default.resolve(path_1.default.dirname(filePath), value.replace('file:', ''));
|
|
90
|
+
const key = path_1.default.resolve(modulePath, EtsConst_1.OH_PACKAGE_JSON5);
|
|
91
|
+
const target = ohPkgContentMap.get(key);
|
|
92
|
+
if (target) {
|
|
93
|
+
moduleMap.set(name, new ModulePath(modulePath, target.main ?
|
|
94
|
+
path_1.default.resolve(modulePath, target.main) : ''));
|
|
95
|
+
}
|
|
96
|
+
});
|
|
95
97
|
});
|
|
96
98
|
return moduleMap;
|
|
97
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callGraphUtils.d.ts","sourceRoot":"","sources":["../../src/utils/callGraphUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAM7E,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,cAAc,CAAyB;IAE/C,IAAI,QAAQ,IAAI,eAAe,EAAE,CAEhC;IAED,IAAI,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,EAEnC;IAED,IAAI,aAAa,IAAI,eAAe,EAAE,CAErC;IAED,IAAI,aAAa,CAAC,IAAI,EAAE,eAAe,EAAE,EAExC;IAEM,cAAc,CAAC,SAAS,EAAE,eAAe,GAAG,eAAe,GAAG,SAAS;IAIvE,mBAAmB,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO;IAKxD,aAAa,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAU/C,kBAAkB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAUpD,kBAAkB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAIpD,uBAAuB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;CAGnE;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAAS;IAEvB,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,EAErB;IAEM,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"callGraphUtils.d.ts","sourceRoot":"","sources":["../../src/utils/callGraphUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAM7E,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,cAAc,CAAyB;IAE/C,IAAI,QAAQ,IAAI,eAAe,EAAE,CAEhC;IAED,IAAI,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,EAEnC;IAED,IAAI,aAAa,IAAI,eAAe,EAAE,CAErC;IAED,IAAI,aAAa,CAAC,IAAI,EAAE,eAAe,EAAE,EAExC;IAEM,cAAc,CAAC,SAAS,EAAE,eAAe,GAAG,eAAe,GAAG,SAAS;IAIvE,mBAAmB,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO;IAKxD,aAAa,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAU/C,kBAAkB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAUpD,kBAAkB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAIpD,uBAAuB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;CAGnE;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAAS;IAEvB,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,EAErB;IAEM,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI;IAkBpD,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,QAAQ,GAAG,IAAI;IAmBnD,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,QAAQ,EAAE;CAqClE;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAOtG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAY5D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,eAAe,EAAE,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAsB1I;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO/D"}
|