
    ~j=                        d Z ddlZddlZddlZddlZddlZej                            ej                            ej                            e	                              Z
ej                            e
d          Zej                            ed          ZddZd ZddlZ ej        d          Zd Zd	 Zi ad
 Zd Zd Zd Zd Zd Zd Zedk    r e             dS dS )uP  
客户360°档案卡数据聚合器
输入（数据/目录）：
  pricing/_index.json + pricing/<客户>.json  → 基础信息/集团/负责人/主销产品
  cust_yearly.json                           → 2024/2025/2026 年度采购额
  mcp_activities.json                        → 活动记录（拜访/线上）
  opps_by_customer.json + opportunity_sandbox.json → 商机
  mcp_complaints.json                        → 客诉
  shipment_status.json                       → H2订单+物流
输出：数据/customer_360.json（单文件，前端一次加载，客户端搜索）
    Nu   数据pricingc                     t           j                            t          |           }t           j                            |          s|S t          j        t          |d                    S )Nutf-8encoding)ospathjoinDATAexistsjsonloadopen)fndefaultps      M   /Users/liuxinyuan/Desktop/Hermes输出-工作类/脚本/build_customer_360.pyr   r      sO    
T2A7>>! 9T!g...///    c                 .    | pd                                 S N )stripns    r   normr      s    G??r   u   -(浙江|广东|江苏|北京|上海|华北|华南|华中|华东|华西|山东|四川|福建|河南|河北|湖南|湖北|安徽|重庆|天津|陕西)$c                 R    t                               dt          |                     S r   )
REGION_SFXsubr   r   s    r   	strip_sfxr   $   s    >>"d1gg&&&r   c                 N   t          | t                    rMdD ]H}t          |                     |                    r$t          |                     |                    c S IdS t          | t          t
          f          r| rt          | d                   ndS t          |           S )uZ   字段值可能为 str 或 MCP 关系型 {key,label}/{name_cn} 形态，统一取名称。)labelname_cnnamevaluetextr   r   )
isinstancedictr   getlisttuple	norm_name)vks     r   r+   r+   (   s    !T > 	& 	&AAEE!HH~~ &AEE!HH~~%%%&r!dE]## ,"#+y1+77Nr   c                     t          dg           pg } t          | t                    r!t          |                                           } i }| D ]s}t          |                    d                    t          |                    d                    }}|r|sK|||<   |                    t          |          |           t|a	|S )uP   加载权威归属表：客户名 → 销售员。同时登记去后缀别名。zpricing/_key_customers.jsonr#   salesperson)
r   r&   r'   r)   valuesr   r(   
setdefaultr   _AUTH_SALES)kcmenmsps        r   load_auth_salesr8   :   s     
+R	0	0	6BB"d "))++
A ( (aeeFmm$$d155+?+?&@&@B 	 	"	Yr]]B''''KHr   c                     t                               |           p(t                               t          |                     pdS )u*   取权威归属；查不到返回空串。r   )r2   r(   r   r#   s    r   
auth_salesr;   K   s0    ??4  JKOOIdOO$D$DJJr   c                     t                      }g }| D ];} ||          }||vr*|                    |           |                    |           <|S N)setaddappend)seqkey_fnseenoutitemr-   s         r   deduperF   P   s\    55D
C  F4LLD==HHQKKKJJtJr   c                 T    t          t          fd| D                                 S )Nc              3   `   K   | ](}t          |                              pd           V  )dS )r   N)floatr(   ).0xfields     r   	<genexpr>zsum_field.<locals>.<genexpr>\   s:      ==!U155<<,1--======r   )roundsum)itemsrL   s    `r   	sum_fieldrQ   [   s.    ====u=====>>>r   c	                 	   t          |                     d                    }	|	r|	                                dk    rd S |                     d          p|	}
|                    |	          p#|                    t          |	                    pi }|                    dd          |                    dd          }}i }t          j                            t          |
dz             }t          j                            |          r7	 t          j
        t          |d	                    }n# t          $ r i }Y nw xY wd
 |                    d          pg D             }|                    d            d |d d         D             }|                    |	          pi }|                    dd          pd|                    dd          pd|                    dd          pd}}}t          |                    |	g           d d          d d         }|                    |	          pg d d         }d |D             }t          |                    |	g           d d          d d         }t          |                    |	g           d d          d d         }d |D             }g }|dk    r"|dk    s|dk    r|                    d           n.|dk    r(d|cxk     r	|dz  k     rn n|                    d           d  |D             }|r%|                    d!t!          |                      i d|	d"t          |                    d#                    p	|	d d$         d%t          |                    d%                    p!t          |                     d&                    d't#          |	          p!t          |                    d(                    d|d|d)t%          |                     d)          pd          d*|                     d*          pdd+|                     d+          pdd,|                     d,          pdd-t%          |          d.t%          |          d/t%          |          d0t%          |                    |	d                    d1|d2|d3||                    |	g           d d         |||d4S )5Nr#   testfilelevelr   tierz.jsonr   r   c                 <    g | ]}|                     d           |S )is_giftr(   rJ   r   s     r   
