#!/usr/bin/env python3
from pathlib import Path
import json,re
root=Path(__file__).resolve().parents[1];low=(root/'script/script_blushing.txt').read_text().lower()
def a(*xs):return any(x in low for x in xs)
def ctx(ns,cs,r=900):
 ps=[i for n in ns for i in range(len(low)) if low.startswith(n,i)]
 return any(any(c in low[max(0,p-r):p+r] for c in cs) for p in ps)
g={
'vasodilation':a('giãn mạch','mạch máu giãn') and a('lưu lượng máu') and a('mặt') and a('cổ') and a('ngực'),
'distinct':a('không giống đổ mồ hôi','khác đổ mồ hôi','khác với đổ mồ hôi','không phải mồ hôi') and a('flushing','đỏ bừng'),
'social':a('xấu hổ','hổ thẹn') and a('bị chú ý','ánh mắt','đánh giá xã hội') and a('tự ý thức'),
'autonomic':a('tự chủ','autonomic') and a('giao cảm','sympathetic') and a('không thể quy','không nên quy','không phải chỉ','không nên coi đây chỉ','không có một chất','không duy nhất'),
'visibility':a('mạch máu nông','gần bề mặt') and a('màu da','sắc tố') and a('ánh sáng','ánh đèn') and a('da sẫm','da tối màu','nhiều sắc tố'),
'differential':all(a(x) for x in ['nóng','vận động','đồ cay','rượu','mãn kinh','thuốc','rosacea','sốt']),
'allergy':a('dị ứng') and a('phản vệ') and a('mề đay','nổi mẩn') and a('sưng') and a('khò khè','khó thở'),
'hypotheses':a('xoa dịu','appeasement') and a('vi phạm chuẩn mực','chuẩn mực') and a('niềm tin','tin cậy','lòng tin') and a('giả thuyết','có thể','không phải lúc nào'),
'loop':a('vòng lặp','vòng phản hồi') and a('người khác nhận ra','người khác thấy','ai cũng sẽ thấy') and a('kích hoạt','căng thẳng') and a('không tất yếu','không phải lúc nào','có thể'),
'practical':a('thở ra chậm') and a('thả lỏng vai','thư giãn vai','thả vai') and a('hàm') and a('chú ý ra ngoài','trở lại cuộc trò chuyện','chuyển chú ý ra ngoài') and a('thừa nhận','nói thẳng','trung tính') and a('tiếp xúc dần','tiếp xúc dần dần','phơi nhiễm dần') and a('cbt','nhận thức hành vi'),
'danger':a('nước đá','chườm đá','bỏng lạnh') and a('co mạch') and a('rượu') and a('beta-blocker','chẹn beta') and a('không tự','không nên tự'),
'cosmetic':a('trang điểm','che khuyết điểm','ngụy trang') and a('không chữa','không phải cách chữa','không loại bỏ cơ chế'),
'safety':a('đau đầu dữ dội') and a('đánh trống ngực','tim đập','tim đập nhanh') and a('ngất') and a('tiêu chảy') and a('sụt cân','giảm cân') and a('sốt') and a('thuốc mới','sau khi dùng thuốc','sau thuốc') and a('đau mắt') and a('rosacea') and a('đánh giá','khám'),
'closing':a('máy phát hiện nói dối') and a('bản án đạo đức','phán quyết đạo đức') and a('phản ứng tự chủ','thay đổi lưu lượng máu') and a('ánh nhìn xã hội','được nhìn thấy')
}
s={'Darwin':ctx(('darwin','1872'),('đỏ mặt','xã hội','biểu hiện')),'Social':ctx(('leary','crozier'),('tự chú ý','tự ý thức','đánh giá xã hội')),'Drummond':ctx(('drummond','tâm sinh lý','psychophysiology'),('lưu lượng máu','giao cảm','mạch máu'))};f={x:bool(re.search(rf'(?<![\wÀ-ỹ]){x}(?![\wÀ-ỹ])',low)) for x in ['tôi','chúng ta','chúng tôi']};ok=all(g.values()) and all(s.values()) and not any(f.values());print(json.dumps({'groups':g,'sources':s,'forbidden':f,'status':'PASS' if ok else 'FAIL'},ensure_ascii=False));raise SystemExit(0 if ok else 1)
