"""本主题专属离线算法，仅读取同目录合成JSON，不联网、不控制设备。"""
import csv, json, math, re, struct
from pathlib import Path
from fractions import Fraction
BASE=Path(__file__).resolve().parent
data=json.loads((BASE/'input.json').read_text(encoding='utf-8'))['data']
def os(t):
 b=t.encode('ascii')+bytes([0]);return b+bytes((-len(b))%4)
packets=[os(a)+os(',i')+struct.pack('>i',n) for n,a in enumerate(data['addresses'],1)]
stream=b''.join(struct.pack('>i',len(p))+p for p in packets);chunks=[];at=0
for n in data['cuts']:
 if at<len(stream):chunks.append(stream[at:at+n]);at+=n
if at<len(stream):chunks.append(stream[at:])
cache=b'';out=[]
for chunk in chunks:
 cache+=chunk
 while len(cache)>=4:
  size=struct.unpack('>i',cache[:4])[0]
  assert 0<size<=data['max_packet'] and size%4==0
  if len(cache)<4+size:break
  out.append(cache[4:4+size]);cache=cache[4+size:]
assert out==packets and not cache
invalid=[-4,3,8192]
assert all(not(0<x<=data['max_packet'] and x%4==0) for x in invalid)
result={'chunks_hex':[c.hex() for c in chunks],'reassembled_hex':[p.hex() for p in out],'remaining_bytes':len(cache),'rejected_lengths':invalid}
(BASE/'result.json').write_text(json.dumps(result,ensure_ascii=False,indent=2)+'\n',encoding='utf-8')
print(json.dumps(result,ensure_ascii=False))
