PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  b=0Yc@sddlZddlTejdZejdZeZeZde fdYZ e e Z ej Z eeege _ee _ejZeege_ee_ejZege_ee_ejZege_e e_ejZege_de_ejZege_ee_ejZeege_ee_egej_dej_ejZege_ee_ejZeeege_ee_eeeegej_eej_eeeeegej_eej_eeeeeegej_eej_eeeeegej _eej _ej!Z!eege!_ee!_ej"Z"eege"_ee"_dZ#dZddd Zddd Zddd Zdd Z e$d Z%dZ&dS(iN(t*s libc.so.6s liblve.so.0tDIRENTRYcBs?eZdefdefdefdefdedfgZRS(td_inotd_offtd_reclentd_typetd_namei(t__name__t __module__tino_ttoff_ttc_ushorttc_ubytetc_chart_fields_(((s,/usr/lib/python2.7/site-packages/secureio.pyR.s     cCstj|}t|}|s0tdnt|g}x9tr{t|}|s_Pn|j}|j|j qCWt|t ||S(Nsfdopendir error( tostdupt fdopendirt Exceptiont rewinddirtTruetreaddirtcontentstappendRtclosedir(tfdtfd2tdirptdirlisttentryptentry((s,/usr/lib/python2.7/site-packages/secureio.pytflistdirs       cCs8|dk r4ytj|Wq4tk r0q4XndS(N(tNoneRtclosetOSError(R((s,/usr/lib/python2.7/site-packages/secureio.pytclosefds   cCsd|dkrd}ntj||||}|dkr=|S|dk r`|d|ttndS(Niis.Error: failed to set permissions of directory (R tliblvetset_perm_dir_securetFalseR(tpathtpermt parent_pathRtlogger((s,/usr/lib/python2.7/site-packages/secureio.pyR%s    cCsg|dkrd}ntj|||||}|dkr@|S|dk rc|d|ttndS(Niis(Error: failed to set owner of directory (R R$tset_owner_dir_secureR&R(R'tuidtgidR)RR*((s,/usr/lib/python2.7/site-packages/secureio.pyR+s    cCsj|dkrd}ntj||||||}|dkrC|S|dk rf|d|ttndS(Niis"Error: failed to create directory (R R$tcreate_dir_secureR&R(R'R(R,R-R)RR*((s,/usr/lib/python2.7/site-packages/secureio.pyR.s    cCsBtj|||||}|r>|r>|d|ttn|S(Ns"Error: failed to create directory (R$tmakedirs_secureR&R(R'R(R,R-R)R*tres((s,/usr/lib/python2.7/site-packages/secureio.pyR/s cCs|rtjStjSdS(s Set CAP_SYS_RESOURCE capability :param bool clear: Set on if it's true, set off otherwise :return: 0 for success, -1 otherwise :rtype: int N(R$tdisable_quota_capabilitytenable_quota_capability(tclear((s,/usr/lib/python2.7/site-packages/secureio.pytset_capabilitys cCstj|tS(s Change effective uid of current process and set CAP_SYS_RESOURCE capbality to prevent "Disk quota exceeded" error :param int euid: User ID to set it as current effective UID :return: 0 if capability was set successfuly, -1 otherwise :rtype: int (RtsetuidR4(R,((s,/usr/lib/python2.7/site-packages/secureio.pyt change_uids ('Rtctypestcdllt LoadLibrarytlibcR$tc_longR R t StructureRtPOINTERt DIRENTRY_Ptfchowntc_inttargtypestrestypetfchmodRtc_void_pRRR Rtopen_not_symlinktc_char_pR#t check_dirtisdirR%R+R.R/tget_path_from_descriptort is_subdirRR&R4R6(((s,/usr/lib/python2.7/site-packages/secureio.pyt#st