
    1$jW                       S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKJrJ	r	  S SK
Jr  \" \5      R                  5       R                  r\S-  S-  r\S-  r\S-  r\S	-  r\S
-  rSr1 Sk1 Sk1 Sk1 Sk1 Sk1 Sk1 SkS.r0 rS,S jr\R3                  5        H  u  rr\ H  r\\\" \5      '   M     M     S-S jrS.S jr\4S/S jjrS,S jr S0S jr!S1S jr"S,S jr#S2S jr$S3S jr%S4S jr&S5S jr'S6S  jr(S7S! jr)S8S" jr*S9S# jr+S:S$ jr,S;S% jr-S<S& jr.S.S' jr/\4S=S( jjr0\\4S>S) jjr1S?S* jr2\3S+:X  a  \4" \2" \Rj                  5      5      eg)@    )annotationsN)datetimetimezone)PathDATABASEzGRAFO_D_DATABASE.sqliteGRAPH_IMPORTzgraph_inbox.txtimportedrejectedUncategorized>   GRAFOGRAPHTITLETITULO   TÍTULO   TÍTULO DEL GRAFO
GRAPH NAMEGRAPH TITLENOMBRE GRAFONOMBRE DEL GRAFOTITULO DEL GRAFO>   NAMEr   EVENTONOMBREr   r   
EVENT NAMENOMBRE DEL EVENTO>
   ANODATETIMEWHENYEARFECHACUANDO	TIMESTAMP   AÑO   CUÁNDO>   SITELUGARPLACEREGIONLOCATION	UBICACION   REGIÓN
   UBICACIÓN>   WHOACTORQUIENACTORSAUTHORAUTHORSAUTORESPERSONAPERSONASORGANIZACIONORGANIZATION   QUIÉN   ORGANIZACIÓN>   BRIEFNOTASNOTESDETAILDETALLERESUMENABSTRACTDESCRIPCIONDESCRIPTION   DESCRIPCIÓNBRIEF DESCRIPTION>   URLLINKURLSLINKSFUENTESOURCEFUENTESSOURCES