<listcomp>z"build_customer.<locals>.<listcomp>p   s)    OOO1aeeI>N>NOQOOOr   productsc                 2    |                      d          pd S )N	total_amtr   rY   r   s    r   <lambda>z build_customer.<locals>.<lambda>q   s    quu[116Q7 r   keyc           	          g | ]Z}|                     d           |                     d          pddd         t          |                     d          pd          d[S )skur#   r   N   r^   r   rd   r#   amt)r(   rN   rZ   s     r   r[   z"build_customer.<locals>.<listcomp>r   sx     P P P@A EE%LL155==3FB2L!!%%"4"4"9::< < P P Pr      2024r   20252026c                     | d         S Ndate as    r   r`   z build_customer.<locals>.<lambda>x   
    QvY r   Trb   reverse   
   c           	         g | ]~}t          |                    d                     t          |                    d                    t          |                    d                    |                    d          pddS )r#   statuscreatorurlr   )r#   rx   ry   rz   )r   r(   rJ   os     r   r[   z"build_customer.<locals>.<listcomp>z   s     d d dTU quuV}}--aeeHoo9N9N!!%%	"2"233AEE%LL<NBP P d d dr   c                     | d         S rm   ro   cs    r   r`   z build_customer.<locals>.<lambda>|   rr   r   c                 0    |                      d          pdS )N
