
    C\jr                        d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ  ee          	                                j
        d         Zedz  Zedz  Zedz  Zedz  Z ej        d	ej                  Z ej        d
ej                  Z ej        dej                  Zd Zd Zd Zd Zd Zd Zedk    r ej         e                       dS dS )    N)datetimetimezone)Path   storyzscript/outline.jsonzscript/identity-registry.jsonzpromotion-report.jsonu   [\wÀ-ỹĐđ]+uP   ^\s*(?:chương|phần|cảnh|chapter|part|scene)\s+(?:\d+|[ivxlcdm]+)\s*[:.\-]?u3   \[(?:sfx|music|nhạc|âm thanh|pause|transition)\]c                 r    t          j        |                                                                           S N)hashlibsha256encode	hexdigesttexts    script/validate-story.pyshar      s&    >$++--((22444    c                 6    t                               |           S r	   )WORD_REfindallr   s    r   wordsr      s    ??4   r   c                 j    d                     d | D                                                       dz   S )Nz

c              3   >   K   | ]}|                                 V  d S r	   )strip).0r   s     r   	<genexpr>zexact_join.<locals>.<genexpr>   s*      66tzz||666666r   
)joinr   )textss    r   
exact_joinr      s4    ;;6666666<<>>EEr   c                    | }t                      }|d         D ]}t          t          |                    dg           |                    dg           z   |                    dg           z   |d         gz             t          d          }|D ]:}t	          j        dt	          j        |           d	d
|t          j                  };|                    |                    dg                      d}g }t          |          D ]O}	t	          j	        d| t	          j        |	           d	          t	          j	        dt	          j        |	           d          t	          j	        dt	          j        |	           d          g}
|
D ]}|
                    |          D ]}|                    |	|                    dd|                                          dz   |t          d|                                dz
            |                                dz                                            d           t          |          dk    r|c c c S ːQ|S )N
charactersallowed_narrative_namesallowed_title_namesrole_address	full_nameT)keyreverseu   (?<![\wÀ-ỹĐđ])u   (?![\wÀ-ỹĐđ]) )flagsforbidden_bare_namesug   (?:cô|anh|chị|ông|bà|cậu|em|gọi|hỏi|bảo|đáp|quát|nhìn|nói với|thì thầm với)\s+u   (?i)(?<![\wÀ-ỹĐđ])z[,;:]\s*z
\s*[,!?.:]u
   [\"“]\s*r   r   r   <   P   )fragmentlinecontext2   )setsortedgetlenresubescapeIupdatecompilefinditerappendcountstartmaxendr   )r   registryscrubbed	fragmentsentityallowedvalueleadhitsr-   patternspatternmatchs                r   identity_hitsrL      s   HI<( A A

4b99FJJG\^`<a<aadjdndno}  @B  eC  eC  C  GM  NY  GZ  F[  [  \  \
 
 

  	v 	vEvYRYu5E5EYYY[^`hprptuuuHH$:B??@@@@uDD9%% 
  
 J_$_	(8K8K___``JB29X#6#6BBBCCJDRYx%8%8DDDEE

   	  	 G ))(33    8>>$PQSXS^S^S`S`;a;ade;erz{~  @A  CH  CN  CN  CP  CP  SU  CU  |V  |V  W\  W`  W`  Wb  Wb  eg  Wg  |g  sh  sn  sn  sp  sp  q  q  r  r  rt99??KKKKKKK # 	 
 Kr   c                    g d}g }|D ]\  }}}d                     | d |                   }t          j        ||t          j        t          j        z            D ]}|t          d|                                dz
            |                                dz            }t          j        d|d d         t          j        t          j        z            rz|	                    ||dz   |d            |S )	N))   nine_plates_table_swapu   (?:chín|9) (?:chiếc )?đĩa.{0,240}?(?:đổi bàn|chuyển bàn|thẻ phục vụ lệch)|(?:đổi bàn|chuyển bàn).{0,220}?(?:chín|9) (?:chiếc )?đĩa)   duplicate_label_jobu   (?:hàng đợi|máy in|lệnh in).{0,220}?(?:lệnh trùng|thứ mười|chèn lệnh).{0,180}?(?:Nhã Tâm|rời trạm)|(?:Nhã Tâm|rời trạm).{0,220}?(?:lệnh trùng|thứ mười|chèn lệnh))   post_cook_allergenu   (?:mẫu xốt|mẫu lưu).{0,260}?(?:chất gây dị ứng|hạnh nhân).{0,180}?(?:sau khi chia|sau công đoạn|đưa vào sau)|(?:đưa vào sau|sau khi chia).{0,220}?(?:mẫu xốt|mẫu lưu))	   minh_uy_order_and_motiveu   Hứa Minh Uy.{0,280}?(?:ra lệnh|chỉ đạo).{0,180}?(?:chín|9) (?:chiếc )?đĩa.{0,220}?(?:chiếm công thức|loại Nhã Tâm)|(?:chiếm công thức|loại Nhã Tâm).{0,260}?Hứa Minh Uyr   r   x   uw   (?:chưa|không)\s+(?:đủ|thể).{0,120}?(?:chứng minh|xác định|kết luận)|(?:nghi|nếu|có thể).{0,120}$   r   )revealbefore_chapterexcerpt)
