{"abstract":"A persisted partial-response cache record keeps byte coverage and revision metadata intact: persistent records cannot assign the same byte to two fragments.","category":"HTTP ranges","checks":10,"contract":"Decode this stipulated local binary cache envelope: magic RG, version1, flags0, two-byte big-endian generation, two-byte big-endian complete length, one-byte fragment count, then fragments [two-byte big-endian offset,one-byte count,ASCII payload], followed by one checksum byte equal to sum of preceding bytes modulo256. Reject malformed envelopes, bytes outside0..255, trailing bytes, overlapping fragment ownership, or spans outside complete length. Return [generation,total,[[offset,payload],...]]. This is an invented bounded persistence format, not a public protocol.","evaluation_group":"s3-http_ranges-partial-cache-record","failed_approach":"The partial repair uses wire=x\nif len(wire)<10 or any(not 0<=b<=255 for b in wire): return None\nif wire[:2]!=[82,71]: return None\nif wire[2]!=1: return None\nif wire[3]!=0: return None\nif sum(wire[:-1])%256!=wire[-1]: return None\ngeneration=wire[4]*256+wire[5]\ntotal=wire[6]*256+wire[7]\ncount=wire[8]\npos=9\nparts=[]\nowned=set()\nfor _ in range(count):\n    if pos+3>len(wire)-1: return None\n    offset=wire[pos]*256+wire[pos+1]\n    size=wire[pos+2]\n    pos+=3\n    if pos+size>len(wire)-1 or offset+size>total: return None\n    if all(i in owned for i in range(offset,offset+size)) and size>1: return None\n    owned.update(range(offset,offset+size))\n    parts.append([offset,''.join(chr(b) for b in wire[pos:pos+size])])\n    pos+=size\nif pos!=len(wire)-1: return None\nreturn [generation,total,parts], which still violates the stated contract.","family":"s3-http_ranges-partial-cache-record-duplicate-ownership","id":"FA-27381","implementations":{"attempt":{"sha256":"b1611e1f030535c60942f65ccf6533d6ea9d31c9914fa411c13cab4ff6c43b6f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    wire=x\n    if len(wire)<10 or any(not 0<=b<=255 for b in wire): return None\n    if wire[:2]!=[82,71]: return None\n    if wire[2]!=1: return None\n    if wire[3]!=0: return None\n    if sum(wire[:-1])%256!=wire[-1]: return None\n    generation=wire[4]*256+wire[5]\n    total=wire[6]*256+wire[7]\n    count=wire[8]\n    pos=9\n    parts=[]\n    owned=set()\n    for _ in range(count):\n        if pos+3>len(wire)-1: return None\n        offset=wire[pos]*256+wire[pos+1]\n        size=wire[pos+2]\n        pos+=3\n        if pos+size>len(wire)-1 or offset+size>total: return None\n        if all(i in owned for i in range(offset,offset+size)) and size>1: return None\n        owned.update(range(offset,offset+size))\n        parts.append([offset,''.join(chr(b) for b in wire[pos:pos+size])])\n        pos+=size\n    if pos!=len(wire)-1: return None\n    return [generation,total,parts]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('duplicate-ownership fixture 0', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,1,N,1,2,2,0,0,2,97,98,1,0,2,99,100])))), json.loads(json.dumps([256+N,258,[[0,'ab'],[256,'cd']]])))\ncheck('duplicate-ownership fixture 1', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,0,0])))), json.loads(json.dumps([0,0,[]])))\ncheck('duplicate-ownership fixture 2', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,1,0,3,1,0,1,2,98,99])))), json.loads(json.dumps([1,3,[[1,'bc']]])))\ncheck('duplicate-ownership fixture 3', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,70,1,0,0,0,0,0,0])))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 4', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,2,0,0,0,0,0,0])))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 5', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,1,0,0,0,0,0])))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 6', json.loads(json.dumps(solve([82,71,1,0,0,0,0,0,0,0]))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 7', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,1,1,0,0,2,97,98])))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 8', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,2,2,0,0,1,97,0,0,1,97])))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 9', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,0,0,99])))), json.loads(json.dumps(None)))\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"c85f4afad08340400ab8e56872b42202c5245e95ba10455171e3735b90618f3b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    wire=x\n    if len(wire)<10 or any(not 0<=b<=255 for b in wire): return None\n    if wire[:2]!=[82,71]: return None\n    if wire[2]!=1: return None\n    if wire[3]!=0: return None\n    if sum(wire[:-1])%256!=wire[-1]: return None\n    generation=wire[4]*256+wire[5]\n    total=wire[6]*256+wire[7]\n    count=wire[8]\n    pos=9\n    parts=[]\n    owned=set()\n    for _ in range(count):\n        if pos+3>len(wire)-1: return None\n        offset=wire[pos]*256+wire[pos+1]\n        size=wire[pos+2]\n        pos+=3\n        if pos+size>len(wire)-1 or offset+size>total: return None\n        if False: return None\n        owned.update(range(offset,offset+size))\n        parts.append([offset,''.join(chr(b) for b in wire[pos:pos+size])])\n        pos+=size\n    if pos!=len(wire)-1: return None\n    return [generation,total,parts]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('duplicate-ownership fixture 0', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,1,N,1,2,2,0,0,2,97,98,1,0,2,99,100])))), json.loads(json.dumps([256+N,258,[[0,'ab'],[256,'cd']]])))\ncheck('duplicate-ownership fixture 1', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,0,0])))), json.loads(json.dumps([0,0,[]])))\ncheck('duplicate-ownership fixture 2', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,1,0,3,1,0,1,2,98,99])))), json.loads(json.dumps([1,3,[[1,'bc']]])))\ncheck('duplicate-ownership fixture 3', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,70,1,0,0,0,0,0,0])))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 4', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,2,0,0,0,0,0,0])))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 5', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,1,0,0,0,0,0])))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 6', json.loads(json.dumps(solve([82,71,1,0,0,0,0,0,0,0]))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 7', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,1,1,0,0,2,97,98])))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 8', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,2,2,0,0,1,97,0,0,1,97])))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 9', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,0,0,99])))), json.loads(json.dumps(None)))\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"d4cf3a59cdd491d000586ee97e7a5fe8f07aec25cd483ace302f4ded7010a455","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    wire=x\n    if len(wire)<10 or any(not 0<=b<=255 for b in wire): return None\n    if wire[:2]!=[82,71]: return None\n    if wire[2]!=1: return None\n    if wire[3]!=0: return None\n    if sum(wire[:-1])%256!=wire[-1]: return None\n    generation=wire[4]*256+wire[5]\n    total=wire[6]*256+wire[7]\n    count=wire[8]\n    pos=9\n    parts=[]\n    owned=set()\n    for _ in range(count):\n        if pos+3>len(wire)-1: return None\n        offset=wire[pos]*256+wire[pos+1]\n        size=wire[pos+2]\n        pos+=3\n        if pos+size>len(wire)-1 or offset+size>total: return None\n        if any(i in owned for i in range(offset,offset+size)): return None\n        owned.update(range(offset,offset+size))\n        parts.append([offset,''.join(chr(b) for b in wire[pos:pos+size])])\n        pos+=size\n    if pos!=len(wire)-1: return None\n    return [generation,total,parts]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('duplicate-ownership fixture 0', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,1,N,1,2,2,0,0,2,97,98,1,0,2,99,100])))), json.loads(json.dumps([256+N,258,[[0,'ab'],[256,'cd']]])))\ncheck('duplicate-ownership fixture 1', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,0,0])))), json.loads(json.dumps([0,0,[]])))\ncheck('duplicate-ownership fixture 2', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,1,0,3,1,0,1,2,98,99])))), json.loads(json.dumps([1,3,[[1,'bc']]])))\ncheck('duplicate-ownership fixture 3', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,70,1,0,0,0,0,0,0])))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 4', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,2,0,0,0,0,0,0])))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 5', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,1,0,0,0,0,0])))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 6', json.loads(json.dumps(solve([82,71,1,0,0,0,0,0,0,0]))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 7', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,1,1,0,0,2,97,98])))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 8', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,2,2,0,0,1,97,0,0,1,97])))), json.loads(json.dumps(None)))\ncheck('duplicate-ownership fixture 9', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,0,0,99])))), json.loads(json.dumps(None)))\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"Deterministic simplified range service, with stipulated local policies and already parsed trusted inputs; not a complete HTTP implementation. 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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"s3-http_ranges-partial-cache-record-duplicate-ownership","generated_at":"2026-09-29T14:41:24.567075+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Range responses combine representation identity, conditional requests, framing, and partial-object state.","repair":"Apply the bounded decision exactly: wire=x\nif len(wire)<10 or any(not 0<=b<=255 for b in wire): return None\nif wire[:2]!=[82,71]: return None\nif wire[2]!=1: return None\nif wire[3]!=0: return None\nif sum(wire[:-1])%256!=wire[-1]: return None\ngeneration=wire[4]*256+wire[5]\ntotal=wire[6]*256+wire[7]\ncount=wire[8]\npos=9\nparts=[]\nowned=set()\nfor _ in range(count):\n    if pos+3>len(wire)-1: return None\n    offset=wire[pos]*256+wire[pos+1]\n    size=wire[pos+2]\n    pos+=3\n    if pos+size>len(wire)-1 or offset+size>total: return None\n    if any(i in owned for i in range(offset,offset+size)): return None\n    owned.update(range(offset,offset+size))\n    parts.append([offset,''.join(chr(b) for b in wire[pos:pos+size])])\n    pos+=size\nif pos!=len(wire)-1: return None\nreturn [generation,total,parts]","root_cause":"The partial-cache-record-duplicate-ownership decision uses wire=x\nif len(wire)<10 or any(not 0<=b<=255 for b in wire): return None\nif wire[:2]!=[82,71]: return None\nif wire[2]!=1: return None\nif wire[3]!=0: return None\nif sum(wire[:-1])%256!=wire[-1]: return None\ngeneration=wire[4]*256+wire[5]\ntotal=wire[6]*256+wire[7]\ncount=wire[8]\npos=9\nparts=[]\nowned=set()\nfor _ in range(count):\n    if pos+3>len(wire)-1: return None\n    offset=wire[pos]*256+wire[pos+1]\n    size=wire[pos+2]\n    pos+=3\n    if pos+size>len(wire)-1 or offset+size>total: return None\n    if False: return None\n    owned.update(range(offset,offset+size))\n    parts.append([offset,''.join(chr(b) for b in wire[pos:pos+size])])\n    pos+=size\nif pos!=len(wire)-1: return None\nreturn [generation,total,parts].","sha256":"e9cd6200446c000494599e256929417ce53b6d11d818f81584f0f76105316827","title":"A persisted partial-response cache record keeps byte coverage and revision metadata intact: persistent records cannot assign the same byte to two fragments · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.167,"exit_code":1,"observations":[{"actual":[257,258,[[0,"ab"],[256,"cd"]]],"check":"duplicate-ownership fixture 0","expected":[257,258,[[0,"ab"],[256,"cd"]]],"passed":true},{"actual":[0,0,[]],"check":"duplicate-ownership fixture 1","expected":[0,0,[]],"passed":true},{"actual":[1,3,[[1,"bc"]]],"check":"duplicate-ownership fixture 2","expected":[1,3,[[1,"bc"]]],"passed":true},{"actual":null,"check":"duplicate-ownership fixture 3","expected":null,"passed":true},{"actual":null,"check":"duplicate-ownership fixture 4","expected":null,"passed":true},{"actual":null,"check":"duplicate-ownership fixture 5","expected":null,"passed":true},{"actual":null,"check":"duplicate-ownership fixture 6","expected":null,"passed":true},{"actual":null,"check":"duplicate-ownership fixture 7","expected":null,"passed":true},{"actual":[0,2,[[0,"a"],[0,"a"]]],"check":"duplicate-ownership fixture 8","expected":null,"passed":false},{"actual":null,"check":"duplicate-ownership fixture 9","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"duplicate-ownership fixture 0\", \"actual\": [257, 258, [[0, \"ab\"], [256, \"cd\"]]], \"expected\": [257, 258, [[0, \"ab\"], [256, \"cd\"]]], \"passed\": true}, {\"check\": \"duplicate-ownership fixture 1\", \"actual\": [0, 0, []], \"expected\": [0, 0, []], \"passed\": true}, {\"check\": \"duplicate-ownership fixture 2\", \"actual\": [1, 3, [[1, \"bc\"]]], \"expected\": [1, 3, [[1, \"bc\"]]], \"passed\": true}, {\"check\": \"duplicate-ownership fixture 3\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicate-ownership fixture 4\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicate-ownership fixture 5\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicate-ownership fixture 6\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicate-ownership fixture 7\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicate-ownership fixture 8\", \"actual\": [0, 2, [[0, \"a\"], [0, \"a\"]]], \"expected\": null, \"passed\": false}, {\"check\": \"duplicate-ownership fixture 9\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.579,"exit_code":1,"observations":[{"actual":[257,258,[[0,"ab"],[256,"cd"]]],"check":"duplicate-ownership fixture 0","expected":[257,258,[[0,"ab"],[256,"cd"]]],"passed":true},{"actual":[0,0,[]],"check":"duplicate-ownership fixture 1","expected":[0,0,[]],"passed":true},{"actual":[1,3,[[1,"bc"]]],"check":"duplicate-ownership fixture 2","expected":[1,3,[[1,"bc"]]],"passed":true},{"actual":null,"check":"duplicate-ownership fixture 3","expected":null,"passed":true},{"actual":null,"check":"duplicate-ownership fixture 4","expected":null,"passed":true},{"actual":null,"check":"duplicate-ownership fixture 5","expected":null,"passed":true},{"actual":null,"check":"duplicate-ownership fixture 6","expected":null,"passed":true},{"actual":null,"check":"duplicate-ownership fixture 7","expected":null,"passed":true},{"actual":[0,2,[[0,"a"],[0,"a"]]],"check":"duplicate-ownership fixture 8","expected":null,"passed":false},{"actual":null,"check":"duplicate-ownership fixture 9","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"duplicate-ownership fixture 0\", \"actual\": [257, 258, [[0, \"ab\"], [256, \"cd\"]]], \"expected\": [257, 258, [[0, \"ab\"], [256, \"cd\"]]], \"passed\": true}, {\"check\": \"duplicate-ownership fixture 1\", \"actual\": [0, 0, []], \"expected\": [0, 0, []], \"passed\": true}, {\"check\": \"duplicate-ownership fixture 2\", \"actual\": [1, 3, [[1, \"bc\"]]], \"expected\": [1, 3, [[1, \"bc\"]]], \"passed\": true}, {\"check\": \"duplicate-ownership fixture 3\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicate-ownership fixture 4\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicate-ownership fixture 5\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicate-ownership fixture 6\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicate-ownership fixture 7\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicate-ownership fixture 8\", \"actual\": [0, 2, [[0, \"a\"], [0, \"a\"]]], \"expected\": null, \"passed\": false}, {\"check\": \"duplicate-ownership fixture 9\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.814,"exit_code":0,"observations":[{"actual":[257,258,[[0,"ab"],[256,"cd"]]],"check":"duplicate-ownership fixture 0","expected":[257,258,[[0,"ab"],[256,"cd"]]],"passed":true},{"actual":[0,0,[]],"check":"duplicate-ownership fixture 1","expected":[0,0,[]],"passed":true},{"actual":[1,3,[[1,"bc"]]],"check":"duplicate-ownership fixture 2","expected":[1,3,[[1,"bc"]]],"passed":true},{"actual":null,"check":"duplicate-ownership fixture 3","expected":null,"passed":true},{"actual":null,"check":"duplicate-ownership fixture 4","expected":null,"passed":true},{"actual":null,"check":"duplicate-ownership fixture 5","expected":null,"passed":true},{"actual":null,"check":"duplicate-ownership fixture 6","expected":null,"passed":true},{"actual":null,"check":"duplicate-ownership fixture 7","expected":null,"passed":true},{"actual":null,"check":"duplicate-ownership fixture 8","expected":null,"passed":true},{"actual":null,"check":"duplicate-ownership fixture 9","expected":null,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"duplicate-ownership fixture 0\", \"actual\": [257, 258, [[0, \"ab\"], [256, \"cd\"]]], \"expected\": [257, 258, [[0, \"ab\"], [256, \"cd\"]]], \"passed\": true}, {\"check\": \"duplicate-ownership fixture 1\", \"actual\": [0, 0, []], \"expected\": [0, 0, []], \"passed\": true}, {\"check\": \"duplicate-ownership fixture 2\", \"actual\": [1, 3, [[1, \"bc\"]]], \"expected\": [1, 3, [[1, \"bc\"]]], \"passed\": true}, {\"check\": \"duplicate-ownership fixture 3\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicate-ownership fixture 4\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicate-ownership fixture 5\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicate-ownership fixture 6\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicate-ownership fixture 7\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicate-ownership fixture 8\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicate-ownership fixture 9\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}