createDater   rY   r|   s    r   r`   z build_customer.<locals>.<lambda>~   s    aeeL>Q>Q>WUW r   c                    g | ]}|                     d           |                     d          |                     d          pddd         t          t          |                     d          p|                     d          pd          pd          |                     d	          pi                      d
          p|                     d          sdnddS )orderIdr   productr   Nre   taxTotalamountr   shipmentstatusLabel
trackingNou	   无物流u   未知)idrn   r   rg   ship)r(   rN   rI   r{   s     r   r[   z"build_customer.<locals>.<listcomp>   s       
 	 eeIl(;(;EE)$$*CRC0U155,,DhD1EEJKK%%
##)r..}==xVWV[V[\hViViCw;;ow	    r      今年无采购      ?   采购大幅下滑c                 J    g | ]t          fd dD                        S )c              3   ,   K   | ]}|d          v V  dS rx   Nro   rJ   r-   r   s     r   rM   z,build_customer.<locals>.<listcomp>.<genexpr>   s,      -q-q1a1X;.>-q-q-q-q-q-qr   )   完成   关闭   解决u   结束anyrJ   r   s    @r   r[   z"build_customer.<locals>.<listcomp>   s<    rrr#-q-q-q-qHp-q-q-q*q*qr!rrrr      客诉进行中×short
short_name   group
group_namesalesr/   totalorderscontactslatest_datey2024y2025y2026h2_2026top_products
activitiesoppsopp_sandbox
complaintsrecent_ordersrisks)r   r(   lowerr   r   r	   r
   PRICINGr   r   r   r   	Exceptionsortsortedr@   lenr;   rN   )entryyearlyact_by_custopp_sandbox_by_custopps_bccomp_by_custorders_by_custh2_spendlevelsr#   r   lv	mcp_levelmcp_tierdetailpjprodsr   yy24y25y26acts_c	opps_livecompsordsords_outr   
open_compss                                r   build_customerr   _   s   		&!!""D 4::<<6))t	6			"dB	D			>VZZ	$88	>BB&&"--rvvfb/A/AxIF	grG|	,	,B	w~~b 	YtB999::FF 	 	 	FFF	 POJ//52OOOE	JJ77J888P PEJ2A2YP P PL 	

4BAEE&!$$)155+;+;+@q!%%PQBRBRBWVWcCKOOD"--3F3FPTUUUVXWXVXYFT""(b#2#.Id dYbd d dI<##D"--3F3FPTUUUVYWYVYZE.$$T2..4W4WaefffgihigijD 
   H E
axxS1WWa&''''	qQ))))sTz))))))***rrUrrrJ <:Z::;;;fjj..//<49 	fjj))**Kd599\3J3J.K.K 	D!!DT&**]*C*C%D%D	
 	 	 	uyy)).Q// 	%))H%%* 	EIIj)).Q 	uyy//52 	s %eCjj 3:5:: 	5dA..// 	 	f 		  +..tR88!<!'   s   #D) )D87D8c           	         t          t          d | D                                 }t          t          d | D                                 }t          t          d | D                                 }t          t          d | D                                 }t          t          d | D                                 }t          d | D                       }t          d | D                       }i }| D ]}	|	                    d          pg D ]}
t          |
                    d	                    p!t          |
                    d
                    |
                    d
          f}|                    ||
                    d	          |
                    d
          dd           ||         dxx         |
                    d          pdz  cc<   ǌt          |                                d           d d         }t          d | D             d           }t          d | D             d           }t          d | D             d           }t          d | D             d           }t          d | D             d           }|                    d d           t          d | D             d           }t          d! | D                       }t          | d"           }g }|dk    r"|dk    s|dk    r|
                    d#           n.|dk    r(d|cxk     r	|d$z  k     rn n|
                    d%           d& |D             }|r%|
                    d't          |                      d}t          d( | D                       rd)}nt          d* | D                       rd+}i d
t          | d                             d,                    d-d. |D             d/d0 |D             d1t          |           d2|rd3                    |          ndd4|d5|d6|d7|d8|d9|d:|d;|d<|d|d=|d d>         d?|d d@         |d d>         |d d@         t          |dA d          d d>         |dBS )CNc              3   &   K   | ]}|d          V  dS )r   Nro   r   s     r   rM   zbuild_group.<locals>.<genexpr>   s&      22Qaj222222r   c              3   &   K   | ]}|d          V  dS )r   Nro   r   s     r   rM   zbuild_group.<locals>.<genexpr>   &      001AgJ000000r   c              3   &   K   | ]}|d          V  dS )r   Nro   r   s     r   rM   zbuild_group.<locals>.<genexpr>   r   r   c              3   &   K   | ]}|d          V  dS )r   Nro   r   s     r   rM   zbuild_group.<locals>.<genexpr>   r   r   c              3   &   K   | ]}|d          V  dS )r   Nro   r   s     r   rM   zbuild_group.<locals>.<genexpr>   s&      11A1Y<111111r   c              3   &   K   | ]}|d          V  dS )r   Nro   r   s     r   rM   zbuild_group.<locals>.<genexpr>   s&      ..8......r   c              3   &   K   | ]}|d          V  dS )r   Nro   r   s     r   rM   zbuild_group.<locals>.<genexpr>   s&      22Q1Z=222222r   r   rd   r#   r   rf   rg   c                     | d          S )Nrg   ro   r_   s    r   r`   zbuild_group.<locals>.<lambda>   s    AeH9 r   ra   rh   c                 F    g | ]}|                     d           pg D ]}|S )r   rY   rJ   r   r|   s      r   r[   zbuild_group.<locals>.<listcomp>   s4    CCCquuV}}/BCC!1CCCCr   c                 V    |                      d          p|                      d          S )Nrz   r#   rY   r   s    r   r`   zbuild_group.<locals>.<lambda>   s&    quuUZ||Ol_`_d_dek_l_l r   c                 F    g | ]}|                     d           pg D ]}|S )r   rY   r   s      r   r[   zbuild_group.<locals>.<listcomp>   s6    QQQaeeM6J6J6PbQQ!QQQQr   c                 ~    |                      d          |                      d          |                      d          fS )Nr#   r   typerY   r   s    r   r`   zbuild_group.<locals>.<lambda>   s+    AEE&MM155>>155==#Q r   c                 F    g | ]}|                     d           pg D ]}|S )r   rY   )rJ   r   cps      r   r[   zbuild_group.<locals>.<listcomp>   s6    QQQquu\7J7J7PbQQQQQQr   c                 ,    |                      d          S Nr   rY   r   s    r   r`   zbuild_group.<locals>.<lambda>   s    ^`^d^dei^j^j r   c                 F    g | ]}|                     d           pg D ]}|S )r   rY   r   s      r   r[   zbuild_group.<locals>.<listcomp>   s7    UUU!o8N8N8TRTUU1AUUUUr   c                 ,    |                      d          S r   rY   r   s    r   r`   zbuild_group.<locals>.<lambda>   s    abafafgkalal r   c                 F    g | ]}|                     d           pg D ]}|S )r   rY   )rJ   r   rq   s      r   r[   zbuild_group.<locals>.<listcomp>   s6    OOOqQUU<5H5H5NBOOOOOOr   c                 ~    |                      d          |                      d          |                      d          fS )Nr#   rn   moderY   rp   s    r   r`   zbuild_group.<locals>.<lambda>   s+    155==!%%--v"O r   c                     | d         S rm   ro   rp   s    r   r`   zbuild_group.<locals>.<lambda>   s
    !F) r   Trs   c              3   P   K   | ]!}|                     d           |d          V  "dS )r   NrY   r   s     r   rM   zbuild_group.<locals>.<genexpr>   s8      QQAAEE-<P<PQq'QQQQQQr   r   )r   c                 H    h | ]}|                     d           |d           S )r   rY   r   s     r   	<setcomp>zbuild_group.<locals>.<setcomp>   s+    GGGgG7GGGr   c                     | d          S Nr   ro   r~   s    r   r`   zbuild_group.<locals>.<lambda>   s    AgJ; r   r   r   r   c                 J    g | ]t          fd dD                        S )c              3   ,   K   | ]}|d          v V  dS r   ro   r   s     r   rM   z)build_group.<locals>.<listcomp>.<genexpr>   s,      2l2l1(3C2l2l2l2l2l2lr   )r   r   r   r   r   s    @r   r[   zbuild_group.<locals>.<listcomp>   s<    mmms2l2l2l2lMk2l2l2l/l/lm!mmmr   r   c              3   H   K   | ]}|                     d           dk    V  dS )rU   	   大客户NrY   r   s     r   rM   zbuild_group.<locals>.<genexpr>   s1      
