mò |%ÜGc@s;dkZdkZdkZdkZdkZdkZdkZdkZdk l Z dZ hZ d„Z ddd„Zdd„Zd efd „ƒYZd „Zd „Zdd „Zd„Zdd„ZeidƒZeidƒZd„Zdfd„ƒYZdfd„ƒYZdfd„ƒYZd„ZdS(N(sStringIOsSpyce utility functionscCsQg}xDtiiƒD]3\}}ytii|i ƒ}Wnt j o qnXytii |ƒ}Wntj o qnX|idƒp|idƒo@|d }tii|ƒot|tii |ƒƒ}qãnyt|}Wn |}nX||jo1|i|ƒdk}|id||fƒn|t|‚s(R[ROttexttmapRXtRE_SPACE_NEWLINE_REDUCERJ(Rj((Rt spaceCompact€s tThreadedWritercBsntZdZed„Zed„Zd„Zd„Zd„Zd„Z d„Z d„Z d „Z d „Z RS( sThread-safe writercCs*dk}|i|id<||id
sSpyce Panic!
s
i( tcgitresponseRˆRwtescapeR%t RETURN_OKt returncodeR}Rtstderrtexit(RR%RŽ((Rt panicOutputàs"      ( tos.pathRRR?R[timpR&Rtshutilt cStringIORƒRRRR"R3RcR4RDRKR!RYR_RftcompileRhRlRmRnR‚RR•(RDRfR•RRnR˜RYR?RmR—R4R_RRR[RRKR‚R"RhRƒR3RR&RlRR((Rt?s&H        $'