@simplysm/orm-common 14.0.1 → 14.0.4
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/README.md +135 -0
- package/dist/exec/queryable.js +18 -18
- package/dist/exec/queryable.js.map +1 -1
- package/dist/expr/expr.d.ts +102 -102
- package/dist/expr/expr.js +105 -105
- package/dist/expr/expr.js.map +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.js +17 -17
- package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -1
- package/dist/query-builder/mssql/mssql-query-builder.d.ts +2 -2
- package/dist/query-builder/mssql/mssql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-query-builder.js +26 -26
- package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.js +14 -14
- package/dist/query-builder/mysql/mysql-expr-renderer.js.map +1 -1
- package/dist/query-builder/mysql/mysql-query-builder.d.ts +10 -10
- package/dist/query-builder/mysql/mysql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-query-builder.js +67 -67
- package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -1
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +1 -1
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js +13 -13
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js.map +1 -1
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts +8 -8
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-query-builder.js +47 -47
- package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -1
- package/dist/schema/factory/relation-builder.d.ts +8 -8
- package/dist/schema/factory/relation-builder.js +9 -9
- package/dist/schema/factory/relation-builder.js.map +1 -1
- package/dist/schema/view-builder.js +2 -2
- package/dist/schema/view-builder.js.map +1 -1
- package/dist/types/column.d.ts +21 -21
- package/dist/types/column.js +5 -5
- package/dist/utils/result-parser.d.ts +11 -11
- package/dist/utils/result-parser.js +48 -48
- package/dist/utils/result-parser.js.map +1 -1
- package/docs/core.md +206 -0
- package/docs/expression.md +217 -0
- package/docs/query-builder.md +126 -0
- package/docs/queryable.md +236 -0
- package/docs/schema-builders.md +352 -0
- package/docs/types.md +501 -0
- package/package.json +7 -3
- package/src/exec/queryable.ts +18 -18
- package/src/expr/expr.ts +105 -105
- package/src/query-builder/mssql/mssql-expr-renderer.ts +17 -17
- package/src/query-builder/mssql/mssql-query-builder.ts +26 -26
- package/src/query-builder/mysql/mysql-expr-renderer.ts +14 -14
- package/src/query-builder/mysql/mysql-query-builder.ts +67 -67
- package/src/query-builder/postgresql/postgresql-expr-renderer.ts +13 -13
- package/src/query-builder/postgresql/postgresql-query-builder.ts +47 -47
- package/src/schema/factory/relation-builder.ts +9 -9
- package/src/schema/view-builder.ts +2 -2
- package/src/types/column.ts +23 -23
- package/src/utils/result-parser.ts +49 -49
|
@@ -4,25 +4,25 @@ import { MysqlExprRenderer } from "./mysql-expr-renderer.js";
|
|
|
4
4
|
/**
|
|
5
5
|
* MySQL QueryBuilder
|
|
6
6
|
*
|
|
7
|
-
* MySQL
|
|
8
|
-
* -
|
|
9
|
-
* - INSERT OUTPUT:
|
|
10
|
-
* - UPDATE/UPSERT OUTPUT:
|
|
11
|
-
* - DELETE OUTPUT:
|
|
12
|
-
* - switchFk:
|
|
13
|
-
* -
|
|
7
|
+
* MySQL 고유 사항:
|
|
8
|
+
* - OUTPUT 미지원: multi-statement 패턴으로 우회 (INSERT + SET @var + SELECT)
|
|
9
|
+
* - INSERT OUTPUT: AI column은 LAST_INSERT_ID() 사용, 비 AI는 레코드에서 PK 추출
|
|
10
|
+
* - UPDATE/UPSERT OUTPUT: UPDATE 후 WHERE 조건이 변경될 수 있으므로 먼저 PK를 임시 테이블에 저장 후 SELECT
|
|
11
|
+
* - DELETE OUTPUT: 삭제 전 output column을 임시 테이블에 저장
|
|
12
|
+
* - switchFk: 전역 설정 (SET FOREIGN_KEY_CHECKS), table 파라미터 무시
|
|
13
|
+
* - FK 추가 시 인덱스 자동 생성
|
|
14
14
|
*/
|
|
15
15
|
export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
16
16
|
expr = new MysqlExprRenderer((def) => this.select(def).sql);
|
|
17
17
|
//#region ========== Utilities ==========
|
|
18
|
-
/**
|
|
18
|
+
/** 테이블명 렌더링 (MySQL: schema 무시, database.table만 사용) */
|
|
19
19
|
tableName(obj) {
|
|
20
20
|
if (obj.database != null) {
|
|
21
21
|
return `${this.expr.wrap(obj.database)}.${this.expr.wrap(obj.name)}`;
|
|
22
22
|
}
|
|
23
23
|
return this.expr.wrap(obj.name);
|
|
24
24
|
}
|
|
25
|
-
/**
|
|
25
|
+
/** LIMIT 절 렌더링 */
|
|
26
26
|
renderLimit(limit, top) {
|
|
27
27
|
if (limit != null) {
|
|
28
28
|
const [offset, count] = limit;
|
|
@@ -35,14 +35,14 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
35
35
|
}
|
|
36
36
|
renderJoin(join) {
|
|
37
37
|
const alias = this.expr.wrap(join.as);
|
|
38
|
-
//
|
|
38
|
+
// LATERAL JOIN이 필요한지 감지
|
|
39
39
|
if (this.needsLateral(join)) {
|
|
40
|
-
//
|
|
41
|
-
//
|
|
40
|
+
// from이 배열(UNION ALL)이면 renderFrom(join.from) 사용,
|
|
41
|
+
// 그 외(orderBy, top, select 등)이면 renderFrom(join)으로 서브쿼리 생성
|
|
42
42
|
const from = Array.isArray(join.from) ? this.renderFrom(join.from) : this.renderFrom(join);
|
|
43
43
|
return ` LEFT OUTER JOIN LATERAL ${from} AS ${alias} ON TRUE`;
|
|
44
44
|
}
|
|
45
|
-
//
|
|
45
|
+
// 일반 JOIN
|
|
46
46
|
const from = this.renderFrom(join.from);
|
|
47
47
|
const where = join.where != null && join.where.length > 0
|
|
48
48
|
? ` ON ${this.expr.renderWhere(join.where)}`
|
|
@@ -78,7 +78,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
78
78
|
}
|
|
79
79
|
// LOCK
|
|
80
80
|
if (def.lock) {
|
|
81
|
-
// MySQL: SELECT ... FOR UPDATE (
|
|
81
|
+
// MySQL: SELECT ... FOR UPDATE (끝에 추가)
|
|
82
82
|
}
|
|
83
83
|
// JOINs
|
|
84
84
|
sql += this.renderJoins(def.joins);
|
|
@@ -92,7 +92,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
92
92
|
sql += this.renderOrderBy(def.orderBy);
|
|
93
93
|
// LIMIT
|
|
94
94
|
sql += this.renderLimit(def.limit, def.top);
|
|
95
|
-
// LOCK (FOR UPDATE
|
|
95
|
+
// LOCK (끝에 FOR UPDATE 추가)
|
|
96
96
|
if (def.lock) {
|
|
97
97
|
sql += " FOR UPDATE";
|
|
98
98
|
}
|
|
@@ -107,7 +107,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
107
107
|
}
|
|
108
108
|
const columns = Object.keys(def.records[0]);
|
|
109
109
|
const colList = columns.map((c) => this.expr.wrap(c)).join(", ");
|
|
110
|
-
//
|
|
110
|
+
// OUTPUT 불필요: 단순 배치 INSERT
|
|
111
111
|
if (def.output == null) {
|
|
112
112
|
const valuesList = def.records.map((record) => {
|
|
113
113
|
const values = columns.map((c) => this.expr.escapeValue(record[c]));
|
|
@@ -115,16 +115,16 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
115
115
|
});
|
|
116
116
|
return { sql: `INSERT INTO ${table} (${colList}) VALUES ${valuesList.join(", ")}` };
|
|
117
117
|
}
|
|
118
|
-
// OUTPUT
|
|
119
|
-
//
|
|
120
|
-
// →
|
|
118
|
+
// OUTPUT 필요: multi-statement로 INSERT + SELECT 실행
|
|
119
|
+
// 결과 셋: [INSERT 결과, SELECT 결과, INSERT 결과, SELECT 결과, ...]
|
|
120
|
+
// → resultSetIndex=1, resultSetStride=2로 SELECT 결과만 추출
|
|
121
121
|
const output = def.output;
|
|
122
122
|
const outputCols = output.columns.map((c) => this.expr.wrap(c)).join(", ");
|
|
123
123
|
const statements = [];
|
|
124
124
|
for (const record of def.records) {
|
|
125
125
|
const values = columns.map((c) => this.expr.escapeValue(record[c])).join(", ");
|
|
126
126
|
statements.push(`INSERT INTO ${table} (${colList}) VALUES (${values})`);
|
|
127
|
-
// SELECT
|
|
127
|
+
// PK로 SELECT (aiColName에는 LAST_INSERT_ID() 사용)
|
|
128
128
|
const whereForSelect = output.pkColNames.map((pk) => {
|
|
129
129
|
const wrappedPk = this.expr.wrap(pk);
|
|
130
130
|
if (pk === output.aiColName) {
|
|
@@ -145,20 +145,20 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
145
145
|
const columns = Object.keys(def.record);
|
|
146
146
|
const colList = columns.map((c) => this.expr.wrap(c)).join(", ");
|
|
147
147
|
const values = columns.map((c) => this.expr.escapeValue(def.record[c])).join(", ");
|
|
148
|
-
//
|
|
148
|
+
// existsSelectQuery를 SELECT 1 AS _로 렌더링
|
|
149
149
|
const existsQuerySql = this.select({
|
|
150
150
|
...def.existsSelectQuery,
|
|
151
151
|
select: { _: { type: "value", value: 1 } },
|
|
152
152
|
}).sql;
|
|
153
|
-
//
|
|
153
|
+
// OUTPUT 불필요: 단순 INSERT IF NOT EXISTS
|
|
154
154
|
if (def.output == null) {
|
|
155
155
|
const sql = `INSERT INTO ${table} (${colList}) SELECT ${values} WHERE NOT EXISTS (${existsQuerySql})`;
|
|
156
156
|
return { sql };
|
|
157
157
|
}
|
|
158
|
-
// OUTPUT
|
|
158
|
+
// OUTPUT 필요: multi-statement (INSERT + SET @affected + SELECT)
|
|
159
159
|
const output = def.output;
|
|
160
160
|
const outputCols = output.columns.map((c) => this.expr.wrap(c)).join(", ");
|
|
161
|
-
// SELECT WHERE
|
|
161
|
+
// OUTPUT용 SELECT WHERE 조건
|
|
162
162
|
const whereForSelect = output.pkColNames.map((pk) => {
|
|
163
163
|
const wrappedPk = this.expr.wrap(pk);
|
|
164
164
|
if (pk === output.aiColName) {
|
|
@@ -166,32 +166,32 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
166
166
|
}
|
|
167
167
|
return `${wrappedPk} = ${this.expr.escapeValue(def.record[pk])}`;
|
|
168
168
|
});
|
|
169
|
-
// multi-statement: INSERT → SET @affected → SELECT (
|
|
169
|
+
// multi-statement: INSERT → SET @affected → SELECT (삽입된 경우에만 결과 반환)
|
|
170
170
|
const statements = [
|
|
171
171
|
`INSERT INTO ${table} (${colList}) SELECT ${values} WHERE NOT EXISTS (${existsQuerySql})`,
|
|
172
172
|
`SET @sd_affected = ROW_COUNT()`,
|
|
173
173
|
`SELECT ${outputCols} FROM ${table} WHERE ${whereForSelect.join(" AND ")} AND @sd_affected > 0`,
|
|
174
174
|
];
|
|
175
|
-
// results[0]=INSERT, results[1]=SET(
|
|
175
|
+
// results[0]=INSERT, results[1]=SET(빈 결과), results[2]=SELECT
|
|
176
176
|
return { sql: statements.join(";\n"), resultSetIndex: 2 };
|
|
177
177
|
}
|
|
178
178
|
insertInto(def) {
|
|
179
179
|
const table = this.tableName(def.table);
|
|
180
180
|
const selectSql = this.select(def.recordsSelectQuery).sql;
|
|
181
|
-
//
|
|
181
|
+
// INSERT INTO SELECT에서 column 추출
|
|
182
182
|
const selectDef = def.recordsSelectQuery;
|
|
183
183
|
const colList = selectDef.select != null
|
|
184
184
|
? Object.keys(selectDef.select)
|
|
185
185
|
.map((c) => this.expr.wrap(c))
|
|
186
186
|
.join(", ")
|
|
187
187
|
: "*";
|
|
188
|
-
//
|
|
188
|
+
// OUTPUT 불필요: 단순 INSERT INTO SELECT
|
|
189
189
|
if (def.output == null) {
|
|
190
190
|
return { sql: `INSERT INTO ${table} (${colList}) ${selectSql}` };
|
|
191
191
|
}
|
|
192
|
-
// OUTPUT
|
|
192
|
+
// OUTPUT 필요: multi-statement
|
|
193
193
|
const outputCols = def.output.columns.map((c) => this.expr.wrap(c)).join(", ");
|
|
194
|
-
//
|
|
194
|
+
// PK가 AI인 경우: LAST_INSERT_ID() + ROW_COUNT()로 범위 조회
|
|
195
195
|
if (def.output.aiColName != null) {
|
|
196
196
|
const aiCol = this.expr.wrap(def.output.aiColName);
|
|
197
197
|
const statements = [
|
|
@@ -199,18 +199,18 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
199
199
|
`SET @sd_first_id = LAST_INSERT_ID(), @sd_count = ROW_COUNT()`,
|
|
200
200
|
`SELECT ${outputCols} FROM ${table} WHERE ${aiCol} >= @sd_first_id AND ${aiCol} < @sd_first_id + @sd_count`,
|
|
201
201
|
];
|
|
202
|
-
// results[0]=INSERT, results[1]=SET(
|
|
202
|
+
// results[0]=INSERT, results[1]=SET(빈 결과), results[2]=SELECT
|
|
203
203
|
return { sql: statements.join(";\n"), resultSetIndex: 2 };
|
|
204
204
|
}
|
|
205
|
-
// PK
|
|
205
|
+
// PK가 AI가 아닌 경우: PK를 임시 테이블에 저장 후 조회
|
|
206
206
|
const tempTableName = this.expr.wrap("SD_TEMP_" + Uuid.generate().toString().replace(/-/g, ""));
|
|
207
|
-
//
|
|
207
|
+
// recordsSelectQuery에서 PK column만 추출하는 SELECT 생성
|
|
208
208
|
const pkSelectDef = {
|
|
209
209
|
...def.recordsSelectQuery,
|
|
210
210
|
select: Object.fromEntries(def.output.pkColNames.map((pk) => [pk, def.recordsSelectQuery.select[pk]])),
|
|
211
211
|
};
|
|
212
212
|
const pkSelectSql = this.select(pkSelectDef).sql;
|
|
213
|
-
//
|
|
213
|
+
// 임시 테이블의 PK를 사용하여 대상에서 SELECT
|
|
214
214
|
const pkConditions = def.output.pkColNames.map((pk) => {
|
|
215
215
|
const wrappedPk = this.expr.wrap(pk);
|
|
216
216
|
return `${table}.${wrappedPk} = ${tempTableName}.${wrappedPk}`;
|
|
@@ -221,7 +221,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
221
221
|
`SELECT ${outputCols} FROM ${table}, ${tempTableName} WHERE ${pkConditions.join(" AND ")}`,
|
|
222
222
|
`DROP TEMPORARY TABLE ${tempTableName}`,
|
|
223
223
|
];
|
|
224
|
-
// results[0]=CREATE, results[1]=INSERT, results[2]=SELECT, results[3]=DROP
|
|
224
|
+
// results[0]=CREATE, results[1]=INSERT, results[2]=SELECT, results[3]=DROP 결과
|
|
225
225
|
return { sql: statements.join(";\n"), resultSetIndex: 2 };
|
|
226
226
|
}
|
|
227
227
|
//#endregion
|
|
@@ -231,7 +231,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
231
231
|
const alias = this.expr.wrap(def.as);
|
|
232
232
|
// SET
|
|
233
233
|
const setParts = Object.entries(def.record).map(([col, expr]) => `${alias}.${this.expr.wrap(col)} = ${this.expr.render(expr)}`);
|
|
234
|
-
//
|
|
234
|
+
// OUTPUT 불필요: 단순 UPDATE
|
|
235
235
|
if (def.output == null) {
|
|
236
236
|
let sql = `UPDATE ${table} AS ${alias}`;
|
|
237
237
|
sql += this.renderJoins(def.joins);
|
|
@@ -242,10 +242,10 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
242
242
|
}
|
|
243
243
|
return { sql };
|
|
244
244
|
}
|
|
245
|
-
// OUTPUT
|
|
245
|
+
// OUTPUT 필요: multi-statement (PK를 임시 테이블에 저장 + UPDATE + SELECT + DROP)
|
|
246
246
|
const outputCols = def.output.columns.map((c) => `${alias}.${this.expr.wrap(c)}`).join(", ");
|
|
247
247
|
const tempTableName = this.expr.wrap("SD_TEMP_" + Uuid.generate().toString().replace(/-/g, ""));
|
|
248
|
-
//
|
|
248
|
+
// 대상 PK를 임시 테이블에 저장 (UPDATE 후 WHERE 조건이 변경될 수 있으므로)
|
|
249
249
|
const pkSelectCols = def.output.pkColNames
|
|
250
250
|
.map((pk) => `${alias}.${this.expr.wrap(pk)} AS ${this.expr.wrap(pk)}`)
|
|
251
251
|
.join(", ");
|
|
@@ -259,13 +259,13 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
259
259
|
updateSql += this.renderWhere(def.where);
|
|
260
260
|
if (def.top != null)
|
|
261
261
|
updateSql += ` LIMIT ${def.top}`;
|
|
262
|
-
//
|
|
262
|
+
// 임시 테이블의 PK로 SELECT (업데이트된 값 조회)
|
|
263
263
|
const pkConditions = def.output.pkColNames.map((pk) => {
|
|
264
264
|
const wrappedPk = this.expr.wrap(pk);
|
|
265
265
|
return `${alias}.${wrappedPk} = ${tempTableName}.${wrappedPk}`;
|
|
266
266
|
});
|
|
267
267
|
const selectSql = `SELECT ${outputCols} FROM ${table} AS ${alias}, ${tempTableName} WHERE ${pkConditions.join(" AND ")}`;
|
|
268
|
-
//
|
|
268
|
+
// 임시 테이블 삭제
|
|
269
269
|
const dropSql = `DROP TEMPORARY TABLE ${tempTableName}`;
|
|
270
270
|
const statements = [createTempSql, updateSql, selectSql, dropSql];
|
|
271
271
|
return { sql: statements.join(";\n"), resultSetIndex: 2 };
|
|
@@ -275,7 +275,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
275
275
|
delete(def) {
|
|
276
276
|
const table = this.tableName(def.table);
|
|
277
277
|
const alias = this.expr.wrap(def.as);
|
|
278
|
-
//
|
|
278
|
+
// OUTPUT 불필요: 단순 DELETE
|
|
279
279
|
if (def.output == null) {
|
|
280
280
|
let sql = `DELETE ${alias} FROM ${table} AS ${alias}`;
|
|
281
281
|
sql += this.renderJoins(def.joins);
|
|
@@ -285,22 +285,22 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
285
285
|
}
|
|
286
286
|
return { sql };
|
|
287
287
|
}
|
|
288
|
-
// OUTPUT
|
|
288
|
+
// OUTPUT 필요: multi-statement (삭제 전 임시 테이블에 저장 + DELETE + SELECT + DROP)
|
|
289
289
|
const outputCols = def.output.columns.map((c) => `${alias}.${this.expr.wrap(c)}`).join(", ");
|
|
290
290
|
const tempTableName = this.expr.wrap("SD_TEMP_" + Uuid.generate().toString().replace(/-/g, ""));
|
|
291
|
-
//
|
|
291
|
+
// 삭제 전 임시 테이블에 저장
|
|
292
292
|
let createTempSql = `CREATE TEMPORARY TABLE ${tempTableName} AS SELECT ${outputCols} FROM ${table} AS ${alias}`;
|
|
293
293
|
createTempSql += this.renderJoins(def.joins);
|
|
294
294
|
createTempSql += this.renderWhere(def.where);
|
|
295
|
-
//
|
|
295
|
+
// DELETE 실행
|
|
296
296
|
let deleteSql = `DELETE ${alias} FROM ${table} AS ${alias}`;
|
|
297
297
|
deleteSql += this.renderJoins(def.joins);
|
|
298
298
|
deleteSql += this.renderWhere(def.where);
|
|
299
299
|
if (def.top != null)
|
|
300
300
|
deleteSql += ` LIMIT ${def.top}`;
|
|
301
|
-
//
|
|
301
|
+
// 임시 테이블에서 결과 반환
|
|
302
302
|
const selectSql = `SELECT * FROM ${tempTableName}`;
|
|
303
|
-
//
|
|
303
|
+
// 임시 테이블 삭제
|
|
304
304
|
const dropSql = `DROP TEMPORARY TABLE ${tempTableName}`;
|
|
305
305
|
const statements = [createTempSql, deleteSql, selectSql, dropSql];
|
|
306
306
|
return { sql: statements.join(";\n"), resultSetIndex: 2 };
|
|
@@ -311,13 +311,13 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
311
311
|
const table = this.tableName(def.table);
|
|
312
312
|
const alias = this.expr.wrap(def.existsSelectQuery.as);
|
|
313
313
|
const existsQuerySql = this.select(def.existsSelectQuery).sql;
|
|
314
|
-
// UPDATE SET
|
|
314
|
+
// UPDATE SET 부분 (alias.column 형식)
|
|
315
315
|
const updateSetParts = Object.entries(def.updateRecord).map(([col, e]) => `${alias}.${this.expr.wrap(col)} = ${this.expr.render(e)}`);
|
|
316
|
-
// INSERT
|
|
316
|
+
// INSERT 부분
|
|
317
317
|
const insertColumns = Object.keys(def.insertRecord);
|
|
318
318
|
const insertColList = insertColumns.map((c) => this.expr.wrap(c)).join(", ");
|
|
319
319
|
const insertValues = insertColumns.map((c) => this.expr.render(def.insertRecord[c])).join(", ");
|
|
320
|
-
//
|
|
320
|
+
// WHERE 조건 추출 (existsSelectQuery의 where에서)
|
|
321
321
|
const whereCondition = def.existsSelectQuery.where != null && def.existsSelectQuery.where.length > 0
|
|
322
322
|
? this.expr.renderWhere(def.existsSelectQuery.where)
|
|
323
323
|
: "1=1";
|
|
@@ -331,25 +331,25 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
331
331
|
];
|
|
332
332
|
return { sql: statements.join(";\n") };
|
|
333
333
|
}
|
|
334
|
-
// OUTPUT
|
|
334
|
+
// OUTPUT 필요: multi-statement (CREATE TEMP + UPDATE + INSERT + SELECT + DROP)
|
|
335
335
|
const outputCols = def.output.columns.map((c) => this.expr.wrap(c)).join(", ");
|
|
336
336
|
const tempTableName = this.expr.wrap("SD_TEMP_" + Uuid.generate().toString().replace(/-/g, ""));
|
|
337
|
-
//
|
|
337
|
+
// 대상 PK를 임시 테이블에 저장 (UPDATE 후 WHERE 조건이 변경될 수 있으므로)
|
|
338
338
|
const pkSelectCols = def.output.pkColNames.map((pk) => this.expr.wrap(pk)).join(", ");
|
|
339
339
|
const createTempSql = `CREATE TEMPORARY TABLE ${tempTableName} AS SELECT ${pkSelectCols} FROM ${table} AS ${alias} WHERE ${whereCondition}`;
|
|
340
|
-
// UPDATE (
|
|
340
|
+
// UPDATE (존재하면 업데이트)
|
|
341
341
|
const updateSql = `UPDATE ${table} AS ${alias} SET ${updateSetParts.join(", ")} WHERE ${whereCondition}`;
|
|
342
|
-
// INSERT (NOT EXISTS
|
|
342
|
+
// INSERT (NOT EXISTS 패턴)
|
|
343
343
|
const insertSql = `INSERT INTO ${table} (${insertColList}) SELECT ${insertValues} WHERE NOT EXISTS (${existsQuerySql})`;
|
|
344
|
-
// SELECT:
|
|
345
|
-
// UPDATE
|
|
344
|
+
// SELECT: UPDATE 결과 또는 INSERT 결과 조회 (UNION ALL로 병합)
|
|
345
|
+
// UPDATE 경우: 임시 테이블의 PK로 조회
|
|
346
346
|
const output = def.output;
|
|
347
347
|
const updatePkConditions = output.pkColNames.map((pk) => {
|
|
348
348
|
const wrappedPk = this.expr.wrap(pk);
|
|
349
349
|
return `${table}.${wrappedPk} IN (SELECT ${wrappedPk} FROM ${tempTableName})`;
|
|
350
350
|
});
|
|
351
351
|
const selectUpdateSql = `SELECT ${outputCols} FROM ${table} WHERE ${updatePkConditions.join(" AND ")}`;
|
|
352
|
-
// INSERT
|
|
352
|
+
// INSERT 경우: insertRecord의 PK로 조회 (AI에는 LAST_INSERT_ID() 사용, 임시 테이블이 비어있을 때만)
|
|
353
353
|
const insertPkConditions = output.pkColNames.map((pk) => {
|
|
354
354
|
const wrappedPk = this.expr.wrap(pk);
|
|
355
355
|
if (pk === output.aiColName) {
|
|
@@ -360,7 +360,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
360
360
|
});
|
|
361
361
|
const selectInsertSql = `SELECT ${outputCols} FROM ${table} WHERE ${insertPkConditions.join(" AND ")} AND NOT EXISTS (SELECT 1 FROM ${tempTableName})`;
|
|
362
362
|
const selectSql = `${selectUpdateSql} UNION ALL ${selectInsertSql}`;
|
|
363
|
-
//
|
|
363
|
+
// 임시 테이블 삭제
|
|
364
364
|
const dropSql = `DROP TEMPORARY TABLE ${tempTableName}`;
|
|
365
365
|
const statements = [createTempSql, updateSql, insertSql, selectSql, dropSql];
|
|
366
366
|
return { sql: statements.join(";\n"), resultSetIndex: 3 };
|
|
@@ -371,7 +371,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
371
371
|
const table = this.tableName(def.table);
|
|
372
372
|
const colDefs = def.columns.map((col) => {
|
|
373
373
|
let colSql = `${this.expr.wrap(col.name)} ${this.expr.renderDataType(col.dataType)}`;
|
|
374
|
-
// nullable: true → NULL,
|
|
374
|
+
// nullable: true → NULL, 아니면 → NOT NULL
|
|
375
375
|
if (col.nullable === true) {
|
|
376
376
|
colSql += " NULL";
|
|
377
377
|
}
|
|
@@ -386,7 +386,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
386
386
|
}
|
|
387
387
|
return colSql;
|
|
388
388
|
});
|
|
389
|
-
//
|
|
389
|
+
// CONSTRAINT 이름이 포함된 Primary Key
|
|
390
390
|
if (def.primaryKey != null && def.primaryKey.length > 0) {
|
|
391
391
|
const pkCols = def.primaryKey.map((c) => this.expr.wrap(c)).join(", ");
|
|
392
392
|
const pkName = this.expr.wrap(`PK_${def.table.name}`);
|
|
@@ -401,7 +401,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
401
401
|
return { sql: `RENAME TABLE ${this.tableName(def.table)} TO ${this.expr.wrap(def.newName)}` };
|
|
402
402
|
}
|
|
403
403
|
truncate(def) {
|
|
404
|
-
// MySQL: TRUNCATE
|
|
404
|
+
// MySQL: TRUNCATE는 AUTO_INCREMENT를 자동으로 초기화
|
|
405
405
|
return { sql: `TRUNCATE TABLE ${this.tableName(def.table)}` };
|
|
406
406
|
}
|
|
407
407
|
//#endregion
|
|
@@ -451,7 +451,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
451
451
|
}
|
|
452
452
|
renameColumn(def) {
|
|
453
453
|
const table = this.tableName(def.table);
|
|
454
|
-
// MySQL 8.0+: RENAME COLUMN
|
|
454
|
+
// MySQL 8.0+: RENAME COLUMN 지원
|
|
455
455
|
return {
|
|
456
456
|
sql: `ALTER TABLE ${table} RENAME COLUMN ${this.expr.wrap(def.column)} TO ${this.expr.wrap(def.newName)}`,
|
|
457
457
|
};
|
|
@@ -472,7 +472,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
472
472
|
const fkCols = fk.fkColumns.map((c) => this.expr.wrap(c)).join(", ");
|
|
473
473
|
const targetTable = this.tableName(fk.targetTable);
|
|
474
474
|
const targetCols = fk.targetPkColumns.map((c) => this.expr.wrap(c)).join(", ");
|
|
475
|
-
// MySQL
|
|
475
|
+
// MySQL은 FK 추가 시 인덱스를 자동 생성하므로 별도 인덱스 불필요
|
|
476
476
|
return {
|
|
477
477
|
sql: `ALTER TABLE ${table} ADD CONSTRAINT ${this.expr.wrap(fk.name)} FOREIGN KEY (${fkCols}) REFERENCES ${targetTable} (${targetCols})`,
|
|
478
478
|
};
|
|
@@ -504,7 +504,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
504
504
|
}
|
|
505
505
|
createProc(def) {
|
|
506
506
|
const proc = this.tableName(def.procedure);
|
|
507
|
-
//
|
|
507
|
+
// 파라미터 처리
|
|
508
508
|
const paramList = def.params
|
|
509
509
|
?.map((p) => {
|
|
510
510
|
let sql = `IN ${this.expr.wrap(p.name)} ${this.expr.renderDataType(p.dataType)}`;
|
|
@@ -539,8 +539,8 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
|
|
|
539
539
|
//#endregion
|
|
540
540
|
//#region ========== Utils ==========
|
|
541
541
|
clearSchema(def) {
|
|
542
|
-
// MySQL:
|
|
543
|
-
//
|
|
542
|
+
// MySQL: 모든 테이블 삭제 (MySQL에서 database와 schema는 동의어)
|
|
543
|
+
// information_schema에서 테이블 목록 조회 후 DROP
|
|
544
544
|
// SQL 인젝션 방지: 식별자 유효성 검사
|
|
545
545
|
if (!/^[a-zA-Z0-9_]+$/.test(def.database)) {
|
|
546
546
|
throw new Error(`잘못된 데이터베이스 이름: ${def.database}`);
|
|
@@ -559,13 +559,13 @@ SET FOREIGN_KEY_CHECKS = 1`,
|
|
|
559
559
|
};
|
|
560
560
|
}
|
|
561
561
|
schemaExists(def) {
|
|
562
|
-
// MySQL: database
|
|
562
|
+
// MySQL: database와 schema는 동의어
|
|
563
563
|
const dbName = this.expr.escapeString(def.database);
|
|
564
564
|
return {
|
|
565
565
|
sql: `SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${dbName}'`,
|
|
566
566
|
};
|
|
567
567
|
}
|
|
568
|
-
/** MySQL
|
|
568
|
+
/** MySQL은 전역 설정만 지원 (table 파라미터 무시) */
|
|
569
569
|
switchFk(def) {
|
|
570
570
|
return def.enabled
|
|
571
571
|
? { sql: "SET FOREIGN_KEY_CHECKS = 1" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysql-query-builder.js","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\mysql\\mysql-query-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mysql-query-builder.js","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\mysql\\mysql-query-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAmC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,MAAM,OAAO,iBAAkB,SAAQ,gBAAgB;IAC3C,IAAI,GAAG,IAAI,iBAAiB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAEtE,yCAAyC;IAEzC,sDAAsD;IAC5C,SAAS,CAAC,GAAuB;QACzC,IAAI,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YACzB,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACvE,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,kBAAkB;IACR,WAAW,CAAC,KAAmC,EAAE,GAAuB;QAChF,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;YAC9B,OAAO,UAAU,MAAM,KAAK,KAAK,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,UAAU,GAAG,EAAE,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,UAAU,CAAC,IAAwB;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEtC,wBAAwB;QACxB,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,kDAAkD;YAClD,2DAA2D;YAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC3F,OAAO,4BAA4B,IAAI,OAAO,KAAK,UAAU,CAAC;QAChE,CAAC;QAED,UAAU;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,KAAK,GACT,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YACzC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC5C,CAAC,CAAC,UAAU,CAAC;QACjB,OAAO,oBAAoB,IAAI,OAAO,KAAK,GAAG,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,YAAY;IAEZ,4CAA4C;IAElC,MAAM,CAAC,GAAmB;QAClC,aAAa;QACb,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAC3C,GAAG,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,cAAc,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC;QAC/G,CAAC;QAED,SAAS;QACT,GAAG,IAAI,QAAQ,CAAC;QAChB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,GAAG,IAAI,WAAW,CAAC;QACrB,CAAC;QAED,UAAU;QACV,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CACzC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAC3E,CAAC;YACF,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,GAAG,IAAI,IAAI,CAAC;QACd,CAAC;QAED,OAAO;QACP,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,GAAG,IAAI,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACtD,CAAC;QAED,OAAO;QACP,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,uCAAuC;QACzC,CAAC;QAED,QAAQ;QACR,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEnC,QAAQ;QACR,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEnC,WAAW;QACX,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEvC,SAAS;QACT,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAErC,WAAW;QACX,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEvC,QAAQ;QACR,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAE5C,0BAA0B;QAC1B,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,GAAG,IAAI,aAAa,CAAC;QACvB,CAAC;QAED,OAAO,EAAE,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,YAAY;IAEZ,4CAA4C;IAElC,MAAM,CAAC,GAAmB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAExC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEjE,2BAA2B;QAC3B,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAClC,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,GAAG,EAAE,eAAe,KAAK,KAAK,OAAO,YAAY,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACtF,CAAC;QAED,iDAAiD;QACjD,0DAA0D;QAC1D,uDAAuD;QACvD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/E,UAAU,CAAC,IAAI,CAAC,eAAe,KAAK,KAAK,OAAO,aAAa,MAAM,GAAG,CAAC,CAAC;YAExE,+CAA+C;YAC/C,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gBAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrC,IAAI,EAAE,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;oBAC5B,OAAO,GAAG,SAAS,qBAAqB,CAAC;gBAC3C,CAAC;gBACD,OAAO,GAAG,SAAS,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC/D,CAAC,CAAC,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,UAAU,UAAU,SAAS,KAAK,UAAU,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;QAED,OAAO;YACL,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,cAAc,EAAE,CAAC;YACjB,eAAe,EAAE,CAAC;SACnB,CAAC;IACJ,CAAC;IAES,iBAAiB,CAAC,GAA8B;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAExC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnF,wCAAwC;QACxC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;YACjC,GAAG,GAAG,CAAC,iBAAiB;YACxB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;SAC3C,CAAC,CAAC,GAAG,CAAC;QAEP,sCAAsC;QACtC,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,eAAe,KAAK,KAAK,OAAO,YAAY,MAAM,sBAAsB,cAAc,GAAG,CAAC;YACtG,OAAO,EAAE,GAAG,EAAE,CAAC;QACjB,CAAC;QAED,+DAA+D;QAC/D,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3E,0BAA0B;QAC1B,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,EAAE,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC5B,OAAO,GAAG,SAAS,qBAAqB,CAAC;YAC3C,CAAC;YACD,OAAO,GAAG,SAAS,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,oEAAoE;QACpE,MAAM,UAAU,GAAG;YACjB,eAAe,KAAK,KAAK,OAAO,YAAY,MAAM,sBAAsB,cAAc,GAAG;YACzF,gCAAgC;YAChC,UAAU,UAAU,SAAS,KAAK,UAAU,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB;SAChG,CAAC;QAEF,6DAA6D;QAC7D,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;IAC5D,CAAC;IAES,UAAU,CAAC,GAAuB;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC;QAE1D,iCAAiC;QACjC,MAAM,SAAS,GAAG,GAAG,CAAC,kBAAkB,CAAC;QACzC,MAAM,OAAO,GACX,SAAS,CAAC,MAAM,IAAI,IAAI;YACtB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;iBAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBAC7B,IAAI,CAAC,IAAI,CAAC;YACf,CAAC,CAAC,GAAG,CAAC;QAEV,oCAAoC;QACpC,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACvB,OAAO,EAAE,GAAG,EAAE,eAAe,KAAK,KAAK,OAAO,KAAK,SAAS,EAAE,EAAE,CAAC;QACnE,CAAC;QAED,6BAA6B;QAC7B,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/E,oDAAoD;QACpD,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAEnD,MAAM,UAAU,GAAG;gBACjB,eAAe,KAAK,KAAK,OAAO,KAAK,SAAS,EAAE;gBAChD,8DAA8D;gBAC9D,UAAU,UAAU,SAAS,KAAK,UAAU,KAAK,wBAAwB,KAAK,6BAA6B;aAC5G,CAAC;YAEF,6DAA6D;YAC7D,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;QAC5D,CAAC;QAED,qCAAqC;QACrC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAEhG,iDAAiD;QACjD,MAAM,WAAW,GAAmB;YAClC,GAAG,GAAG,CAAC,kBAAkB;YACzB,MAAM,EAAE,MAAM,CAAC,WAAW,CACxB,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,kBAAkB,CAAC,MAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAC5E;SACF,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC;QAEjD,+BAA+B;QAC/B,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACpD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrC,OAAO,GAAG,KAAK,IAAI,SAAS,MAAM,aAAa,IAAI,SAAS,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG;YACjB,0BAA0B,aAAa,OAAO,WAAW,EAAE;YAC3D,eAAe,KAAK,KAAK,OAAO,KAAK,SAAS,EAAE;YAChD,UAAU,UAAU,SAAS,KAAK,KAAK,aAAa,UAAU,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAC1F,wBAAwB,aAAa,EAAE;SACxC,CAAC;QAEF,8EAA8E;QAC9E,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED,YAAY;IAEZ,4CAA4C;IAElC,MAAM,CAAC,GAAmB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAErC,MAAM;QACN,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAC7C,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAC/E,CAAC;QAEF,wBAAwB;QACxB,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,GAAG,UAAU,KAAK,OAAO,KAAK,EAAE,CAAC;YACxC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnC,GAAG,IAAI,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;gBACzC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,EAAE,GAAG,EAAE,CAAC;QACjB,CAAC;QAED,uEAAuE;QACvE,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7F,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAEhG,oDAAoD;QACpD,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU;aACvC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;aACtE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,IAAI,aAAa,GAAG,0BAA0B,aAAa,cAAc,YAAY,SAAS,KAAK,OAAO,KAAK,EAAE,CAAC;QAClH,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE7C,SAAS;QACT,IAAI,SAAS,GAAG,UAAU,KAAK,OAAO,KAAK,EAAE,CAAC;QAC9C,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,SAAS,IAAI,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI;YAAE,SAAS,IAAI,UAAU,GAAG,CAAC,GAAG,EAAE,CAAC;QAEtD,kCAAkC;QAClC,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACpD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrC,OAAO,GAAG,KAAK,IAAI,SAAS,MAAM,aAAa,IAAI,SAAS,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,UAAU,UAAU,SAAS,KAAK,OAAO,KAAK,KAAK,aAAa,UAAU,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAEzH,YAAY;QACZ,MAAM,OAAO,GAAG,wBAAwB,aAAa,EAAE,CAAC;QAExD,MAAM,UAAU,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAClE,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED,YAAY;IAEZ,4CAA4C;IAElC,MAAM,CAAC,GAAmB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAErC,wBAAwB;QACxB,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,GAAG,UAAU,KAAK,SAAS,KAAK,OAAO,KAAK,EAAE,CAAC;YACtD,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;gBACzC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,EAAE,GAAG,EAAE,CAAC;QACjB,CAAC;QAED,wEAAwE;QACxE,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7F,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAEhG,kBAAkB;QAClB,IAAI,aAAa,GAAG,0BAA0B,aAAa,cAAc,UAAU,SAAS,KAAK,OAAO,KAAK,EAAE,CAAC;QAChH,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE7C,YAAY;QACZ,IAAI,SAAS,GAAG,UAAU,KAAK,SAAS,KAAK,OAAO,KAAK,EAAE,CAAC;QAC5D,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI;YAAE,SAAS,IAAI,UAAU,GAAG,CAAC,GAAG,EAAE,CAAC;QAEtD,iBAAiB;QACjB,MAAM,SAAS,GAAG,iBAAiB,aAAa,EAAE,CAAC;QAEnD,YAAY;QACZ,MAAM,OAAO,GAAG,wBAAwB,aAAa,EAAE,CAAC;QAExD,MAAM,UAAU,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAClE,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED,YAAY;IAEZ,4CAA4C;IAElC,MAAM,CAAC,GAAmB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC;QAE9D,kCAAkC;QAClC,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CACzD,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACzE,CAAC;QAEF,YAAY;QACZ,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7E,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhG,2CAA2C;QAC3C,MAAM,cAAc,GAClB,GAAG,CAAC,iBAAiB,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAC3E,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC;YACpD,CAAC,CAAC,KAAK,CAAC;QAEZ,uEAAuE;QACvE,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACvB,4BAA4B;YAC5B,wDAAwD;YACxD,MAAM,UAAU,GAAG;gBACjB,UAAU,KAAK,OAAO,KAAK,QAAQ,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,cAAc,EAAE;gBACtF,eAAe,KAAK,KAAK,aAAa,YAAY,YAAY,sBAAsB,cAAc,GAAG;aACtG,CAAC;YACF,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,CAAC;QAED,6EAA6E;QAC7E,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/E,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAEhG,oDAAoD;QACpD,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtF,MAAM,aAAa,GAAG,0BAA0B,aAAa,cAAc,YAAY,SAAS,KAAK,OAAO,KAAK,UAAU,cAAc,EAAE,CAAC;QAE5I,qBAAqB;QACrB,MAAM,SAAS,GAAG,UAAU,KAAK,OAAO,KAAK,QAAQ,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,cAAc,EAAE,CAAC;QAEzG,yBAAyB;QACzB,MAAM,SAAS,GAAG,eAAe,KAAK,KAAK,aAAa,YAAY,YAAY,sBAAsB,cAAc,GAAG,CAAC;QAExH,oDAAoD;QACpD,4BAA4B;QAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrC,OAAO,GAAG,KAAK,IAAI,SAAS,eAAe,SAAS,SAAS,aAAa,GAAG,CAAC;QAChF,CAAC,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,UAAU,UAAU,SAAS,KAAK,UAAU,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAEvG,8EAA8E;QAC9E,MAAM,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,EAAE,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC5B,OAAO,GAAG,SAAS,qBAAqB,CAAC;YAC3C,CAAC;YACD,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACpC,OAAO,GAAG,SAAS,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,UAAU,UAAU,SAAS,KAAK,UAAU,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,kCAAkC,aAAa,GAAG,CAAC;QAEvJ,MAAM,SAAS,GAAG,GAAG,eAAe,cAAc,eAAe,EAAE,CAAC;QAEpE,YAAY;QACZ,MAAM,OAAO,GAAG,wBAAwB,aAAa,EAAE,CAAC;QAExD,MAAM,UAAU,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7E,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED,YAAY;IAEZ,2CAA2C;IAEjC,WAAW,CAAC,GAAwB;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAExC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACtC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAErF,wCAAwC;YACxC,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC1B,MAAM,IAAI,OAAO,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,WAAW,CAAC;YACxB,CAAC;YAED,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;gBACtB,MAAM,IAAI,iBAAiB,CAAC;YAC9B,CAAC;YAED,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7D,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,iCAAiC;QACjC,IAAI,GAAG,CAAC,UAAU,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,cAAc,MAAM,iBAAiB,MAAM,GAAG,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,EAAE,GAAG,EAAE,gBAAgB,KAAK,SAAS,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC3E,CAAC;IAES,SAAS,CAAC,GAAsB;QACxC,OAAO,EAAE,GAAG,EAAE,cAAc,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC5D,CAAC;IAES,WAAW,CAAC,GAAwB;QAC5C,OAAO,EAAE,GAAG,EAAE,gBAAgB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;IAChG,CAAC;IAES,QAAQ,CAAC,GAAqB;QACtC,4CAA4C;QAC5C,OAAO,EAAE,GAAG,EAAE,kBAAkB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAChE,CAAC;IAED,YAAY;IAEZ,4CAA4C;IAElC,SAAS,CAAC,GAAsB;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;QAEvB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAErF,yCAAyC;QACzC,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,OAAO,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,WAAW,CAAC;QACxB,CAAC;QAED,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;YACtB,MAAM,IAAI,iBAAiB,CAAC;QAC9B,CAAC;QAED,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7D,CAAC;QAED,OAAO,EAAE,GAAG,EAAE,eAAe,KAAK,eAAe,MAAM,EAAE,EAAE,CAAC;IAC9D,CAAC;IAES,UAAU,CAAC,GAAuB;QAC1C,OAAO;YACL,GAAG,EAAE,eAAe,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;SAC1F,CAAC;IACJ,CAAC;IAES,YAAY,CAAC,GAAyB;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;QAEvB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAErF,yCAAyC;QACzC,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,OAAO,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,WAAW,CAAC;QACxB,CAAC;QAED,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;YACtB,MAAM,IAAI,iBAAiB,CAAC;QAC9B,CAAC;QAED,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7D,CAAC;QAED,OAAO,EAAE,GAAG,EAAE,eAAe,KAAK,kBAAkB,MAAM,EAAE,EAAE,CAAC;IACjE,CAAC;IAES,YAAY,CAAC,GAAyB;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,+BAA+B;QAC/B,OAAO;YACL,GAAG,EAAE,eAAe,KAAK,kBAAkB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;SAC1G,CAAC;IACJ,CAAC;IAED,YAAY;IAEZ,gDAAgD;IAEtC,aAAa,CAAC,GAA0B;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClE,OAAO,EAAE,GAAG,EAAE,eAAe,KAAK,qBAAqB,IAAI,GAAG,EAAE,CAAC;IACnE,CAAC;IAES,cAAc,CAAC,GAA2B;QAClD,OAAO,EAAE,GAAG,EAAE,eAAe,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;IAC9E,CAAC;IAES,aAAa,CAAC,GAA0B;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC;QAC1B,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/E,0CAA0C;QAC1C,OAAO;YACL,GAAG,EAAE,eAAe,KAAK,mBAAmB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,MAAM,gBAAgB,WAAW,KAAK,UAAU,GAAG;SACxI,CAAC;IACJ,CAAC;IAES,cAAc,CAAC,GAA2B;QAClD,OAAO;YACL,GAAG,EAAE,eAAe,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;SACnG,CAAC;IACJ,CAAC;IAES,QAAQ,CAAC,GAAqB;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;QACtB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,OAAO,EAAE,GAAG,EAAE,UAAU,MAAM,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,GAAG,EAAE,CAAC;IAC5F,CAAC;IAES,SAAS,CAAC,GAAsB;QACxC,OAAO,EAAE,GAAG,EAAE,cAAc,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC5F,CAAC;IAED,YAAY;IAEZ,oDAAoD;IAE1C,UAAU,CAAC,GAAuB;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC;QAChD,OAAO,EAAE,GAAG,EAAE,0BAA0B,IAAI,OAAO,SAAS,EAAE,EAAE,CAAC;IACnE,CAAC;IAES,QAAQ,CAAC,GAAqB;QACtC,OAAO,EAAE,GAAG,EAAE,uBAAuB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IACpE,CAAC;IAES,UAAU,CAAC,GAAuB;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE3C,UAAU;QACV,MAAM,SAAS,GACb,GAAG,CAAC,MAAM;YACR,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACV,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjF,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC5B,GAAG,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YACxD,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAEtB,IAAI,GAAG,GAAG,oBAAoB,IAAI,IAAI,SAAS,KAAK,CAAC;QACrD,GAAG,IAAI,SAAS,CAAC;QACjB,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,GAAG,IAAI,GAAG,CAAC;QACb,CAAC;QACD,GAAG,IAAI,OAAO,CAAC;QAEf,OAAO,EAAE,GAAG,EAAE,CAAC;IACjB,CAAC;IAES,QAAQ,CAAC,GAAqB;QACtC,OAAO,EAAE,GAAG,EAAE,4BAA4B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;IAC9E,CAAC;IAES,QAAQ,CAAC,GAAqB;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/D,OAAO,EAAE,GAAG,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC;QACnC,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aAC/B,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,EAAE,GAAG,EAAE,QAAQ,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;IAC5C,CAAC;IAED,YAAY;IAEZ,qCAAqC;IAE3B,WAAW,CAAC,GAAwB;QAC5C,mDAAmD;QACnD,wCAAwC;QACxC,yBAAyB;QACzB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpD,OAAO;YACL,GAAG,EAAE;;;oGAGyF,MAAM;;;;;2BAK/E;SACtB,CAAC;IACJ,CAAC;IAES,YAAY,CAAC,GAAyB;QAC9C,+BAA+B;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpD,OAAO;YACL,GAAG,EAAE,4EAA4E,MAAM,GAAG;SAC3F,CAAC;IACJ,CAAC;IAED,uCAAuC;IAC7B,QAAQ,CAAC,GAAqB;QACtC,OAAO,GAAG,CAAC,OAAO;YAChB,CAAC,CAAC,EAAE,GAAG,EAAE,4BAA4B,EAAE;YACvC,CAAC,CAAC,EAAE,GAAG,EAAE,4BAA4B,EAAE,CAAC;IAC5C,CAAC;CAGF"}
|
|
@@ -11,7 +11,7 @@ export declare class PostgresqlExprRenderer extends ExprRendererBase {
|
|
|
11
11
|
escapeString(value: string): string;
|
|
12
12
|
/** 값 이스케이프 */
|
|
13
13
|
escapeValue(value: unknown): string;
|
|
14
|
-
/** DataType → SQL
|
|
14
|
+
/** DataType → SQL 타입 변환 */
|
|
15
15
|
renderDataType(dataType: DataType): string;
|
|
16
16
|
protected column(expr: ExprColumn): string;
|
|
17
17
|
protected value(expr: ExprValue): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresql-expr-renderer.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\postgresql\\postgresql-expr-renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACT,OAAO,EACP,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,WAAW,EACX,UAAU,EACV,QAAQ,EACR,UAAU,EACV,MAAM,EACN,WAAW,EACX,UAAU,EACV,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,YAAY,EACZ,UAAU,EACV,MAAM,EACN,UAAU,EACV,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,YAAY,EACZ,SAAS,EACT,UAAU,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,YAAY,EAEb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,gBAAgB;IAG1D,cAAc;IACd,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI1B,kCAAkC;IAClC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC,cAAc;IACd,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IA+BnC,
|
|
1
|
+
{"version":3,"file":"postgresql-expr-renderer.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\postgresql\\postgresql-expr-renderer.ts"],"names":[],"mappings":"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"}
|