:
:Q155>>[(
:
:
:
:
:
:r   r   c              3   H   K   | ]}|                     d           dk    V  dS )rU      重点客户NrY   r   s     r   rM   zbuild_group.<locals>.<genexpr>   s1      ??!QUU7^^~-??????r   r   r   membersc                     g | ]
}|d          S r:   ro   r   s     r   r[   zbuild_group.<locals>.<listcomp>   s    666!AfI666r   member_totalsc                 0    g | ]}|d          |d         dS )r#   r   )r#   r   ro   r   s     r   r[   zbuild_group.<locals>.<listcomp>   s(    [[[q1V9qzBB[[[r   countr   u   、rU   r   r   r   r   r   r   r   r   r   ru   r   rv   c                 0    |                      d          pdS )Nrn   r   rY   r   s    r   r`   zbuild_group.<locals>.<lambda>   s    QUU6]]=Pb r   r   )rN   rO   r(   r   r1   r   r0   rF   r   maxr@   r   r   r
   )r   r   r   r   r   h2r   r   prod_mapr   r   rb   r   r   r   r   r   r   r   
sales_listmembers_sortedr   r   rU   s                           r   build_groupr     s   #22'2222233E
0000000
1
1C
0000000
1
1C
0000000
1
1C	s1111111	2	2B..g.....F22'22222H H 6 6~&&," 	6 	6Ae%%<aeeFmm)<)<aeeFmmLCQUU5\\155==YZ%[%[\\\SM%   AEE%LL$5A5    	6 (//++1D1DEEEbqbIL CCgCCCElElmmDQQWQQQQQS SKQQWQQQSjSjkkJUUwUUUWlWlmmMOOGOOOOOQ QJOO++TO:::QQQQQ[]^^^KGGWGGGHHJG)>)>???N E
axxS1WWa&''''	qQ))))sTz))))))***mmZmmmJ <:Z::;;; E

:
:'
:
:
::: 	??w???	?	? WQZ^^G,,--66~666 	[[N[[[ 	W	
 	:=J'''2 	 	 	& 	H 	{ 	 s %,S 	2 	 	j!n 	SbS	  #2A2 "o3P3PZ^___`bab`bc'   r   c                     t          j                     } t          dg           }t          di           }t          di                               dg           }|s$t          di                               dg           }t          di           }t          di                               dg           }t          d	i                               dg           }t          d
i                               dg           }t          di           }t                      }	t	          dt          t          |	                                                     dt          |	           d           t          j	        t                    }
|D ]>}t          |                    d                    }|s(|
|                             |                    d          pdd d         t          |                    d                    t          |                    d                    d d         t          |                    d                                        dd          d d         t          |                    d          t                     r*|                    d          pi                     d          ndpdd           @|
D ]}t#          |
|         d           |
|<   t          j	        t                    }|D ]}|t          |                    d                                                 t          |                    d                    |                    d           pd!t          |                    d"                    t          |                    d#                    d$           t          j	        t                    }|D ]}t          |                    d%                    p!t          |                    d&                    }|sP|                    d'          pg }|r7t          |d!         t                     r|d!                             d(d          }t          |                    d)                    p!t          |                    d                    d d         }|                    d*          p|                    d+          }t          |                    d                    }|rd(|ig}n/|                    d,          pg }t          |t                     r|g}|D ]}t          |t                     rh|                    d(          rS|t          |d(                                                t          |                    d                    |||d-           |D ]}t#          ||         d.           ||<   t          j	        t                    }t          j	        t$                    }|D ]}t          |                    d/                    t          |                    d                    hdhz
  D ]}||                             |           t          |                    d/                    p!t          |                    d                    }	 ||xx         t%          |                    d0          p|                    d1          pd!          z  cc<   # t&          $ r Y w xY w|D ]}t#          ||         d2           ||<   g }|D ]0}t)          |||
