trm-core 7.4.3 → 7.4.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.
Files changed (4) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +35 -35
  3. package/changelog.txt +139 -135
  4. package/package.json +97 -97
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2023 RegestaItalia
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1
+ MIT License
2
+
3
+ Copyright (c) 2023 RegestaItalia
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  SOFTWARE.
package/README.md CHANGED
@@ -1,35 +1,35 @@
1
- # <a href="https://docs.trmregistry.com/"><img src="https://docs.trmregistry.com/_media/logo.png" height="40" alt="TRM"></a>
2
-
3
- [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-1.3.0-4baaaa.svg)](https://github.com/RegestaItalia/trm-docs/blob/main/CODE_OF_CONDUCT.md)
4
- [![Core License](https://img.shields.io/github/license/RegestaItalia/trm-core)](https://github.com/RegestaItalia/trm-core)
5
- [![Core Latest version](https://img.shields.io/npm/v/trm-core)](https://www.npmjs.com/package/trm-core)
6
- [![Core Installs](https://img.shields.io/npm/dt/trm-core)](https://www.npmjs.com/package/trm-core)
7
-
8
- | 🚀 This project is funded and maintained by 🏦 | 🔗 |
9
- |-------------------------------------------------|----------------------------------------------------------------|
10
- | Regesta S.p.A. | [https://www.regestaitalia.eu/](https://www.regestaitalia.eu/) |
11
- | Clarex S.r.l. | [https://www.clarex.it/](https://www.clarex.it/) |
12
-
13
- This module contains the core functionalities of [TRM (Transport Request Manager)](https://trmregistry.com/).
14
-
15
- TRM is a software designed to make transports between SAP ECC/S4 systems easy.
16
-
17
- # Requirements
18
-
19
- - [Node >=22.12.0](https://github.com/nodejs/node/releases/tag/v22.12.0)
20
-
21
- # Documentation <!-- {docsify-remove} -->
22
-
23
- Full documentation can be seen at [https://docs.trmregistry.com/](https://docs.trmregistry.com).
24
-
25
- # Contributing <!-- {docsify-remove} -->
26
-
27
- Like every other TRM open-source projects, contributions are always welcomed ❤️.
28
-
29
- Make sure to open an issue first.
30
-
31
- Contributions will be merged upon approval.
32
-
33
- [Click here](https://docs.trmregistry.com/#/CONTRIBUTING) for the full list of TRM contribution guidelines.
34
-
35
- [<img src="https://trmregistry.com/public/contributors?image=true">](https://docs.trmregistry.com/#/?id=contributors)
1
+ # <a href="https://docs.trmregistry.com/"><img src="https://docs.trmregistry.com/_media/logo.png" height="40" alt="TRM"></a>
2
+
3
+ [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-1.3.0-4baaaa.svg)](https://github.com/RegestaItalia/trm-docs/blob/main/CODE_OF_CONDUCT.md)
4
+ [![Core License](https://img.shields.io/github/license/RegestaItalia/trm-core)](https://github.com/RegestaItalia/trm-core)
5
+ [![Core Latest version](https://img.shields.io/npm/v/trm-core)](https://www.npmjs.com/package/trm-core)
6
+ [![Core Installs](https://img.shields.io/npm/dt/trm-core)](https://www.npmjs.com/package/trm-core)
7
+
8
+ | 🚀 This project is funded and maintained by 🏦 | 🔗 |
9
+ |-------------------------------------------------|----------------------------------------------------------------|
10
+ | Regesta S.p.A. | [https://www.regestaitalia.eu/](https://www.regestaitalia.eu/) |
11
+ | Clarex S.r.l. | [https://www.clarex.it/](https://www.clarex.it/) |
12
+
13
+ This module contains the core functionalities of [TRM (Transport Request Manager)](https://trmregistry.com/).
14
+
15
+ TRM is a software designed to make transports between SAP ECC/S4 systems easy.
16
+
17
+ # Requirements
18
+
19
+ - [Node >=22.12.0](https://github.com/nodejs/node/releases/tag/v22.12.0)
20
+
21
+ # Documentation <!-- {docsify-remove} -->
22
+
23
+ Full documentation can be seen at [https://docs.trmregistry.com/](https://docs.trmregistry.com).
24
+
25
+ # Contributing <!-- {docsify-remove} -->
26
+
27
+ Like every other TRM open-source projects, contributions are always welcomed ❤️.
28
+
29
+ Make sure to open an issue first.
30
+
31
+ Contributions will be merged upon approval.
32
+
33
+ [Click here](https://docs.trmregistry.com/#/CONTRIBUTING) for the full list of TRM contribution guidelines.
34
+
35
+ [<img src="https://trmregistry.com/public/contributors?image=true">](https://docs.trmregistry.com/#/?id=contributors)
package/changelog.txt CHANGED
@@ -1,136 +1,140 @@
1
- trm-core changelog
2
- =================
3
-
4
- Legend
5
- ------
6
- * : fixed
7
- ! : changed
8
- + : added
9
- - : removed
10
-
11
- 2025-07-30 v7.4.3
12
- -------------------
13
- ! trm-commons ^2.0.0 as peer dependency
14
-
15
- 2025-07-29 v7.4.2
16
- -------------------
17
- ! enforce node engine >=22.12.0 with post install script
18
- ! protocol-registry ^2.0.0
19
-
20
- 2025-07-29 7.4.1
21
- -------------------
22
- ! trm-commons ^2.0.0
23
-
24
- 2025-07-29 7.4.0
25
- -------------------
26
- - dependency install doesn't ask for cust/lang/package replacements anymore if not needed
27
- ! install asks for cust/lang/package replacements when not provided by default parameter
28
- ! import logger shows package name
29
- ! trm-commons ^1.1.0
30
- ! trm-server ^5.0.0
31
- ! set/overwrite dependencies with or without automatic detection
32
- + manifest template for post activities, trm dependency and sap entries
33
- * local package install
34
-
35
- 2025-07-08 v7.3.0
36
- -------------------
37
- + enforce node engine ^22.12.0 with post install script
38
- * install package hierarchy
39
-
40
- 2025-06-04 v7.2.1
41
- -------------------
42
- * inquirer/logger prefix on install dependency
43
- + removed useless wb transport find on package first install
44
-
45
- 2025-06-03 v7.2.0
46
- -------------------
47
- * find dependency with custom object not found without devc reference
48
-
49
- 2025-06-03 v7.1.0
50
- -------------------
51
- * change tr owner on install tr update
52
-
53
- 2025-06-03 v7.0.0
54
- -------------------
55
- ! trm-server ^4.0.0
56
- + change tr owner on install tr update
57
-
58
- 2025-05-29 v6.9.1
59
- -------------------
60
- * remote function for updating server
61
- + confirm if objects exists but no root sap package found
62
-
63
- 2025-05-29 v6.9.0
64
- -------------------
65
- ! check server api auth before install and publish
66
- ! trm-server ^3.1.0
67
- ! read wb transport from package
68
-
69
- 2025-05-27 v6.8.0
70
- -------------------
71
- ! on install transport update, check tasks before add object attempt
72
- * commit before post activity run on RFC
73
- * post activity error log
74
- + node-rfc #327 -> device or resource busy, added workaround
75
-
76
- 2025-05-20 v6.7.1
77
- -------------------
78
- ! get installed packages from backend with trm-server version check
79
-
80
- 2025-05-14 v6.7.0
81
- -------------------
82
- ! trm-server ^3.0.0
83
- * abapgit ignored objects
84
- + post activity pre check
85
- + get installed packages from backend where possible
86
- + regen SAPLZTRM before post activity
87
- * rest sap-client
88
- + keep track of post activities based on latest release
89
-
90
- 2025-05-08 v6.6.0
91
- -------------------
92
- * no integrity with trm-server/trm-rest dependency allowed
93
- ! REST Client and RFC Client error generic -> specific
94
- ! REST Client error xml body parsing with title as message
95
- ! trm-server ^2.2.2
96
-
97
- 2025-05-08 v6.5.1
98
- -------------------
99
- ! rest error handling
100
-
101
- 2025-05-05 v6.5.0
102
- -------------------
103
- ! trm-commons ^1.0.0
104
- * upgrade trm-server fixes
105
- * core package.json location find
106
-
107
- 2025-04-28 v6.4.1
108
- -------------------
109
-
110
- ! node-r3trans ^1.5.0
111
-
112
- 2025-04-28 v6.4.0
113
- -------------------
114
-
115
- + post activities in abap manifest
116
- * return exception type for REST client
117
-
118
- 2025-02-06 v6.3.0
119
- -------------------
120
-
121
- * upgrading package remove previous ZTRM comments in workbench (import) transport
122
- + fetch package remote content
123
- * fix translation transport generation
124
- + move trm package dependencies to core
125
- + transport migration on overwrite
126
- ! DEVC, CUST and LANG are now TRM relevant
127
- * root superpackage on devc tr import blank
128
- + clear state on package install (remove from skipped transports)
129
- + add abapgit source code to TRM artifact
130
- + skip ignored objects listed in .abapgit.xml
131
- + add namespace in manifest
132
- ! abstract registry for custom implementation
133
- + add file system registry for local publish and install
134
- + add post activities
135
- ! cache transports in dependency detection for performance issues on big packages
1
+ trm-core changelog
2
+ =================
3
+
4
+ Legend
5
+ ------
6
+ * : fixed
7
+ ! : changed
8
+ + : added
9
+ - : removed
10
+
11
+ 2025-07-30 v7.4.4
12
+ -------------------
13
+ ! node-r3trans ^2.0.0
14
+
15
+ 2025-07-30 v7.4.3
16
+ -------------------
17
+ ! trm-commons ^2.0.0 as peer dependency
18
+
19
+ 2025-07-29 v7.4.2
20
+ -------------------
21
+ ! enforce node engine >=22.12.0 with post install script
22
+ ! protocol-registry ^2.0.0
23
+
24
+ 2025-07-29 7.4.1
25
+ -------------------
26
+ ! trm-commons ^2.0.0
27
+
28
+ 2025-07-29 7.4.0
29
+ -------------------
30
+ - dependency install doesn't ask for cust/lang/package replacements anymore if not needed
31
+ ! install asks for cust/lang/package replacements when not provided by default parameter
32
+ ! import logger shows package name
33
+ ! trm-commons ^1.1.0
34
+ ! trm-server ^5.0.0
35
+ ! set/overwrite dependencies with or without automatic detection
36
+ + manifest template for post activities, trm dependency and sap entries
37
+ * local package install
38
+
39
+ 2025-07-08 v7.3.0
40
+ -------------------
41
+ + enforce node engine ^22.12.0 with post install script
42
+ * install package hierarchy
43
+
44
+ 2025-06-04 v7.2.1
45
+ -------------------
46
+ * inquirer/logger prefix on install dependency
47
+ + removed useless wb transport find on package first install
48
+
49
+ 2025-06-03 v7.2.0
50
+ -------------------
51
+ * find dependency with custom object not found without devc reference
52
+
53
+ 2025-06-03 v7.1.0
54
+ -------------------
55
+ * change tr owner on install tr update
56
+
57
+ 2025-06-03 v7.0.0
58
+ -------------------
59
+ ! trm-server ^4.0.0
60
+ + change tr owner on install tr update
61
+
62
+ 2025-05-29 v6.9.1
63
+ -------------------
64
+ * remote function for updating server
65
+ + confirm if objects exists but no root sap package found
66
+
67
+ 2025-05-29 v6.9.0
68
+ -------------------
69
+ ! check server api auth before install and publish
70
+ ! trm-server ^3.1.0
71
+ ! read wb transport from package
72
+
73
+ 2025-05-27 v6.8.0
74
+ -------------------
75
+ ! on install transport update, check tasks before add object attempt
76
+ * commit before post activity run on RFC
77
+ * post activity error log
78
+ + node-rfc #327 -> device or resource busy, added workaround
79
+
80
+ 2025-05-20 v6.7.1
81
+ -------------------
82
+ ! get installed packages from backend with trm-server version check
83
+
84
+ 2025-05-14 v6.7.0
85
+ -------------------
86
+ ! trm-server ^3.0.0
87
+ * abapgit ignored objects
88
+ + post activity pre check
89
+ + get installed packages from backend where possible
90
+ + regen SAPLZTRM before post activity
91
+ * rest sap-client
92
+ + keep track of post activities based on latest release
93
+
94
+ 2025-05-08 v6.6.0
95
+ -------------------
96
+ * no integrity with trm-server/trm-rest dependency allowed
97
+ ! REST Client and RFC Client error generic -> specific
98
+ ! REST Client error xml body parsing with title as message
99
+ ! trm-server ^2.2.2
100
+
101
+ 2025-05-08 v6.5.1
102
+ -------------------
103
+ ! rest error handling
104
+
105
+ 2025-05-05 v6.5.0
106
+ -------------------
107
+ ! trm-commons ^1.0.0
108
+ * upgrade trm-server fixes
109
+ * core package.json location find
110
+
111
+ 2025-04-28 v6.4.1
112
+ -------------------
113
+
114
+ ! node-r3trans ^1.5.0
115
+
116
+ 2025-04-28 v6.4.0
117
+ -------------------
118
+
119
+ + post activities in abap manifest
120
+ * return exception type for REST client
121
+
122
+ 2025-02-06 v6.3.0
123
+ -------------------
124
+
125
+ * upgrading package remove previous ZTRM comments in workbench (import) transport
126
+ + fetch package remote content
127
+ * fix translation transport generation
128
+ + move trm package dependencies to core
129
+ + transport migration on overwrite
130
+ ! DEVC, CUST and LANG are now TRM relevant
131
+ * root superpackage on devc tr import blank
132
+ + clear state on package install (remove from skipped transports)
133
+ + add abapgit source code to TRM artifact
134
+ + skip ignored objects listed in .abapgit.xml
135
+ + add namespace in manifest
136
+ ! abstract registry for custom implementation
137
+ + add file system registry for local publish and install
138
+ + add post activities
139
+ ! cache transports in dependency detection for performance issues on big packages
136
140
  * check object existance before install
package/package.json CHANGED
@@ -1,97 +1,97 @@
1
- {
2
- "name": "trm-core",
3
- "version": "7.4.3",
4
- "description": "TRM (Transport Request Manager) Core",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "files": [
8
- "changelog.txt",
9
- "dist",
10
- "!dist/test.js",
11
- "!dist/test.js.map",
12
- "!dist/test.d.ts",
13
- "!dist/.env",
14
- "!dist/dev_rfc.log"
15
- ],
16
- "scripts": {
17
- "cleanBuild": "rimraf dist/",
18
- "build": "npm run cleanBuild && tsc --sourceMap false",
19
- "test": "jest",
20
- "prepublishOnly": "npm run build",
21
- "postinstall": "node dist/scripts/checkEngine.js"
22
- },
23
- "keywords": [
24
- "trm",
25
- "abap"
26
- ],
27
- "homepage": "https://www.trmregistry.com",
28
- "repository": {
29
- "type": "git",
30
- "url": "git+https://github.com/RegestaItalia/trm-core.git"
31
- },
32
- "author": {
33
- "name": "Simone Gaffurini",
34
- "email": "simone.gaffurini@regestaitalia.it"
35
- },
36
- "license": "MIT",
37
- "trmDependencies": {
38
- "trm-server": "^5.0.0"
39
- },
40
- "dependencies": {
41
- "@esm2cjs/normalize-url": "^8.0.0",
42
- "@inquirer/prompts": "^5.1.1",
43
- "@simonegaffurini/sammarksworkflow": "^1.3.2-fork",
44
- "@xmldom/xmldom": "^0.9.8",
45
- "adm-zip": "^0.5.10",
46
- "axios": "^1.7.9",
47
- "chalk": "^4.1.2",
48
- "cli-progress": "^3.12.0",
49
- "dotenv": "^16.3.1",
50
- "email-validator": "^2.0.4",
51
- "express": "^4.18.2",
52
- "get-root-path": "^3.0.1",
53
- "get-stack-trace": "^3.1.1",
54
- "lodash": "^4.17.21",
55
- "minimatch": "^10.0.1",
56
- "node-html-parser": "^7.0.1",
57
- "node-r3trans": "^1.5.0",
58
- "object-keys-normalizer": "^1.0.1",
59
- "opener": "^1.5.2",
60
- "parse-multipart-data": "^1.5.0",
61
- "protocol-registry": "^2.0.0",
62
- "semver": "^7.5.4",
63
- "semver-sort": "^1.0.0",
64
- "spdx-license-ids": "^3.0.13",
65
- "trm-registry-types": "^1.1.1",
66
- "uuid": "^9.0.1",
67
- "xml-beautify": "^1.2.3",
68
- "xml-js": "^1.6.11"
69
- },
70
- "peerDependencies": {
71
- "trm-commons": "^2.0.0"
72
- },
73
- "devDependencies": {
74
- "@types/adm-zip": "^0.5.0",
75
- "@types/cli-progress": "^3.11.3",
76
- "@types/debug": "^4.1.12",
77
- "@types/express": "^4.17.17",
78
- "@types/inquirer": "^9.0.3",
79
- "@types/jest": "^29.5.12",
80
- "@types/lodash": "^4.14.202",
81
- "@types/node": "^20.4.4",
82
- "@types/opener": "^1.4.0",
83
- "@types/semver": "^7.5.0",
84
- "@types/semver-sort": "^0.0.1",
85
- "@types/stack-trace": "^0.0.33",
86
- "@types/uuid": "^9.0.8",
87
- "trm-commons": "^2.0.0",
88
- "jest": "^29.7.0",
89
- "rimraf": "^6.0.1",
90
- "ts-jest": "^29.1.2",
91
- "ts-node": "^10.9.2",
92
- "typescript": "^5.8.2"
93
- },
94
- "engines": {
95
- "node": ">=22.12.0"
96
- }
97
- }
1
+ {
2
+ "name": "trm-core",
3
+ "version": "7.4.4",
4
+ "description": "TRM (Transport Request Manager) Core",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "changelog.txt",
9
+ "dist",
10
+ "!dist/test.js",
11
+ "!dist/test.js.map",
12
+ "!dist/test.d.ts",
13
+ "!dist/.env",
14
+ "!dist/dev_rfc.log"
15
+ ],
16
+ "scripts": {
17
+ "cleanBuild": "rimraf dist/",
18
+ "build": "npm run cleanBuild && tsc --sourceMap false",
19
+ "test": "jest",
20
+ "prepublishOnly": "npm run build",
21
+ "postinstall": "node dist/scripts/checkEngine.js"
22
+ },
23
+ "keywords": [
24
+ "trm",
25
+ "abap"
26
+ ],
27
+ "homepage": "https://www.trmregistry.com",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/RegestaItalia/trm-core.git"
31
+ },
32
+ "author": {
33
+ "name": "Simone Gaffurini",
34
+ "email": "simone.gaffurini@regestaitalia.it"
35
+ },
36
+ "license": "MIT",
37
+ "trmDependencies": {
38
+ "trm-server": "^5.0.0"
39
+ },
40
+ "dependencies": {
41
+ "@esm2cjs/normalize-url": "^8.0.0",
42
+ "@inquirer/prompts": "^7.8.1",
43
+ "@simonegaffurini/sammarksworkflow": "^1.3.2-fork",
44
+ "@xmldom/xmldom": "^0.9.8",
45
+ "adm-zip": "^0.5.10",
46
+ "axios": "^1.7.9",
47
+ "chalk": "^4.1.2",
48
+ "cli-progress": "^3.12.0",
49
+ "dotenv": "^16.3.1",
50
+ "email-validator": "^2.0.4",
51
+ "express": "^4.18.2",
52
+ "get-root-path": "^3.0.1",
53
+ "get-stack-trace": "^3.1.1",
54
+ "lodash": "^4.17.21",
55
+ "minimatch": "^10.0.1",
56
+ "node-html-parser": "^7.0.1",
57
+ "node-r3trans": "^2.0.0",
58
+ "object-keys-normalizer": "^1.0.1",
59
+ "opener": "^1.5.2",
60
+ "parse-multipart-data": "^1.5.0",
61
+ "protocol-registry": "^2.0.0",
62
+ "semver": "^7.5.4",
63
+ "semver-sort": "^1.0.0",
64
+ "spdx-license-ids": "^3.0.13",
65
+ "trm-registry-types": "^1.1.1",
66
+ "uuid": "^9.0.1",
67
+ "xml-beautify": "^1.2.3",
68
+ "xml-js": "^1.6.11"
69
+ },
70
+ "peerDependencies": {
71
+ "trm-commons": "^2.0.0"
72
+ },
73
+ "devDependencies": {
74
+ "@types/adm-zip": "^0.5.0",
75
+ "@types/cli-progress": "^3.11.3",
76
+ "@types/debug": "^4.1.12",
77
+ "@types/express": "^4.17.17",
78
+ "@types/inquirer": "^9.0.3",
79
+ "@types/jest": "^29.5.12",
80
+ "@types/lodash": "^4.14.202",
81
+ "@types/node": "^20.4.4",
82
+ "@types/opener": "^1.4.0",
83
+ "@types/semver": "^7.5.0",
84
+ "@types/semver-sort": "^0.0.1",
85
+ "@types/stack-trace": "^0.0.33",
86
+ "@types/uuid": "^9.0.8",
87
+ "jest": "^29.7.0",
88
+ "rimraf": "^6.0.1",
89
+ "trm-commons": "^2.0.0",
90
+ "ts-jest": "^29.1.2",
91
+ "ts-node": "^10.9.2",
92
+ "typescript": "^5.8.2"
93
+ },
94
+ "engines": {
95
+ "node": ">=22.12.0"
96
+ }
97
+ }