diginext-utils 3.11.1 → 3.11.2
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 +162 -162
- package/dist/images/loadImageAsBlobUrl.d.ts +1 -1
- package/dist/images/loadImageAsBlobUrl.js +21 -10
- package/dist/images/loadImageAsBlobUrl.js.map +1 -1
- package/esm/images/loadImageAsBlobUrl.d.ts +1 -1
- package/esm/images/loadImageAsBlobUrl.js +21 -10
- package/esm/images/loadImageAsBlobUrl.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,162 +1,162 @@
|
|
|
1
|
-
# The library of utility plugins
|
|
2
|
-
|
|
3
|
-
## Exports
|
|
4
|
-
|
|
5
|
-
- "diginext-utils/dist": ES6 modules / NodeJS
|
|
6
|
-
- "diginext-utils/esm": Node modules / JavaScript modules
|
|
7
|
-
|
|
8
|
-
## Imports
|
|
9
|
-
|
|
10
|
-
### ES5 module import:
|
|
11
|
-
|
|
12
|
-
```javascript
|
|
13
|
-
import utils from "diginext-utils";
|
|
14
|
-
console.log(utils.xname.NameEN.generateName()); // output some random name in English
|
|
15
|
-
|
|
16
|
-
// or
|
|
17
|
-
|
|
18
|
-
import { NameEN } from "diginext-utils/dist/name";
|
|
19
|
-
console.log(NameEN.generateName()); // output some random name in English
|
|
20
|
-
|
|
21
|
-
// or just
|
|
22
|
-
import { generateName } from "diginext-utils/dist/name/en";
|
|
23
|
-
console.log(generateName()); // output some random name in English
|
|
24
|
-
|
|
25
|
-
// or with require(...)
|
|
26
|
-
const xurl = require("../dist/string/url");
|
|
27
|
-
xurl.isLink("abc"); // FALSE
|
|
28
|
-
xurl.isLink("https://www.google.com"); // TRUE
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Node module import:
|
|
32
|
-
|
|
33
|
-
**IMPORTANT**: Set "type" as "module" your `package.json`
|
|
34
|
-
|
|
35
|
-
```javascript
|
|
36
|
-
// NodeJS moduies
|
|
37
|
-
import utils from "diginext-utils";
|
|
38
|
-
console.log(utils.xname.NameEN.generateName()); // output some random name in English
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
```html
|
|
42
|
-
// browser
|
|
43
|
-
<script type="module">
|
|
44
|
-
import { NameEN } from "diginext-utils/esm/name/index.js"; // ".js" file extension is required !
|
|
45
|
-
console.log(NameEN.generateName()); // output some random name in English
|
|
46
|
-
</script>
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## Features
|
|
50
|
-
|
|
51
|
-
- xconsole
|
|
52
|
-
- xarray
|
|
53
|
-
- sumArray
|
|
54
|
-
- averageArray
|
|
55
|
-
- minArray
|
|
56
|
-
- maxArray
|
|
57
|
-
- sortElementByString
|
|
58
|
-
- sortElementByNumber
|
|
59
|
-
- firstElement
|
|
60
|
-
- lastElement
|
|
61
|
-
- randomIndex
|
|
62
|
-
- randomElement
|
|
63
|
-
- mergeAndMakeUniqueElement
|
|
64
|
-
- allMatchInArray
|
|
65
|
-
- removeItem
|
|
66
|
-
- removeItemByKey
|
|
67
|
-
- getRandom
|
|
68
|
-
- getHalfRandom
|
|
69
|
-
- shuffle
|
|
70
|
-
- moveIndex
|
|
71
|
-
- moveArray
|
|
72
|
-
- xmath
|
|
73
|
-
- rand
|
|
74
|
-
- randRound
|
|
75
|
-
- randHalt
|
|
76
|
-
- randInt
|
|
77
|
-
- randFloat
|
|
78
|
-
- degToRad
|
|
79
|
-
- radToDeg
|
|
80
|
-
- angleBetweenPoints
|
|
81
|
-
- diffDate
|
|
82
|
-
- positiveNumber
|
|
83
|
-
- xname
|
|
84
|
-
- NameEN.generateName()
|
|
85
|
-
- NameVI.generateName()
|
|
86
|
-
- xobject
|
|
87
|
-
- isNull
|
|
88
|
-
- toBool
|
|
89
|
-
- toInt
|
|
90
|
-
- toFloat
|
|
91
|
-
- toArray
|
|
92
|
-
- objectToArray
|
|
93
|
-
- xjson
|
|
94
|
-
- isValid
|
|
95
|
-
- xfile
|
|
96
|
-
- createDir
|
|
97
|
-
- fileMove
|
|
98
|
-
- findFileByExt
|
|
99
|
-
- xstring
|
|
100
|
-
- getBetween
|
|
101
|
-
- makeString
|
|
102
|
-
- toUpperCase
|
|
103
|
-
- toLowerCase
|
|
104
|
-
- titleize
|
|
105
|
-
- capitalize
|
|
106
|
-
- capitalizeName
|
|
107
|
-
- clearUnicodeCharacters
|
|
108
|
-
- generateUUID
|
|
109
|
-
- randAllCharacterByLength
|
|
110
|
-
- randomStringByLength
|
|
111
|
-
- formatNumber
|
|
112
|
-
- generatePassword
|
|
113
|
-
- trimNull
|
|
114
|
-
- addQueryParam
|
|
115
|
-
- getUrlParams
|
|
116
|
-
- isLink
|
|
117
|
-
- getFileNameWithoutExtension
|
|
118
|
-
- getFileNameWithExtension
|
|
119
|
-
- getFileExtension
|
|
120
|
-
- isImage
|
|
121
|
-
- xurl
|
|
122
|
-
- addQueryParam
|
|
123
|
-
- getUrlParams
|
|
124
|
-
- isLink
|
|
125
|
-
- getFileNameWithoutExtension
|
|
126
|
-
- getFileNameWithExtension
|
|
127
|
-
- getFileExtension
|
|
128
|
-
- isImage
|
|
129
|
-
- slug
|
|
130
|
-
- makeSlug
|
|
131
|
-
- color
|
|
132
|
-
- random
|
|
133
|
-
- pSBC
|
|
134
|
-
- hexToRgb
|
|
135
|
-
- hexDarken
|
|
136
|
-
- hexLighten
|
|
137
|
-
- RGBToHex
|
|
138
|
-
- device
|
|
139
|
-
- camera
|
|
140
|
-
- requestCamera
|
|
141
|
-
- requestDeviceOrientationControl
|
|
142
|
-
- browser
|
|
143
|
-
- isPotrait
|
|
144
|
-
- isLandscape
|
|
145
|
-
- ua
|
|
146
|
-
- isFacebookWebview
|
|
147
|
-
- isInAppWebview
|
|
148
|
-
- Timer
|
|
149
|
-
- wait
|
|
150
|
-
- Validation
|
|
151
|
-
- imageValidate
|
|
152
|
-
- videoValidate
|
|
153
|
-
|
|
154
|
-
## Dev
|
|
155
|
-
|
|
156
|
-
```
|
|
157
|
-
yarn dev
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## Support
|
|
161
|
-
|
|
162
|
-
Liên hệ [TOP GROUP Developers](mailto:dev@wearetopgroup.com) nếu cần hỗ trợ.
|
|
1
|
+
# The library of utility plugins
|
|
2
|
+
|
|
3
|
+
## Exports
|
|
4
|
+
|
|
5
|
+
- "diginext-utils/dist": ES6 modules / NodeJS
|
|
6
|
+
- "diginext-utils/esm": Node modules / JavaScript modules
|
|
7
|
+
|
|
8
|
+
## Imports
|
|
9
|
+
|
|
10
|
+
### ES5 module import:
|
|
11
|
+
|
|
12
|
+
```javascript
|
|
13
|
+
import utils from "diginext-utils";
|
|
14
|
+
console.log(utils.xname.NameEN.generateName()); // output some random name in English
|
|
15
|
+
|
|
16
|
+
// or
|
|
17
|
+
|
|
18
|
+
import { NameEN } from "diginext-utils/dist/name";
|
|
19
|
+
console.log(NameEN.generateName()); // output some random name in English
|
|
20
|
+
|
|
21
|
+
// or just
|
|
22
|
+
import { generateName } from "diginext-utils/dist/name/en";
|
|
23
|
+
console.log(generateName()); // output some random name in English
|
|
24
|
+
|
|
25
|
+
// or with require(...)
|
|
26
|
+
const xurl = require("../dist/string/url");
|
|
27
|
+
xurl.isLink("abc"); // FALSE
|
|
28
|
+
xurl.isLink("https://www.google.com"); // TRUE
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Node module import:
|
|
32
|
+
|
|
33
|
+
**IMPORTANT**: Set "type" as "module" your `package.json`
|
|
34
|
+
|
|
35
|
+
```javascript
|
|
36
|
+
// NodeJS moduies
|
|
37
|
+
import utils from "diginext-utils";
|
|
38
|
+
console.log(utils.xname.NameEN.generateName()); // output some random name in English
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
```html
|
|
42
|
+
// browser
|
|
43
|
+
<script type="module">
|
|
44
|
+
import { NameEN } from "diginext-utils/esm/name/index.js"; // ".js" file extension is required !
|
|
45
|
+
console.log(NameEN.generateName()); // output some random name in English
|
|
46
|
+
</script>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Features
|
|
50
|
+
|
|
51
|
+
- xconsole
|
|
52
|
+
- xarray
|
|
53
|
+
- sumArray
|
|
54
|
+
- averageArray
|
|
55
|
+
- minArray
|
|
56
|
+
- maxArray
|
|
57
|
+
- sortElementByString
|
|
58
|
+
- sortElementByNumber
|
|
59
|
+
- firstElement
|
|
60
|
+
- lastElement
|
|
61
|
+
- randomIndex
|
|
62
|
+
- randomElement
|
|
63
|
+
- mergeAndMakeUniqueElement
|
|
64
|
+
- allMatchInArray
|
|
65
|
+
- removeItem
|
|
66
|
+
- removeItemByKey
|
|
67
|
+
- getRandom
|
|
68
|
+
- getHalfRandom
|
|
69
|
+
- shuffle
|
|
70
|
+
- moveIndex
|
|
71
|
+
- moveArray
|
|
72
|
+
- xmath
|
|
73
|
+
- rand
|
|
74
|
+
- randRound
|
|
75
|
+
- randHalt
|
|
76
|
+
- randInt
|
|
77
|
+
- randFloat
|
|
78
|
+
- degToRad
|
|
79
|
+
- radToDeg
|
|
80
|
+
- angleBetweenPoints
|
|
81
|
+
- diffDate
|
|
82
|
+
- positiveNumber
|
|
83
|
+
- xname
|
|
84
|
+
- NameEN.generateName()
|
|
85
|
+
- NameVI.generateName()
|
|
86
|
+
- xobject
|
|
87
|
+
- isNull
|
|
88
|
+
- toBool
|
|
89
|
+
- toInt
|
|
90
|
+
- toFloat
|
|
91
|
+
- toArray
|
|
92
|
+
- objectToArray
|
|
93
|
+
- xjson
|
|
94
|
+
- isValid
|
|
95
|
+
- xfile
|
|
96
|
+
- createDir
|
|
97
|
+
- fileMove
|
|
98
|
+
- findFileByExt
|
|
99
|
+
- xstring
|
|
100
|
+
- getBetween
|
|
101
|
+
- makeString
|
|
102
|
+
- toUpperCase
|
|
103
|
+
- toLowerCase
|
|
104
|
+
- titleize
|
|
105
|
+
- capitalize
|
|
106
|
+
- capitalizeName
|
|
107
|
+
- clearUnicodeCharacters
|
|
108
|
+
- generateUUID
|
|
109
|
+
- randAllCharacterByLength
|
|
110
|
+
- randomStringByLength
|
|
111
|
+
- formatNumber
|
|
112
|
+
- generatePassword
|
|
113
|
+
- trimNull
|
|
114
|
+
- addQueryParam
|
|
115
|
+
- getUrlParams
|
|
116
|
+
- isLink
|
|
117
|
+
- getFileNameWithoutExtension
|
|
118
|
+
- getFileNameWithExtension
|
|
119
|
+
- getFileExtension
|
|
120
|
+
- isImage
|
|
121
|
+
- xurl
|
|
122
|
+
- addQueryParam
|
|
123
|
+
- getUrlParams
|
|
124
|
+
- isLink
|
|
125
|
+
- getFileNameWithoutExtension
|
|
126
|
+
- getFileNameWithExtension
|
|
127
|
+
- getFileExtension
|
|
128
|
+
- isImage
|
|
129
|
+
- slug
|
|
130
|
+
- makeSlug
|
|
131
|
+
- color
|
|
132
|
+
- random
|
|
133
|
+
- pSBC
|
|
134
|
+
- hexToRgb
|
|
135
|
+
- hexDarken
|
|
136
|
+
- hexLighten
|
|
137
|
+
- RGBToHex
|
|
138
|
+
- device
|
|
139
|
+
- camera
|
|
140
|
+
- requestCamera
|
|
141
|
+
- requestDeviceOrientationControl
|
|
142
|
+
- browser
|
|
143
|
+
- isPotrait
|
|
144
|
+
- isLandscape
|
|
145
|
+
- ua
|
|
146
|
+
- isFacebookWebview
|
|
147
|
+
- isInAppWebview
|
|
148
|
+
- Timer
|
|
149
|
+
- wait
|
|
150
|
+
- Validation
|
|
151
|
+
- imageValidate
|
|
152
|
+
- videoValidate
|
|
153
|
+
|
|
154
|
+
## Dev
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
yarn dev
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Support
|
|
161
|
+
|
|
162
|
+
Liên hệ [TOP GROUP Developers](mailto:dev@wearetopgroup.com) nếu cần hỗ trợ.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function loadImageAsBlobUrl(imageUrl: string): Promise<string
|
|
1
|
+
export default function loadImageAsBlobUrl(imageUrl: string): Promise<string>;
|
|
@@ -4,23 +4,34 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const getUrlBypassCors_1 = __importDefault(require("./getUrlBypassCors"));
|
|
7
|
+
const tryLoad = async (url) => {
|
|
8
|
+
const response = await fetch(url);
|
|
9
|
+
if (!response.ok) {
|
|
10
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
11
|
+
}
|
|
12
|
+
const imageBlob = await response.blob();
|
|
13
|
+
const blobUrl = URL.createObjectURL(imageBlob);
|
|
14
|
+
return blobUrl;
|
|
15
|
+
};
|
|
7
16
|
async function loadImageAsBlobUrl(imageUrl) {
|
|
17
|
+
try {
|
|
18
|
+
const imageBlob = await tryLoad(imageUrl);
|
|
19
|
+
return imageBlob;
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
console.error(`loadImageAsBlobUrl error`, e);
|
|
23
|
+
}
|
|
8
24
|
try {
|
|
9
25
|
const url = (0, getUrlBypassCors_1.default)(imageUrl);
|
|
10
26
|
if (!url)
|
|
11
27
|
throw new Error("imageUrl error");
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
15
|
-
}
|
|
16
|
-
const imageBlob = await response.blob();
|
|
17
|
-
const blobUrl = URL.createObjectURL(imageBlob);
|
|
18
|
-
return blobUrl;
|
|
28
|
+
const imageBlob = await tryLoad(url);
|
|
29
|
+
return imageBlob;
|
|
19
30
|
}
|
|
20
|
-
catch (
|
|
21
|
-
console.error(
|
|
22
|
-
return null;
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.error(`loadImageAsBlobUrl error`, error);
|
|
23
33
|
}
|
|
34
|
+
return imageUrl;
|
|
24
35
|
}
|
|
25
36
|
exports.default = loadImageAsBlobUrl;
|
|
26
37
|
//# sourceMappingURL=loadImageAsBlobUrl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadImageAsBlobUrl.js","sourceRoot":"","sources":["../../src/images/loadImageAsBlobUrl.ts"],"names":[],"mappings":";;;;;AAAA,0EAAkD;
|
|
1
|
+
{"version":3,"file":"loadImageAsBlobUrl.js","sourceRoot":"","sources":["../../src/images/loadImageAsBlobUrl.ts"],"names":[],"mappings":";;;;;AAAA,0EAAkD;AAElD,MAAM,OAAO,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;IACrC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;KAC1D;IAED,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAExC,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AAEa,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IAChE,IAAI;QACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,SAAS,CAAC;KACjB;IAAC,OAAO,CAAC,EAAE;QACX,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;KAC7C;IAED,IAAI;QACH,MAAM,GAAG,GAAG,IAAA,0BAAgB,EAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,SAAS,CAAC;KAEjB;IAAC,OAAO,KAAK,EAAE;QACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;KACjD;IAED,OAAO,QAAQ,CAAA;AAChB,CAAC;AAnBD,qCAmBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function loadImageAsBlobUrl(imageUrl: string): Promise<string
|
|
1
|
+
export default function loadImageAsBlobUrl(imageUrl: string): Promise<string>;
|
|
@@ -1,20 +1,31 @@
|
|
|
1
1
|
import getUrlBypassCors from "./getUrlBypassCors";
|
|
2
|
+
const tryLoad = async (url) => {
|
|
3
|
+
const response = await fetch(url);
|
|
4
|
+
if (!response.ok) {
|
|
5
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
6
|
+
}
|
|
7
|
+
const imageBlob = await response.blob();
|
|
8
|
+
const blobUrl = URL.createObjectURL(imageBlob);
|
|
9
|
+
return blobUrl;
|
|
10
|
+
};
|
|
2
11
|
export default async function loadImageAsBlobUrl(imageUrl) {
|
|
12
|
+
try {
|
|
13
|
+
const imageBlob = await tryLoad(imageUrl);
|
|
14
|
+
return imageBlob;
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
console.error(`loadImageAsBlobUrl error`, e);
|
|
18
|
+
}
|
|
3
19
|
try {
|
|
4
20
|
const url = getUrlBypassCors(imageUrl);
|
|
5
21
|
if (!url)
|
|
6
22
|
throw new Error("imageUrl error");
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
10
|
-
}
|
|
11
|
-
const imageBlob = await response.blob();
|
|
12
|
-
const blobUrl = URL.createObjectURL(imageBlob);
|
|
13
|
-
return blobUrl;
|
|
23
|
+
const imageBlob = await tryLoad(url);
|
|
24
|
+
return imageBlob;
|
|
14
25
|
}
|
|
15
|
-
catch (
|
|
16
|
-
console.error(
|
|
17
|
-
return null;
|
|
26
|
+
catch (error) {
|
|
27
|
+
console.error(`loadImageAsBlobUrl error`, error);
|
|
18
28
|
}
|
|
29
|
+
return imageUrl;
|
|
19
30
|
}
|
|
20
31
|
//# sourceMappingURL=loadImageAsBlobUrl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadImageAsBlobUrl.js","sourceRoot":"","sources":["../../src/images/loadImageAsBlobUrl.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,
|
|
1
|
+
{"version":3,"file":"loadImageAsBlobUrl.js","sourceRoot":"","sources":["../../src/images/loadImageAsBlobUrl.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,OAAO,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;IACrC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;KAC1D;IAED,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAExC,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IAChE,IAAI;QACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,SAAS,CAAC;KACjB;IAAC,OAAO,CAAC,EAAE;QACX,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;KAC7C;IAED,IAAI;QACH,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,SAAS,CAAC;KAEjB;IAAC,OAAO,KAAK,EAAE;QACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;KACjD;IAED,OAAO,QAAQ,CAAA;AAChB,CAAC"}
|