
    H`j                        d dl Z 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g adedz  ed	z  ed
z  dddedz  edz  edz  ddgZd Zd Zd Zd Zd Zd Zedk    rS	  ej         e                       dS # e$ r0Z ede ej                    ej        d           Y dZ[dS dZ[ww xY wdS )    N)datetimetimezone)Path   zstory/promotion-report.jsonz!script/pronunciation-lexicon.json	narrationzstory/spoken-narration.txtzstory/tts-pronunciation.txtzlog/tts-pronunciation.jsonT)kindsourceoutputreceiptrequired_only_if_presentintrozaudio/intro-voice-source.txtz#audio/intro-voice-pronunciation.txtz log/intro-tts-pronunciation.jsonFc                 N    t          j        |                                           S N)hashlibsha256	hexdigest)datas    script/prepare-pronunciation.py	sha_bytesr       s    >$))+++    c                 D    t          |                                           S r   )r   
read_bytes)paths    r   sha_filer   $   s    T__&&'''r   c                 p    t          j        dt          j        |           z   dz   t           j                  S )Nu   (?<![0-9A-Za-zÀ-ỹĐđ])u   (?![0-9A-Za-zÀ-ỹĐđ]))recompileescape
IGNORECASE)tokens    r   patternr!   (   s.    :3bi6F6FFIeegigtuuur   c                    t          t          d d          }d |D             }d                    d |D                       }t          j        d|z   dz   t          j                  }g }g }d	}d	}|                    |           D ]}	| ||	                                         }
|                    |
           |t          |
          z  }|	
                    d	          }||                                         }|d
         }|                    |           |                    ||d         ||	                                |	                                ||t          |          z   d           |t          |          z  }|	                                }|                    | |d                     d                    |          |fS )Nc                 ,    t          | d                   S )Nr	   )len)rows    r   <lambda>zproject.<locals>.<lambda>-   s    c#h-.@.@ r   T)keyreversec                 D    i | ]}|d                                           |S )r	   casefold.0r%   s     r   
<dictcomp>zproject.<locals>.<dictcomp>.   s*    BBB3X''))3BBBr   |c              3   J   K   | ]}t          j        |d                    V  dS )r	   N)r   r   r,   s     r   	<genexpr>zproject.<locals>.<genexpr>/   s0      HHBIc(m44HHHHHHr   u   (?<![0-9A-Za-zÀ-ỹĐđ])(?:u   )(?![0-9A-Za-zÀ-ỹĐđ])r   spokenr	   )r	   lexicon_sourcer2   source_start
source_endoutput_start
output_end )sortedLEXICONjoinr   r   r   finditerstartappendr$   groupr+   end)source_textordered	by_sourcealternativesrxpartsreplacementssource_cursoroutput_cursormatch	unchangedoriginalitemr2   s                 r   projectrN   ,   s   W"@"@$OOOGBB'BBBI88HHHHHHHL	(<7:WW

 
B ELMM[)) $ $ekkmm ;<	YY';;q>>**,,-hV"8n!KKMM))++)'#f++5
 
 	 	 	 	V$			LL]^^,---775>><''r   c                     | }t          |          D ]S}|d         }|d         }|||         |d         k    rt          d          |d |         |d         z   ||d          z   }T|S )Nr6   r7   r2   z$reverse verification offset mismatchr	   )reversedRuntimeError)output_textrG   textr%   r=   r@   s         r   reverse_projectionrT   O   s    D%% 9 9N#,c	?c(m++EFFFFUF|c(m+d344j8Kr   c            	      
   t          j        t          j        t	          t
          dz            dgt
                    } | j        rt          d          t          	                                st          d          t          	                                st          d          t          j        t                              d                    }|                    d	          d
us|                    d          dk    rt          d          d |                    dg           D             at          st          d          t          j        t                              d                    }|                    d          }|                    d	          d
us|st          d          g }t           D ]}|d         }|d         }|d         }|	                                st          d|           |                    d          }	|	                                st          d|           t%          |	          \  }
}t'          |
|          }|                    d          |	                    d          k    }g }t          D ]t+          t-          d                                       |	                    }t1          fd|D                       }d         o|d          p|dk    }|                    i |||d           d |D             }|o| }|j                            d
d
           |                    |
d           t;          |          t=          |
                    d                    k    rt          d          i d d!d	|d"|d"         d#|d$t	          |                    t
                              d%t;          |          d&t	          |                    t
                              d't;          |          d(t	          t                              t
                              d)t;          t                    d*|d+t+          |          d,|d-|d.dd/d0d1|d2tA          j!        tD          j#                  $                                i}|j                            d
d
           |                    t          j%        |d0d34          d5z   d           |st          d6|d"          d7|           |                    |d"         t+          |          |d'         d8           tM          t          j%        d
|d9d0:                     dS );Nz script/validate-workflow-copy.pyzpre-provider)cwdz#workflow-copy authority gate failedzpromotion report missingz%project pronunciation lexicon missingzutf-8)encodingverifiedTvoicezngoc-huyen-vbeez%project pronunciation lexicon invalidc                 \    g | ])}|d          |d         |                     d          du d*S )r	   r2   required_for_introT)r	   r2   required)getr,   s     r   
<listcomp>zmain.<locals>.<listcomp>f   sT        	 (m(m 455=	
 	
  r   entriesz#project pronunciation lexicon emptyspoken_sha256zpromotion authority invalidr	   r
   r   zmissing TTS source: zempty TTS source: c              3      K   | ]<}|d                                           d                                          k    8dV  =dS )r3   r	   r   Nr*   )r-   r%   rM   s     r   r1   zmain.<locals>.<genexpr>   sR      ###EUAVA_A_AaAaeijrese|e|e~e~A~A~AA~A~A~A~##r   r\   r   r   )r\   source_countreplacement_countc                 j    g | ]0}|d          |d         k    s|d         r|d          dk    (|d         1S )rb   rc   r\   r   r	    r,   s     r   r^   zmain.<locals>.<listcomp>   sX     
 
 
!>"c*=&>>>J ?$'$71$<$< M$<$<$<r   )parentsexist_okz'pronunciation output read-back mismatchversionr   r   source_canon_sha256source_pathsource_sha256projection_pathprojection_sha256lexicon_pathlexicon_sha256lexiconrc   rG   reverse_verifiednon_lexicon_changessemantic_content_changedFunresolved_required
checked_at   )ensure_asciiindent
zpronunciation gate failed for z: )r   rG   rm   )rX   sources)rw   )'
subprocessrunsys
executablestrPROJECT
returncoderQ   	PROMOTIONis_fileLEXICON_PATHjsonloads	read_textr]   r:   SOURCESstriprN   rT   encoder$   r!   findallsumr>   parentmkdir
write_textr   r   relative_tor   nowr   utc	isoformatdumpsprint)gatelexicon_doc	promotioncanonresultsspecr	   r
   receipt_pathrA   	projectedrG   reconstructedrq   countsrb   rc   r\   
unresolvedrX   r   rM   s                        @r   mainr   Z   s   >3>3w9[/[+\+\^lmsz{{{D B@AAA 75666!! DBCCC*\33W3EEFFKz""$..+//'2J2JN_2_2_BCCC  ??9b11  G  B@AAA
9...@@AAIMM/**E}}Z  ,,E,8999G 4E 4EhhI~~ 	@>f>>???&&&88  "" 	><F<<===")+"6"6	<*9lCC(//88K<N<Nw<W<WW 	@ 	@DwtH~66>>{KKLLL ########  J'f6P1Q-Q-eUadeUeHMM~T~xl}~~~
 
%+
 
 


 $6JD4888)g666Fy)9)9')B)BCCCCHIII
q

 DL
 "5	

 3v11'::;;
 Xf--
 s6#5#5g#>#>??
  &!1!1
 C 8 8 A ABB
 h|44
 v
  \!2!2
 L
  0
 "1
  '!
" ":#
$ (,x|44>>@@%
 
( 	!!$!>>>
7q Q Q QTX Xcjkkk 	^\V\\PZ\\]]]Vc,>O>Ofm  oB  gC  D  D  	E  	E  	E  	E	$*$7;;%
P
P
PQQQ1r   __main__zPronunciation gate blocked: )file)r   r   r   r{   r}   r   r   pathlibr   __file__resolverf   r   r   r   r:   r   r   r   r!   rN   rT   r   __name__exit	Exceptionexcr   stderrre   r   r   <module>r      s     				     



 ' ' ' ' ' ' ' '      
$x..
 
 
"
"
*1
-33	<<
 889999$(  ::AA??$) $, , ,( ( (v v v (  (  (F  Q Q Qh z   2S22DDDD s   B, ,C!1%CC!