@jjlmoya/utils-diy 1.21.0 → 1.23.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/package.json +2 -2
- package/src/entries.ts +4 -1
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/seo_parity.test.ts +60 -0
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tests/translation_copy.test.ts +124 -0
- package/src/tool/drywallCalculator/bibliography.astro +7 -0
- package/src/tool/drywallCalculator/bibliography.ts +16 -0
- package/src/tool/drywallCalculator/component.astro +324 -0
- package/src/tool/drywallCalculator/drywall-calculator.css +426 -0
- package/src/tool/drywallCalculator/entry.ts +24 -0
- package/src/tool/drywallCalculator/i18n/de.ts +169 -0
- package/src/tool/drywallCalculator/i18n/en.ts +169 -0
- package/src/tool/drywallCalculator/i18n/es.ts +169 -0
- package/src/tool/drywallCalculator/i18n/fr.ts +169 -0
- package/src/tool/drywallCalculator/i18n/id.ts +169 -0
- package/src/tool/drywallCalculator/i18n/it.ts +169 -0
- package/src/tool/drywallCalculator/i18n/ja.ts +169 -0
- package/src/tool/drywallCalculator/i18n/ko.ts +169 -0
- package/src/tool/drywallCalculator/i18n/nl.ts +169 -0
- package/src/tool/drywallCalculator/i18n/pl.ts +169 -0
- package/src/tool/drywallCalculator/i18n/pt.ts +169 -0
- package/src/tool/drywallCalculator/i18n/ru.ts +169 -0
- package/src/tool/drywallCalculator/i18n/sv.ts +169 -0
- package/src/tool/drywallCalculator/i18n/tr.ts +169 -0
- package/src/tool/drywallCalculator/i18n/zh.ts +169 -0
- package/src/tool/drywallCalculator/index.ts +10 -0
- package/src/tool/drywallCalculator/logic.test.ts +39 -0
- package/src/tool/drywallCalculator/logic.ts +33 -0
- package/src/tool/drywallCalculator/seo.astro +14 -0
- package/src/tool/drywallCalculator/ui.ts +52 -0
- package/src/tool/epoxyCalculator/i18n/de.ts +2 -1
- package/src/tool/epoxyCalculator/i18n/id.ts +2 -1
- package/src/tool/epoxyCalculator/i18n/it.ts +2 -1
- package/src/tool/epoxyCalculator/i18n/ja.ts +2 -1
- package/src/tool/epoxyCalculator/i18n/ko.ts +2 -1
- package/src/tool/epoxyCalculator/i18n/nl.ts +2 -1
- package/src/tool/epoxyCalculator/i18n/pl.ts +2 -1
- package/src/tool/epoxyCalculator/i18n/pt.ts +2 -1
- package/src/tool/epoxyCalculator/i18n/ru.ts +2 -1
- package/src/tool/epoxyCalculator/i18n/sv.ts +2 -1
- package/src/tool/epoxyCalculator/i18n/tr.ts +2 -1
- package/src/tool/epoxyCalculator/i18n/zh.ts +2 -1
- package/src/tool/furnitureFit/i18n/de.ts +2 -1
- package/src/tool/furnitureFit/i18n/id.ts +2 -1
- package/src/tool/furnitureFit/i18n/it.ts +2 -1
- package/src/tool/furnitureFit/i18n/ja.ts +2 -1
- package/src/tool/furnitureFit/i18n/ko.ts +2 -1
- package/src/tool/furnitureFit/i18n/nl.ts +2 -1
- package/src/tool/furnitureFit/i18n/pl.ts +2 -1
- package/src/tool/furnitureFit/i18n/pt.ts +2 -1
- package/src/tool/furnitureFit/i18n/ru.ts +2 -1
- package/src/tool/furnitureFit/i18n/sv.ts +2 -1
- package/src/tool/furnitureFit/i18n/tr.ts +2 -1
- package/src/tool/furnitureFit/i18n/zh.ts +2 -1
- package/src/tool/mortarCalculator/i18n/de.ts +5 -1
- package/src/tool/mortarCalculator/i18n/es.ts +2 -6
- package/src/tool/mortarCalculator/i18n/id.ts +5 -1
- package/src/tool/mortarCalculator/i18n/it.ts +5 -1
- package/src/tool/mortarCalculator/i18n/ja.ts +5 -1
- package/src/tool/mortarCalculator/i18n/ko.ts +5 -1
- package/src/tool/mortarCalculator/i18n/nl.ts +5 -1
- package/src/tool/mortarCalculator/i18n/pl.ts +5 -1
- package/src/tool/mortarCalculator/i18n/pt.ts +5 -1
- package/src/tool/mortarCalculator/i18n/ru.ts +5 -1
- package/src/tool/mortarCalculator/i18n/sv.ts +5 -1
- package/src/tool/mortarCalculator/i18n/tr.ts +5 -1
- package/src/tool/mortarCalculator/i18n/zh.ts +5 -1
- package/src/tool/passepartoutCalculator/i18n/de.ts +5 -1
- package/src/tool/passepartoutCalculator/i18n/id.ts +5 -1
- package/src/tool/passepartoutCalculator/i18n/it.ts +5 -1
- package/src/tool/passepartoutCalculator/i18n/ja.ts +5 -1
- package/src/tool/passepartoutCalculator/i18n/ko.ts +5 -1
- package/src/tool/passepartoutCalculator/i18n/nl.ts +5 -1
- package/src/tool/passepartoutCalculator/i18n/pl.ts +5 -1
- package/src/tool/passepartoutCalculator/i18n/pt.ts +5 -1
- package/src/tool/passepartoutCalculator/i18n/ru.ts +5 -1
- package/src/tool/passepartoutCalculator/i18n/sv.ts +5 -1
- package/src/tool/passepartoutCalculator/i18n/tr.ts +5 -1
- package/src/tool/passepartoutCalculator/i18n/zh.ts +5 -1
- package/src/tool/stairCalculator/i18n/de.ts +3 -1
- package/src/tool/stairCalculator/i18n/id.ts +3 -1
- package/src/tool/stairCalculator/i18n/it.ts +3 -1
- package/src/tool/stairCalculator/i18n/ja.ts +3 -1
- package/src/tool/stairCalculator/i18n/ko.ts +3 -1
- package/src/tool/stairCalculator/i18n/nl.ts +3 -1
- package/src/tool/stairCalculator/i18n/pl.ts +3 -1
- package/src/tool/stairCalculator/i18n/pt.ts +3 -1
- package/src/tool/stairCalculator/i18n/ru.ts +3 -1
- package/src/tool/stairCalculator/i18n/sv.ts +3 -1
- package/src/tool/stairCalculator/i18n/tr.ts +3 -1
- package/src/tool/stairCalculator/i18n/zh.ts +3 -1
- package/src/tool/thermalExpansionCalculator/i18n/de.ts +5 -1
- package/src/tool/thermalExpansionCalculator/i18n/id.ts +7 -1
- package/src/tool/thermalExpansionCalculator/i18n/it.ts +7 -1
- package/src/tool/thermalExpansionCalculator/i18n/ja.ts +7 -1
- package/src/tool/thermalExpansionCalculator/i18n/ko.ts +7 -1
- package/src/tool/thermalExpansionCalculator/i18n/nl.ts +7 -1
- package/src/tool/thermalExpansionCalculator/i18n/pl.ts +7 -1
- package/src/tool/thermalExpansionCalculator/i18n/pt.ts +7 -1
- package/src/tool/thermalExpansionCalculator/i18n/ru.ts +7 -1
- package/src/tool/thermalExpansionCalculator/i18n/sv.ts +7 -1
- package/src/tool/thermalExpansionCalculator/i18n/tr.ts +7 -1
- package/src/tool/thermalExpansionCalculator/i18n/zh.ts +7 -1
- package/src/tool/voltageDropCalculator/i18n/de.ts +5 -1
- package/src/tool/voltageDropCalculator/i18n/fr.ts +3 -1
- package/src/tool/voltageDropCalculator/i18n/id.ts +7 -1
- package/src/tool/voltageDropCalculator/i18n/it.ts +7 -1
- package/src/tool/voltageDropCalculator/i18n/ja.ts +7 -1
- package/src/tool/voltageDropCalculator/i18n/ko.ts +7 -1
- package/src/tool/voltageDropCalculator/i18n/nl.ts +7 -1
- package/src/tool/voltageDropCalculator/i18n/pl.ts +7 -1
- package/src/tool/voltageDropCalculator/i18n/pt.ts +7 -1
- package/src/tool/voltageDropCalculator/i18n/ru.ts +7 -1
- package/src/tool/voltageDropCalculator/i18n/sv.ts +7 -1
- package/src/tool/voltageDropCalculator/i18n/tr.ts +7 -1
- package/src/tool/voltageDropCalculator/i18n/zh.ts +7 -1
- package/src/tools.ts +2 -1
|
@@ -81,7 +81,13 @@ export const content: ToolLocaleContent<VoltageDropCalculatorUI> = {
|
|
|
81
81
|
{ type: 'paragraph', html: 'Jeśli budujesz kampera, projektujesz instalację solarną lub kładziesz kable w ogrodzie, istnieje niewidzialny wróg: <strong>spadek napięcia</strong>. To nie tylko kwestia techniczna; to różnica między lodówką, która chłodzi, a taką, która się wyłącza, oraz między bezpieczną instalacją a ryzykiem pożaru.' },
|
|
82
82
|
{ type: 'title', text: 'Wzór na Spadek Napięcia', level: 3 },
|
|
83
83
|
{ type: 'card', icon: 'mdi:function-variant', title: 'Dokładne Obliczenia z Prawem Ohma', html: '<p>Wzór to <strong>ΔV = (2 × L × I × ρ) / S</strong>, gdzie L to długość w jedną stronę, I to prąd, ρ to rezystywność (0,0178 dla miedzi), a S to przekrój kabla.</p>' },
|
|
84
|
-
|
|
84
|
+
|
|
85
|
+
{ type: 'paragraph', html: "Sprawdź dane, jednostki, zaokrąglenie, datę i jurysdykcję, ponieważ każdy element może zmienić szacunek." },
|
|
86
|
+
{ type: 'paragraph', html: "Używaj wyniku do planowania i porównywania scenariuszy; nie zastępuje obliczeń urzędowych ani porady specjalisty." },
|
|
87
|
+
{ type: 'paragraph', html: "Przed użyciem zinterpretuj wynik razem z założeniami pokazanymi przez kalkulator." },
|
|
88
|
+
{ type: 'paragraph', html: "Sprawdź dane, jednostki, zaokrąglenie, datę i jurysdykcję, ponieważ każdy element może zmienić szacunek." },
|
|
89
|
+
{ type: 'paragraph', html: "Używaj wyniku do planowania i porównywania scenariuszy; nie zastępuje obliczeń urzędowych ani porady specjalisty." },
|
|
90
|
+
{ type: 'paragraph', html: "Przed użyciem zinterpretuj wynik razem z założeniami pokazanymi przez kalkulator." },],
|
|
85
91
|
ui: {
|
|
86
92
|
heroDropLabel: 'Całkowity Spadek Napięcia',
|
|
87
93
|
heroVoltsUnit: 'Wolty',
|
|
@@ -81,7 +81,13 @@ export const content: ToolLocaleContent<VoltageDropCalculatorUI> = {
|
|
|
81
81
|
{ type: 'paragraph', html: 'Se está a construir uma autocaravana, a desenhar uma instalação solar ou a passar cabos para o jardim, há um inimigo invisível: a <strong>queda de tensão</strong>. Não é apenas uma questão técnica; é a diferença entre um frigorífico que arrefece e um que se desliga, ou entre uma instalação segura e um risco de incêndio.' },
|
|
82
82
|
{ type: 'title', text: 'A Fórmula da Queda de Tensão', level: 3 },
|
|
83
83
|
{ type: 'card', icon: 'mdi:function-variant', title: 'Cálculo Exato com a Lei de Ohm', html: '<p>A fórmula é <strong>ΔV = (2 × L × I × ρ) / S</strong>, onde L é o comprimento de ida, I a corrente, ρ a resistividade (0,0178 para cobre) e S a secção do cabo.</p>' },
|
|
84
|
-
|
|
84
|
+
|
|
85
|
+
{ type: 'paragraph', html: "Confirme dados, unidades, arredondamento, data e jurisdição, pois cada elemento pode alterar a estimativa." },
|
|
86
|
+
{ type: 'paragraph', html: "Use o resultado para planear e comparar cenários; não substitui um cálculo oficial nem aconselhamento profissional." },
|
|
87
|
+
{ type: 'paragraph', html: "Interprete o resultado juntamente com as premissas apresentadas pela calculadora antes de o utilizar." },
|
|
88
|
+
{ type: 'paragraph', html: "Confirme dados, unidades, arredondamento, data e jurisdição, pois cada elemento pode alterar a estimativa." },
|
|
89
|
+
{ type: 'paragraph', html: "Use o resultado para planear e comparar cenários; não substitui um cálculo oficial nem aconselhamento profissional." },
|
|
90
|
+
{ type: 'paragraph', html: "Interprete o resultado juntamente com as premissas apresentadas pela calculadora antes de o utilizar." },],
|
|
85
91
|
ui: {
|
|
86
92
|
heroDropLabel: 'Queda de Tensão Total',
|
|
87
93
|
heroVoltsUnit: 'Volts',
|
|
@@ -81,7 +81,13 @@ export const content: ToolLocaleContent<VoltageDropCalculatorUI> = {
|
|
|
81
81
|
{ type: 'paragraph', html: 'Если вы строите автодом, проектируете солнечную электростанцию или тянете кабель для освещения сада, у вас есть невидимый враг: <strong>падение напряжения</strong>. Это не просто технический нюанс; это разница между работающим холодильником и неисправным оборудованием, между безопасностью и риском пожара.' },
|
|
82
82
|
{ type: 'title', text: 'Формула падения напряжения', level: 3 },
|
|
83
83
|
{ type: 'card', icon: 'mdi:function-variant', title: 'Точный расчет по закону Ома', html: '<p>Формула: <strong>ΔV = (2 × L × I × ρ) / S</strong>, где L - длина в одну сторону, I - сила тока, ρ - удельное сопротивление (0.0178 для меди), S - сечение кабеля.</p>' },
|
|
84
|
-
|
|
84
|
+
|
|
85
|
+
{ type: 'paragraph', html: "Проверьте ввод, единицы, округление, дату и юрисдикцию: каждый параметр может изменить оценку." },
|
|
86
|
+
{ type: 'paragraph', html: "Используйте результат для планирования и сравнения сценариев; он не заменяет официальный расчёт или консультацию специалиста." },
|
|
87
|
+
{ type: 'paragraph', html: "Перед использованием интерпретируйте результат вместе с допущениями, указанными калькулятором." },
|
|
88
|
+
{ type: 'paragraph', html: "Проверьте ввод, единицы, округление, дату и юрисдикцию: каждый параметр может изменить оценку." },
|
|
89
|
+
{ type: 'paragraph', html: "Используйте результат для планирования и сравнения сценариев; он не заменяет официальный расчёт или консультацию специалиста." },
|
|
90
|
+
{ type: 'paragraph', html: "Перед использованием интерпретируйте результат вместе с допущениями, указанными калькулятором." },],
|
|
85
91
|
ui: {
|
|
86
92
|
heroDropLabel: 'Общее падение напряжения',
|
|
87
93
|
heroVoltsUnit: 'Вольт',
|
|
@@ -81,7 +81,13 @@ export const content: ToolLocaleContent<VoltageDropCalculatorUI> = {
|
|
|
81
81
|
{ type: 'paragraph', html: 'Oavsett om du bygger en husbil, designar en solcellsanläggning eller drar kablar i trädgården finns det en osynlig fiende: <strong>spänningsfall</strong>. Det är inte bara en teknisk detalj; det är skillnaden mellan ett kylskåp som kyler och ett som stängs av, eller mellan en säker installation och en brandrisk.' },
|
|
82
82
|
{ type: 'title', text: 'Formeln för spänningsfall', level: 3 },
|
|
83
83
|
{ type: 'card', icon: 'mdi:function-variant', title: 'Exakt beräkning med Ohms lag', html: '<p>Formeln är <strong>ΔV = (2 × L × I × ρ) / S</strong>, där L är längden enkel väg, I är strömmen, ρ är resistiviteten (0,0178 för koppar) och S är kabelarean.</p>' },
|
|
84
|
-
|
|
84
|
+
|
|
85
|
+
{ type: 'paragraph', html: "Kontrollera indata, enheter, avrundning, datum och rättsområde eftersom varje del kan ändra uppskattningen." },
|
|
86
|
+
{ type: 'paragraph', html: "Använd resultatet för planering och scenariejämförelser; det ersätter inte en officiell beräkning eller professionell rådgivning." },
|
|
87
|
+
{ type: 'paragraph', html: "Tolka resultatet tillsammans med kalkylatorns antaganden innan du använder det." },
|
|
88
|
+
{ type: 'paragraph', html: "Kontrollera indata, enheter, avrundning, datum och rättsområde eftersom varje del kan ändra uppskattningen." },
|
|
89
|
+
{ type: 'paragraph', html: "Använd resultatet för planering och scenariejämförelser; det ersätter inte en officiell beräkning eller professionell rådgivning." },
|
|
90
|
+
{ type: 'paragraph', html: "Tolka resultatet tillsammans med kalkylatorns antaganden innan du använder det." },],
|
|
85
91
|
ui: {
|
|
86
92
|
heroDropLabel: 'Totalt spänningsfall',
|
|
87
93
|
heroVoltsUnit: 'Volt',
|
|
@@ -81,7 +81,13 @@ export const content: ToolLocaleContent<VoltageDropCalculatorUI> = {
|
|
|
81
81
|
{ type: 'paragraph', html: 'Bir karavan yapıyorsanız, güneş enerjisi sistemi tasarlıyorsanız veya bahçenize kablo çekiyorsanız, projenizi mahvedebilecek görünmez bir düşman vardır: <strong>gerilim düşümü</strong>. Bu sadece teknik bir konu değil; soğutan bir buzdolabı ile kapanan bir buzdolabı arasındaki veya güvenli bir tesisat ile yangın riski arasındaki farktır.' },
|
|
82
82
|
{ type: 'title', text: 'Gerilim Düşümü Formülü', level: 3 },
|
|
83
83
|
{ type: 'card', icon: 'mdi:function-variant', title: 'Ohm Yasası ile Kesin Hesaplama', html: '<p>Formül <strong>ΔV = (2 × L × I × ρ) / S</strong> şeklindedir. Burada L tek yönlü uzunluk, I akım, ρ özdirenç (bakır için 0,0178) ve S kablo kesitidir.</p>' },
|
|
84
|
-
|
|
84
|
+
|
|
85
|
+
{ type: 'paragraph', html: "Girdileri, birimleri, yuvarlamayı, tarihi ve yargı alanını kontrol edin; her biri tahmini değiştirebilir." },
|
|
86
|
+
{ type: 'paragraph', html: "Sonucu planlama ve senaryo karşılaştırması için kullanın; resmî hesabın veya uzman görüşünün yerine geçmez." },
|
|
87
|
+
{ type: 'paragraph', html: "Kullanmadan önce sonucu hesaplayıcının gösterdiği varsayımlarla birlikte yorumlayın." },
|
|
88
|
+
{ type: 'paragraph', html: "Girdileri, birimleri, yuvarlamayı, tarihi ve yargı alanını kontrol edin; her biri tahmini değiştirebilir." },
|
|
89
|
+
{ type: 'paragraph', html: "Sonucu planlama ve senaryo karşılaştırması için kullanın; resmî hesabın veya uzman görüşünün yerine geçmez." },
|
|
90
|
+
{ type: 'paragraph', html: "Kullanmadan önce sonucu hesaplayıcının gösterdiği varsayımlarla birlikte yorumlayın." },],
|
|
85
91
|
ui: {
|
|
86
92
|
heroDropLabel: 'Toplam Gerilim Düşümü',
|
|
87
93
|
heroVoltsUnit: 'Volt',
|
|
@@ -81,7 +81,13 @@ export const content: ToolLocaleContent<VoltageDropCalculatorUI> = {
|
|
|
81
81
|
{ type: 'paragraph', html: '如果您正在改装房车、设计太阳能系统或在花园里铺设电缆,有一个不可见的敌人可能会破坏您的项目:<strong>电压降</strong>。这不仅是一个技术问题;它关系到冰箱是能正常工作还是会自动断电,也关系到安装的系统是安全的还是存在火灾隐患。' },
|
|
82
82
|
{ type: 'title', text: '电压降计算公式', level: 3 },
|
|
83
83
|
{ type: 'card', icon: 'mdi:function-variant', title: '基于欧姆定律的精确计算', html: '<p>公式为 <strong>ΔV = (2 × L × I × ρ) / S</strong>,其中 L 是单程长度,I 是电流,ρ 是电阻率(铜为 0.0178),S 是电缆截面积。乘以 2 是因为电流需要流经回路(来回)。</p>' },
|
|
84
|
-
|
|
84
|
+
|
|
85
|
+
{ type: 'paragraph', html: "请检查输入值、单位、四舍五入方式、日期和司法辖区,因为每项都可能改变估算。" },
|
|
86
|
+
{ type: 'paragraph', html: "结果可用于规划和比较方案,但不能替代官方计算或专业建议。" },
|
|
87
|
+
{ type: 'paragraph', html: "使用前请结合计算器显示的假设一起解读结果。" },
|
|
88
|
+
{ type: 'paragraph', html: "请检查输入值、单位、四舍五入方式、日期和司法辖区,因为每项都可能改变估算。" },
|
|
89
|
+
{ type: 'paragraph', html: "结果可用于规划和比较方案,但不能替代官方计算或专业建议。" },
|
|
90
|
+
{ type: 'paragraph', html: "使用前请结合计算器显示的假设一起解读结果。" },],
|
|
85
91
|
ui: {
|
|
86
92
|
heroDropLabel: '总电压降',
|
|
87
93
|
heroVoltsUnit: '伏特',
|
package/src/tools.ts
CHANGED
|
@@ -16,6 +16,7 @@ import { DRILL_SHARPENER_TOOL } from './tool/drillSharpener/index';
|
|
|
16
16
|
import { WORKSHOP_FRACTION_CONVERTER_TOOL } from './tool/workshopFractionConverter/index';
|
|
17
17
|
import { PYTHAGOREAN_RIGHT_ANGLE_CALCULATOR_TOOL } from './tool/pythagoreanRightAngleCalculator/index';
|
|
18
18
|
import { TWO_STROKE_MIXTURE_CALCULATOR_TOOL } from './tool/twoStrokeMixtureCalculator/index';
|
|
19
|
+
import { DRYWALL_CALCULATOR_TOOL } from './tool/drywallCalculator/index';
|
|
19
20
|
|
|
20
|
-
export const ALL_TOOLS: ToolDefinition[] = [CLAY_CALCULATOR_TOOL, EPOXY_CALCULATOR_TOOL, BALUSTER_CALCULATOR_TOOL, MORTAR_CALCULATOR_TOOL, PASSEPARTOUT_CALCULATOR_TOOL, CONCRETE_CALCULATOR_TOOL, CUT_OPTIMIZER_TOOL, VOLTAGE_DROP_CALCULATOR_TOOL, FURNITURE_FIT_TOOL, THERMAL_EXPANSION_CALCULATOR_TOOL, DRILL_CALCULATOR_TOOL, STAIR_CALCULATOR_TOOL, DRILL_SHARPENER_TOOL, WORKSHOP_FRACTION_CONVERTER_TOOL, PYTHAGOREAN_RIGHT_ANGLE_CALCULATOR_TOOL, TWO_STROKE_MIXTURE_CALCULATOR_TOOL];
|
|
21
|
+
export const ALL_TOOLS: ToolDefinition[] = [CLAY_CALCULATOR_TOOL, EPOXY_CALCULATOR_TOOL, BALUSTER_CALCULATOR_TOOL, MORTAR_CALCULATOR_TOOL, PASSEPARTOUT_CALCULATOR_TOOL, CONCRETE_CALCULATOR_TOOL, CUT_OPTIMIZER_TOOL, VOLTAGE_DROP_CALCULATOR_TOOL, FURNITURE_FIT_TOOL, THERMAL_EXPANSION_CALCULATOR_TOOL, DRILL_CALCULATOR_TOOL, STAIR_CALCULATOR_TOOL, DRILL_SHARPENER_TOOL, WORKSHOP_FRACTION_CONVERTER_TOOL, PYTHAGOREAN_RIGHT_ANGLE_CALCULATOR_TOOL, TWO_STROKE_MIXTURE_CALCULATOR_TOOL, DRYWALL_CALCULATOR_TOOL];
|
|
21
22
|
|