@digitaldefiance/i18n-lib 2.1.32 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +286 -0
- package/package.json +1 -1
- package/src/core/component-store.d.ts +4 -0
- package/src/core/component-store.d.ts.map +1 -1
- package/src/core/component-store.js +27 -5
- package/src/core/component-store.js.map +1 -1
- package/src/errors/i18n-error.d.ts +6 -0
- package/src/errors/i18n-error.d.ts.map +1 -1
- package/src/errors/i18n-error.js +12 -0
- package/src/errors/i18n-error.js.map +1 -1
- package/src/gender/gender-categories.d.ts +7 -0
- package/src/gender/gender-categories.d.ts.map +1 -0
- package/src/gender/gender-categories.js +10 -0
- package/src/gender/gender-categories.js.map +1 -0
- package/src/gender/gender-resolver.d.ts +9 -0
- package/src/gender/gender-resolver.d.ts.map +1 -0
- package/src/gender/gender-resolver.js +30 -0
- package/src/gender/gender-resolver.js.map +1 -0
- package/src/gender/index.d.ts +3 -0
- package/src/gender/index.d.ts.map +1 -0
- package/src/gender/index.js +6 -0
- package/src/gender/index.js.map +1 -0
- package/src/index.d.ts +4 -0
- package/src/index.d.ts.map +1 -1
- package/src/index.js +4 -0
- package/src/index.js.map +1 -1
- package/src/interfaces/component-config.interface.d.ts +2 -1
- package/src/interfaces/component-config.interface.d.ts.map +1 -1
- package/src/pluralization/index.d.ts +7 -0
- package/src/pluralization/index.d.ts.map +1 -0
- package/src/pluralization/index.js +10 -0
- package/src/pluralization/index.js.map +1 -0
- package/src/pluralization/language-plural-map.d.ts +29 -0
- package/src/pluralization/language-plural-map.d.ts.map +1 -0
- package/src/pluralization/language-plural-map.js +136 -0
- package/src/pluralization/language-plural-map.js.map +1 -0
- package/src/pluralization/plural-categories.d.ts +22 -0
- package/src/pluralization/plural-categories.d.ts.map +1 -0
- package/src/pluralization/plural-categories.js +8 -0
- package/src/pluralization/plural-categories.js.map +1 -0
- package/src/pluralization/plural-rules.d.ts +102 -0
- package/src/pluralization/plural-rules.d.ts.map +1 -0
- package/src/pluralization/plural-rules.js +263 -0
- package/src/pluralization/plural-rules.js.map +1 -0
- package/src/types/index.d.ts +5 -0
- package/src/types/index.d.ts.map +1 -0
- package/src/types/index.js +8 -0
- package/src/types/index.js.map +1 -0
- package/src/types/plural-types.d.ts +17 -0
- package/src/types/plural-types.d.ts.map +1 -0
- package/src/types/plural-types.js +33 -0
- package/src/types/plural-types.js.map +1 -0
- package/src/utils/index.d.ts +1 -6
- package/src/utils/index.d.ts.map +1 -1
- package/src/utils/index.js +1 -6
- package/src/utils/index.js.map +1 -1
- package/src/utils/plural-helpers.d.ts +10 -0
- package/src/utils/plural-helpers.d.ts.map +1 -0
- package/src/utils/plural-helpers.js +19 -0
- package/src/utils/plural-helpers.js.map +1 -0
- package/src/validation/index.d.ts +2 -0
- package/src/validation/index.d.ts.map +1 -0
- package/src/validation/index.js +5 -0
- package/src/validation/index.js.map +1 -0
- package/src/validation/plural-validator.d.ts +23 -0
- package/src/validation/plural-validator.d.ts.map +1 -0
- package/src/validation/plural-validator.js +105 -0
- package/src/validation/plural-validator.js.map +1 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for pluralization support
|
|
3
|
+
*/
|
|
4
|
+
import { PluralCategory } from '../pluralization/plural-categories';
|
|
5
|
+
/**
|
|
6
|
+
* A string value that can be either a simple string or an object with plural forms
|
|
7
|
+
*/
|
|
8
|
+
export type PluralString = string | Partial<Record<PluralCategory, string>>;
|
|
9
|
+
/**
|
|
10
|
+
* Check if a value is a plural string object (not a simple string)
|
|
11
|
+
*/
|
|
12
|
+
export declare function isPluralString(value: any): value is Record<PluralCategory, string>;
|
|
13
|
+
/**
|
|
14
|
+
* Get the appropriate plural form from a PluralString
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolvePluralString(value: PluralString, category: PluralCategory): string | undefined;
|
|
17
|
+
//# sourceMappingURL=plural-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plural-types.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/types/plural-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;AAE5E;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAElF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,cAAc,GACvB,MAAM,GAAG,SAAS,CAkBpB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Type definitions for pluralization support
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isPluralString = isPluralString;
|
|
7
|
+
exports.resolvePluralString = resolvePluralString;
|
|
8
|
+
/**
|
|
9
|
+
* Check if a value is a plural string object (not a simple string)
|
|
10
|
+
*/
|
|
11
|
+
function isPluralString(value) {
|
|
12
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get the appropriate plural form from a PluralString
|
|
16
|
+
*/
|
|
17
|
+
function resolvePluralString(value, category) {
|
|
18
|
+
if (typeof value === 'string') {
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
// Try exact match first
|
|
22
|
+
if (value[category]) {
|
|
23
|
+
return value[category];
|
|
24
|
+
}
|
|
25
|
+
// Fallback to 'other'
|
|
26
|
+
if (value.other) {
|
|
27
|
+
return value.other;
|
|
28
|
+
}
|
|
29
|
+
// Fallback to first available form
|
|
30
|
+
const forms = Object.values(value);
|
|
31
|
+
return forms.length > 0 ? forms[0] : undefined;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=plural-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plural-types.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/types/plural-types.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAYH,wCAEC;AAKD,kDAqBC;AA/BD;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAU;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CACjC,KAAmB,EACnB,QAAwB;IAExB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,wBAAwB;IACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAED,sBAAsB;IACtB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,mCAAmC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC"}
|
package/src/utils/index.d.ts
CHANGED
package/src/utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
package/src/utils/index.js
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Utility exports
|
|
4
|
-
*/
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
const tslib_1 = require("tslib");
|
|
7
|
-
tslib_1.__exportStar(require("./
|
|
8
|
-
tslib_1.__exportStar(require("./currency"), exports);
|
|
9
|
-
tslib_1.__exportStar(require("./timezone"), exports);
|
|
4
|
+
tslib_1.__exportStar(require("./plural-helpers"), exports);
|
|
10
5
|
//# sourceMappingURL=index.js.map
|
package/src/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper functions for creating plural and gender strings
|
|
3
|
+
*/
|
|
4
|
+
import { PluralCategory } from '../pluralization/plural-categories';
|
|
5
|
+
import { PluralString } from '../types/plural-types';
|
|
6
|
+
import { GenderCategory, GenderedString } from '../gender/gender-categories';
|
|
7
|
+
export declare function createPluralString(forms: Partial<Record<PluralCategory, string>>): PluralString;
|
|
8
|
+
export declare function createGenderedString(forms: Partial<Record<GenderCategory, string>>): GenderedString;
|
|
9
|
+
export declare function getRequiredPluralForms(language: string): PluralCategory[];
|
|
10
|
+
//# sourceMappingURL=plural-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plural-helpers.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/plural-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,GAAG,YAAY,CAE/F;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,GAAG,cAAc,CAEnG;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAEzE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Helper functions for creating plural and gender strings
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createPluralString = createPluralString;
|
|
7
|
+
exports.createGenderedString = createGenderedString;
|
|
8
|
+
exports.getRequiredPluralForms = getRequiredPluralForms;
|
|
9
|
+
const language_plural_map_1 = require("../pluralization/language-plural-map");
|
|
10
|
+
function createPluralString(forms) {
|
|
11
|
+
return forms;
|
|
12
|
+
}
|
|
13
|
+
function createGenderedString(forms) {
|
|
14
|
+
return forms;
|
|
15
|
+
}
|
|
16
|
+
function getRequiredPluralForms(language) {
|
|
17
|
+
return (0, language_plural_map_1.getRequiredPluralForms)(language);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=plural-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plural-helpers.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/utils/plural-helpers.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAOH,gDAEC;AAED,oDAEC;AAED,wDAEC;AAZD,8EAAyG;AAEzG,SAAgB,kBAAkB,CAAC,KAA8C;IAC/E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAA8C;IACjF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,sBAAsB,CAAC,QAAgB;IACrD,OAAO,IAAA,4CAAuB,EAAC,QAAQ,CAAqB,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/validation/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/validation/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plural form validation
|
|
3
|
+
*/
|
|
4
|
+
import { PluralString } from '../types/plural-types';
|
|
5
|
+
export interface PluralValidationResult {
|
|
6
|
+
isValid: boolean;
|
|
7
|
+
errors: string[];
|
|
8
|
+
warnings: string[];
|
|
9
|
+
}
|
|
10
|
+
export interface PluralValidationOptions {
|
|
11
|
+
strict?: boolean;
|
|
12
|
+
checkUnused?: boolean;
|
|
13
|
+
checkVariables?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Validate plural forms for a specific language
|
|
17
|
+
*/
|
|
18
|
+
export declare function validatePluralForms(value: PluralString, language: string, key: string, options?: PluralValidationOptions): PluralValidationResult;
|
|
19
|
+
/**
|
|
20
|
+
* Validate that count variable exists when plural forms are used
|
|
21
|
+
*/
|
|
22
|
+
export declare function validateCountVariable(value: PluralString, variables: Record<string, any> | undefined, key: string): PluralValidationResult;
|
|
23
|
+
//# sourceMappingURL=plural-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plural-validator.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/validation/plural-validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAkB,MAAM,uBAAuB,CAAC;AAGrE,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,sBAAsB,CA8CxB;AA+CD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EAC1C,GAAG,EAAE,MAAM,GACV,sBAAsB,CASxB"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Plural form validation
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.validatePluralForms = validatePluralForms;
|
|
7
|
+
exports.validateCountVariable = validateCountVariable;
|
|
8
|
+
const plural_types_1 = require("../types/plural-types");
|
|
9
|
+
const language_plural_map_1 = require("../pluralization/language-plural-map");
|
|
10
|
+
/**
|
|
11
|
+
* Validate plural forms for a specific language
|
|
12
|
+
*/
|
|
13
|
+
function validatePluralForms(value, language, key, options = {}) {
|
|
14
|
+
const errors = [];
|
|
15
|
+
const warnings = [];
|
|
16
|
+
if (!(0, plural_types_1.isPluralString)(value)) {
|
|
17
|
+
return { isValid: true, errors, warnings };
|
|
18
|
+
}
|
|
19
|
+
const required = (0, language_plural_map_1.getRequiredPluralForms)(language);
|
|
20
|
+
const all = (0, language_plural_map_1.getAllPluralForms)(language);
|
|
21
|
+
const provided = Object.keys(value);
|
|
22
|
+
// Check required forms
|
|
23
|
+
for (const form of required) {
|
|
24
|
+
if (!value[form]) {
|
|
25
|
+
if (options.strict) {
|
|
26
|
+
errors.push(`Missing required plural form '${form}' for language '${language}' in key '${key}'`);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
warnings.push(`Missing required plural form '${form}' for language '${language}' in key '${key}'`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// Check unused forms
|
|
34
|
+
if (options.checkUnused) {
|
|
35
|
+
for (const form of provided) {
|
|
36
|
+
if (!all.includes(form)) {
|
|
37
|
+
warnings.push(`Unused plural form '${form}' for language '${language}' in key '${key}'`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Check variable consistency
|
|
42
|
+
if (options.checkVariables) {
|
|
43
|
+
const variables = extractVariables(value);
|
|
44
|
+
const inconsistent = findInconsistentVariables(value, variables);
|
|
45
|
+
for (const [form, missing] of Object.entries(inconsistent)) {
|
|
46
|
+
warnings.push(`Plural form '${form}' in key '${key}' missing variables: ${missing.join(', ')}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
isValid: errors.length === 0,
|
|
51
|
+
errors,
|
|
52
|
+
warnings,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Extract all variables from plural forms
|
|
57
|
+
*/
|
|
58
|
+
function extractVariables(value) {
|
|
59
|
+
const vars = new Set();
|
|
60
|
+
if (typeof value === 'string')
|
|
61
|
+
return vars;
|
|
62
|
+
for (const text of Object.values(value)) {
|
|
63
|
+
if (text) {
|
|
64
|
+
const matches = text.match(/\{(\w+)\}/g);
|
|
65
|
+
if (matches) {
|
|
66
|
+
matches.forEach(m => vars.add(m.slice(1, -1)));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return vars;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Find forms with inconsistent variables
|
|
74
|
+
*/
|
|
75
|
+
function findInconsistentVariables(value, allVars) {
|
|
76
|
+
const inconsistent = {};
|
|
77
|
+
if (typeof value === 'string')
|
|
78
|
+
return inconsistent;
|
|
79
|
+
for (const [form, text] of Object.entries(value)) {
|
|
80
|
+
if (text) {
|
|
81
|
+
const formVars = new Set();
|
|
82
|
+
const matches = text.match(/\{(\w+)\}/g);
|
|
83
|
+
if (matches) {
|
|
84
|
+
matches.forEach(m => formVars.add(m.slice(1, -1)));
|
|
85
|
+
}
|
|
86
|
+
const missing = Array.from(allVars).filter(v => !formVars.has(v));
|
|
87
|
+
if (missing.length > 0) {
|
|
88
|
+
inconsistent[form] = missing;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return inconsistent;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Validate that count variable exists when plural forms are used
|
|
96
|
+
*/
|
|
97
|
+
function validateCountVariable(value, variables, key) {
|
|
98
|
+
const errors = [];
|
|
99
|
+
const warnings = [];
|
|
100
|
+
if ((0, plural_types_1.isPluralString)(value) && (!variables || variables.count === undefined)) {
|
|
101
|
+
warnings.push(`Plural forms used in key '${key}' but no 'count' variable provided`);
|
|
102
|
+
}
|
|
103
|
+
return { isValid: true, errors, warnings };
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=plural-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plural-validator.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-i18n-lib/src/validation/plural-validator.ts"],"names":[],"mappings":"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"}
|