r   r5   r;   r8   Sr?   r>   r@   searchr<   )	chapterschecksrH   beforer&   rJ   earlyrK   r/   s	            r   reveal_hitsra   ;   s1     F D &  W		(7F7+,,[%== 	 	EC5;;==3#677		c8IIJGy  T  V]  ^b  _b  ^b  Vc  eg  ei  ln  lp  ep  q  q KK3&1*QXYYZZZKr   c                  
   g } t          j        t                                                    }t          j        t                                                    }t          |d                   }d t          d|dz             D             }g }g }t          |d          D ]\  }}|                                s/| 	                    d|d           |	                    d           I|                                }	|	                    |	           |	                    |t          |                    t                              t          t          |	                    t          |	          d           |	                                s| 	                    d|d           t          |	                                d          D ]q\  }
}t"                              |          r| 	                    d	|dd
|
            t&                              |          r| 	                    d|dd
|
            rt*          dz  }|                                r|                                nd}|s| 	                    d           t-          |          rt/          |          nd}|r|r||k    r| 	                    d           t          t          |                    }|d         \  }}||cxk    r|k    sn | 	                    d|            t          |                                d          D ]i\  }
}t"                              |          r| 	                    d|
            t&                              |          r| 	                    d|
            j|rt1          ||          ng }|r%| 	                    dt          |                      t-          |          rt3          |          ng }|r%| 	                    dt          |                      i ddd| sdndd|  d|d         d|dt5          d |D                       d|dt          |                    t                              d |d!||gd"|rt7          |d#z  d$          nd%d&|rt          |          nd d'|d(|d)| d*t9          j        t<          j                                                   }tB          "                    t          j#        |d+d,-          d.z              tI          t          j#        |d         |d         || d d/         t          tB                    d0d+1                     |d         rd%ndS )2Nr]   c                 0    g | ]}t           d z  |ddz  S )r]   02dz.txt)STORY)r   indexs     r   
<listcomp>zmain.<locals>.<listcomp>S   s.    YYYUZU"4"4"4"44YYYr   r   zmissing_chapter:rd    )chapterpathr   r   zempty_chapter:zheading::zproduction_marker:zspoken-narration.txt!missing_or_empty_spoken_narration*spoken_narration_not_exact_sequential_joinallowed_word_rangezword_count_out_of_range:zheading_in_spoken:zproduction_marker_in_spoken:zstandalone_identity_fragments:zprotected_reveal_too_early:versionstatuspassedfailedverifiedcanonical_titleexpected_chapterschapters_presentc              3   >   K   | ]}|                                 V  d S r	   )exists)r   rj   s     r   r   zmain.<locals>.<genexpr>   s*      @@$@@@@@@r   chapter_rowsspoken_narrationtotal_wordstarget_rangeestimated_minutes_at_baselineg(\*m@   r   spoken_sha256rL   protected_reveal_hitsissues
checked_atF   )ensure_asciiindentr      )rs   r]   r{   r   report)r   )%jsonloadsOUTLINE	read_textIDENTITYr4   range	enumeraterx   r<   strrelative_toPROJECTr   r   r   
splitlines
HEADING_RErK   PRODUCTION_REr\   re   allr   rL   ra   sumroundr   nowr   utc	isoformatREPORT
write_textdumpsprint)r   outlinerA   expectedpathsr   rowsrf   rj   r   line_numberr.   narration_path	narrationexpected_textr=   lowhighids	protectedr   s                        r   mainr   N   sN   Fj**,,--Gz(,,..//H7:&''HYY%8VW<BXBXYYYEED ** N Nt{{}} 	MM8U888999LL~~Ts43C3CG3L3L/M/MX[\abf\g\gXhXhtwx|t}t}~~zz|| 	8MM65666777!*4??+<+<a!@!@ 	N 	NK%% DBBBB[BBCCC##D)) NL5LLL{LLMMM		N
 33N.<.C.C.E.EM((***2I ;9:::),U;Ju%%%M D] DyM'A'ABCCCi  !!E,-IC%4888999&y';';'='=qAA H HTD!! 	>MM<{<<===%% 	HMMFFFGGG09
A-	8
,
,
,rC
 CAs3xxAABBB&)%jj8E"""bI FDC	NNDDEEE1&6((h 	J 	7#45	
 	X 	C@@%@@@@@ 	 	C : :7 C CDD 	u 	d 	(U)Quv~q)A)A)APQ 	9>Y$ 	 	  	&  	hl8<00::<<!F$ djeAFFFMNNN	$*&"4&I[B\mr  E  FI  GI  FI  J  VY  Z`  Va  Va  b  b  qv  w  w  w  x  x  xz")11)r   __main__)r
   r   r5   sysr   r   pathlibr   __file__resolveparentsr   re   r   r   r   r:   UNICODEr   r8   r   r   r   r   r   rL   ra   r   __name__exit r   r   <module>r      sy     				 



 ' ' ' ' ' ' ' '      
$x..
 
 
"
"
*1
-'
)
)44	(	(
"*'
4
4RZkmomqrr

QSUSWXX5 5 5! ! !F F F  8  &A* A* A*H zCHTTVV r   