||||||	  	        }|r|                    |           1|                    d3 4           t          j	        t                    }|D ]6}|                    d5          pd}|r||                             |           7d6 |                                D             }|                    d7 4           d8 |D             d9 |D             z  }d!} |                                D ]\  }!}"|!|v st/          |!          |v rt          |!          }#|                    i d|#d:|#d d         d5dd"t1          |#          d;|"                    d;d          d<|"                    d<d          d=d!dd!d>d!d?dd@d!dAd!dBd!dCd!dDg dEg dFg g g g dGgdH           | dIz  } | rt	          dJ|  dK           t          j        dL          t          |          t          |          ||dM}$t4          j                            t:          dN          }%t=          j        |$tA          |%dOdPQ          dRS           t4          j        !                    |%          dTz  }&t	          dUt          |           dVt          |           dW|& dXt          j                     | z
  dYdZ	           tE          d[ |D                       tE          d\ |D                       tE          d] |D                       tE          d^ |D                       tE          d_ |D                       d`}'t	          da|'           d S )bNzpricing/_index.jsonzcust_yearly.jsonzdaily_activities_mcp.jsonrP   zmcp_activities.jsonzopps_by_customer.jsonzopportunity_sandbox.jsonopportunitieszmcp_complaints.jsonzshipment_status.jsonr   zcustomer_levels.jsonu     权威归属表: u    位销售 / u    条名称映射field_5f20fc
start_timer   rv   r#   field_76654er   field_b99055
 d   ownerr"   )rn   r#   r   snippetr  c                 "    | d         | d         fS )Nr#   rn   ro   rp   s    r   r`   zmain.<locals>.<lambda>  s    1V9ai:P r   customertargetr   r   r   )r#   r  r   r   rx   nodework_item_statusr!   createdr   work_item_idfield_ac5caf)r#   rx   rn   r   c                     | d         S r   ro   r   s    r   r`   zmain.<locals>.<lambda>1  s
    RX r   mcpCustomerr   r   c                 ,    |                      d          S )Nr   rY   r   s    r   r`   zmain.<locals>.<lambda>>  s    i@P@P r   c                     | d          S r   ro   r~   s    r   r`   zmain.<locals>.<lambda>H  s    !G* r   ra   r   c                 R    g | ]$}t          |          d k    t          |          %S )   )r   r  )rJ   r   s     r   r[   zmain.<locals>.<listcomp>P  s1    ZZZwGXYHYHYk'""HYHYHYr   c                     | d          S r   ro   )gs    r   r`   zmain.<locals>.<lambda>Q  s    qzk r   c                     h | ]
}|d          S r:   ro   r   s     r   r   zmain.<locals>.<setcomp>T  s    ---a&	---r   c                 8    h | ]}t          |d                    S r:   )r   r   s     r   r   zmain.<locals>.<setcomp>T  s$    0Y0Y0Y!1V91E1E0Y0Y0Yr   r   rU   rV   r   r   r   r   r   r   r   r   r   r   u   ERP无采购记录(新客户)r      z  +u1    个MCP标签客户无ERP记录，已补占位卡z%Y-%m-%d %H:%M:%S)
updated_atr   group_count	customersgroupszcustomer_360.jsonwr   r   F)ensure_asciii   u   ✅ u
    客户 / u    集团 → customer_360.json (u   KB), 耗时 z.1fsc              3   *   K   | ]}|d          
