Ńň \ŻJc@sĐddklZddklZddklZddklZddkZddklZddkl Z dZ dZ d„Z ei ie eƒd„Zei iee ƒd„Zei iee ƒdS( i˙˙˙˙(tREQUEST_METHOD(t CONTENT_TYPE(t USER_AGENT(tWWW_AUTHENTICATEN(tIRequestClassifier(tIChallengeDecidertOPTIONStPROPFINDt PROPPATCHtMKCOLtLOCKtUNLOCKtTRACEtDELETEtCOPYtMOVEs2Microsoft Data Access Internet Publishing ProvidertWebDrivesZope External EditortWebDAVFStGoliathtneontdavlibtwsAPIsMicrosoft-WebDAVcCsŽt|ƒ}|tjodSt|ƒ}|o0x-tD]!}|i|ƒdjodSq8Wn|djot|ƒdjodSndS(sk Returns one of the classifiers 'dav', 'xmlpost', or 'browser', depending on the imperative logic belowtdavi˙˙˙˙tPOSTstext/xmltxmlposttbrowser(Rt _DAV_METHODSRt_DAV_USERAGENTStfindR(tenvirontrequest_methodt useragenttagent((s:/usr/lib/python2.6/site-packages/repoze/who/classifiers.pytdefault_request_classifier#s      cCs |idƒS(Ns401 (t startswith(Rtstatustheaders((s:/usr/lib/python2.6/site-packages/repoze/who/classifiers.pytdefault_challenge_decider4scCsb|idƒptSt|ƒ}d|jotS|idƒ}|dj o|idƒ StS(s– Don't challenge for pre-challenged responses. o Assume responsese with 'WWW-Authenticate' or an HTML content type are pre-challenged. s401 sWWW-Authenticates Content-Types text/htmlN(R"tFalsetdicttgettNonetTrue(RR#R$th_dicttct((s:/usr/lib/python2.6/site-packages/repoze/who/classifiers.pytpassthrough_challenge_decider8s   ( RRRR R R R R RR( s2Microsoft Data Access Internet Publishing ProviderRsZope External EditorRRRRRsMicrosoft-WebDAV(tpaste.httpheadersRRRRtzope.interfacetzopetrepoze.who.interfacesRRRRR!t interfacetdirectlyProvidesR%R-(((s:/usr/lib/python2.6/site-packages/repoze/who/classifiers.pyts@