FA-64566 / Clinical triage scoring / Open access
Burn surface area estimate and first-window fluid rate: child leg proportion · case 01
Leg burns in young children are over-estimated and the chart totals exceed 100%.
ROOT CAUSE
Children use the adult 18% leg value while the head is enlarged.
VERIFIED REPAIR
Give each child leg (27+age)/2 percent so head and legs still total 45%.
Unsuccessful approach: Subtracting age moves leg proportion in the wrong direction as the child grows.
Case contract
Input {age_years (int), weight_kg, regions {name: fraction burned}, hours_since_burn}. Toy rule of nines: arms 9, trunk front 18, trunk back 18, perineum 1; age >= 10 head 9 and each leg 18; age < 10 head 18-age and each leg (27+age)/2. TBSA = sum(region % x fraction). Major burn when TBSA >= 20 (age >= 10) or >= 10 (age < 10); minor burns return total_ml 0 and no rate. Major: total = 4 mL x kg x TBSA; half is given over the remainder of the first 8 hours measured from the burn; rate is null once 8 hours have passed. Return {tbsa (1 dp), major, total_ml, first_rate_ml_h (1 dp)}.
Why this case matters
Burn triage depends on age-adjusted body proportions and on timing fluids from the injury rather than arrival.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(x):
a = x['age_years']
if a < 10:
head, leg = Fraction(18 - a), Fraction(18)
else:
head, leg = Fraction(9), Fraction(18)
pct = {'head': head, 'arm_l': 9, 'arm_r': 9, 'leg_l': leg, 'leg_r': leg, 'trunk_front': 18, 'trunk_back': 18, 'perineum': 1}
tbsa = sum(pct[k] * Fraction(str(v)) for k, v in x['regions'].items())
major = tbsa >= (10 if a < 10 else 20)
if not major:
return {'tbsa': round(float(tbsa), 1), 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}
total = 4 * Fraction(str(x['weight_kg'])) * tbsa
h = Fraction(str(x['hours_since_burn']))
rate = round(float(total / 2 / (8 - h)), 1) if h < 8 else None
return {'tbsa': round(float(tbsa), 1), 'major': True, 'total_ml': round(float(total)), 'first_rate_ml_h': rate}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('adult anterior trunk',
{'age_years': 30, 'weight_kg': 65, 'regions': {'trunk_front': '1'}, 'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('child legs use adjusted proportion',
{'age_years': 3, 'weight_kg': 15, 'regions': {'leg_l': '1', 'leg_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 22.5, 'major': True, 'total_ml': 1350, 'first_rate_ml_h': 112.5}),
('ten-year-old uses adult proportions',
{'age_years': 10,
'weight_kg': 35,
'regions': {'head': '1', 'leg_l': '0.5', 'arm_l': '1'},
'hours_since_burn': '2'},
{'tbsa': 27.0, 'major': True, 'total_ml': 3780, 'first_rate_ml_h': 315.0}),
('adult exactly 20 percent',
{'age_years': 30,
'weight_kg': 72,
'regions': {'trunk_front': '0.5', 'head': '1', 'arm_l': '0.2', 'perineum': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 20.0, 'major': True, 'total_ml': 5760, 'first_rate_ml_h': 480.0}),
('child 12 percent is major',
{'age_years': 4, 'weight_kg': 18, 'regions': {'arm_l': '1', 'arm_r': '0.3'}, 'hours_since_burn': '2'},
{'tbsa': 11.7, 'major': True, 'total_ml': 842, 'first_rate_ml_h': 70.2}),
('late arrival shortens first window',
{'age_years': 30,
'weight_kg': 70,
'regions': {'trunk_front': '1', 'leg_l': '0.5'},
'hours_since_burn': '7.5'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': 7560.0}),
('beyond eight hours',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_back': '1', 'arm_l': '1'}, 'hours_since_burn': '9'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': None}),
('infant head burn',
{'age_years': 0,
'weight_kg': 8,
'regions': {'head': '0.5', 'trunk_front': '0.1'},
'hours_since_burn': '2'},
{'tbsa': 10.8, 'major': True, 'total_ml': 346, 'first_rate_ml_h': 28.8})],
[('adult anterior trunk',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_front': '1'}, 'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('child legs use adjusted proportion',
{'age_years': 4, 'weight_kg': 15, 'regions': {'leg_l': '1', 'leg_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 23.2, 'major': True, 'total_ml': 1395, 'first_rate_ml_h': 116.2}),
('ten-year-old uses adult proportions',
{'age_years': 10,
'weight_kg': 35,
'regions': {'head': '1', 'leg_l': '0.5', 'arm_l': '0'},
'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('adult exactly 20 percent',
{'age_years': 30,
'weight_kg': 74,
'regions': {'trunk_front': '0.5', 'head': '1', 'arm_l': '0.2', 'perineum': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 20.0, 'major': True, 'total_ml': 5920, 'first_rate_ml_h': 493.3}),
('child 12 percent is major',
{'age_years': 4, 'weight_kg': 18, 'regions': {'arm_l': '1', 'arm_r': '0.4'}, 'hours_since_burn': '2'},
{'tbsa': 12.6, 'major': True, 'total_ml': 907, 'first_rate_ml_h': 75.6}),
('late arrival shortens first window',
{'age_years': 30,
'weight_kg': 70,
'regions': {'trunk_front': '1', 'leg_l': '0.5'},
'hours_since_burn': '7.25'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': 5040.0}),
('beyond eight hours',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_back': '1', 'arm_l': '1'}, 'hours_since_burn': '10'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': None}),
('infant head burn',
{'age_years': 0,
'weight_kg': 8,
'regions': {'head': '0.5', 'trunk_front': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 12.6, 'major': True, 'total_ml': 403, 'first_rate_ml_h': 33.6})],
[('adult anterior trunk',
{'age_years': 30, 'weight_kg': 75, 'regions': {'trunk_front': '1'}, 'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('child legs use adjusted proportion',
{'age_years': 5, 'weight_kg': 15, 'regions': {'leg_l': '1', 'leg_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 24.0, 'major': True, 'total_ml': 1440, 'first_rate_ml_h': 120.0}),
('ten-year-old uses adult proportions',
{'age_years': 10,
'weight_kg': 35,
'regions': {'head': '1', 'leg_l': '0.5', 'arm_l': '1'},
'hours_since_burn': '2'},
{'tbsa': 27.0, 'major': True, 'total_ml': 3780, 'first_rate_ml_h': 315.0}),
('adult exactly 20 percent',
{'age_years': 30,
'weight_kg': 76,
'regions': {'trunk_front': '0.5', 'head': '1', 'arm_l': '0.2', 'perineum': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 20.0, 'major': True, 'total_ml': 6080, 'first_rate_ml_h': 506.7}),
('child 12 percent is major',
{'age_years': 4, 'weight_kg': 18, 'regions': {'arm_l': '1', 'arm_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 13.5, 'major': True, 'total_ml': 972, 'first_rate_ml_h': 81.0}),
('late arrival shortens first window',
{'age_years': 30,
'weight_kg': 70,
'regions': {'trunk_front': '1', 'leg_l': '0.5'},
'hours_since_burn': '7.75'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': 15120.0}),
('beyond eight hours',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_back': '1', 'arm_l': '1'}, 'hours_since_burn': '11'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': None}),
('infant head burn',
{'age_years': 0,
'weight_kg': 8,
'regions': {'head': '0.5', 'trunk_front': '0.3'},
'hours_since_burn': '2'},
{'tbsa': 14.4, 'major': True, 'total_ml': 461, 'first_rate_ml_h': 38.4})],
[('adult anterior trunk',
{'age_years': 30, 'weight_kg': 80, 'regions': {'trunk_front': '1'}, 'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('child legs use adjusted proportion',
{'age_years': 6, 'weight_kg': 15, 'regions': {'leg_l': '1', 'leg_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 24.8, 'major': True, 'total_ml': 1485, 'first_rate_ml_h': 123.8}),
('ten-year-old uses adult proportions',
{'age_years': 10,
'weight_kg': 35,
'regions': {'head': '1', 'leg_l': '0.5', 'arm_l': '0'},
'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('adult exactly 20 percent',
{'age_years': 30,
'weight_kg': 78,
'regions': {'trunk_front': '0.5', 'head': '1', 'arm_l': '0.2', 'perineum': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 20.0, 'major': True, 'total_ml': 6240, 'first_rate_ml_h': 520.0}),
('child 12 percent is major',
{'age_years': 4, 'weight_kg': 18, 'regions': {'arm_l': '1', 'arm_r': '0.6'}, 'hours_since_burn': '2'},
{'tbsa': 14.4, 'major': True, 'total_ml': 1037, 'first_rate_ml_h': 86.4}),
('late arrival shortens first window',
{'age_years': 30,
'weight_kg': 70,
'regions': {'trunk_front': '1', 'leg_l': '0.5'},
'hours_since_burn': '7.2'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': 4725.0}),
('beyond eight hours',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_back': '1', 'arm_l': '1'}, 'hours_since_burn': '12'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': None}),
('infant head burn',
{'age_years': 0,
'weight_kg': 8,
'regions': {'head': '0.5', 'trunk_front': '0.4'},
'hours_since_burn': '2'},
{'tbsa': 16.2, 'major': True, 'total_ml': 518, 'first_rate_ml_h': 43.2})],
[('adult anterior trunk',
{'age_years': 30, 'weight_kg': 85, 'regions': {'trunk_front': '1'}, 'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('child legs use adjusted proportion',
{'age_years': 7, 'weight_kg': 15, 'regions': {'leg_l': '1', 'leg_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 25.5, 'major': True, 'total_ml': 1530, 'first_rate_ml_h': 127.5}),
('ten-year-old uses adult proportions',
{'age_years': 10,
'weight_kg': 35,
'regions': {'head': '1', 'leg_l': '0.5', 'arm_l': '1'},
'hours_since_burn': '2'},
{'tbsa': 27.0, 'major': True, 'total_ml': 3780, 'first_rate_ml_h': 315.0}),
('adult exactly 20 percent',
{'age_years': 30,
'weight_kg': 80,
'regions': {'trunk_front': '0.5', 'head': '1', 'arm_l': '0.2', 'perineum': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 20.0, 'major': True, 'total_ml': 6400, 'first_rate_ml_h': 533.3}),
('child 12 percent is major',
{'age_years': 4, 'weight_kg': 18, 'regions': {'arm_l': '1', 'arm_r': '0.7'}, 'hours_since_burn': '2'},
{'tbsa': 15.3, 'major': True, 'total_ml': 1102, 'first_rate_ml_h': 91.8}),
('late arrival shortens first window',
{'age_years': 30,
'weight_kg': 70,
'regions': {'trunk_front': '1', 'leg_l': '0.5'},
'hours_since_burn': '7.6'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': 9450.0}),
('beyond eight hours',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_back': '1', 'arm_l': '1'}, 'hours_since_burn': '13'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': None}),
('infant head burn',
{'age_years': 0,
'weight_kg': 8,
'regions': {'head': '0.5', 'trunk_front': '0.5'},
'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': True, 'total_ml': 576, 'first_rate_ml_h': 48.0})]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| adult anterior trunk | {'first_rate_ml_h': None, 'major': False, 'tbsa': 18.0, 'total_ml': 0} | {'first_rate_ml_h': None, 'major': False, 'tbsa': 18.0, 'total_ml': 0} | Passed |
| child legs use adjusted proportion | {'first_rate_ml_h': 135.0, 'major': True, 'tbsa': 27.0, 'total_ml': 1620} | {'first_rate_ml_h': 112.5, 'major': True, 'tbsa': 22.5, 'total_ml': 1350} | Failed |
| ten-year-old uses adult proportions | {'first_rate_ml_h': 315.0, 'major': True, 'tbsa': 27.0, 'total_ml': 3780} | {'first_rate_ml_h': 315.0, 'major': True, 'tbsa': 27.0, 'total_ml': 3780} | Passed |
| adult exactly 20 percent | {'first_rate_ml_h': 480.0, 'major': True, 'tbsa': 20.0, 'total_ml': 5760} | {'first_rate_ml_h': 480.0, 'major': True, 'tbsa': 20.0, 'total_ml': 5760} | Passed |
| child 12 percent is major | {'first_rate_ml_h': 70.2, 'major': True, 'tbsa': 11.7, 'total_ml': 842} | {'first_rate_ml_h': 70.2, 'major': True, 'tbsa': 11.7, 'total_ml': 842} | Passed |
| late arrival shortens first window | {'first_rate_ml_h': 7560.0, 'major': True, 'tbsa': 27.0, 'total_ml': 7560} | {'first_rate_ml_h': 7560.0, 'major': True, 'tbsa': 27.0, 'total_ml': 7560} | Passed |
| beyond eight hours | {'first_rate_ml_h': None, 'major': True, 'tbsa': 27.0, 'total_ml': 7560} | {'first_rate_ml_h': None, 'major': True, 'tbsa': 27.0, 'total_ml': 7560} | Passed |
| infant head burn | {'first_rate_ml_h': 28.8, 'major': True, 'tbsa': 10.8, 'total_ml': 346} | {'first_rate_ml_h': 28.8, 'major': True, 'tbsa': 10.8, 'total_ml': 346} | Passed |
SHA-256 / 67fd7c2dfd7f1f0e0fdbf2695e7a5f58046db07c96ed2f24d6f0a9b0c486ad25
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(x):
a = x['age_years']
if a < 10:
head, leg = Fraction(18 - a), Fraction(27 - a, 2)
else:
head, leg = Fraction(9), Fraction(18)
pct = {'head': head, 'arm_l': 9, 'arm_r': 9, 'leg_l': leg, 'leg_r': leg, 'trunk_front': 18, 'trunk_back': 18, 'perineum': 1}
tbsa = sum(pct[k] * Fraction(str(v)) for k, v in x['regions'].items())
major = tbsa >= (10 if a < 10 else 20)
if not major:
return {'tbsa': round(float(tbsa), 1), 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}
total = 4 * Fraction(str(x['weight_kg'])) * tbsa
h = Fraction(str(x['hours_since_burn']))
rate = round(float(total / 2 / (8 - h)), 1) if h < 8 else None
return {'tbsa': round(float(tbsa), 1), 'major': True, 'total_ml': round(float(total)), 'first_rate_ml_h': rate}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('adult anterior trunk',
{'age_years': 30, 'weight_kg': 65, 'regions': {'trunk_front': '1'}, 'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('child legs use adjusted proportion',
{'age_years': 3, 'weight_kg': 15, 'regions': {'leg_l': '1', 'leg_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 22.5, 'major': True, 'total_ml': 1350, 'first_rate_ml_h': 112.5}),
('ten-year-old uses adult proportions',
{'age_years': 10,
'weight_kg': 35,
'regions': {'head': '1', 'leg_l': '0.5', 'arm_l': '1'},
'hours_since_burn': '2'},
{'tbsa': 27.0, 'major': True, 'total_ml': 3780, 'first_rate_ml_h': 315.0}),
('adult exactly 20 percent',
{'age_years': 30,
'weight_kg': 72,
'regions': {'trunk_front': '0.5', 'head': '1', 'arm_l': '0.2', 'perineum': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 20.0, 'major': True, 'total_ml': 5760, 'first_rate_ml_h': 480.0}),
('child 12 percent is major',
{'age_years': 4, 'weight_kg': 18, 'regions': {'arm_l': '1', 'arm_r': '0.3'}, 'hours_since_burn': '2'},
{'tbsa': 11.7, 'major': True, 'total_ml': 842, 'first_rate_ml_h': 70.2}),
('late arrival shortens first window',
{'age_years': 30,
'weight_kg': 70,
'regions': {'trunk_front': '1', 'leg_l': '0.5'},
'hours_since_burn': '7.5'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': 7560.0}),
('beyond eight hours',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_back': '1', 'arm_l': '1'}, 'hours_since_burn': '9'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': None}),
('infant head burn',
{'age_years': 0,
'weight_kg': 8,
'regions': {'head': '0.5', 'trunk_front': '0.1'},
'hours_since_burn': '2'},
{'tbsa': 10.8, 'major': True, 'total_ml': 346, 'first_rate_ml_h': 28.8})],
[('adult anterior trunk',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_front': '1'}, 'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('child legs use adjusted proportion',
{'age_years': 4, 'weight_kg': 15, 'regions': {'leg_l': '1', 'leg_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 23.2, 'major': True, 'total_ml': 1395, 'first_rate_ml_h': 116.2}),
('ten-year-old uses adult proportions',
{'age_years': 10,
'weight_kg': 35,
'regions': {'head': '1', 'leg_l': '0.5', 'arm_l': '0'},
'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('adult exactly 20 percent',
{'age_years': 30,
'weight_kg': 74,
'regions': {'trunk_front': '0.5', 'head': '1', 'arm_l': '0.2', 'perineum': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 20.0, 'major': True, 'total_ml': 5920, 'first_rate_ml_h': 493.3}),
('child 12 percent is major',
{'age_years': 4, 'weight_kg': 18, 'regions': {'arm_l': '1', 'arm_r': '0.4'}, 'hours_since_burn': '2'},
{'tbsa': 12.6, 'major': True, 'total_ml': 907, 'first_rate_ml_h': 75.6}),
('late arrival shortens first window',
{'age_years': 30,
'weight_kg': 70,
'regions': {'trunk_front': '1', 'leg_l': '0.5'},
'hours_since_burn': '7.25'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': 5040.0}),
('beyond eight hours',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_back': '1', 'arm_l': '1'}, 'hours_since_burn': '10'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': None}),
('infant head burn',
{'age_years': 0,
'weight_kg': 8,
'regions': {'head': '0.5', 'trunk_front': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 12.6, 'major': True, 'total_ml': 403, 'first_rate_ml_h': 33.6})],
[('adult anterior trunk',
{'age_years': 30, 'weight_kg': 75, 'regions': {'trunk_front': '1'}, 'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('child legs use adjusted proportion',
{'age_years': 5, 'weight_kg': 15, 'regions': {'leg_l': '1', 'leg_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 24.0, 'major': True, 'total_ml': 1440, 'first_rate_ml_h': 120.0}),
('ten-year-old uses adult proportions',
{'age_years': 10,
'weight_kg': 35,
'regions': {'head': '1', 'leg_l': '0.5', 'arm_l': '1'},
'hours_since_burn': '2'},
{'tbsa': 27.0, 'major': True, 'total_ml': 3780, 'first_rate_ml_h': 315.0}),
('adult exactly 20 percent',
{'age_years': 30,
'weight_kg': 76,
'regions': {'trunk_front': '0.5', 'head': '1', 'arm_l': '0.2', 'perineum': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 20.0, 'major': True, 'total_ml': 6080, 'first_rate_ml_h': 506.7}),
('child 12 percent is major',
{'age_years': 4, 'weight_kg': 18, 'regions': {'arm_l': '1', 'arm_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 13.5, 'major': True, 'total_ml': 972, 'first_rate_ml_h': 81.0}),
('late arrival shortens first window',
{'age_years': 30,
'weight_kg': 70,
'regions': {'trunk_front': '1', 'leg_l': '0.5'},
'hours_since_burn': '7.75'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': 15120.0}),
('beyond eight hours',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_back': '1', 'arm_l': '1'}, 'hours_since_burn': '11'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': None}),
('infant head burn',
{'age_years': 0,
'weight_kg': 8,
'regions': {'head': '0.5', 'trunk_front': '0.3'},
'hours_since_burn': '2'},
{'tbsa': 14.4, 'major': True, 'total_ml': 461, 'first_rate_ml_h': 38.4})],
[('adult anterior trunk',
{'age_years': 30, 'weight_kg': 80, 'regions': {'trunk_front': '1'}, 'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('child legs use adjusted proportion',
{'age_years': 6, 'weight_kg': 15, 'regions': {'leg_l': '1', 'leg_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 24.8, 'major': True, 'total_ml': 1485, 'first_rate_ml_h': 123.8}),
('ten-year-old uses adult proportions',
{'age_years': 10,
'weight_kg': 35,
'regions': {'head': '1', 'leg_l': '0.5', 'arm_l': '0'},
'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('adult exactly 20 percent',
{'age_years': 30,
'weight_kg': 78,
'regions': {'trunk_front': '0.5', 'head': '1', 'arm_l': '0.2', 'perineum': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 20.0, 'major': True, 'total_ml': 6240, 'first_rate_ml_h': 520.0}),
('child 12 percent is major',
{'age_years': 4, 'weight_kg': 18, 'regions': {'arm_l': '1', 'arm_r': '0.6'}, 'hours_since_burn': '2'},
{'tbsa': 14.4, 'major': True, 'total_ml': 1037, 'first_rate_ml_h': 86.4}),
('late arrival shortens first window',
{'age_years': 30,
'weight_kg': 70,
'regions': {'trunk_front': '1', 'leg_l': '0.5'},
'hours_since_burn': '7.2'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': 4725.0}),
('beyond eight hours',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_back': '1', 'arm_l': '1'}, 'hours_since_burn': '12'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': None}),
('infant head burn',
{'age_years': 0,
'weight_kg': 8,
'regions': {'head': '0.5', 'trunk_front': '0.4'},
'hours_since_burn': '2'},
{'tbsa': 16.2, 'major': True, 'total_ml': 518, 'first_rate_ml_h': 43.2})],
[('adult anterior trunk',
{'age_years': 30, 'weight_kg': 85, 'regions': {'trunk_front': '1'}, 'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('child legs use adjusted proportion',
{'age_years': 7, 'weight_kg': 15, 'regions': {'leg_l': '1', 'leg_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 25.5, 'major': True, 'total_ml': 1530, 'first_rate_ml_h': 127.5}),
('ten-year-old uses adult proportions',
{'age_years': 10,
'weight_kg': 35,
'regions': {'head': '1', 'leg_l': '0.5', 'arm_l': '1'},
'hours_since_burn': '2'},
{'tbsa': 27.0, 'major': True, 'total_ml': 3780, 'first_rate_ml_h': 315.0}),
('adult exactly 20 percent',
{'age_years': 30,
'weight_kg': 80,
'regions': {'trunk_front': '0.5', 'head': '1', 'arm_l': '0.2', 'perineum': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 20.0, 'major': True, 'total_ml': 6400, 'first_rate_ml_h': 533.3}),
('child 12 percent is major',
{'age_years': 4, 'weight_kg': 18, 'regions': {'arm_l': '1', 'arm_r': '0.7'}, 'hours_since_burn': '2'},
{'tbsa': 15.3, 'major': True, 'total_ml': 1102, 'first_rate_ml_h': 91.8}),
('late arrival shortens first window',
{'age_years': 30,
'weight_kg': 70,
'regions': {'trunk_front': '1', 'leg_l': '0.5'},
'hours_since_burn': '7.6'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': 9450.0}),
('beyond eight hours',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_back': '1', 'arm_l': '1'}, 'hours_since_burn': '13'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': None}),
('infant head burn',
{'age_years': 0,
'weight_kg': 8,
'regions': {'head': '0.5', 'trunk_front': '0.5'},
'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': True, 'total_ml': 576, 'first_rate_ml_h': 48.0})]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| adult anterior trunk | {'first_rate_ml_h': None, 'major': False, 'tbsa': 18.0, 'total_ml': 0} | {'first_rate_ml_h': None, 'major': False, 'tbsa': 18.0, 'total_ml': 0} | Passed |
| child legs use adjusted proportion | {'first_rate_ml_h': 90.0, 'major': True, 'tbsa': 18.0, 'total_ml': 1080} | {'first_rate_ml_h': 112.5, 'major': True, 'tbsa': 22.5, 'total_ml': 1350} | Failed |
| ten-year-old uses adult proportions | {'first_rate_ml_h': 315.0, 'major': True, 'tbsa': 27.0, 'total_ml': 3780} | {'first_rate_ml_h': 315.0, 'major': True, 'tbsa': 27.0, 'total_ml': 3780} | Passed |
| adult exactly 20 percent | {'first_rate_ml_h': 480.0, 'major': True, 'tbsa': 20.0, 'total_ml': 5760} | {'first_rate_ml_h': 480.0, 'major': True, 'tbsa': 20.0, 'total_ml': 5760} | Passed |
| child 12 percent is major | {'first_rate_ml_h': 70.2, 'major': True, 'tbsa': 11.7, 'total_ml': 842} | {'first_rate_ml_h': 70.2, 'major': True, 'tbsa': 11.7, 'total_ml': 842} | Passed |
| late arrival shortens first window | {'first_rate_ml_h': 7560.0, 'major': True, 'tbsa': 27.0, 'total_ml': 7560} | {'first_rate_ml_h': 7560.0, 'major': True, 'tbsa': 27.0, 'total_ml': 7560} | Passed |
| beyond eight hours | {'first_rate_ml_h': None, 'major': True, 'tbsa': 27.0, 'total_ml': 7560} | {'first_rate_ml_h': None, 'major': True, 'tbsa': 27.0, 'total_ml': 7560} | Passed |
| infant head burn | {'first_rate_ml_h': 28.8, 'major': True, 'tbsa': 10.8, 'total_ml': 346} | {'first_rate_ml_h': 28.8, 'major': True, 'tbsa': 10.8, 'total_ml': 346} | Passed |
SHA-256 / 30b44b2996c43e4b0e99db6fce871869eea8bfb89a5124f475f82e454f6f6c8e
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(x):
a = x['age_years']
if a < 10:
head, leg = Fraction(18 - a), Fraction(27 + a, 2)
else:
head, leg = Fraction(9), Fraction(18)
pct = {'head': head, 'arm_l': 9, 'arm_r': 9, 'leg_l': leg, 'leg_r': leg, 'trunk_front': 18, 'trunk_back': 18, 'perineum': 1}
tbsa = sum(pct[k] * Fraction(str(v)) for k, v in x['regions'].items())
major = tbsa >= (10 if a < 10 else 20)
if not major:
return {'tbsa': round(float(tbsa), 1), 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}
total = 4 * Fraction(str(x['weight_kg'])) * tbsa
h = Fraction(str(x['hours_since_burn']))
rate = round(float(total / 2 / (8 - h)), 1) if h < 8 else None
return {'tbsa': round(float(tbsa), 1), 'major': True, 'total_ml': round(float(total)), 'first_rate_ml_h': rate}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('adult anterior trunk',
{'age_years': 30, 'weight_kg': 65, 'regions': {'trunk_front': '1'}, 'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('child legs use adjusted proportion',
{'age_years': 3, 'weight_kg': 15, 'regions': {'leg_l': '1', 'leg_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 22.5, 'major': True, 'total_ml': 1350, 'first_rate_ml_h': 112.5}),
('ten-year-old uses adult proportions',
{'age_years': 10,
'weight_kg': 35,
'regions': {'head': '1', 'leg_l': '0.5', 'arm_l': '1'},
'hours_since_burn': '2'},
{'tbsa': 27.0, 'major': True, 'total_ml': 3780, 'first_rate_ml_h': 315.0}),
('adult exactly 20 percent',
{'age_years': 30,
'weight_kg': 72,
'regions': {'trunk_front': '0.5', 'head': '1', 'arm_l': '0.2', 'perineum': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 20.0, 'major': True, 'total_ml': 5760, 'first_rate_ml_h': 480.0}),
('child 12 percent is major',
{'age_years': 4, 'weight_kg': 18, 'regions': {'arm_l': '1', 'arm_r': '0.3'}, 'hours_since_burn': '2'},
{'tbsa': 11.7, 'major': True, 'total_ml': 842, 'first_rate_ml_h': 70.2}),
('late arrival shortens first window',
{'age_years': 30,
'weight_kg': 70,
'regions': {'trunk_front': '1', 'leg_l': '0.5'},
'hours_since_burn': '7.5'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': 7560.0}),
('beyond eight hours',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_back': '1', 'arm_l': '1'}, 'hours_since_burn': '9'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': None}),
('infant head burn',
{'age_years': 0,
'weight_kg': 8,
'regions': {'head': '0.5', 'trunk_front': '0.1'},
'hours_since_burn': '2'},
{'tbsa': 10.8, 'major': True, 'total_ml': 346, 'first_rate_ml_h': 28.8})],
[('adult anterior trunk',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_front': '1'}, 'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('child legs use adjusted proportion',
{'age_years': 4, 'weight_kg': 15, 'regions': {'leg_l': '1', 'leg_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 23.2, 'major': True, 'total_ml': 1395, 'first_rate_ml_h': 116.2}),
('ten-year-old uses adult proportions',
{'age_years': 10,
'weight_kg': 35,
'regions': {'head': '1', 'leg_l': '0.5', 'arm_l': '0'},
'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('adult exactly 20 percent',
{'age_years': 30,
'weight_kg': 74,
'regions': {'trunk_front': '0.5', 'head': '1', 'arm_l': '0.2', 'perineum': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 20.0, 'major': True, 'total_ml': 5920, 'first_rate_ml_h': 493.3}),
('child 12 percent is major',
{'age_years': 4, 'weight_kg': 18, 'regions': {'arm_l': '1', 'arm_r': '0.4'}, 'hours_since_burn': '2'},
{'tbsa': 12.6, 'major': True, 'total_ml': 907, 'first_rate_ml_h': 75.6}),
('late arrival shortens first window',
{'age_years': 30,
'weight_kg': 70,
'regions': {'trunk_front': '1', 'leg_l': '0.5'},
'hours_since_burn': '7.25'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': 5040.0}),
('beyond eight hours',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_back': '1', 'arm_l': '1'}, 'hours_since_burn': '10'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': None}),
('infant head burn',
{'age_years': 0,
'weight_kg': 8,
'regions': {'head': '0.5', 'trunk_front': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 12.6, 'major': True, 'total_ml': 403, 'first_rate_ml_h': 33.6})],
[('adult anterior trunk',
{'age_years': 30, 'weight_kg': 75, 'regions': {'trunk_front': '1'}, 'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('child legs use adjusted proportion',
{'age_years': 5, 'weight_kg': 15, 'regions': {'leg_l': '1', 'leg_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 24.0, 'major': True, 'total_ml': 1440, 'first_rate_ml_h': 120.0}),
('ten-year-old uses adult proportions',
{'age_years': 10,
'weight_kg': 35,
'regions': {'head': '1', 'leg_l': '0.5', 'arm_l': '1'},
'hours_since_burn': '2'},
{'tbsa': 27.0, 'major': True, 'total_ml': 3780, 'first_rate_ml_h': 315.0}),
('adult exactly 20 percent',
{'age_years': 30,
'weight_kg': 76,
'regions': {'trunk_front': '0.5', 'head': '1', 'arm_l': '0.2', 'perineum': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 20.0, 'major': True, 'total_ml': 6080, 'first_rate_ml_h': 506.7}),
('child 12 percent is major',
{'age_years': 4, 'weight_kg': 18, 'regions': {'arm_l': '1', 'arm_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 13.5, 'major': True, 'total_ml': 972, 'first_rate_ml_h': 81.0}),
('late arrival shortens first window',
{'age_years': 30,
'weight_kg': 70,
'regions': {'trunk_front': '1', 'leg_l': '0.5'},
'hours_since_burn': '7.75'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': 15120.0}),
('beyond eight hours',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_back': '1', 'arm_l': '1'}, 'hours_since_burn': '11'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': None}),
('infant head burn',
{'age_years': 0,
'weight_kg': 8,
'regions': {'head': '0.5', 'trunk_front': '0.3'},
'hours_since_burn': '2'},
{'tbsa': 14.4, 'major': True, 'total_ml': 461, 'first_rate_ml_h': 38.4})],
[('adult anterior trunk',
{'age_years': 30, 'weight_kg': 80, 'regions': {'trunk_front': '1'}, 'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('child legs use adjusted proportion',
{'age_years': 6, 'weight_kg': 15, 'regions': {'leg_l': '1', 'leg_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 24.8, 'major': True, 'total_ml': 1485, 'first_rate_ml_h': 123.8}),
('ten-year-old uses adult proportions',
{'age_years': 10,
'weight_kg': 35,
'regions': {'head': '1', 'leg_l': '0.5', 'arm_l': '0'},
'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('adult exactly 20 percent',
{'age_years': 30,
'weight_kg': 78,
'regions': {'trunk_front': '0.5', 'head': '1', 'arm_l': '0.2', 'perineum': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 20.0, 'major': True, 'total_ml': 6240, 'first_rate_ml_h': 520.0}),
('child 12 percent is major',
{'age_years': 4, 'weight_kg': 18, 'regions': {'arm_l': '1', 'arm_r': '0.6'}, 'hours_since_burn': '2'},
{'tbsa': 14.4, 'major': True, 'total_ml': 1037, 'first_rate_ml_h': 86.4}),
('late arrival shortens first window',
{'age_years': 30,
'weight_kg': 70,
'regions': {'trunk_front': '1', 'leg_l': '0.5'},
'hours_since_burn': '7.2'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': 4725.0}),
('beyond eight hours',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_back': '1', 'arm_l': '1'}, 'hours_since_burn': '12'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': None}),
('infant head burn',
{'age_years': 0,
'weight_kg': 8,
'regions': {'head': '0.5', 'trunk_front': '0.4'},
'hours_since_burn': '2'},
{'tbsa': 16.2, 'major': True, 'total_ml': 518, 'first_rate_ml_h': 43.2})],
[('adult anterior trunk',
{'age_years': 30, 'weight_kg': 85, 'regions': {'trunk_front': '1'}, 'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': False, 'total_ml': 0, 'first_rate_ml_h': None}),
('child legs use adjusted proportion',
{'age_years': 7, 'weight_kg': 15, 'regions': {'leg_l': '1', 'leg_r': '0.5'}, 'hours_since_burn': '2'},
{'tbsa': 25.5, 'major': True, 'total_ml': 1530, 'first_rate_ml_h': 127.5}),
('ten-year-old uses adult proportions',
{'age_years': 10,
'weight_kg': 35,
'regions': {'head': '1', 'leg_l': '0.5', 'arm_l': '1'},
'hours_since_burn': '2'},
{'tbsa': 27.0, 'major': True, 'total_ml': 3780, 'first_rate_ml_h': 315.0}),
('adult exactly 20 percent',
{'age_years': 30,
'weight_kg': 80,
'regions': {'trunk_front': '0.5', 'head': '1', 'arm_l': '0.2', 'perineum': '0.2'},
'hours_since_burn': '2'},
{'tbsa': 20.0, 'major': True, 'total_ml': 6400, 'first_rate_ml_h': 533.3}),
('child 12 percent is major',
{'age_years': 4, 'weight_kg': 18, 'regions': {'arm_l': '1', 'arm_r': '0.7'}, 'hours_since_burn': '2'},
{'tbsa': 15.3, 'major': True, 'total_ml': 1102, 'first_rate_ml_h': 91.8}),
('late arrival shortens first window',
{'age_years': 30,
'weight_kg': 70,
'regions': {'trunk_front': '1', 'leg_l': '0.5'},
'hours_since_burn': '7.6'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': 9450.0}),
('beyond eight hours',
{'age_years': 30, 'weight_kg': 70, 'regions': {'trunk_back': '1', 'arm_l': '1'}, 'hours_since_burn': '13'},
{'tbsa': 27.0, 'major': True, 'total_ml': 7560, 'first_rate_ml_h': None}),
('infant head burn',
{'age_years': 0,
'weight_kg': 8,
'regions': {'head': '0.5', 'trunk_front': '0.5'},
'hours_since_burn': '2'},
{'tbsa': 18.0, 'major': True, 'total_ml': 576, 'first_rate_ml_h': 48.0})]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| adult anterior trunk | {'first_rate_ml_h': None, 'major': False, 'tbsa': 18.0, 'total_ml': 0} | {'first_rate_ml_h': None, 'major': False, 'tbsa': 18.0, 'total_ml': 0} | Passed |
| child legs use adjusted proportion | {'first_rate_ml_h': 112.5, 'major': True, 'tbsa': 22.5, 'total_ml': 1350} | {'first_rate_ml_h': 112.5, 'major': True, 'tbsa': 22.5, 'total_ml': 1350} | Passed |
| ten-year-old uses adult proportions | {'first_rate_ml_h': 315.0, 'major': True, 'tbsa': 27.0, 'total_ml': 3780} | {'first_rate_ml_h': 315.0, 'major': True, 'tbsa': 27.0, 'total_ml': 3780} | Passed |
| adult exactly 20 percent | {'first_rate_ml_h': 480.0, 'major': True, 'tbsa': 20.0, 'total_ml': 5760} | {'first_rate_ml_h': 480.0, 'major': True, 'tbsa': 20.0, 'total_ml': 5760} | Passed |
| child 12 percent is major | {'first_rate_ml_h': 70.2, 'major': True, 'tbsa': 11.7, 'total_ml': 842} | {'first_rate_ml_h': 70.2, 'major': True, 'tbsa': 11.7, 'total_ml': 842} | Passed |
| late arrival shortens first window | {'first_rate_ml_h': 7560.0, 'major': True, 'tbsa': 27.0, 'total_ml': 7560} | {'first_rate_ml_h': 7560.0, 'major': True, 'tbsa': 27.0, 'total_ml': 7560} | Passed |
| beyond eight hours | {'first_rate_ml_h': None, 'major': True, 'tbsa': 27.0, 'total_ml': 7560} | {'first_rate_ml_h': None, 'major': True, 'tbsa': 27.0, 'total_ml': 7560} | Passed |
| infant head burn | {'first_rate_ml_h': 28.8, 'major': True, 'tbsa': 10.8, 'total_ml': 346} | {'first_rate_ml_h': 28.8, 'major': True, 'tbsa': 10.8, 'total_ml': 346} | Passed |
SHA-256 / 0a070f9d9a4d50bc4da6973378b8c64a1829e9c82523b605a1ada8872271ae77
Verification & scope
A deterministic toy software model with explicitly stipulated thresholds and formulas; it is not clinical guidance, not a validated medical calculator, and makes no claim of conformance to any published protocol. Numbered variants vary patient and order inputs. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:47:25.782845+00:00.
Case digest / 72c6d90a1b2d0abb061763de862ff87fa0d8f50891f7e20962c889585efb1528