ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙELF>@xz@8@77 H<H< H< 56 `<`< `< $$666 PtdX2X2X2QtdRtdH<H< H< GNU.p<`/+E%Nī2SR`.@(.1BE|NqX$B3+ nU rDg` M*R, F"@r (Hr  'y@r u .0__gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalizePy_FileSystemDefaultEncodingPyUnicode_AsEncodedStringPyObject_AsFileDescriptorPyExc_TypeErrorPyErr_SetStringstrlenPyMem_Malloc__snprintf_chkPyExc_ValueErrorPyMem_FreePyErr_NoMemoryllistxattrflistxattr_PyArg_ParseTuple_SizeTPyList_NewPyBytes_FromStringPyExc_IOErrorPyErr_SetFromErrno__stack_chk_faillremovexattrfremovexattr_PyArg_ParseTupleAndKeywords_SizeT_Py_NoneStructlsetxattrfsetxattrlgetxattrfgetxattrPyBytes_FromStringAndSizematches_nsstrncmp__errno_locationPyMem_Realloc_Py_BuildValue_SizeTPyList_AppendPyInit_xattrPyModule_Create2PyModule_AddStringConstantPyModule_AddIntConstantPyModule_AddObjectlibattr.so.1libpython3.6m.so.1.0libpthread.so.0libc.so.6_edata__bss_start_endGLIBC_2.2.5GLIBC_2.4GLIBC_2.3GLIBC_2.3.4 ui - ii 9ii Cui -ti MH< `P<  X< X< o x1o }1o 1o 1o x1o 1o 1o x1o }1o 1o 1p 1p 1 p x1(p }10p 18p 1`p x1hp 1pp 1p 1p @ p q q 1q @&q l q 1(q @$8q g @q 1Hq *Xq ` `q 1hq "xq  [ q 1q  !q T q 1q  q R q 1q q M q 1q 0q K r 1r 0(r F ? ? ? ? ? ? ? ? *? ,> > > > > > > >  >  >  >  >  > > > ? ? ? ?  ? (? 0? 8? @? H?  P? !X? "`? #h? $p? %x? &? '? (? )? 0? +? ,? -HH+ HtH5) %) hhhhhhhhqhah Qh Ah 1h !h hhhhhhhhhhqhahQhAh1h!hhhh h!h"h#h$h%%-' D%%' D%' D%' D% ' D%' D%& D%& D%& D%& D%& D%& D%& D%& D%& D%& D%& D%& D%& D%& D%& D%& D%}& D%u& D%m& D%e& D%]& D%U& D%M& D%E& D%=& D%5& D%-& D%%& D%& D%& D% & D%& DH=X HX H9tH% Ht H=YX H5RX H)HHH?HHtH% HtfD=X u+UH=% Ht H=" IdW ]wHGHFHt1H H~1SHHtA1HH$ H0HCHt1H HC1H[fD3tC1H[øH$ H5D$ H:,D$ fDAVIAUIATIUHSLHH\HHEHttHHMAVHH1LZYxHH9rHEI$1[]A\A]A^DH# H52H8H}fDtHt @xAVHH56AUATUSH0dH%(HD$(1HL$HT$D$OH\$T$H|$H11H]IHH/HHH+LHH%IH8HE1HIfHI4H\HH)L9|L,IHtGHE1(@IVHJ"IH\HH)L9}HDD$ HL$(HHT$ Ht$lH|$@HtH/tBtMHF HH|$H|$ HL$HdH3 %(Hu/HX[]@HGP0H H8HODf.tHt @ATHE1HUH )K H S1HXdH%(HD$P1HD$0D$ HD$HD$0PHD$PHD$(P1LD$(CH H\$0T$H|$HH|$(Ht$Ht ?HD$Ht$ 11HHHHbIHHt$ HHHHHLHLSH|$IH|$@HtH/tIH|$/HL$HdH3 %(HHP[]A\H|$1f.HGP0H|$DHL$HT$ YxHt$ H H8HXH@H H8H@ATH1H5/ US1H@dH%(HD$81HT$LL$ D$ HD$LD$1Hl$ T$ H|$HxuHt$11HNHHHIHHt$HHHHHLHLH|$0HtH/t*H|$HL$8dH3 %(Hu\H@[]A\@HGP0Hq H8QH@HfDHI H8)Hoff.AVAUATIUSHtA?t (X  oo oo o5`<  0@P`p 0@P`p 0@This module gives access to the extended attributes present in some operating systems/filesystems. You can list attributes, get, set and remove them. The module exposes two sets of functions: - the 'old' :func:`listxattr`, :func:`getxattr`, :func:`setxattr`, :func:`removexattr` functions which are deprecated since version 0.4 - the new :func:`list`, :func:`get`, :func:`get_all`, :func:`set`, :func:`remove` functions which expose a namespace-aware API and simplify a bit the calling model by using keyword arguments Example: >>> import xattr >>> xattr.listxattr("file.txt") ['user.mime_type'] >>> xattr.getxattr("file.txt", "user.mime_type") 'text/plain' >>> xattr.setxattr("file.txt", "user.comment", "Simple text file") >>> xattr.listxattr("file.txt") ['user.mime_type', 'user.comment'] >>> xattr.removexattr ("file.txt", "user.comment") .. note:: Most or all errors reported by the system while using the ``xattr`` library will be reported by raising a :exc:`EnvironmentError`; under Linux, the following ``errno`` values are used: - ``ENOATTR`` and ``ENODATA`` mean that the attribute name is invalid - ``ENOTSUP`` and ``EOPNOTSUPP`` mean that the filesystem does not support extended attributes, or that the namespace is invalid - ``E2BIG`` mean that the attribute value is too big - ``ERANGE`` mean that the attribute name is too big (it might also mean an error in the xattr module itself) - ``ENOSPC`` and ``EDQUOT`` are documented as meaning out of disk space or out of disk space because of quota limits .. note:: Under Python 3, the namespace argument is a byte string, not a unicode string. list(item[, nofollow=False, namespace=None]) Return the list of attribute names for a file. Example: >>> xattr.list('/path/to/file') ['user.test', 'user.comment', 'system.posix_acl_access'] >>> xattr.list('/path/to/file', namespace=xattr.NS_USER) ['test', 'comment'] :param item: a string representing a file-name, or a file-like object, or a file descriptor; this represents the file on which to act :param nofollow: if true and if the file name given is a symbolic link, the function will operate on the symbolic link itself instead of its target; defaults to false :type nofollow: boolean, optional :param namespace: if given, the attribute must not contain the namespace, but instead it will be taken from this parameter :type namespace: bytes :returns: the list of attributes; note that if a namespace argument was passed, it (and the separator) will be stripped from the names returned :rtype: list :raises EnvironmentError: caused by any system errors .. versionadded:: 0.4 .. versionchanged:: 0.5.1 The namespace argument, if passed, cannot be None anymore; to explicitly specify an empty namespace, pass an empty string (byte string under Python 3).listxattr(item[, nofollow=False]) Return the list of attribute names for a file (deprecated). :param item: a string representing a file-name, or a file-like object, or a file descriptor; this represents the file on which to act :param nofollow: if true and if the file name given is a symbolic link, the function will operate on the symbolic link itself instead of its target; defaults to false :type nofollow: boolean, optional .. deprecated:: 0.4 this function has been deprecated by the :func:`list` function. remove(item, name[, nofollow=False, namespace=None]) Remove an attribute from a file. Example: >>> xattr.remove('/path/to/file', 'user.comment') :param item: a string representing a file-name, or a file-like object, or a file descriptor; this represents the file on which to act :param string name: the attribute to remove; usually in the form of ``system.posix_acl`` or ``user.mime_type`` :param nofollow: if true and if the file name given is a symbolic link, the function will operate on the symbolic link itself instead of its target; defaults to false :type nofollow: boolean, optional :param namespace: if given, the attribute must not contain the namespace, but instead it will be taken from this parameter :type namespace: bytes :returns: None :raises EnvironmentError: caused by any system errors .. versionadded:: 0.4 .. versionchanged:: 0.5.1 The namespace argument, if passed, cannot be None anymore; to explicitly specify an empty namespace, pass an empty string (byte string under Python 3).removexattr(item, name[, nofollow]) Remove an attribute from a file (deprecated). :param item: a string representing a file-name, or a file-like object, or a file descriptor; this represents the file on which to act :param string name: the attribute to remove; usually in the form of ``system.posix_acl`` or ``user.mime_type`` :param nofollow: if true and if the file name given is a symbolic link, the function will operate on the symbolic link itself instead of its target; defaults to false :type nofollow: boolean, optional .. deprecated:: 0.4 this function has been deprecated by the :func:`remove` function. set(item, name, value[, flags=0, namespace=None]) Set the value of a given extended attribute. Example: >>> xattr.set('/path/to/file', 'user.comment', 'test') >>> xattr.set('/path/to/file', 'comment', 'test', namespace=xattr.NS_USER) :param item: a string representing a file-name, or a file-like object, or a file descriptor; this represents the file on which to act :param string name: the attribute whose value to set; usually in the form of ``system.posix_acl`` or ``user.mime_type`` :param string value: possibly with embedded NULLs; note that there are restrictions regarding the size of the value, for example, for ext2/ext3, maximum size is the block size :param flags: if 0 or omitted the attribute will be created or replaced; if :const:`XATTR_CREATE`, the attribute will be created, giving an error if it already exists; if :const:`XATTR_REPLACE`, the attribute will be replaced, giving an error if it doesn't exist; :type flags: integer :param nofollow: if true and if the file name given is a symbolic link, the function will operate on the symbolic link itself instead of its target; defaults to false :type nofollow: boolean, optional :param namespace: if given, the attribute must not contain the namespace, but instead it will be taken from this parameter :type namespace: bytes :returns: None :raises EnvironmentError: caused by any system errors .. versionadded:: 0.4 .. versionchanged:: 0.5.1 The namespace argument, if passed, cannot be None anymore; to explicitly specify an empty namespace, pass an empty string (byte string under Python 3).setxattr(item, name, value[, flags=0, nofollow=False]) Set the value of a given extended attribute (deprecated). Be careful in case you want to set attributes on symbolic links, you have to use all the 5 parameters; use 0 for the flags value if you want the default behaviour (create or replace) :param item: a string representing a file-name, or a file-like object, or a file descriptor; this represents the file on which to act :param string name: the attribute whose value to set; usually in the form of ``system.posix_acl`` or ``user.mime_type`` :param string value: possibly with embedded NULLs; note that there are restrictions regarding the size of the value, for example, for ext2/ext3, maximum size is the block size :param flags: if 0 or omitted the attribute will be created or replaced; if :const:`XATTR_CREATE`, the attribute will be created, giving an error if it already exists; if :const:`XATTR_REPLACE`, the attribute will be replaced, giving an error if it doesn't exist; :type flags: integer :param nofollow: if true and if the file name given is a symbolic link, the function will operate on the symbolic link itself instead of its target; defaults to false :type nofollow: boolean, optional .. deprecated:: 0.4 this function has been deprecated by the :func:`set` function. get_all(item[, nofollow=False, namespace=None]) Get all the extended attributes of an item. This function performs a bulk-get of all extended attribute names and the corresponding value. Example: >>> xattr.get_all('/path/to/file') [('user.mime-type', 'plain/text'), ('user.comment', 'test'), ('system.posix_acl_access', '\x02\x00...')] >>> xattr.get_all('/path/to/file', namespace=xattr.NS_USER) [('mime-type', 'plain/text'), ('comment', 'test')] :param item: a string representing a file-name, or a file-like object, or a file descriptor; this represents the file on which to act :keyword namespace: an optional namespace for filtering the attributes; for example, querying all user attributes can be accomplished by passing namespace=:const:`NS_USER` :type namespace: string :param nofollow: if true and if the file name given is a symbolic link, the function will operate on the symbolic link itself instead of its target; defaults to false :type nofollow: boolean, optional :return: list of tuples (name, value); note that if a namespace argument was passed, it (and the separator) will be stripped from the names returned :rtype: list :raises EnvironmentError: caused by any system errors .. note:: Since reading the whole attribute list is not an atomic operation, it might be possible that attributes are added or removed between the initial query and the actual reading of the attributes; the returned list will contain only the attributes that were present at the initial listing of the attribute names and that were still present when the read attempt for the value is made. .. versionadded:: 0.4 .. versionchanged:: 0.5.1 The namespace argument, if passed, cannot be None anymore; to explicitly specify an empty namespace, pass an empty string (byte string under Python 3).get(item, name[, nofollow=False, namespace=None]) Get the value of a given extended attribute. Example: >>> xattr.get('/path/to/file', 'user.comment') 'test' >>> xattr.get('/path/to/file', 'comment', namespace=xattr.NS_USER) 'test' :param item: a string representing a file-name, or a file-like object, or a file descriptor; this represents the file on which to act :param string name: the attribute whose value to retrieve; usually in the form of ``system.posix_acl`` or ``user.mime_type`` :param nofollow: if true and if the file name given is a symbolic link, the function will operate on the symbolic link itself instead of its target; defaults to false :type nofollow: boolean, optional :param namespace: if given, the attribute must not contain the namespace, but instead it will be taken from this parameter :type namespace: bytes :return: the value of the extended attribute (can contain NULLs) :rtype: string :raises EnvironmentError: caused by any system errors .. versionadded:: 0.4 .. versionchanged:: 0.5.1 The namespace argument, if passed, cannot be None anymore; to explicitly specify an empty namespace, pass an empty string (byte string under Python 3).getxattr(item, attribute[, nofollow=False]) Get the value of a given extended attribute (deprecated). :param item: a string representing a file-name, or a file-like object, or a file descriptor; this represents the file on which to act :param string name: the attribute whose value to retrieve; usually in the form of ``system.posix_acl`` or ``user.mime_type`` :param nofollow: if true and if the file name given is a symbolic link, the function will operate on the symbolic link itself instead of its target; defaults to false :type nofollow: boolean, optional .. deprecated:: 0.4 this function has been deprecated by the :func:`get` function. x1}111x111x1}11111x1}111x1111@ q 1@&l 1@$g 1*` 1" [ 1 !T 1 R 1M 10K 10(F GA$3a1GA$3a1GA$3a1P0X0GA$3a1i GA$3p864pP0GA$gcc 8.2.1 20180905 GA*GOW*EGA*GA+stack_clashGA*cf_protectionGA+GLIBCXX_ASSERTIONS GA*FORTIFYGA*GA! GA* GA!stack_realign GA$3h864 GA$3h864GA$3a1P0P0GA$3a1P0P0GA$3a1GA$3a1X0]0xattr.cpython-36m-x86_64-linux-gnu.so-0.5.3-18.el8.x86_64.debug[7zXZִF!t/]?Eh=ڊ2NO> ZMM8> #ct @ AS:Abz]D4'bB[V?z}%t8YXWK%*ǩ$YĔf]AB9Bi# c$V?껲>A ]2n:@ws iY4< (p?A@ZH8fȋb%+!4hKB-:< K!|] *?ɬ'w:XԵs4 !C"J2e.ݬ?q_o5ӴDKl(1_~865s؊7>(i7c B4weB{J~ Yөՠ4r YlMͪt#:QY ]/kZ&bCy>([avLK\h ΓR~6{ e%齼jPk⢓DRI*W(:d P5G?IJ0t/)yY֯7*alJ.AԢ:v4y}=dVaHѴqݿFnI1 Bf>-2-p"j*aT9O<^5Zleb½m9Cr8I MS<^pnu`v)lCeUl>hMT9cEf!Ms(K0ːX('<;$:7VjGAyL? @Ӳ("vFdbmpͺ>G<ҐjL=֞}mjssazVc p>@ @@2 @r @rHr`@r uDHuLy(