dV  dS )r   r   Nro   r   s     r   rM   zmain.<locals>.<genexpr>r  +      AAq<AAAAAAAr   c              3   :   K   | ]}|d          s|d         dV  dS )r   r   r   Nro   r   s     r   rM   zmain.<locals>.<genexpr>s  s5      OOq6Oa>NOOOOOOOr   c              3   *   K   | ]}|d          
dV  dS )r   r   Nro   r   s     r   rM   zmain.<locals>.<genexpr>t  r)  r   c              3   *   K   | ]}|d          
dV  dS )r   r   Nro   r   s     r   rM   zmain.<locals>.<genexpr>u  s,      FF1_3EF1FFFFFFr   c              3   *   K   | ]}|d          
dV  dS )r   r   Nro   r   s     r   rM   zmain.<locals>.<genexpr>v  s+      BBQqzBqBBBBBBr   )u	   有活动u	   有商机u	   有客诉u   有H2订单u   有风险标记u
   覆盖率:)#timer   r(   r8   printr   r>   r0   collectionsdefaultdictr)   r+   r@   r   replacer&   r'   rF   rI   r   r   r   rP   r   r;   strftimer   r	   r
   r   r   dumpr   getsizerO   )(t0idxr   actsr   sandboxr   r   r   _authr   rq   r   r   r|   r   stwscdatecidcustlabelsrE   r   r   rb   r#  r   	group_mapr  r$  existingstubslnamer   r6   rD   outpsizestatss(                                           r   mainrH     s   	B
$b
)
)C$b))F+R0044WbAAD @)2..227B??*B//G-r2266KKG+R0044WbAAJ&++//"==D("--FE	
cC$7$7 8 8
c
cs5zz
c
c
cddd )$//K 
 
aeeN++,, 	AUU<((.B4v''aeeN3344SbS9AEE.1122::4EEdsdK?I!%%PW..Z^?_?_gquuW~~+00;;;egnln
 
 	 	 	 	  R RA0P0PQQA%1$77  Dz!2!2334;;v''155??3Ga!%%..))4f3F3F=
 =
 	 	 	 	
 *400L  !%%//""9d155==&9&9 	,)**0bB ,jA-- ,UYYw++aeeI&&''D4l0C0C+D+DcrcJeeDkk2QUU>22AEE*%%&& 	"o&FFUU>**0bF&$'' "  	 	D$%% $((7*;*; T$w-00188 v//2!: :   	  G G a2E2EFFQ ,T22N&u--H  }--..QUU:5F5F0G0GHB4O 	* 	*C3&&q))))AEE-(())DT!%%
2C2C-D-D	TNNNeAEE*$5$5$Mx$MANNNNNNN 	 	 	D	 R R">!#46P6PQQq I    5&+7J"L.(FT T 	 QNN,,N--- '--I # #EE'NN b 	#aL"""ZZ)2B2B2D2DZZZF
KK))K*** .-9---0Y0Yy0Y0Y0YYHE\\^^  	rH	% 0 0H < <%[[ 
B
CRC
*12
7>
2
RVVGR((
*0"&&2D2D
 Q
 !!
 &0
 5B2
 Q	
  	
 %,Q	
 1:1	

 B

 !-b

 39"

 NPr=\<]
 
 
 	 	 	 	
 NLELLLMMM m$788Y6{{ C 7<<122DIc4cG4445IIII7??4  D(D	
~Y
~
~3v;;
~
~W[
~
~imiritituwiw
~
~
~
~AAIAAAAAOOIOOOOOAAIAAAAAFFiFFFFFBB)BBBBB E 
,s   <A\
\\__main__r=   )__doc__r   r   r.  datetimer0  r	   dirnameabspath__file__ROOTr
   r   r   r   r   recompiler   r   r+   r2   r8   r;   rF   rQ   r   r  rH  __name__ro   r   r   <module>rS     s  
 
 - , , , , , , , , , , , , , , , , , , ,	wrwrwx'@'@AABB	w||D(##
',,tY
'
'0 0 0 0   
			RZ  r  s  s
' ' '	 	 	   "K K K
  ? ? ?D D DNF F FRI I IX zDFFFFF r   