Ë
    ÷g÷j  ã                  ó~   — d Z ddlmZ ddlZddlmZmZmZ  e e	de
d¬«      «      Z eh d£«      Zdd	„Zdd
„Zdd„Zy)zKNormalize a page URL into the sites-repo path. Phase 1 fixture, no network.é    )ÚannotationsN)Ú	parse_qslÚ	urlencodeÚurlsplit)zco.ukzorg.ukzac.ukzgov.ukzltd.ukzcom.auznet.auzorg.auzco.nzzcom.brÚcomÚnetÚorgÚeduÚgovÚioÚappÚchatÚdevÚukT)ÚkeyÚreverse>   Ú_gaÚ_glÚrefÚ_hsmiÚdclidÚgclidÚyclidÚ_hsencÚfbclidÚgclsrcÚigshidÚmc_cidÚmc_eidÚttclidÚtwclidÚmkt_tokÚmsclkidÚref_srcÚsrsltidÚvero_idÚwickedidÚ	fb_sourceÚ
gad_sourceÚ
oly_enc_idÚoly_anon_idÚfb_action_idsÚhsctatrackingÚgad_campaignidÚfb_action_typesc                ó†   — t         D ]  }| |k(  s| j                  d|z   «      sŒ|c S  | j                  d«      }|r|d   S | S )NÚ.éÿÿÿÿ)Ú	_SUFFIXESÚendswithÚsplit)ÚhostÚsuffixÚlabelss      ú/app/clevertree_chat/urls.pyÚpublic_suffixr:   H   sG   € ßˆØ�6Š>˜TŸ]™]¨3°©<Õ8ØŠMð ð �Z‰Z˜‹_€FÙˆ6�"‰:Ð) TÐ)ó    c                ó¾   — | j                  «       }|j                  d«      s|j                  d«      ry|j                  d«      s|j                  d«      ry|t        v S )NÚutm_ÚutmTÚhsa_Úmc_)ÚlowerÚ
startswithÚ_EXACT_DROP)r   Úlowereds     r9   Úis_trackingrE   P   sT   € Ø�i‰i‹k€GØ×Ñ˜&Ô! W×%7Ñ%7¸Ô%>ØØ×Ñ˜&Ô! W×%7Ñ%7¸Ô%>ØØ”kÐ!Ð!r;   c                ó  — t        | j                  «       «      }|j                  xs dj                  «       j	                  d«      }|j                  d«      r|dd }t        |«      }|j                  }|j                  xs dj                  «       }|dk(  xr |dk(  xs |dk(  xr |d	k(  }|�|r|n|› d
|› �}|j                  xs d}t        j                  dd|«      j                  «       }|j                  d«      sd|z   }|j                  d«      s|dz  }t        |j                  d¬«      D �	�
cg c]  \  }	}
t        |	«      rŒ|	|
f‘Œ }}	}
|j!                  «        t#        |«      }|› d|› |› �}|r|› d|› �S |S c c}
}	w )z™Public-suffix folder, one trailing slash, campaign tags dropped.

    `id`, `p`, and `story` stay. Two ids are two debates. The fragment is dropped.
    Ú r1   zwww.é   NÚhttpsÚhttpéP   i»  Ú:Ú/z/+T)Úkeep_blank_valuesÚ?)r   ÚstripÚhostnamerA   ÚrstriprB   r:   ÚportÚschemeÚpathÚreÚsubr4   r   ÚqueryrE   Úsortr   )ÚurlÚpartsr6   r7   rS   rT   Údefault_portÚ
host_labelrU   r   ÚvalueÚkeptrX   Úbases                 r9   Únormalize_urlra   Y   s�  € ô
 �S—Y‘Y“[Ó!€EØ�N‰NÒ ˜b×'Ñ'Ó)×0Ñ0°Ó5€DØ‡��vÔØ�A�BˆxˆÜ˜4Ó €FØ�:‰:€DØ�l‰lÒ%˜g×,Ñ,Ó.€FØ˜fÑ$Ò3¨°©Ò[¸À7Ñ9JÒ9ZÈtÐWZÉ{€LØ˜©‘¸d¸VÀ1ÀTÀFÐ;K€JØ�:‰:Ò˜€DÜ�6‰6�%˜˜dÓ#×)Ñ)Ó+€DØ�?‰?˜3ÔØ�T‰zˆØ�=‰=˜ÔØ�‰ˆÜ+4°U·[±[ÐTXÕ+YÔrÑ+Y™Z˜S %ÔalÐmpÕaqˆS�%ŠLÐ+Y€DÑrØ‡I�I„KÜ�d‹O€EØˆX�Q�z�l 4 &Ð)€DÙØ��q˜˜Ð Ð Ø€Kùó ss   Ä4F ÅF )r6   ÚstrÚreturnrb   )r   rb   rc   Úbool)rZ   rb   rc   rb   )Ú__doc__Ú
__future__r   rV   Úurllib.parser   r   r   ÚtupleÚsortedÚlenr3   Ú	frozensetrC   r:   rE   ra   © r;   r9   Ú<module>rm      sT   ðÙ Qå "ã 	ß 7Ñ 7áÙ
ð	
ð, Øô1ó€	ñ: òó €óF*ó"ôr;   