JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr ] @scddlmZddlmZddlmZddlmZmZGdddejZ dS))pytree)token) fixer_base)Name parenthesizec@s(eZdZdZdZddZdS) FixHasKeyTa anchor=power< before=any+ trailer< '.' 'has_key' > trailer< '(' ( not(arglist | argument) arg=any ','> ) ')' > after=any* > | negation=not_test< 'not' anchor=power< before=any+ trailer< '.' 'has_key' > trailer< '(' ( not(arglist | argument) arg=any ','> ) ')' > > > c Cs"|j}|jj|jkr7|jj|jr7dS|jd}|d}|j}dd|dD}|dj}|jd} | rdd| D} |j|j |j|j |j |j |j |jfkrt|}t|d kr |d }ntj|j|}d |_td d d } |rotdd d } tj|j| | f} tj|j || |f} | rt| } tj|j| ft| } |jj|j |j|j|j|j|j|j|j|jf krt| } || _| S)NnegationanchorcSsg|]}|jqS)clone).0nr r 0/opt/alt/python35/lib64/python3.5/fix_has_key.py Ss z'FixHasKey.transform..beforeargaftercSsg|]}|jqSr )r )r r r r rrWs  inprefixnot)symsparenttypeZnot_testpatternmatchgetrr Z comparisonZand_testZor_testZtestZlambdefargumentrlenrZNodeZpowerrZcomp_optupleexprZxor_exprZand_exprZ shift_exprZ arith_exprZtermZfactor) selfZnoderesultsrrr rrrrZn_opZn_notnewr r r transformHsD   !    "    zFixHasKey.transformN)__name__ __module__ __qualname__Z BM_compatibleZPATTERNr&r r r rr's rN) rZpgen2rrZ fixer_utilrrZBaseFixrr r r r!s