REFERENCIAREFERENCIASBIBLIOGRAFIA   BIBLIOGRAFÍA)
graph_namenamedateplacewhobrief_descriptionsource_linkc                $   [        U =(       d    S5      n [        R                  " SU 5      n SR                  S U  5       5      n U R	                  5       n [
        R                  " SSU 5      n [
        R                  " SSU 5      R                  5       $ )N NFKDc              3  `   #    U  H$  n[         R                  " U5      (       a  M   Uv   M&     g 7fNunicodedata	combining.0chs     import_graph_inbox.py	<genexpr>_norm_label.<locals>.<genexpr>7   s     H2k.C.CB.GBB   .	.
[^A-Z0-9]+ \s+)strr_   	normalizejoinupperresubstrip)values    rd   _norm_labelrs   4   so    E!!&%0EGGHHHEKKMEFF=#u-E66&#u%++--    c                 h    [         R                  " [        R                  5      R	                  S5      $ )Nz%Y-%m-%dT%H:%M:%SZ)r   nowr   utcstrftime rt   rd   now_isorz   B   s!    <<%../CDDrt   c                     [         R                  SS9  [        R                  SS9  [        R                  SS9  [        R                  5       (       d  [        R                  SSS9  g g )NT)exist_okrZ   utf-8encoding)
IMPORT_DIRmkdirIMPORTED_DIRREJECTED_DIR
INBOX_FILEexists
write_textry   rt   rd   ensure_import_dirsr   F   s\    d#%%b73 rt   c                    [         R                  " [        U 5      SS9n[         R                  Ul        UR                  S5        UR                  S5        UR                  S5        U$ )N   )timeoutzPRAGMA foreign_keys = ONzPRAGMA journal_mode = WALzPRAGMA busy_timeout = 5000)sqlite3connectrk   Rowrow_factoryexecute)db_pathcons     rd   
connect_dbr   N   sM    
//#g,
3CkkCOKK*+KK+,KK,-Jrt   c                   [        U =(       d    S5      R                  SS5      R                  SS5      n / nU R                  S5       HB  nUR                  5       nUR	                  S5      (       d  US:X  a  M1  UR                  U5        MD     SR                  U5      R                  5       n [        R                  " SSU 5      n U R                  S	5      $ )
NrZ   

```z***z\n{3,}z

z 	
`)	rk   replacesplitrq   
startswithappendrm   ro   rp   )rr   lineslinestrippeds       rd   clean_valuer   W   s    $$VT2::4FEED!::<u%%U):T	 "
 IIe""$EFF9fe,E;;x  rt   c                T    [        [        R                  " SU =(       d    S5      5      $ )Nz^\s*(?:\*{3,}|-{3,}|_{3,})\s*$rZ   )boolro   match)r   s    rd   is_separatorr   d   s    :DJBGHHrt   c                ,   [        U =(       d    S5      R                  5       nU(       a  [        U5      (       a  g[        R                  " SSU5      R                  5       n[        R
                  " S[        U5      5      (       a  gUR                  S5      R                  5       nSnSU;   a'  UR                  SS5      u  pEUnUR                  5       nOUnUR                  S5      R                  5       n[        R                  [        U5      5      U4$ )NrZ   NrZ   ^\s*#{1,6}\s*z^(NODO|NODE)\s*[-#:]?\s*\d*\b*:   )
rk   rq   r   ro   rp   r   rs   r   _ALIAS_TO_FIELDget)r   rawprobeinlineleftright
label_parts          rd   label_from_liner   h   s    
djb/


!C,s##FF#R-335E	xx0+e2DEEKK""$EF
e|kk#q)

!!#&,,.J{:67??rt   c                    [        U =(       d    S5      R                  5        H  n[        U5      nU(       d  M  Us  $    gr   )rk   
splitlinesr   )rr   r   s     rd   first_nonempty_liner      s7    EKR ++-4 4K . rt   c                L   / n[        U[        U 5      5       Hp  nX   n[        U5      (       a  U(       a    OTM"  [        U5      u  pVUb    O@[        R
                  " SU[        R                  S9(       a    OUR                  U5        Mr     [        SR                  U5      5      $ )N^\s*#{1,6}\s+(NODO|NODE)\bflagsr   )
rangelenr   r   ro   r   Ir   r   rm   )r   start	collectedjr   field_s          rd   read_value_afterr      s    I5#e*%x"4(8814rttD &  tyy+,,rt   c                .   U R                  SS5      R                  SS5      R                  S5      n0 nSnU[        U5      :  GaO  [        X   5      u  pEUc  US-  nM)  / nU(       a  UR	                  U5        US-   nU[        U5      :  a  [        X   5      (       a  U(       a  OoUS-  nM0  [        X   5      u  pUb  OU[        R                  " SX   [        R                  S9(       a  O)UR	                  X   5        US-  nU[        U5      :  a  M  [        SR                  U5      5      n
U
(       a>  US:X  a4  [        R                  " S	U
5      nU(       a  SR                  U5      OU
X$'   OXU'   [        XsS-   5      nU[        U5      :  a  GMO  U$ )
Nr   r   r   r   r   r   r   rX   https?://\S+)r   r   r   r   r   r   ro   r   r   r   rm   findallmax)blockr   fieldsir   r   value_linesr   
next_fieldr   rr   urlss               rd   extract_fieldsr      sk   MM&$'//d;AA$GEF	A
c%j.'1=FAv&E#e*nEH%%Q+EH5MJ%xx5uxrttLux(FA #e*n" DIIk23%zz/5937		$U %uq5MI c%j.L Mrt   c                :   [        U 5      nUR                  S5      (       a  [        US   5      $ U R                  SS5      R                  SS5      R	                  S5      n[        U5       Ho  u  p4[        U5      u  pVUS:X  d  M  U(       a,  [        U5      R                  5       S   R                  5       s  $ [        X#S-   5      nU(       d  Md  [        U5      s  $    US S  H  n[        R                  " SS	U5      R                  5       nUR                  S
5      R                  5       nU(       a  [        U5      (       a  Ma  [        U5      [        ;   a  Mv  [        R                   " SU[        R"                  S9(       a  M  [%        U5      S::  d  M  Us  $    g)NrR   r   r   r   r   r   r   r   rZ   r   ^(NODO|NODE)\br   x   GRAPH_INBOX)r   r   r   r   r   	enumerater   r   r   rq   r   ro   rp   r   rs   r   r   r   r   )	textr   r   r   r   r   r   rr   ss	            rd   extract_graph_namer      sI   D!Fzz,"6,#788LL&..tT:@@FEU#'-L "6*557:@@BB$UE2Eu*511 $ cr
FF#R.446GGCL LOOq>_,88%q5q6S=H  rt   c                  ^ U R                  SS5      R                  SS5      n [        R                  " S5      n[        UR	                  U 5      5      nU(       a  / n[        U5       Hs  u  pEUR                  5       nUS-   [        U5      :  a  X$S-      R                  5       O
[        U 5      nXU R                  5       nU(       d  Mb  UR                  U5        Mu     U$ [        R                  " SU 5      n	/ n
U	 Hb  n[        U5      m[        U4S jS 5       5      nUS	:  d  M+  TR                  S
5      (       d  MC  U
R                  UR                  5       5        Md     U
 Vs/ s H  o(       d  M  UPM     sn$ s  snf )Nr   r   r   z8(?im)^\s*(?:#{1,6}\s*)?(?:NODO|NODE)\s*[-#:]?\s*\d*\b.*$r   z"(?m)^\s*(?:\*{3,}|-{3,}|_{3,})\s*$c              3  X   >#    U  H  nTR                  U5      (       d  M  S v   M!     g7f)r   N)r   )rb   kr   s     rd   re   $split_node_blocks.<locals>.<genexpr>   s$     i"WQ[a[e[efg[hqq"Ws   *	*)rS   rT   rU   rV   rW      rT   )r   ro   compilelistfinditerr   r   r   rq   r   r   r   sumr   )r   node_rematchesblocksidxr   r   endr   chunks
candidateschunkevidencecr   s                 @rd   split_node_blocksr      s<   <<%--dD9DjjTUG7##D)*G#G,JCKKME.1AgG.D''"((*#d)CsO))+Eue$ - XX;TBFJ&i"Wiiq=VZZ//ekkm,	  "'z!QAz'''s   &
E=4E=c           	     r   [        U 5      n[        R                  " SSU5      R                  5       nUR	                  SS5      n[        R                  " SSU5      nU(       d  [        S5      eSS jn[        R                  " S	U5      nU(       aR  U" [        UR                  S
5      5      [        UR                  S5      5      [        UR                  S5      5      5      $ [        R                  " SU5      nU(       a:  U" [        UR                  S
5      5      [        UR                  S5      5      S 5      $ [        R                  " SU5      nU(       aR  U" [        UR                  S5      5      [        UR                  S5      5      [        UR                  S
5      5      5      $ [        R                  " SU5      nU(       a"  U" [        UR                  S
5      5      S S 5      $ [        R                  " SU5      nU(       a"  U" [        UR                  S5      5      S S 5      $ [        SU  35      e)Nz
\[[^\]]+\]rZ   u   −-rj   ri   zdate is requiredc                   [        U 5      n U S:X  d  U S:  d  U S:  a  [        SU  35      eUc  [        U 5      U S S 4$ [        U5      nUS:  d  US:  a  [        SU 35      eUc  U S:  a  U  SUS	 3OU S
 SUS	 3XS 4$ [        U5      nUS:  d  US:  a  [        SU 35      eU S:  a  U  SUS	 SUS	 3OU S
 SUS	 SUS	 3XU4$ )Nr   ii?B zyear out of range: r      zmonth out of range: r   02d04d   zday out of range: )int
ValueErrorrk   )ymds      rd   checkparse_date.<locals>.check  s   F6Q[AJ21#6779q61dD((Fq5AF3A37889%&UaS!C>1S'1S'0BA$NNFq5AF1!566)*Q!AaWAaW%qgQqgQqg4NPQVWWWrt   z9^\s*(-?\d{1,6})\s*[-/]\s*(\d{1,2})\s*[-/]\s*(\d{1,2})\s*$r   r      z&^\s*(-?\d{1,6})\s*[-/]\s*(\d{1,2})\s*$z9^\s*(\d{1,2})\s*[-/]\s*(\d{1,2})\s*[-/]\s*(-?\d{1,6})\s*$z^\s*(-?\d{1,6})\s*$z(?<!\d)-?\d{1,6}(?!\d)r   zunsupported date format: )NN)	r   ro   rp   rq   r   r   searchr   group)rr   r   r   r   s       rd   
parse_dater     s   
e
C
&&C
(
.
.
0C
++eS
!C
&&c
"C+,,X* 			NPSTAS_c!''!*os1771:GG
		;SAAS_c!''!*ot<<
		NPSTAS_c!''!*os1771:GG
		(#.AS_dD11
		+S1AS_dD11
08
99rt   c                <   [         R                  " S[        U =(       d    S5      5      nSR                  S U 5       5      nUR	                  5       n[
        R                  " SSU5      n[
        R                  " SSU5      R                  5       nU=(       d    SS S $ )	Nr[   rZ   c              3  `   #    U  H$  n[         R                  " U5      (       a  M   Uv   M&     g 7fr]   r^   ra   s     rd   re   $row_key_from_name.<locals>.<genexpr>:  s     F"K,A,A",E22rg   rh   ri   rj   r   P   )r_   rl   rk   rm   rn   ro   rp   rq   )rS   r   s     rd   row_key_from_namer   8  sz      TZR9D77FFFD::<D66-d+D66&#t$**,D!M3B''rt   c                   / nU R                  5        H  n[        U5      S   b  M  [        R                  " SU[        R                  S9(       a  M?  [        R
                  " SU5      (       a  M]  [        U5      (       d$  UR                  5       R                  S5      (       a  M  UR                  U5        M     [        SR                  U5      5      $ )Nr   r   r   z	https?://r   r   )r   r   ro   r   r   r   r   rq   r   r   r   rm   )r   r   r   s      rd   fallback_descriptionr  A  s    E  "4 #/8814rttD99\4((!8!8!?!?T # tyy'((rt   c                   [        U =(       d    S5      R                  5       n U (       d  [        S5      e[        U 5      n[	        U 5      nU(       d  [        S5      e/ n/ n[        USS9 GH  u  pV[        U5      n[        R                  " SU5      nU(       a*  UR                  S5      (       d  SR                  U5      US'   [        UR                  S	S5      5      n	U	(       di  [        R                  " S
U5      n
U
 HL  n[        R                  " SUR                  5       [        R                  S9(       a  M<  UR                  5       n	  O   [        UR                  SS5      5      nU	(       a  U(       d  UR                  SU S35        GM%   [        U5      u  pnnUR                  SS5      =(       d    [#        U5      nUR                  [%        U5      S-   U	UUUUUR                  SS5      UR                  SS5      UUR                  SS5      SS.5        GM     U(       d+  U(       a  SR                  USS  5      OSn[        SU 35      eXU4$ ! [          a'  nUR                  SU SU< SU 35         S nAGM  S nAff = f)NrZ   zgraph_inbox.txt is emptyzno node/event blocks detectedr   r   r   rX   r   rS   z(?m)^\s*#{1,6}\s+(.+?)\s*$r   r   rT   znode z skipped: missing name or datez skipped: invalid date z: rW   rU   rV   graph-inbox-txt)index
event_name	date_text	date_year
date_monthdate_dayrU   rV   rW   rX   api_textz; zno valid nodeszno valid nodes parsed: )rk   rq   r   r   r   r   r   ro   r   r   rm   r   r   r   r   r   	Exceptionr  r   )r   rR   r   nodeswarningsr   r   r   r   rS   headingshdate_rawr  r	  r
  r  excbriefdetails                       rd   parse_graph_textr  P  s9   tzr?  "D344#D)Jt$F899EHa0
&zz/51

=11$(IIdOF=!"6::fb#9:zz"?GHxx 11779BDDII779D 
 'vzz&"'=>8OOeC5(FGH	9CH9M6I*h
 

.3R7KE7RZ!^""$ ZZ,::eR(!&!::mR8)
 	; 1V -58BC=);K26(;<<h&&1  	OOeC5(?|2cUST	s   I
J	"JJ	c                   [        5       nU R                  SU45      R                  5       nU(       a.  U R                  SU[        US   5      45        [        US   5      $ U R                  SXU45      n[        UR                  5      $ )Nz%SELECT id FROM folders WHERE name = ?z5UPDATE folders SET is_open=1, updated_at=? WHERE id=?idzNINSERT INTO folders(name, is_open, created_at, updated_at) VALUES (?, 1, ?, ?))rz   r   fetchoner   	lastrowid)r   rS   tsrowcurs        rd   ensure_folderr    s    	B
++=w
G
P
P
RC
KbRUVYZ^V_R`Mab3t9~
++X	2C s}}rt   c                    [        U5      nUnSnU R                  SU45      R                  5       (       a4  U SU 3nUS-  nU R                  SU45      R                  5       (       a  M4  U$ )Nr   z'SELECT id FROM graphs WHERE row_key = ?r   r   )r   r   r  )r   base	candidatens       rd   unique_row_keyr$    sr    T"DI	A
++?)
N
W
W
Y
YfAaSM		Q ++?)
N
W
W
Y
Y rt   c           	        [        5       nU R                  S5      R                  5       nU(       a$   [        R                  " US   =(       d    S5      nO0 n[        U[        5      (       d  0 nUR                  S/ 5        UR                  S0 5        UR                  S0 5        UR                  S/ 5        UR                  S/ 5        X%S   ;  a  US   R                  S	U5        X%S   U'   S
US   U'   UR                  S/ 5       Vs/ s H  n[        U5      U:w  d  M  UPM     snUS'   / US'   U R                  S[        R                  " USS
S9X345        g ! [
         a    0 n GNf = fs  snf )Nz3SELECT value_json FROM ui_state WHERE key='folders'
value_jsonz{}foldersgraphFolderopendeletedRows
deleteRowsr   Tz
        INSERT INTO ui_state(key, value_json, created_at, updated_at)
        VALUES ('folders', ?, ?, ?)
        ON CONFLICT(key) DO UPDATE SET
            value_json=excluded.value_json,
            updated_at=excluded.updated_at
        F)ensure_ascii	sort_keys)rz   r   r  jsonloadsr  
isinstancedict
setdefaultinsertr   rk   dumps)r   row_keyfolder_namer  r  statexs          rd   sync_ui_stater9    sd   	B
++K
L
U
U
WC
	JJs<08D9E eT""	Y#	]B'	VR 	]B'	\2&	**i;/$/-!!%E&M+',yy'CY'C!s1vQXGXA'CYE-E,KK	 
E	>G	-  	E	& Zs   "E E,E,E)(E)c                \    [        5       nU R                  S5      R                  5       S   nU R                  S5      R                  5       S   nU R                  S5      R                  5       S   nU R                  S5      R                  5       S   nU R                  S5      R                  5       S   nU R                  S5      R                  5       nU(       aA  U R                  S[        US	   =(       d    S5      S
-   SSUUUUUU[        US   5      4
5        g g ! [         a     g f = f)NzSELECT COUNT(*) FROM graphsr   zSELECT COUNT(*) FROM eventszSELECT COUNT(*) FROM foldersz!SELECT COUNT(*) FROM api_registryzPRAGMA integrity_checkzCSELECT id, revision FROM persistence_audit ORDER BY id DESC LIMIT 1a4  
                UPDATE persistence_audit
                SET revision=?, dirty=0, last_operation=?, last_status=?, last_error=NULL,
                    sqlite_integrity=?, graph_count=?, event_count=?, folder_count=?,
                    api_count=?, updated_at=?
                WHERE id=?
                revisionr   zimport-graph-inboxokr  )rz   r   r  r   r  )r   r  graph_countevent_countfolder_count	api_count	integrityr  s           rd   update_auditrB    s%    Ykk"?@IIKANkk"?@IIKAN{{#ABKKMaPKK CDMMOPQR	KK 89BBDQG	kk_`iikKK J,1-1( D	N ,  s   DD 
D+*D+c                F   [        5         [        U 5      n U R                  5       (       d%  U R                  SSS9  SSSS[	        U 5      SS/ / S	.	$ U R                  SS
S9nUR                  5       (       d  SSSS[	        U 5      SS/ / S	.	$  [        U5      u  p#nSSSS[	        U 5      U[        U5      U Vs/ s H&  n[	        UR                  S5      =(       d    S5      PM(     snUS	.	$ ! [         a(  nSSS[	        U5      [	        U 5      SS/ / S.	s SnA$ SnAff = fs  snf )z
Read GRAPH_IMPORT/graph_inbox.txt without writing to SQLite.
Returns graph name, detected node count, node names and parser warnings.
rZ   r}   r~   TF%GRAPH_IMPORT/graph_inbox.txt is emptyNr   )	r<  preview
importablemessagefilerR   nodes_detected
node_namesr  r   r   errors)	r<  rE  rF  errorrH  rR   rI  rJ  r  zGraph inbox preview completedr  )r   r   r   r   rk   	read_textrq   r  r  r   r   )
inbox_pathr   rR   r  r  r  r#  s          rd   preview_graph_inboxrP    sS   
 j!Jb73>
O

 
	
 CD::<<>
O

 
	

&6t&<#
8 2J e*?DEu!s155.4"5uE
 
  
X
O

 
	

* Fs$   C) 6-D)
D3DDDc                   [        5         [        U5      nUR                  5       (       d#  UR                  SSS9  SSSU 3[	        U5      S.$ UR                  SSS	9nUR                  5       (       d  SSS
[	        U5      S.$ [        R                  " UR                  SSS95      R                  5       S S n [        U5      u  pEn['        5       n
[)        [        U 5      5       nUR+                  S5        [-        U[.        5      n[1        X5      nUR+                  SXXU
45      n[3        UR4                  5      n[7        USS9 GH  u  nnSU SU SU 3nUR+                  SUUU[	        US   5      [	        US   5      [3        US   5      UR9                  S5      UR9                  S5      UUS[	        UR9                  S5      =(       d    S5      [	        UR9                  S5      =(       d    S5      [	        UR9                  S5      =(       d    S5      [	        UR9                  S 5      =(       d    S5      [	        UR9                  S!5      =(       d    S"5      UU
U
45        GM!     [;        X[.        5        [=        U5        UR?                  5         S S S 5        [        R                  " [        R                   5      R#                  S5      n[@        RB                  " S#SW5      RE                  S$S%5      S S& =(       d    S'n[F        U S%U S%U S3-  nUR                  USS9  UR                  SSS9  SSUU[.        S(.[I        U5      U[	        U5      SS).$ ! [         a  n[        R                  " [        R                   5      R#                  S5      n[$        U SU S3-  n	U	R                  USS9  SS[	        U5      [	        U	5      [	        U5      S.s S nA$ S nAff = f! , (       d  f       GNX= f)*NrZ   r}   r~   TFzcreated empty inbox: )r<  r	   rG  rH  r   rK  rD  )rL  r   z%Y%m%d_%H%M%S
_rejected_z.txt)r<  r	   rM  rejected_copyrH  zBEGIN IMMEDIATEz
            INSERT INTO graphs(row_key, visible_name, folder_id, color, created_at, updated_at)
            VALUES (?, ?, ?, NULL, ?, ?)
            r   r  zINBOX:r   a  
                INSERT INTO events(
                    legacy_id, graph_id, row_key, event_name,
                    date_text, date_year, date_month, date_day,
                    start_col, end_col, duration,
                    place, who, brief_description, source_link, api_text,
                    sort_index, created_at, updated_at
                )
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
                r  r  r	  r
  r  rU   rV   rW   rX   r  r  z[^A-Z0-9_ -]+ri   r   r   r   )r5  visible_namefolder)r<  r	   graphnodes_importedr  archived_copyinbox_cleared)%r   r   r   r   rk   rN  rq   hashlibsha256encode	hexdigestr  r  r   rv   r   rw   rx   r   rz   r   r   r  TARGET_FOLDERr$  r   r  r   r   r9  rB  commitro   rp   r   r   r   )r   rO  r   digestrR   r  r  r  ts_filer
   r  r   	folder_idr5  r  graph_idr   node	legacy_idsafe_keyimported_copys                        rd   import_graph_inboxrh  5  s   j!Jb73.zl;
O	
 	
 CD::<<>
O	
 	
 ^^DKK	KBCMMOPSQSTF
&6t&<#
8 
B	DM	"c%&!#}5	 1kk )4
 s}}% a0GAt 	1#Qvh7IKK	 \*+[)*[)*HH\*HHZ()/R0-2.!45;</526,A0AB'  1H 	cM2S

k 
#n ll8<<(11/BGvv&G4<<S#FsKVwH gYaz6($#GGMTG4"w/ &#

 e*]+ W  

,,x||,55oFWIZxt"DDD73X ]
O
 	
	

 
#	"s,   9M %F/O%
O"#A4OO"O"%
O4c           
        [        5         [        U 5      S:  a  U S   S:X  a  [        [        R                  " S[        [        5      [        R                  5       [        R                  5       (       a  [        R                  5       R                  OS[        S.SSS95        g[        U 5      S:  aZ  U S   S	:X  aQ  [        R                  S
SS9n[        U5      u  p#n[        [        R                  " SSU[        U5      US.SSS95        g[        5       n[        [        R                  " USSS95        UR                  S5      (       a  S$ S$ )Nr   z--statusTr   )r<  inboxr   bytestarget_folderFr   )r,  indentz	--dry-runr}   r   rK  )r<  dry_runrR   rI  r  r<  )r   r   printr.  r4  rk   r   r   statst_sizer^  rN  r  rh  r   )argvr   rR   r  r  results         rd   mainrt    s"   
4y1}aJ.djj_ '')2<2C2C2E2EZ__&..1*
 a) 	* 
4y1}aK/##WY#G&6t&<#
8djj$!%j 
 a) 	* !F	$**V%
:;

4  1'a'rt   __main__)rr   rk   returnrk   )rv  rk   )rv  None)r   r   rv  zsqlite3.Connection)r   rk   rv  r   )r   rk   )r   r   rv  rk   )r   rk   rv  r1  )r   rk   rv  rk   )r   rk   rv  r   )rr   rk   )rS   rk   rv  rk   )r   rk   rv  rk   )r   rk   )rS   rk   rv  r   )r!  rk   rv  rk   )r5  rk   r6  rk   rv  rw  )rO  r   rv  r1  )r   r   rO  r   rv  r1  )rv  r   )6
__future__r   rZ  r.  ro   r   sysr_   r   r   pathlibr   __file__resolveparentROOTDBr   r   r   r   r^  FIELD_ALIASESr   rs   itemsr   aliasesaliasrz   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r$  r9  rB  rP  rh  rt  __name__
SystemExitrr  ry   rt   rd   <module>r     s   "   	  
  ' H~&&	J22N"
++
J&J&-8 . $))+NE7.3E*+  ,
E4  " 
!I@.-,+\<(42:j()='@%P!J ,6 =@ (*j qh(< z
T#((^
$$ rt   