
    Ğiq                    j  d dl Z d dlZd dlZddlmZmZmZmZmZ h dZ	da
 G d de          Z G d d	e
          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z G d% d&e          Z G d' d(ee          Z G d) d*ee          Z G d+ d,e          Z G d- d.e          Z G d/ d0e          Z  G d1 d2e          Z! G d3 d4e          Z" G d5 d6e          Z# G d7 d8e          Z$ G d9 d:e          Z% G d; d<e          Z& G d= d>e          Z' G d? d@e          Z( G dA dBe          Z) G dC dDe          Z* G dE dFe          Z+ G dG dHe          Z, G dI dJe,          Z- G dK dLe,          Z. G dM dNe          Z/ G dO dPe/          Z0 G dQ dRe/          Z1 G dS dTe          Z2 G dU dVe2          Z3 G dW dXe          Z4 G dY dZe          Z5 G d[ d\e          Z6 G d] d^e6          Z7 G d_ d`e6          Z8 G da dbe          Z9 G dc dde          Z: G de dfe          Z; G dg dhe          Z< G di dje          Z= G dk dle          Z> G dm dne>          Z? G do dpe          Z@ G dq dre>          ZA G ds dte          ZB G du dve          ZC G dw dxe          ZD G dy dzeD          ZE G d{ d|e          ZF G d} d~eF          ZG G d deF          ZH G d de          ZI G d deI          ZJ G d deI          ZK G d de          ZL G d de          ZM G d de          ZN G d de          ZO G d deO          ZP G d deP          ZQ G d de          ZR G d de          ZS G d deS          ZT G d deS          ZU G d deS          ZV G d deS          ZW G d de          ZX G d de          ZY G d de          ZZ G d de          Z[ G d de          Z\ G d de          Z] G d de          Z^ G d de^          Z_ G d de^          Z` G d de          Za G d de          Zb G d deb          Zc G d deb          Zd G d de          Ze G d de          Zf G d de          Zg G d deg          Zh G d de          Zi G dÄ dei          Zj G dń dej          Zk G dǄ de          Zl G dɄ de          Zm G d˄ de          Zn G d̈́ den          Zo G dτ den          Zp G dф den          Zq G dӄ de          Zr G dՄ de          Zs G dׄ de          Zt G dل de          Zu G dۄ de          Zv G d݄ de          Zw G d߄ dej          Zx G d de          Zy G d dey          Zz G d dey          Z{ G d dey          Z| G d de          Z} G d de          Z~ G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z G d% d&e          Z G d' d(e          Z G d) d*e          Z G d+ d,e          Z G d- d.e          Z G d/ d0e          Z G d1 d2e          Z G d3 d4e          Z G d5 d6e          Z G d7 d8e          Z G d9 d:e          Z G d; d<e          Z G d= d>e          Z G d? d@e          Z G dA dBe          Z G dC dDe          Z G dE dFe          Z G dG dHe          Z G dI dJe          Z G dK dLe          Z G dM dNe          Z G dO dPe          Z G dQ dRe          Z G dS dTe          Z G dU dVe          Z G dW dXe          Z G dY dZe          Z G d[ d\e          Z G d] d^e          Z G d_ d`e          Z G da dbe          Z G dc dde          Z G de dfe          Z G dg dhe          Z G di dje          Z G dk dle          Z G dm dne          Z G do dpe          Z G dq dre          Z G ds dte          Z G du dve          Z G dw dxe          Z G dy dze          Z G d{ d|e          Z G d} d~e          Z G d de          Z G d de          Z G d de          Z G d deʦ          Z G d de          Z G d de̦          Z G d de̦          Z G d de̦          Z G d de          Z G d de          Z G d de          Z G d de          Z G d deӦ          Z G d deӦ          Z G d deӦ          Z G d de          Z G d deӦ          Z G d de          Z G d de          Z G d de          Z G d deۦ          Z G d deۦ          Z G d de          Z G d de          Z G d deߦ          Z G d deߦ          Z G d de          Z G d deӦ          Z G d de          Z G d de          Z G d deӦ          Z G d de          Z G d de          Z G d de          Z G dÄ de          Z G dń de          Z G dǄ de          Z G dɄ de          Z G d˄ de          Z G d̈́ de          Z G dτ de          Z G dф de          Z G dӄ de          Z G dՄ de          Z G dׄ de          Z G dل deD          Z G dۄ de          Z G d݄ de          Z G d߄ de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d de          Z	 G d de          Z
 G d de          Z G d deO          Z G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d deO          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z G d% d&e          Z G d' d(e          Z G d) d*e          Z G d+ d,e          Z G d- d.e          Z G d/ d0e          Z  G d1 d2e          Z! G d3 d4e          Z" G d5 d6e          Z# G d7 d8e          Z$ G d9 d:e          Z% G d; d<e%          Z& G d= d>e&          Z' G d? d@e&          Z( G dA dBe%          Z) G dC dDe)          Z* G dE dFe%          Z+ G dG dHe%          Z, G dI dJe)          Z- G dK dLe          Z. G dM dNe          Z/ G dO dPe          Z0 G dQ dRe0          Z1 G dS dTe          Z2 G dU dVe          Z3 G dW dXe          Z4 G dY dZe          Z5 G d[ d\e          Z6 G d] d^e          Z7 G d_ d`e          Z8 G da dbe          Z9 G dc dde          Z: G de dfe          Z; G dg dhe          Z< G di dje          Z= G dk dle          Z> G dm dne          Z? G do dpe          Z@ G dq dre          ZA G ds dte          ZB G du dve          ZC G dw dxe          ZD G dy dze          ZE G d{ d|e          ZF G d} d~e          ZG G d de          ZH G d de          ZI G d de          ZJ G d de          ZK G d de          ZL G d de          ZM G d de          ZN G d de          ZO G d de          ZP G d de          ZQ G d de          ZR G d de          ZS G d de          ZT G d de          ZU G d de          ZV G d deV          ZW G d de          ZX G d de          ZY G d de          ZZ G d de          Z[ G d de          Z\ G d de\          Z] G d de          Z^ G d de          Z_ G d de_          Z` G d de_          Za G d de          Zb G d deb          Zc G d deb          Zd G d de          Ze G d de          Zf G d def          Zg G d de          Zh G d de          Zi G dÄ de          Zj G dń de          Zk G dǄ de          Zl G dɄ de          Zm G d˄ de          Zn G d̈́ deʦ          Zo G dτ de          Zp G dф deP          Zq G dӄ dԐeq          Zr G dՄ de          Zs G dׄ dej          Zt G dل de          Zu G dۄ de          Zv G d݄ de          Zw G d߄ de          Zx G d de          Zy G d de          Zz G d de          Z{ G d de          Z| G d de          Z} G d de          Z~ G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d dei          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z G d% d&e          Z G d' d(e          Z G d) d*e          Z G d+ d,e          Z G d- d.e          Z G d/ d0e          Z G d1 d2e          Z G d3 d4e          Z G d5 d6e          Z G d7 d8e          Z G d9 d:e          Z G d; d<e          Z G d= d>e          Z G d? d@e          Z G dA dBe          Z G dC dDe          Z G dE dFe          Z G dG dHe          Z G dI dJe          Z G dK dLe          Z G dM dNe          Z G dO dPe          Z G dQ dRe          Z G dS dTe          Z G dU dVe          Z G dW dXe          Z G dY dZe          Z G d[ d\e          Z G d] d^e          Z G d_ d`ej          Z G da dbe          Z G dc dde          Z G de dfe          Z G dg dhe          Z G di dje          Z G dk dle          Z G dm dne          Z G do dpe          Z G dq drej          Z G ds dtej          Z G du dvej          Z G dw dxej          Z G dy dzei          Z G d{ d|eŦ          Z G d} d~ej          Z G d deŦ          Z G d de          Z G d de          Z G d deʦ          Z G d de          Z G d de̦          Z G d de̦          Z G d de          Z G d de          Z G d de          Z G d deѦ          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d deۦ          Z G d deܦ          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G dÄ dĐe          Z G dń dƐe          Z G dǄ de          Z G dɄ de          Z G d˄ de          Z G d̈́ dΐe          Z G dτ dАe          Z G dф de          Z G dӄ dԐe          Z G dՄ d֐e          Z G dׄ de          Z G dل de          Z G dۄ dܐe          Z G d݄ dސe          Z G d߄ de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d de          Z	 G d de          Z
 G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z G d% d&e          Z G d' d(e          Z G d) d*e          Z G d+ d,e          Z G d- d.e          Z G d/ d0e          Z  G d1 d2e          Z! G d3 d4e          Z" G d5 d6e          Z# G d7 d8e          Z$ G d9 d:e          Z% G d; d<e          Z& G d= d>e          Z' G d? d@e          Z( G dA dBe          Z) G dC dDe          Z* G dE dFe          Z+ G dG dHe          Z, G dI dJe          Z- G dK dLe          Z. G dM dNe.          Z/ G dO dPe          Z0 G dQ dRej          Z1 G dS dTe          Z2 G dU dVe          Z3 G dW dXe          Z4 G dY dZe4          Z5 G d[ d\e          Z6 G d] d^eD          Z7 G d_ d`e          Z8 G da dbe          Z9 G dc dde          Z: G de dfe          Z; G dg dhe          Z< G di dje<          Z= G dk dle          Z> G dm dne          Z? G do dpe          Z@ G dq dre@          ZA G ds dte@          ZB G du dve          ZC G dw dxeC          ZD G dy dzeC          ZE G d{ d|e          ZF G d} d~e          ZG G d de          ZH G d deH          ZI G d deI          ZJ G d deH          ZK G d deI          ZL G d de          ZM G d de          ZN G d de          ZO G d de4          ZP G d de          ZQ G d de          ZR G d de          ZS G d de          ZT G d de          ZU G d de          ZV G d de          ZW G d de          ZX G d de          ZY G d de          ZZ G d deZ          Z[ G d de[          Z\ G d de[          Z] G d deZ          Z^ G d deZ          Z_ G d de[          Z` G d de[          Za G d de          Zb G d de          Zc G d de          Zd G d de          Ze G d de          Zf G d de          Zg G d de          Zh G d de          Zi G dÄ de          Zj G dń de          Zk G dǄ de          Zl G dɄ dʐel          Zm G d˄ d̐el          Zn G d̈́ de          Zo G dτ de          Zp G dф dҐep          Zq G dӄ dԐep          Zr G dՄ d֐ep          Zs G dׄ de          Zt G dل de          Zu G dۄ dܐeu          Zv G d݄ dސeu          Zw G d߄ deu          Zx G d deu          Zy G d deu          Zz G d de          Z{ G d de          Z| G d de          Z} G d de}          Z~ G d de}          Z G d dej          Z G d deO          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de\          Z G d de          Z G d d ej          Z G d! d"ej          Z G d# d$e          Z G d% d&e          Z G d' d(e          Z G d) d*e          Z G d+ d,e          Z G d- d.e          Z G d/ d0e          Z G d1 d2e          Z G d3 d4e          Z G d5 d6e          Z G d7 d8e          Z G d9 d:e          Z G d; d<e          Z G d= d>e          Z G d? d@e          Z G dA dBe          Z G dC dDe          Z G dE dFe          Z G dG dHe          Z G dI dJe          Z G dK dLe          Z G dM dNe          Z G dO dPe          Z G dQ dRe          Z G dS dTe          Z G dU dVe          Z G dW dXe          Z G dY dZe          Z G d[ d\e          Z G d] d^e          Z G d_ d`e          Z G da dbe          Z G dc dde          Z G de dfe          Z G dg dhe          Z G di dje          Z G dk dle          Z G dm dne          Z G do dpe          Z G dq dre          Z G ds dte          Z G du dve          Z G dw dxeæ          Z G dy dzeæ          Z G d{ d|e          Z G d} d~e          Z G d de          Z G d deȦ          Z G d deȦ          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d deҦ          Z G d deҦ          Z G d deҦ          Z G d deҦ          Z G d de          Z G d de          Z G d de          Z G d de٦          Z G d deڦ          Z G d deۦ          Z G d deۦ          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G dÄ de          Z G dń de          Z G dǄ dȐe          Z G dɄ de          Z G d˄ d̐e          Z G d̈́ dΐe          Z G dτ dАe          Z G dф dҐe          Z G dӄ de          Z G dՄ de          Z G dׄ dej          Z G dل de          Z G dۄ de          Z G d݄ de          Z G d߄ de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d de          Z	 G d de	          Z
 G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z G d% d&e          Z G d' d(e          Z G d) d*e          Z G d+ d,e          Z G d- d.e          Z G d/ d0e          Z  G d1 d2e          Z! G d3 d4e!          Z" G d5 d6e!          Z# G d7 d8e          Z$ G d9 d:e!          Z% G d; d<e          Z& G d= d>e          Z' G d? d@e          Z( G dA dBe          Z) G dC dDe          Z* G dE dFe          Z+ G dG dHe+          Z, G dI dJe+          Z- G dK dLe          Z. G dM dNe          Z/ G dO dPe/          Z0 G dQ dRe          Z1 G dS dTe          Z2 G dU dVe          Z3 G dW dXe          Z4 G dY dZe          Z5 G d[ d\e          Z6 G d] d^e          Z7 G d_ d`e          Z8 G da dbe8          Z9 G dc dde8          Z: G de dfe          Z; G dg dhe          Z< G di dje          Z= G dk dle=          Z> G dm dne          Z? G do dpe?          Z@ G dq dre?          ZA G ds dte?          ZB G du dve          ZC G dw dxe          ZD G dy dze          ZE G d{ d|e          ZF G d} d~e          ZG G d de          ZH G d de          ZI G d de          ZJ G d de          ZK G d de          ZL G d deL          ZM G d deL          ZN G d de          ZO G d de          ZP G d deP          ZQ G d deP          ZR G d de          ZS G d de          ZT G d de          ZU G d de          ZV G d de          ZW G d de          ZX G d de          ZY G d de          ZZ G d de          Z[ G d de[          Z\ G d de[          Z] G d de[          Z^ G d de          Z_ G d de          Z` G d de          Za G d de          Zb G d de          Zc G d de          Zd G d de          Ze G d de          Zf G d de          Zg G d de          Zh G d de          Zi G dÄ dĐei          Zj G dń dƐei          Zk G dǄ dȐei          Zl G dɄ dʐel          Zm G d˄ d̐el          Zn G d̈́ de          Zo G dτ de          Zp G dф de          Zq G dӄ de          Zr G dՄ de          Zs G dׄ de          Zt G dل de          Zu G dۄ de          Zv G d݄ de          Zw G d߄ de          Zx G d de          Zy G d de          Zz G d dez          Z{ G d de@          Z| G d de          Z} G d de}          Z~ G d de}          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d	 d
e          Z G d deʦ          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z G d% d&e          Z G d' d(e          Z G d) d*e          Z G d+ d,e          Z G d- d.e          Z G d/ d0e          Z G d1 d2e          Z G d3 d4e          Z G d5 d6e          Z G d7 d8e          Z G d9 d:e          Z G d; d<e          Z G d= d>e          Z G d? d@e          Z G dA dBe          Z G dC dDe          Z G dE dFe          Z G dG dHe          Z G dI dJe          Z G dK dLe          Z G dM dNe          Z G dO dPe          Z G dQ dRe          Z G dS dTe          Z G dU dVe          Z G dW dXe          Z G dY dZe          Z G d[ d\e          Z G d] d^e          Z G d_ d`e          Z G da dbe          Z G dc dde          Z G de dfe          Z G dg dhe          Z G di dje          Z G dk dle          Z G dm dne          Z G do dpe          Z G dq dre          Z G ds dte          Z G du dve          Z G dw dxeæ          Z G dy dzeĦ          Z G d{ d|eĦ          Z G d} d~eæ          Z G d de          Z G d de          Z G d de          Z G d deʦ          Z G d deʦ          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d deѦ          Z G d deѦ          Z G d deӦ          Z G d deӦ          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d deަ          Z G d deަ          Z G d de          Z G d deަ          Z G d de          Z G d deۦ          Z G d de          Z G d de/          Z G d de          Z G d de          Z G d de          Z G dÄ de          Z G dń dƐe          Z G dǄ de          Z G dɄ de          Z G d˄ de          Z G d̈́ de          Z G dτ de          Z G dф dҐe          Z G dӄ dԐe          Z G dՄ d֐e          Z G dׄ dؐe          Z G dل dڐe          Z G dۄ de          Z G d݄ de          Z G d߄ de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z G d de          Z G d de          Z G d de          Z G d deP          Z G d de          Z G d de          Z G d d e          Z G d de          Z	 G d de          Z
 G d de
          Z G d de
          Z G d	 d
e
          Z G d de          Z G d de          Z G d deO          Z G d de          Z G d deO          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z G d% d&e          Z G d' d(e          Z G d) d*e          Z G d+ d,e          Z G d- d.e          Z G d/ d0e          Z  G d1 d2e          Z! G d3 d4e          Z" G d5 d6e          Z# G d7 d8e#          Z$ G d9 d:e          Z% G d; d<e          Z& G d= d>e          Z' G d? d@e          Z( G dA dBe(          Z) G dC dDe)          Z* G dE dFe          Z+ G dG dHe          Z, G dI dJe          Z- G dK dLe          Z. G dM dNe.          Z/ G dO dPe          Z0 G dQ dRe0          Z1 G dS dTe          Z2 G dU dVe          Z3 G dW dXe          Z4 G dY dZe0          Z5 G d[ d\e          Z6 G d] d^e6          Z7 G d_ d`e.          Z8 G da dbe8          Z9 G dc dde8          Z: G de dfe          Z; G dg dhe          Z< G di dje          Z= G dk dle=          Z> G dm dne          Z? G do dpe          Z@ G dq dre          ZA G ds dteA          ZB G du dveA          ZC G dw dxe          ZD G dy dzeA          ZE G d{ d|e          ZF G d} d~e          ZG G d de          ZH G d de          ZI G d de          ZJ G d de          ZK G d de          ZL G d de          ZM G d de          ZN G d deN          ZO G d deN          ZP G d deN          ZQ G d de          ZR G d deR          ZS G d deR          ZT G d deR          ZU G d deR          ZV G d deR          ZW G d de          ZX G d de          ZY G d de          ZZ G d de          Z[ G d de          Z\ G d de\          Z] G d de\          Z^ G d de          Z_ G d de_          Z` G d de_          Za G d de_          Zb G d de_          Zc G d de_          Zd G d de_          Ze G d de_          Zf G d de          Zg G d deg          Zh G d deg          Zi G dÄ dĐeg          Zj G dń de          Zk G dǄ dȐek          Zl G dɄ dʐek          Zm G d˄ de          Zn G d̈́ de          Zo G dτ de          Zp G dф de          Zq G dӄ de          Zr G dՄ de          Zs G dׄ de          Zt G dل de          Zu G dۄ de          Zv G d݄ de          Zw G d߄ de          Zx G d de          Zy G d de          Zz G d de          Z{ G d de          Z| G d de          Z} G d de}          Z~ G d de}          Z G d deʦ          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d 	d e          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d	 	d
e          Z G 	d 	de          Z G 	d 	dee          Z G 	d 	dee          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	d e          Z G 	d! 	d"e          Z G 	d# 	d$e          Z G 	d% 	d&e          Z G 	d' 	d(ez          Z G 	d) 	d*e          Z G 	d+ 	d,e          Z G 	d- 	d.e          Z G 	d/ 	d0e          Z G 	d1 	d2e          Z G 	d3 	d4e          Z G 	d5 	d6e          Z G 	d7 	d8e          Z G 	d9 	d:e          Z G 	d; 	d<e          Z G 	d= 	d>e          Z G 	d? 	d@e          Z G 	dA 	dBe          Z G 	dC 	dDe          Z G 	dE 	dFe          Z G 	dG 	dHe          Z G 	dI 	dJe          Z G 	dK 	dLe          Z G 	dM 	dNe          Z G 	dO 	dPe          Z G 	dQ 	dRe          Z G 	dS 	dTe          Z G 	dU 	dVe          Z G 	dW 	dXe          Z G 	dY 	dZe          Z G 	d[ 	d\e          Z G 	d] 	d^e          Z G 	d_ 	d`e          Z G 	da 	dbe          Z G 	dc 	dde          Z G 	de 	dfe          Z G 	dg 	dhe          Z G 	di 	dje          Z G 	dk 	dle          Z G 	dm 	dne          Z G 	do 	dpef          Z G 	dq 	dref          Z G 	ds 	dtef          Z G 	du 	dve          Z G 	dw 	dxe          Z G 	dy 	dze          Z G 	d{ 	d|e          Z G 	d} 	d~eƦ          Z G 	d 	deƦ          Z G 	d 	deƦ          Z G 	d 	de          Z G 	d 	deʦ          Z G 	d 	deʦ          Z G 	d 	de          Z G 	d 	de          Z G 	d 	deΦ          Z G 	d 	deΦ          Z G 	d 	deΦ          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	deצ          Z G 	d 	deצ          Z G 	d 	dee          Z G 	d 	dee          Z G 	d 	deצ          Z G 	d 	de          Z G 	d 	deݦ          Z G 	d 	deݦ          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	dÄ 	de          Z G 	dń 	de          Z G 	dǄ 	dȐe          Z G 	dɄ 	de          Z G 	d˄ 	de          Z G 	d̈́ 	dΐe          Z G 	dτ 	dАe          Z G 	dф 	de          Z G 	dӄ 	dԐe          Z G 	dՄ 	d֐e          Z G 	dׄ 	de          Z G 	dل 	de          Z G 	dۄ 	dܐe          Z G 	d݄ 	de          Z G 	d߄ 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z  G 	d 	deѦ          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 	de          Z G 	d 
d e          Z G 
d 
de          Z	 G 
d 
de	          Z
 G 
d 
de	          Z G 
d 
de          Z G 
d	 
d
e          Z G 
d 
de          Z G 
d 
de          Z G 
d 
de          Z G 
d 
de          Z G 
d 
de          Z G 
d 
de          Z G 
d 
de          Z G 
d 
de          Z G 
d 
de          Z G 
d 
de          Z G 
d 
d e          Z G 
d! 
d"e          Z G 
d# 
d$e          Z G 
d% 
d&e          Z G 
d' 
d(e          Z G 
d) 
d*e          Z G 
d+ 
d,e          Z G 
d- 
d.e          Z G 
d/ 
d0e          Z  G 
d1 
d2e          Z! G 
d3 
d4e          Z" G 
d5 
d6e"          Z# G 
d7 
d8e"          Z$ G 
d9 
d:e          Z% G 
d; 
d<e          Z& G 
d= 
d>e          Z' G 
d? 
d@e          Z( G 
dA 
dBe(          Z) G 
dC 
dDe(          Z* G 
dE 
dFe          Z+ G 
dG 
dHe          Z, G 
dI 
dJe,          Z- G 
dK 
dLe,          Z. G 
dM 
dNe          Z/ G 
dO 
dPe          Z0 G 
dQ 
dRe          Z1 G 
dS 
dTe          Z2 G 
dU 
dVe2          Z3 G 
dW 
dXe2          Z4 G 
dY 
dZe4          Z5 G 
d[ 
d\e5          Z6 G 
d] 
d^e4          Z7 G 
d_ 
d`e4          Z8 G 
da 
dbe5          Z9 G 
dc 
dde          Z: G 
de 
dfe4          Z; G 
dg 
dhe          Z< G 
di 
dje4          Z= G 
dk 
dle          Z> G 
dm 
dne          Z? G 
do 
dpe          Z@ G 
dq 
dre          ZA G 
ds 
dte          ZB G 
du 
dve          ZC G 
dw 
dxe          ZD G 
dy 
dze          ZE G 
d{ 
d|e          ZF G 
d} 
d~eF          ZG G 
d 
de          ZH G 
d 
de          ZI G 
d 
de          ZJ G 
d 
deF          ZK G 
d 
de          ZL G 
d 
de          ZM G 
d 
de          ZN G 
d 
deN          ZO G 
d 
de          ZP G 
d 
deP          ZQ G 
d 
deN          ZR G 
d 
deP          ZS G 
d 
deN          ZT G 
d 
deP          ZU G 
d 
de          ZV G 
d 
de          ZW G 
d 
deW          ZX G 
d 
deW          ZY G 
d 
deW          ZZ G 
d 
de          Z[ G 
d 
de          Z\ G 
d 
de          Z] G 
d 
de          Z^ G 
d 
de^          Z_ G 
d 
de^          Z` G 
d 
de^          Za G 
d 
de          Zb G 
d 
deb          Zc G 
d 
deb          Zd G 
d 
deb          Ze G 
d 
de          Zf G 
d 
de          Zg G 
d 
de          Zh G 
d 
de          Zi G 
dÄ 
dĐe          Zj G 
dń 
de          Zk G 
dǄ 
de          Zl G 
dɄ 
de          Zm G 
d˄ 
de          Zn G 
d̈́ 
dΐen          Zo G 
dτ 
dАen          Zp G 
dф 
dҐen          Zq G 
dӄ 
dԐen          Zr G 
dՄ 
de          Zs G 
dׄ 
de          Zt G 
dل 
de          Zu G 
dۄ 
de          Zv G 
d݄ 
dސev          Zw G 
d߄ 
dev          Zx G 
d 
dev          Zy G 
d 
de          Zz G 
d 
dez          Z{ G 
d 
dez          Z| G 
d 
dez          Z} G 
d 
dez          Z~ G 
d 
de          Z G 
d 
de          Z G 
d 
de          Z G 
d 
de          Z G 
d 
de          Z G 
d 
de          Z G 
d 
de          Z G 
d 
de          Z G 
d 
de          Z G 
d d e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de<          Z G d de<          Z G d de          Z G d de          Z G d de<          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z G d% d&e          Z G d' d(e          Z G d) d*e          Z G d+ d,e          Z G d- d.e          Z G d/ d0e          Z G d1 d2e          Z G d3 d4e          Z G d5 d6e          Z G d7 d8e          Z G d9 d:e          Z G d; d<e          Z G d= d>e          Z G d? d@e          Z G dA dBe          Z G dC dDe          Z G dE dFe          Z G dG dHe          Z G dI dJe          Z G dK dLe          Z G dM dNe          Z G dO dPe          Z G dQ dRe          Z G dS dTe          Z G dU dVe          Z G dW dXe          Z G dY dZe          Z G d[ d\e          Z G d] d^e          Z G d_ d`e          Z G da dbe          Z G dc dde          Z G de dfe          Z G dg dhe          Z G di dje          Z G dk dle          Z G dm dne          Z G do dpe          Z G dq dre          Z G ds dte          Z G du dve          Z G dw dxe          Z G dy dzeĦ          Z G d{ d|eĦ          Z G d} d~e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de˦          Z G d de˦          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de֦          Z G d deצ          Z G d de֦          Z G d de֦          Z G d deצ          Z G d deצ          Z G d deצ          Z G d deצ          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G dÄ de          Z G dń de          Z G dǄ de          Z G dɄ dʐe          Z G d˄ de          Z G d̈́ de          Z G dτ dАe          Z G dф de          Z G dӄ de          Z G dՄ d֐e          Z G dׄ dؐe          Z G dل dڐe          Z G dۄ de          Z G d݄ de          Z G d߄ de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z G d de          Z G d de          Z G d de.          Z G d de          Z G d dej          Z G d de          Z G d d e          Z G d de          Z	 G d de          Z
 G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z G d% d&e          Z G d' d(e          Z G d) d*e          Z G d+ d,e          Z G d- d.e          Z G d/ d0e          Z  G d1 d2e          Z! G d3 d4e          Z" G d5 d6e          Z# G d7 d8e#          Z$ G d9 d:e#          Z% G d; d<e#          Z& G d= d>e          Z' G d? d@e          Z( G dA dBe(          Z) G dC dDe(          Z* G dE dFe(          Z+ G dG dHe          Z, G dI dJe          Z- G dK dLe          Z. G dM dNe.          Z/ G dO dPe/          Z0 G dQ dRe/          Z1 G dS dTe.          Z2 G dU dVe.          Z3 G dW dXe.          Z4 G dY dZe          Z5 G d[ d\e          Z6 G d] d^e6          Z7 G d_ d`e6          Z8 G da dbe          Z9 G dc dde9          Z: G de dfe9          Z; G dg dhe9          Z< G di dje9          Z= G dk dle          Z> G dm dne          Z? G do dpe          Z@ G dq dre          ZA G ds dte          ZB G du dveB          ZC G dw dxeB          ZD G dy dzeB          ZE G d{ d|eB          ZF G d} d~e          ZG G d de          ZH G d de          ZI G d de          ZJ G d de          ZK G d de          ZL G d de          ZM G d de          ZN G d de          ZO G d deO          ZP G d deO          ZQ G d deQ          ZR G d deO          ZS G d deS          ZT G d deOe          ZU G d deQ          ZV G d deS          ZW G d deS          ZX G d deS          ZY G d de          ZZ G d de          Z[ G d deʦ          Z\ G d deʦ          Z] G d deʦ          Z^ G d deʦ          Z_ G d deʦ          Z` G d deʦ          Za G d deʦ          Zb G d de          Zc G d dec          Zd G d dec          Ze G d de          Zf G d de          Zg G d de          Zh G d de          Zi G dÄ de          Zj G dń de          Zk G dǄ de          Zl G dɄ de          Zm G d˄ de          Zn G d̈́ de          Zo G dτ de          Zp G dф dҐep          Zq G dӄ dԐeq          Zr G dՄ d֐eq          Zs G dׄ de          Zt G dل de          Zu G dۄ de          Zv G d݄ de          Zw G d߄ de          Zx G d de          Zy G d de          Zz G d de          Z{ G d de{          Z| G d de{          Z} G d de          Z~ G d de~          Z G d de~          Z G d de~          Z G d de=          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d deV          Z G d de          Z G d de          Z G d deP          Z G d de=          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$ej          Z G d% d&e          Z G d' d(eܦ          Z G d) d*eۦ          Z G d+ d,e          Z G d- d.e          Z G d/ d0e          Z G d1 d2e          Z G d3 d4e          Z G d5 d6e          Z G d7 d8e          Z G d9 d:e          Z G d; d<e          Z G d= d>e          Z G d? d@e          Z G dA dBe          Z G dC dDe          Z G dE dFe3          Z G dG dHe.          Z G dI dJe          Z G dK dLe          Z G dM dNe          Z G dO dPe          Z G dQ dRe          Z G dS dTe          Z G dU dVe          Z G dW dXe          Z G dY dZe          Z G d[ d\e          Z G d] d^e          Z G d_ d`e          Z G da dbe          Z G dc dde          Z G de dfe          Z G dg dhe          Z G di dje          Z G dk dle          Z G dm dne          Z G do dpe          Z G dq dre          Z G ds dte=          Z G du dve          Z G dw dxe          Z G dy dzeĦ          Z G d{ d|eĦ          Z G d} d~eƦ          Z G d deĦ          Z G d deƦ          Z G d de          Z G d deʦ          Z G d deʦ          Z G d deʦ          Z G d de          Z G d de          Z G d deϦ          Z G d deϦ          Z G d de          Z G d de          Z G d de          Z G d de          Z G d deq          Z G d de          Z G d de          Z G d de          Z G d de٦          Z G d de٦          Z G d de٦          Z G d de          Z G d dej          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G dÄ dĐe          Z G dń de          Z G dǄ de          Z G dɄ de          Z G d˄ de          Z G d̈́ de          Z G dτ de          Z G dф de          Z G dӄ de          Z G dՄ de          Z G dׄ de          Z G dل dڐe          Z G dۄ dܐe          Z G d݄ dސe          Z G d߄ de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d de          Z	 G d de          Z
 G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d deq          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z G d% d&eʦ          Z G d' d(eʦ          Z G d) d*e          Z G d+ d,eʦ          Z G d- d.eʦ          Z G d/ d0e          Z  G d1 d2e          Z! G d3 d4eʦ          Z" G d5 d6e          Z# G d7 d8e          Z$ G d9 d:e          Z% G d; d<e          Z& G d= d>e          Z' G d? d@e          Z( G dA dBe          Z) G dC dDe          Z* G dE dFe          Z+ G dG dHe          Z, G dI dJe          Z- G dK dLej          Z. G dM dNe          Z/ G dO dPe/          Z0 G dQ dRe          Z1 G dS dTe/          Z2 G dU dVe          Z3 G dW dXe3          Z4 G dY dZe4          Z5 G d[ d\e4          Z6 G d] d^e3          Z7 G d_ d`e3          Z8 G da dbe          Z9 G dc dde          Z: G de dfe          Z; G dg dhe          Z< G di dje          Z= G dk dle          Z> G dm dne          Z? G do dpe?          Z@ G dq dre?          ZA G ds dte          ZB G du dve          ZC G dw dxe          ZD G dy dze          ZE G d{ d|eE          ZF G d} d~eE          ZG G d deE          ZH G d de          ZI G d deE          ZJ G d de          ZK G d de          ZL G d de          ZM G d de          ZN G d de          ZO G d de0          ZP G d de          ZQ G d de          ZR G d de          ZS G d de          ZT G d de          ZU G d de          ZV G d deV          ZW G d deV          ZX G d deV          ZY G d deY          ZZ G d deZ          Z[ G d deY          Z\ G d deY          Z] G d deZ          Z^ G d deV          Z_ G d de          Z` G d de`          Za G d de`e          Zb G d de          Zc G d de`          Zd G d de`          Ze G d de`          Zf G d de          Zg G d de          Zh G d de          Zi G dÄ dĐei          Zj G dń dƐei          Zk G dǄ de          Zl G dɄ de          Zm G d˄ de          Zn G d̈́ de          Zo G dτ dАe          Zp G dф de          Zq G dӄ de          Zr G dՄ d֐er          Zs G dׄ de          Zt G dل de          Zu G dۄ de          Zv G d݄ de          Zw G d߄ de          Zx G d de          Zy G d de          Zz G d de          Z{ G d de{          Z| G d de{          Z} G d de          Z~ G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d deʦ          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d	 d
e          Z G d def          Z G d de          Z G d de)          Z G d de٦          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z G d% d&e          Z G d' d(e          Z G d) d*e          Z G d+ d,e          Z G d- d.e          Z G d/ d0e          Z G d1 d2e          Z G d3 d4e          Z G d5 d6e          Z G d7 d8e          Z G d9 d:e          Z G d; d<e          Z G d= d>eeO          Z G d? d@e          Z G dA dBe          Z G dC dDe          Z G dE dFe          Z G dG dHe          Z G dI dJe          Z G dK dLe          Z G dM dNe          Z G dO dPe          Z G dQ dRe          Z G dS dTe          Z G dU dVe          Z G dW dXe          Z G dY dZe          Z G d[ d\e          Z G d] d^e          Z G d_ d`e          Z G da dbe          Z G dc dde          Z G de dfe          Z G dg dhe          Z G di dje          Z G dk dle          Z G dm dne          Z G do dpe          Z G dq dreV          Z G ds dte          Z G du dve¦          Z G dw dxe¦          Z G dy dze          Z G d{ d|e          Z G d} d~e          Z G d de          Z G d de          Z G d deȦ          Z G d de          Z G d deȦ          Z G d de˦          Z G d de          Z G d de          Z G d deȦ          Z G d deȦ          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de֦          Z G d de          Z G d de          Z G d de٦          Z G d de֦          Z G d de          Z G d de          Z G d deݦ          Z G d deݦ          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G dÄ dĐe          Z G dń dƐe          Z G dǄ dȐe          Z G dɄ de          Z G d˄ de          Z G d̈́ de          Z G dτ de          Z G dф dҐe          Z G dӄ dԐe)          Z G dՄ de          Z G dׄ dؐe          Z G dل dڐe          Z G dۄ de          Z G d݄ de          Z G d߄ de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z G d deO          Z G d deڦ          Z G d deڦ          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d de          Z	 G d de          Z
 G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z G d% d&e          Z G d' d(e          Z G d) d*e          Z G d+ d,e          Z G d- d.e          Z G d/ d0e          Z  G d1 d2e          Z! G d3 d4e          Z" G d5 d6e          Z# G d7 d8e          Z$ G d9 d:e          Z% G d; d<ep          Z& G d= d>ep          Z' G d? d@e          Z( G dA dBe          Z) G dC dDe          Z* G dE dFe*          Z+ G dG dHe*          Z, G dI dJe*          Z- G dK dLe*          Z. G dM dNe          Z/ G dO dPe          Z0 G dQ dRe          Z1 G dS dTe          Z2 G dU dVe          Z3 G dW dXe          Z4 G dY dZe          Z5 G d[ d\e          Z6 G d] d^e          Z7 G d_ d`e          Z8 G da dbe          Z9 G dc dde9          Z: G de dfe9          Z; G dg dhe          Z< G di dje          Z= G dk dle=          Z> G dm dne          Z? G do dpe?          Z@ G dq dre          ZA G ds dte          ZB G du dve          ZC G dw dxe          ZD G dy dzeD          ZE G d{ d|eE          ZF G d} d~eE          ZG G d deG          ZH G d deG          ZI G d deE          ZJ G d deD          ZK G d de          ZL G d de          ZM G d de          ZN G d de          ZO G d de          ZP G d de          ZQ G d de          ZR G d de          ZS G d de          ZT G d de          ZU G d de          ZV G d de          ZW G d deW          ZX G d deW          ZY G d deW          ZZ G d de          Z[ G d deW          Z\ G d deW          Z] G d deW          Z^ G d de          Z_ G d de          Z` G d de          Za G d deѦ          Zb G d deѦ          Zc G d de          Zd G d ded          Ze G d ded          Zf G d de          Zg G d de          Zh G d deh          Zi G dÄ dĐeh          Zj G dń dƐeh          Zk G dǄ dȐeh          Zl G dɄ de          Zm G d˄ de          Zn G d̈́ de          Zo G dτ de          Zp G dф de          Zq G dӄ dԐeq          Zr G dՄ d֐eq          Zs G dׄ de          Zt G dل de          Zu G dۄ de          Zv G d݄ dސev          Zw G d߄ dev          Zx G d dev          Zy G d dev          Zz G d dev          Z{ G d dev          Z| G d dev          Z} G d dev          Z~ G d dev          Z G d dev          Z G d de          Z G d de          Z G d de          Zi dedededededed ed"ed$ed&ed(ed*ed,ed.ed0e d2e!d4e"i d6e#d8e$d:e%d<e&d>e'd@e(dBe)dDe*dFe+dJe-dLe.dPe0dRe1dVe3dXe4dZe5d^e7i d`e8dbe9dde:dfe;dhe<dje=dne?dpe@dreAdteBdveCdzeEd~eGdeHdeJdeKdeLi deMdeNdeQdeRdeTdeUdeVdeWdeXdeYdeZde[de\de]de_de`deai decdeddeedefdegdehdekdeldemdeodepdeqderdesdetdeudevi dewdexdezde{de|de}de~dedededededededededei dedededededededededededed ed"ed&ed(ed*ei d,ed.ed0ed2ed6ed8ed<ed>edDedFedHedJedNedPedRedTedVei dXedZed\ed^edbeddedfedhedjedledpedredtedveÓdxeēdzeœd|eƓi d~eǓdeȓdeɓde˓de͓deΓdeϓdeГdeѓdeғdeԓdeՓde֓deדdeؓdeٓdeړi deܓdeݓdeޓdedededededededededededededei dedededededededededededededede dedei dededed ede	de
dededededededededed ed"ei d$ed&ed(ed,ed.ed0e d2e!d4e"d6e#d8e$d>e'd@e(dDe*dFe+dHe,dJe-dLe.i dNe/dRe1dTe2dVe3dXe4dZe5d\e6d^e7d`e8dbe9dde:dfe;dhe<dje=dle>dne?dpe@i dreAdteBdveCdxeDdzeEd|eFd~eGdeHdeIdeJdeKdeLdeMdeNdeOdePdeQi deRdeSdeTdeUdeWdeXdeYdeZde[de]de^de`deadecdeddeedegi dehdeidĐejdƐekdȐeldʐemd̐endΐeodАepdԐerd֐esdؐetdڐeudܐevdސewdexdeyi dezde{de|de}de~dedededededed edededed
edei dededededededededed ed"ed&ed(ed,ed.ed2ed4ei d8ed<ed>ed@edDedFedJedLedPedRedVedXedZed\ed^ed`edbei ddedfedhedjedlednedpedredtedveÓdxeēd|eƓd~eǓdeȓdeɓde˓de͓i deΓdeϓdeГdeғdeӓdeԓdeՓde֓deדdeؓdeٓdeړdeݓdeޓdeߓdedei dededededededĐedƐedȐedʐedΐedАedԐed֐edؐedܐedސei dedededededededede dededededededed ei de	de
deded
ededededededededededed ed"ei d$ed&ed(ed,ed.ed0e d2e!d4e"d6e#d8e$d:e%d<e&d>e'd@e(dBe)dDe*dFe+i dHe,dJe-dNe/dPe0dRe1dTe2dVe3dZe5d\e6d^e7d`e8dbe9dde:dfe;dje=dle>dne?i dreAdteBdxeDdzeEd|eFd~eGdeJdeKdeLdeMdeNdeOdePdeQdeRdeSdeTi deUdeVdeWdeXdeYde\de]de^de_de`deadebdecdeddeedefdegi dehdeidĐejdƐekdʐemd̐endΐeodҐeqdԐerd֐esdؐetdܐevdސewdexdeydezde{i de|de~dededededededededed edededed
edei dededededededededed ed"ed$ed&ed*ed,ed0ed2ei d4ed6ed8ed:ed<ed@edBedDedFedHedJedLedNedRedTedVedXei dZed\ed`edbeddedfedhedjedledpedredtedxeēdzeœd|eƓd~eǓdeɓi deʓde˓de̓de͓deΓdeϓdeГdeѓdeӓdeԓdeՓde֓deדdeؓdeܓdeݓdeޓi deߓdededededededededĐedȐedʐed̐edАedҐedԐed֐ei dؐedڐedܐedސedededededededede dededededei deded ede	de
ded
ededededededededededei d ed"ed$ed&ed(ed*ed.ed0e d4e"d6e#d8e$d:e%d<e&d>e'd@e(dBe)dDe*i dHe,dJe-dLe.dPe0dRe1dTe2dVe3dXe4dZe5d\e6d^e7dbe9dde:dfe;dhe<dje=dle>i dpe@dreAdteBdveCdxeDdzeEd|eFd~eGdeHdeIdeJdeKdeMdeNdeOdeQdeRi deSdeTdeUdeVdeWdeXdeYdeZde\de]de^de_de`deadebdecdedi deedefdegdehdĐejdƐekdʐemd̐endΐeodАepdҐeqdԐerd֐esdؐetdڐeudܐevdސewi dexdeyde{de|de~dedededededededed edededei d
edededededededededed"ed$ed&ed(ed*ed,ed.ei d0ed2ed6ed8ed:ed<ed>edBedDedFedJedLedNedPedRedTedVei dZed\ed^ed`edbeddedfedhedlednedpedredtedzeœd|eƓd~eǓdeȓi deɓde˓de̓de͓deΓdeϓdeГdeғdeԓdeՓde֓deדdeؓdeٓdeړdeۓdeܓi deݓdeߓdededededededededededƐedȐedʐed̐edΐei dҐed֐edؐedڐedܐededededededededede dededei deded ede	deded
edededededededededed ei d"ed&ed(ed*ed.ed0e d2e!d4e"d8e$d:e%d<e&d>e'd@e(dDe*dFe+dHe,dJe-i dNe/dRe1dTe2dVe3dXe4dZe5d\e6d^e7dbe9dde:dfe;dhe<dle>dne?dpe@dteBdveCi dxeDdzeEd|eFd~eGdeHdeIdeJdeKdeLdeMdeOdePdeQdeSdeTdeUdeVi deWdeXdeYdeZde[de]de^de`deadebdecdeddeedefdehdeidĐeji dȐeldʐemd̐endΐeodАepdҐeqdԐerd֐esdؐetdڐeudܐevdސewdexdeydezde{de|i de~dededededede	de	de	de	de	d
e	de	de	de	de	dei 	de	de	de	de	d e	d"e	d$e	d&e	d(e	d*e	d,e	d.e	d0e	d2e	d6e	d8e	d:ei 	d<e	d>e	d@e	dDe	dFe	dHe	dJe	dLe	dNe	dPe	dRe	dTe	dVe	dXe	dZe	d\e	d^ei 	d`e	dbe	dde	dfe	dhe	dje	dle	dne	dpe	dre	dte	dveÓ	dxeē	dzeœ	d~eǓ	deȓ	deɓi 	de˓	de̓	de͓	deϓ	deГ	deѓ	deғ	deӓ	deԓ	deՓ	de֓	deؓ	deٓ	deړ	deۓ	deܓ	deޓi 	deߓ	de	de	de	de	de	de	de	de	dĐe	dȐe	dʐe	dΐe	dАe	dԐe	d֐e	dؐei 	dܐe	dސe	de	de	de	de	de	de	de	de 	de	de	de	de	de	de	dei 
d e
de

de
de
d
e
de
de
de
de
de
de
de
de
de
d e
d$e
d&ei 
d(e
d*e
d,e
d.e
d0e 
d2e!
d6e#
d8e$
d:e%
d<e&
d>e'
dBe)
dDe*
dFe+
dJe-
dLe.
dNe/i 
dPe0
dRe1
dVe3
d\e6
d^e7
d`e8
dbe9
dde:
dfe;
dhe<
dje=
dle>
dne?
dpe@
dreA
dteB
dveCi 
dxeD
dzeE
d~eG
deH
deI
deJ
deK
deL
deM
deO
deQ
deR
deS
deT
deU
deV
deXi 
deY
deZ
de[
de\
de]
de_
de`
dea
dec
ded
dee
def
deg
deh
dei
dĐej
dƐeki 
dȐel
dʐem
dΐeo
dАep
dҐeq
dԐer
d֐es
dؐet
dڐeu
dސew
dex
dey
de{
de|
de}
de~
dei 
de
de
de
de
de
de
ded ededededed
ededededei dedededed ed"ed$ed(ed*ed,ed.ed0ed2ed4ed6ed8ed:ei d<ed>ed@edBedDedFedHedJedLedNedRedTedVedXedZed\ed^ei d`edbeddedhedjedledpedredtedveÓdzeœd|eƓd~eǓdeȓdeɓdeʓde̓i de͓deΓdeϓdeГdeѓdeғdeӓdeԓdeՓdeؓdeٓdeړdeۓdeܓdeݓdeޓdeߓi dedededededededededĐedƐedȐedʐed̐edАedҐed֐ei dؐedڐedܐedededededededede dedededededei ded ede	de
dedededededededededededed ei d"ed$ed(ed*ed,ed.ed0e d2e!d4e"d8e$d:e%d<e&d>e'dBe)dDe*dFe+dHe,i dJe-dNe/dPe0dRe1dTe2dVe3dXe4dZe5d^e7d`e8dde:dfe;dhe<dje=dle>dne?dpe@i dreAdveCdxeDdzeEd|eFd~eGdeHdeIdeJdeKdeLdeMdeNdePdeRdeTdeUi deVdeWdeXdeYdeZde[de\de]de^de_de`deadebdeddeedefdegi dehdeidĐejdƐekdȐeldʐemd̐endΐeodԐerd֐esdؐetdڐeudܐevdސewdexdeydezi de|de}dededededededededededededededei dededededededed ed"ed$ed&ed(ed*ed,ed.ed0ed2ei d4ed6ed8ed:ed<ed>edBedDedFedHedJedLedNedPedRedTedVei dXedZed^ed`edbeddedfedjedlednedpedredtedveÓdzeœd~eǓdeȓi deɓde˓de̓de͓deΓdeГdeѓdeғdeӓdeԓdeՓde֓deדdeؓdeړdeۓdeܓi deݓdeޓdeߓdededededededededĐedƐedȐedʐed̐edΐei dАedҐedԐed֐edܐedededededededede dedededei ded ede	de
deded
ededededededededed ed"ei d$ed&ed*ed,ed.ed0e d2e!d4e"d6e#d8e$d:e%d<e&d>e'd@e(dBe)dDe*dFe+i dHe,dJe-dLe.dPe0dRe1dTe2dZe5d\e6d^e7d`e8dbe9dde:dfe;dhe<dje=dle>dpe@i dreAdteBdveCdxeDd|eFd~eGdeHdeIdeJdeKdeLdeMdeNdeOdePdeQdeRi deSdeTdeUdeWdeXde[de\de]de^de_deadebdecdeddeedefdegi dehdĐejdƐekdȐeldʐemd̐endΐeodАepdҐeqdԐerd֐esdؐetdڐeudܐevdސewdexdeyi dezde|de}de~dededededededed edededed
edei dedededededededed"ed$ed&ed(ed*ed,ed.ed0ed4ei d6ed8ed<ed>ed@edBedDedFedHedLedNedPedRedTedVedXedZei d\ed`edbeddedhedjedlednedpedredveÓdxeēdzeœd|eƓd~eǓdeȓdeɓi deʓde˓de̓de͓deΓdeϓdeГdeѓdeғdeӓdeԓdeՓdeדdeؓdeړdeۓdeܓi deޓdeߓdedededededededĐedƐedȐedʐed̐edΐedАedҐei dԐedؐedڐedܐedސededededededede dededededei deded ede	de
ded
ededededededededed ed"ei d$ed&ed(ed*ed,ed0e d2e!d4e"d6e#d8e$d:e%d<e&d>e'd@e(dBe)dFe+dHe,i dJe-dLe.dNe/dPe0dRe1dTe2dVe3dXe4dZe5d\e6d^e7d`e8dde:dfe;dhe<dje=dle>i dne?dpe@dreAdteBdveCd|eFdeHdeIdeJdeKdeLdeMdeNdeOdePdeQdeRi deSdeTdeUdeVdeXdeYdeZde[de\de]de^de_de`deadebdecdeei defdegdeidĐejdƐekdȐeldʐemd̐endΐeodАepdԐerd֐esdؐetdڐeudސewdexdeyeze{e|e}e~eeeeed
ZdS (      N   )age_restrictedbug_reports_messageclasspropertyvariadicwrite_string>   get_testcasesextract_from_webpageget_webpage_testcasesFc                       e Zd Zd ZdS )LazyLoadMetaClassc                     d| j         vr;|t          vr2t          s+dat          d| j         d| t                       d           t          | j        |          S )N_real_classTz?WARNING: Falling back to normal extractor since lazy extractor z does not have attribute 
)__dict__ALLOWED_CLASSMETHODS_WARNEDr   __name__r   getattr
real_class)clsnames     eC:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/extractor/lazy_extractors.py__getattr__zLazyLoadMetaClass.__getattr__   s    -- 444W4G cLc cCGcI\I^I^c c c d d ds~t,,,    N)r   
__module____qualname__r    r   r   r   r      s#        - - - - -r   r   c                   2   e Zd Zed             Zd ZdZdZdZdZ	dZ
dZdZdZdZed             Zed             Zed             Zed	             Zed
             Zed             Zedddd            Zed             Zed             Zed             ZdS )LazyLoadExtractorc                     d| j         vr1t          t          j        | j                  | j                  | _        | j        S )Nr   )r   r   	importlibimport_module_moduler   r   r   s    r   r   zLazyLoadExtractor.real_class   s7    ,,%i&=ck&J&JCLYYCOr   c                 ^    | j                             | j                   } |j        |i | |S N)r   __new____init__)r   argskwargsinstances       r   r(   zLazyLoadExtractor.__new__$   s6    >))#.994*6***r   NTr   c                      | j         dd         S )z>A string for getting the InfoExtractor with get_info_extractorN)r   r%   s    r   ie_keyzLazyLoadExtractor.ie_key3   s     |CRC  r   c                 0    |                      |          duS )z8Receives a URL and returns True if suitable for this IE.N)_match_valid_urlr   urls     r   suitablezLazyLoadExtractor.suitable8   s    
 ##C((44r   c                    | j         du rd S d| j        vr>t          t          t          j        t          | j                                       | _        t          t          d fd| j        D                       d           S )NF_VALID_URL_REc              3   B   K   | ]}|                               V  d S r'   )match).0regexr3   s     r   	<genexpr>z5LazyLoadExtractor._match_valid_url.<locals>.<genexpr>H   s/      !R!Ru%++c"2"2!R!R!R!R!R!Rr   )

_VALID_URLr   tuplemaprecompiler   r6   nextfilterr2   s    `r   r1   z"LazyLoadExtractor._match_valid_url?   s}    >U""4 #,.. %c"*hs~6N6N&O&O P PCF4!R!R!R!R@Q!R!R!RSSUYZZZr   c                     | j         S )zGetter method for _WORKING.)_WORKINGr%   s    r   workingzLazyLoadExtractor.workingJ   s     |r   c                 ^    	 |                      |          S # t          t          f$ r Y d S w xY wr'   )	_match_id
IndexErrorAttributeErrorr2   s     r   get_temp_idzLazyLoadExtractor.get_temp_idO   s@    	==%%%N+ 	 	 	44	s    ,,c                 R    |                      |                              d          S )Nid)r1   groupr2   s     r   rG   zLazyLoadExtractor._match_idV   s$    ##C((..t444r   )markdownsearch_examplesc                   d}| j         r|r|d| j          dz  }n|d| j          dz  }| j        du r|dz  }n| j        r|d| j         z  }| j        rT|| j        rd	nd d
| j         dz  }|r9d}|d| j         t          j        |           dt          j        |           dz  }|                                 s	||rdndz  }|r.d                    t          j        dd| j	                            n| j	        }|r| d| n|S )zDescription of the extractor z [*z*](## "netrc machine")z []Fz	 [HIDDEN] ;z "z	:" prefix)rQ   510allz (e.g. ":z")z (**Currently broken**)z (Currently broken)z	 - **{}**z:(\w+:)u	   :​\g<1>)
_NETRC_MACHINEIE_DESC
SEARCH_KEYrandomchoicerE   formatr?   subIE_NAME)r   rN   rO   desc_COUNTSr   s         r   descriptionzLazyLoadExtractor.descriptionZ   s}     	3 3Hc0HHHH2S/2222;%KDD[ 	&%%%%D> 	ock1ssrNNS^NNNND o0n3>n6=3I3InnFMZiLjLjnnnn{{}} 	UT--?TTD Zbr""26*os{#S#STTTgjgr#'1$T1r   c                 .    t          | j        |           S )zHTest whether the extractor is generally suitable for the given age limit)r   	age_limit)r   re   s     r   is_suitablezLazyLoadExtractor.is_suitables   s     "#-;;;;r   c                 *    t          | j                  S r'   )boolrY   r%   s    r   supports_loginz LazyLoadExtractor.supports_loginx   s    C&'''r   c                 j    |                      |          rddd                    | j                  S dS )z=Returns whether the URL is of a single video, None if unknownTF)videoplaylistN)r4   get_RETURN_TYPEr2   s     r   is_single_videoz!LazyLoadExtractor.is_single_video|   sD     << 	L!u5599#:JKKK	L 	Lr   )r   r   r   r   r   r(   r$   _ENABLEDr<   rD   rZ   rY   r[   re   rn   classmethodr/   r4   r1   rE   rJ   rG   rc   rf   ri   ro   r   r   r   r    r       s         ]
  
 GHJHGNJIL! ! [! 5 5 [5 [ [ [[   [   [ 5 5 [5 %)4 2 2 2 2 [20 < < [< ( ( [( L L [L L Lr   r    )	metaclassc                       e Zd ZdS )LazyLoadSearchExtractorN)r   r   r   r   r   r   rt   rt      s        Dr   rt   c                       e Zd ZdZdZdZdS )YoutubeBaseInfoExtractoryt_dlp.extractor.youtubeYoutubeBaseInfoExtractyoutubeNr   r   r   r$   r`   rY   r   r   r   rv   rv      s        (G&GNNNr   rv   c                       e Zd ZdZdZdZdS )YoutubeTabBaseInfoExtractorrw   YoutubeTabBaseInfoExtractry   Nrz   r   r   r   r|   r|      s        (G)GNNNr   r|   c                   "    e Zd ZdZdZdZdZdZdS )YoutubeClipIErw   zyoutube:clipz4https?://(?:www\.)?youtube\.com/clip/(?P<id>[^/?#]+)ry   rk   Nr   r   r   r$   r`   r<   rY   rn   r   r   r   r   r      s'        (GGIJNLLLr   r   c                   &    e Zd ZdZdZdZdZdZdZdS )YoutubeConsentRedirectIErw   zyoutube:consentz"https?://consent\.youtube\.com/m\?Fry   rk   N	r   r   r   r$   r`   r<   rZ   rY   rn   r   r   r   r   r      s,        (GG8JGNLLLr   r   c                   "    e Zd ZdZdZdZdZdZdS )YoutubeFavouritesIErw   zyoutube:favoritesz:ytfav(?:ou?rite)?s?z9YouTube liked videos; ":ytfav" keyword (requires cookies)ry   Nr   r   r   r$   r`   r<   rZ   rY   r   r   r   r   r      s'        (G!G'JIGNNNr   r   c                       e Zd ZdZdZdZdS )YoutubeFeedsInfoExtractorrw   zyoutube:feedsry   Nrz   r   r   r   r   r      s        (GGNNNr   r   c                   "    e Zd ZdZdZdZdZdZdS )YoutubeHistoryIErw   zyoutube:historyz:ythis(?:tory)?z:Youtube watch history; ":ythis" keyword (requires cookies)ry   Nr   r   r   r   r   r      s'        (GG"JJGNNNr   r   c                   J     e Zd ZdZdZdZdZdZdZdZ	e
 fd            Z xZS )	YoutubeIErw   ry   a/  (?x)^
                     (
                         (?:https?://|//)                                    # http(s):// or protocol-independent URL
                         (?:(?:(?:(?:\w+\.)?[yY][oO][uU][tT][uU][bB][eE](?:-nocookie|kids)?\.com|
                            (?:www\.)?deturl\.com/www\.youtube\.com|
                            (?:www\.)?pwnyoutube\.com|
                            (?:www\.)?hooktube\.com|
                            (?:www\.)?yourepeat\.com|
                            tube\.majestyc\.net|
                            (?:www\.)?redirect\.invidious\.io|(?:(?:www|dev)\.)?invidio\.us|(?:www\.)?invidious\.pussthecat\.org|(?:www\.)?invidious\.zee\.li|(?:www\.)?invidious\.ethibox\.fr|(?:www\.)?iv\.ggtyler\.dev|(?:www\.)?inv\.vern\.i2p|(?:www\.)?am74vkcrjp2d5v36lcdqgsj2m6x36tbrkhsruoegwfcizzabnfgf5zyd\.onion|(?:www\.)?inv\.riverside\.rocks|(?:www\.)?invidious\.silur\.me|(?:www\.)?inv\.bp\.projectsegfau\.lt|(?:www\.)?invidious\.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid\.onion|(?:www\.)?invidious\.slipfox\.xyz|(?:www\.)?invidious\.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd\.onion|(?:www\.)?inv\.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad\.onion|(?:www\.)?invidious\.tiekoetter\.com|(?:www\.)?iv\.odysfvr23q5wgt7i456o5t3trw2cw5dgn56vbjfbq2m7xsc5vqbqpcyd\.onion|(?:www\.)?invidious\.nerdvpn\.de|(?:www\.)?invidious\.weblibre\.org|(?:www\.)?inv\.odyssey346\.dev|(?:www\.)?invidious\.dhusch\.de|(?:www\.)?iv\.melmac\.space|(?:www\.)?watch\.thekitty\.zone|(?:www\.)?invidious\.privacydev\.net|(?:www\.)?ng27owmagn5amdm7l5s3rsqxwscl5ynppnis5dqcasogkyxcfqn7psid\.onion|(?:www\.)?invidious\.drivet\.xyz|(?:www\.)?vid\.priv\.au|(?:www\.)?euxxcnhsynwmfidvhjf6uzptsmh4dipkmgdmcmxxuo7tunp3ad2jrwyd\.onion|(?:www\.)?inv\.vern\.cc|(?:www\.)?invidious\.esmailelbob\.xyz|(?:www\.)?invidious\.sethforprivacy\.com|(?:www\.)?yt\.oelrichsgarcia\.de|(?:www\.)?yt\.artemislena\.eu|(?:www\.)?invidious\.flokinet\.to|(?:www\.)?invidious\.baczek\.me|(?:www\.)?y\.com\.sb|(?:www\.)?invidious\.epicsite\.xyz|(?:www\.)?invidious\.lidarshield\.cloud|(?:www\.)?yt\.funami\.tech|(?:www\.)?invidious\.3o7z6yfxhbw7n3za4rss6l434kmv55cgw2vuziwuigpwegswvwzqipyd\.onion|(?:www\.)?osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd\.onion|(?:www\.)?u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad\.onion|(?:(?:www|no)\.)?invidiou\.sh|(?:(?:www|fi)\.)?invidious\.snopyta\.org|(?:www\.)?invidious\.kabi\.tk|(?:www\.)?invidious\.mastodon\.host|(?:www\.)?invidious\.zapashcanon\.fr|(?:www\.)?(?:invidious(?:-us)?|piped)\.kavin\.rocks|(?:www\.)?invidious\.tinfoil-hat\.net|(?:www\.)?invidious\.himiko\.cloud|(?:www\.)?invidious\.reallyancient\.tech|(?:www\.)?invidious\.tube|(?:www\.)?invidiou\.site|(?:www\.)?invidious\.site|(?:www\.)?invidious\.xyz|(?:www\.)?invidious\.nixnet\.xyz|(?:www\.)?invidious\.048596\.xyz|(?:www\.)?invidious\.drycat\.fr|(?:www\.)?inv\.skyn3t\.in|(?:www\.)?tube\.poal\.co|(?:www\.)?tube\.connect\.cafe|(?:www\.)?vid\.wxzm\.sx|(?:www\.)?vid\.mint\.lgbt|(?:www\.)?vid\.puffyan\.us|(?:www\.)?yewtu\.be|(?:www\.)?yt\.elukerio\.org|(?:www\.)?yt\.lelux\.fi|(?:www\.)?invidious\.ggc-project\.de|(?:www\.)?yt\.maisputain\.ovh|(?:www\.)?ytprivate\.com|(?:www\.)?invidious\.13ad\.de|(?:www\.)?invidious\.toot\.koeln|(?:www\.)?invidious\.fdn\.fr|(?:www\.)?watch\.nettohikari\.com|(?:www\.)?invidious\.namazso\.eu|(?:www\.)?invidious\.silkky\.cloud|(?:www\.)?invidious\.exonip\.de|(?:www\.)?invidious\.riverside\.rocks|(?:www\.)?invidious\.blamefran\.net|(?:www\.)?invidious\.moomoo\.de|(?:www\.)?ytb\.trom\.tf|(?:www\.)?yt\.cyberhost\.uk|(?:www\.)?kgg2m7yk5aybusll\.onion|(?:www\.)?qklhadlycap4cnod\.onion|(?:www\.)?axqzx4s6s54s32yentfqojs3x5i7faxza6xo3ehd4bzzsg2ii4fv2iid\.onion|(?:www\.)?c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid\.onion|(?:www\.)?fz253lmuao3strwbfbmx46yu7acac2jz27iwtorgmbqlkurlclmancad\.onion|(?:www\.)?invidious\.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd\.onion|(?:www\.)?owxfohz4kjyv25fvlqilyxast7inivgiktls3th44jhk3ej3i7ya\.b32\.i2p|(?:www\.)?4l2dgddgsrkf2ous66i6seeyi6etzfgrue332grh2n7madpwopotugyd\.onion|(?:www\.)?w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd\.onion|(?:www\.)?kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad\.onion|(?:www\.)?grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad\.onion|(?:www\.)?hpniueoejy4opn7bc4ftgazyqjoeqwlvh2uiku2xqku6zpoa4bf5ruid\.onion|(?:www\.)?piped\.kavin\.rocks|(?:www\.)?piped\.tokhmi\.xyz|(?:www\.)?piped\.syncpundit\.io|(?:www\.)?piped\.mha\.fi|(?:www\.)?watch\.whatever\.social|(?:www\.)?piped\.garudalinux\.org|(?:www\.)?piped\.rivo\.lol|(?:www\.)?piped-libre\.kavin\.rocks|(?:www\.)?yt\.jae\.fi|(?:www\.)?piped\.mint\.lgbt|(?:www\.)?il\.ax|(?:www\.)?piped\.esmailelbob\.xyz|(?:www\.)?piped\.projectsegfau\.lt|(?:www\.)?piped\.privacydev\.net|(?:www\.)?piped\.palveluntarjoaja\.eu|(?:www\.)?piped\.smnz\.de|(?:www\.)?piped\.adminforge\.de|(?:www\.)?watch\.whatevertinfoil\.de|(?:www\.)?piped\.qdi\.fi|(?:(?:www|cf)\.)?piped\.video|(?:www\.)?piped\.aeong\.one|(?:www\.)?piped\.moomoo\.me|(?:www\.)?piped\.chauvet\.pro|(?:www\.)?watch\.leptons\.xyz|(?:www\.)?pd\.vern\.cc|(?:www\.)?piped\.hostux\.net|(?:www\.)?piped\.lunar\.icu|(?:www\.)?hyperpipe\.surge\.sh|(?:www\.)?hyperpipe\.esmailelbob\.xyz|(?:www\.)?listen\.whatever\.social|(?:www\.)?music\.adminforge\.de|
                            youtube\.googleapis\.com)/                        # the various hostnames, with wildcard subdomains
                         (?:.*?\#/)?                                          # handle anchor (#/) redirect urls
                         (?:                                                  # the various things that can precede the ID:
                             (?:(?:v|embed|e|shorts|live)/(?!videoseries|live_stream))  # v/ or embed/ or e/ or shorts/
                             |(?:                                             # or the v= param in all its forms
                                 (?:(?:watch|movie)(?:_popup)?(?:\.php)?/?)?  # preceding watch(_popup|.php) or nothing (like /?v=xxxx)
                                 (?:\?|\#!?)                                  # the params delimiter ? or # or #!
                                 (?:.*?[&;])??                                # any other preceding param (like /?s=tuff&v=xxxx or ?s=tuff&amp;v=V36LpHqtcDY)
                                 v=
                             )
                         ))
                         |(?:
                            youtu\.be|                                        # just youtu.be/xxxx
                            vid\.plus|                                        # or vid.plus/xxxx
                            zwearz\.com/watch|                                # or zwearz.com/watch/xxxx
                            (?:www\.)?redirect\.invidious\.io|(?:(?:www|dev)\.)?invidio\.us|(?:www\.)?invidious\.pussthecat\.org|(?:www\.)?invidious\.zee\.li|(?:www\.)?invidious\.ethibox\.fr|(?:www\.)?iv\.ggtyler\.dev|(?:www\.)?inv\.vern\.i2p|(?:www\.)?am74vkcrjp2d5v36lcdqgsj2m6x36tbrkhsruoegwfcizzabnfgf5zyd\.onion|(?:www\.)?inv\.riverside\.rocks|(?:www\.)?invidious\.silur\.me|(?:www\.)?inv\.bp\.projectsegfau\.lt|(?:www\.)?invidious\.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid\.onion|(?:www\.)?invidious\.slipfox\.xyz|(?:www\.)?invidious\.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd\.onion|(?:www\.)?inv\.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad\.onion|(?:www\.)?invidious\.tiekoetter\.com|(?:www\.)?iv\.odysfvr23q5wgt7i456o5t3trw2cw5dgn56vbjfbq2m7xsc5vqbqpcyd\.onion|(?:www\.)?invidious\.nerdvpn\.de|(?:www\.)?invidious\.weblibre\.org|(?:www\.)?inv\.odyssey346\.dev|(?:www\.)?invidious\.dhusch\.de|(?:www\.)?iv\.melmac\.space|(?:www\.)?watch\.thekitty\.zone|(?:www\.)?invidious\.privacydev\.net|(?:www\.)?ng27owmagn5amdm7l5s3rsqxwscl5ynppnis5dqcasogkyxcfqn7psid\.onion|(?:www\.)?invidious\.drivet\.xyz|(?:www\.)?vid\.priv\.au|(?:www\.)?euxxcnhsynwmfidvhjf6uzptsmh4dipkmgdmcmxxuo7tunp3ad2jrwyd\.onion|(?:www\.)?inv\.vern\.cc|(?:www\.)?invidious\.esmailelbob\.xyz|(?:www\.)?invidious\.sethforprivacy\.com|(?:www\.)?yt\.oelrichsgarcia\.de|(?:www\.)?yt\.artemislena\.eu|(?:www\.)?invidious\.flokinet\.to|(?:www\.)?invidious\.baczek\.me|(?:www\.)?y\.com\.sb|(?:www\.)?invidious\.epicsite\.xyz|(?:www\.)?invidious\.lidarshield\.cloud|(?:www\.)?yt\.funami\.tech|(?:www\.)?invidious\.3o7z6yfxhbw7n3za4rss6l434kmv55cgw2vuziwuigpwegswvwzqipyd\.onion|(?:www\.)?osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd\.onion|(?:www\.)?u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad\.onion|(?:(?:www|no)\.)?invidiou\.sh|(?:(?:www|fi)\.)?invidious\.snopyta\.org|(?:www\.)?invidious\.kabi\.tk|(?:www\.)?invidious\.mastodon\.host|(?:www\.)?invidious\.zapashcanon\.fr|(?:www\.)?(?:invidious(?:-us)?|piped)\.kavin\.rocks|(?:www\.)?invidious\.tinfoil-hat\.net|(?:www\.)?invidious\.himiko\.cloud|(?:www\.)?invidious\.reallyancient\.tech|(?:www\.)?invidious\.tube|(?:www\.)?invidiou\.site|(?:www\.)?invidious\.site|(?:www\.)?invidious\.xyz|(?:www\.)?invidious\.nixnet\.xyz|(?:www\.)?invidious\.048596\.xyz|(?:www\.)?invidious\.drycat\.fr|(?:www\.)?inv\.skyn3t\.in|(?:www\.)?tube\.poal\.co|(?:www\.)?tube\.connect\.cafe|(?:www\.)?vid\.wxzm\.sx|(?:www\.)?vid\.mint\.lgbt|(?:www\.)?vid\.puffyan\.us|(?:www\.)?yewtu\.be|(?:www\.)?yt\.elukerio\.org|(?:www\.)?yt\.lelux\.fi|(?:www\.)?invidious\.ggc-project\.de|(?:www\.)?yt\.maisputain\.ovh|(?:www\.)?ytprivate\.com|(?:www\.)?invidious\.13ad\.de|(?:www\.)?invidious\.toot\.koeln|(?:www\.)?invidious\.fdn\.fr|(?:www\.)?watch\.nettohikari\.com|(?:www\.)?invidious\.namazso\.eu|(?:www\.)?invidious\.silkky\.cloud|(?:www\.)?invidious\.exonip\.de|(?:www\.)?invidious\.riverside\.rocks|(?:www\.)?invidious\.blamefran\.net|(?:www\.)?invidious\.moomoo\.de|(?:www\.)?ytb\.trom\.tf|(?:www\.)?yt\.cyberhost\.uk|(?:www\.)?kgg2m7yk5aybusll\.onion|(?:www\.)?qklhadlycap4cnod\.onion|(?:www\.)?axqzx4s6s54s32yentfqojs3x5i7faxza6xo3ehd4bzzsg2ii4fv2iid\.onion|(?:www\.)?c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid\.onion|(?:www\.)?fz253lmuao3strwbfbmx46yu7acac2jz27iwtorgmbqlkurlclmancad\.onion|(?:www\.)?invidious\.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd\.onion|(?:www\.)?owxfohz4kjyv25fvlqilyxast7inivgiktls3th44jhk3ej3i7ya\.b32\.i2p|(?:www\.)?4l2dgddgsrkf2ous66i6seeyi6etzfgrue332grh2n7madpwopotugyd\.onion|(?:www\.)?w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd\.onion|(?:www\.)?kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad\.onion|(?:www\.)?grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad\.onion|(?:www\.)?hpniueoejy4opn7bc4ftgazyqjoeqwlvh2uiku2xqku6zpoa4bf5ruid\.onion|(?:www\.)?piped\.kavin\.rocks|(?:www\.)?piped\.tokhmi\.xyz|(?:www\.)?piped\.syncpundit\.io|(?:www\.)?piped\.mha\.fi|(?:www\.)?watch\.whatever\.social|(?:www\.)?piped\.garudalinux\.org|(?:www\.)?piped\.rivo\.lol|(?:www\.)?piped-libre\.kavin\.rocks|(?:www\.)?yt\.jae\.fi|(?:www\.)?piped\.mint\.lgbt|(?:www\.)?il\.ax|(?:www\.)?piped\.esmailelbob\.xyz|(?:www\.)?piped\.projectsegfau\.lt|(?:www\.)?piped\.privacydev\.net|(?:www\.)?piped\.palveluntarjoaja\.eu|(?:www\.)?piped\.smnz\.de|(?:www\.)?piped\.adminforge\.de|(?:www\.)?watch\.whatevertinfoil\.de|(?:www\.)?piped\.qdi\.fi|(?:(?:www|cf)\.)?piped\.video|(?:www\.)?piped\.aeong\.one|(?:www\.)?piped\.moomoo\.me|(?:www\.)?piped\.chauvet\.pro|(?:www\.)?watch\.leptons\.xyz|(?:www\.)?pd\.vern\.cc|(?:www\.)?piped\.hostux\.net|(?:www\.)?piped\.lunar\.icu|(?:www\.)?hyperpipe\.surge\.sh|(?:www\.)?hyperpipe\.esmailelbob\.xyz|(?:www\.)?listen\.whatever\.social|(?:www\.)?music\.adminforge\.de
                         )/
                         |(?:www\.)?cleanvideosearch\.com/media/action/yt/watch\?videoId=
                         )
                     )?                                                       # all until now is optional -> you can pass the naked ID
                     (?P<id>[0-9A-Za-z_-]{11})                              # here is it! the YouTube video ID
                     (?(1).+)?                                                # if we found the ID, everything can follow
                     (?:\#|$)YouTube   rk   c                     ddl m}  ||          }|                    dd g          d         rdS t                                          |          S )Nr   parse_qslistF)yt_dlp.utilsr   rm   superr4   r   r3   r   qs	__class__s       r   r4   zYoutubeIE.suitable   s\    ))))))Xc]]66&4&!!!$ 	5ww$$$r   )r   r   r   r$   r`   r<   rZ   rY   re   rn   rq   r4   __classcell__r   s   @r   r   r      si        (GG ZJJGNIL% % % % [% % % % %r   r   c                   "    e Zd ZdZdZdZdZdZdS )YoutubeLivestreamEmbedIErw   YoutubeLivestreamEmbedzVhttps?://(?:\w+\.)?youtube\.com/embed/live_stream/?\?(?:[^#]+&)?channel=(?P<id>[^&#]+)zYouTube livestream embedsry   Nr   r   r   r   r   r      s'        (G&GmJ)GNNNr   r   c                   &    e Zd ZdZdZdZdZdZdZdS )YoutubeMusicSearchURLIErw   zyoutube:music:search_urlzThttps?://music\.youtube\.com/search\?([^#]+&)?(?:search_query|q)=(?:[^&]+)(?:[&#]|$)z?YouTube music search URLs with selectable sections, e.g. #songsry   rl   Nr   r   r   r   r   r      s,        (G(GjJOGNLLLr   r   c                   "    e Zd ZdZdZdZdZdZdS )YoutubeNotificationsIErw   zyoutube:notifz:ytnotif(?:ication)?s?z<YouTube notifications; ":ytnotif" keyword (requires cookies)ry   Nr   r   r   r   r   r      s'        (GG)JLGNNNr   r   c                   F     e Zd ZdZdZdZdZdZdZe	 fd            Z
 xZS )YoutubePlaylistIErw   zyoutube:playlista  (?x)(?:
                        (?:https?://)?
                        (?:\w+\.)?
                        (?:
                            (?:
                                youtube(?:kids)?\.com|
                                (?:www\.)?redirect\.invidious\.io|(?:(?:www|dev)\.)?invidio\.us|(?:www\.)?invidious\.pussthecat\.org|(?:www\.)?invidious\.zee\.li|(?:www\.)?invidious\.ethibox\.fr|(?:www\.)?iv\.ggtyler\.dev|(?:www\.)?inv\.vern\.i2p|(?:www\.)?am74vkcrjp2d5v36lcdqgsj2m6x36tbrkhsruoegwfcizzabnfgf5zyd\.onion|(?:www\.)?inv\.riverside\.rocks|(?:www\.)?invidious\.silur\.me|(?:www\.)?inv\.bp\.projectsegfau\.lt|(?:www\.)?invidious\.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid\.onion|(?:www\.)?invidious\.slipfox\.xyz|(?:www\.)?invidious\.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd\.onion|(?:www\.)?inv\.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad\.onion|(?:www\.)?invidious\.tiekoetter\.com|(?:www\.)?iv\.odysfvr23q5wgt7i456o5t3trw2cw5dgn56vbjfbq2m7xsc5vqbqpcyd\.onion|(?:www\.)?invidious\.nerdvpn\.de|(?:www\.)?invidious\.weblibre\.org|(?:www\.)?inv\.odyssey346\.dev|(?:www\.)?invidious\.dhusch\.de|(?:www\.)?iv\.melmac\.space|(?:www\.)?watch\.thekitty\.zone|(?:www\.)?invidious\.privacydev\.net|(?:www\.)?ng27owmagn5amdm7l5s3rsqxwscl5ynppnis5dqcasogkyxcfqn7psid\.onion|(?:www\.)?invidious\.drivet\.xyz|(?:www\.)?vid\.priv\.au|(?:www\.)?euxxcnhsynwmfidvhjf6uzptsmh4dipkmgdmcmxxuo7tunp3ad2jrwyd\.onion|(?:www\.)?inv\.vern\.cc|(?:www\.)?invidious\.esmailelbob\.xyz|(?:www\.)?invidious\.sethforprivacy\.com|(?:www\.)?yt\.oelrichsgarcia\.de|(?:www\.)?yt\.artemislena\.eu|(?:www\.)?invidious\.flokinet\.to|(?:www\.)?invidious\.baczek\.me|(?:www\.)?y\.com\.sb|(?:www\.)?invidious\.epicsite\.xyz|(?:www\.)?invidious\.lidarshield\.cloud|(?:www\.)?yt\.funami\.tech|(?:www\.)?invidious\.3o7z6yfxhbw7n3za4rss6l434kmv55cgw2vuziwuigpwegswvwzqipyd\.onion|(?:www\.)?osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd\.onion|(?:www\.)?u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad\.onion|(?:(?:www|no)\.)?invidiou\.sh|(?:(?:www|fi)\.)?invidious\.snopyta\.org|(?:www\.)?invidious\.kabi\.tk|(?:www\.)?invidious\.mastodon\.host|(?:www\.)?invidious\.zapashcanon\.fr|(?:www\.)?(?:invidious(?:-us)?|piped)\.kavin\.rocks|(?:www\.)?invidious\.tinfoil-hat\.net|(?:www\.)?invidious\.himiko\.cloud|(?:www\.)?invidious\.reallyancient\.tech|(?:www\.)?invidious\.tube|(?:www\.)?invidiou\.site|(?:www\.)?invidious\.site|(?:www\.)?invidious\.xyz|(?:www\.)?invidious\.nixnet\.xyz|(?:www\.)?invidious\.048596\.xyz|(?:www\.)?invidious\.drycat\.fr|(?:www\.)?inv\.skyn3t\.in|(?:www\.)?tube\.poal\.co|(?:www\.)?tube\.connect\.cafe|(?:www\.)?vid\.wxzm\.sx|(?:www\.)?vid\.mint\.lgbt|(?:www\.)?vid\.puffyan\.us|(?:www\.)?yewtu\.be|(?:www\.)?yt\.elukerio\.org|(?:www\.)?yt\.lelux\.fi|(?:www\.)?invidious\.ggc-project\.de|(?:www\.)?yt\.maisputain\.ovh|(?:www\.)?ytprivate\.com|(?:www\.)?invidious\.13ad\.de|(?:www\.)?invidious\.toot\.koeln|(?:www\.)?invidious\.fdn\.fr|(?:www\.)?watch\.nettohikari\.com|(?:www\.)?invidious\.namazso\.eu|(?:www\.)?invidious\.silkky\.cloud|(?:www\.)?invidious\.exonip\.de|(?:www\.)?invidious\.riverside\.rocks|(?:www\.)?invidious\.blamefran\.net|(?:www\.)?invidious\.moomoo\.de|(?:www\.)?ytb\.trom\.tf|(?:www\.)?yt\.cyberhost\.uk|(?:www\.)?kgg2m7yk5aybusll\.onion|(?:www\.)?qklhadlycap4cnod\.onion|(?:www\.)?axqzx4s6s54s32yentfqojs3x5i7faxza6xo3ehd4bzzsg2ii4fv2iid\.onion|(?:www\.)?c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid\.onion|(?:www\.)?fz253lmuao3strwbfbmx46yu7acac2jz27iwtorgmbqlkurlclmancad\.onion|(?:www\.)?invidious\.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd\.onion|(?:www\.)?owxfohz4kjyv25fvlqilyxast7inivgiktls3th44jhk3ej3i7ya\.b32\.i2p|(?:www\.)?4l2dgddgsrkf2ous66i6seeyi6etzfgrue332grh2n7madpwopotugyd\.onion|(?:www\.)?w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd\.onion|(?:www\.)?kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad\.onion|(?:www\.)?grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad\.onion|(?:www\.)?hpniueoejy4opn7bc4ftgazyqjoeqwlvh2uiku2xqku6zpoa4bf5ruid\.onion|(?:www\.)?piped\.kavin\.rocks|(?:www\.)?piped\.tokhmi\.xyz|(?:www\.)?piped\.syncpundit\.io|(?:www\.)?piped\.mha\.fi|(?:www\.)?watch\.whatever\.social|(?:www\.)?piped\.garudalinux\.org|(?:www\.)?piped\.rivo\.lol|(?:www\.)?piped-libre\.kavin\.rocks|(?:www\.)?yt\.jae\.fi|(?:www\.)?piped\.mint\.lgbt|(?:www\.)?il\.ax|(?:www\.)?piped\.esmailelbob\.xyz|(?:www\.)?piped\.projectsegfau\.lt|(?:www\.)?piped\.privacydev\.net|(?:www\.)?piped\.palveluntarjoaja\.eu|(?:www\.)?piped\.smnz\.de|(?:www\.)?piped\.adminforge\.de|(?:www\.)?watch\.whatevertinfoil\.de|(?:www\.)?piped\.qdi\.fi|(?:(?:www|cf)\.)?piped\.video|(?:www\.)?piped\.aeong\.one|(?:www\.)?piped\.moomoo\.me|(?:www\.)?piped\.chauvet\.pro|(?:www\.)?watch\.leptons\.xyz|(?:www\.)?pd\.vern\.cc|(?:www\.)?piped\.hostux\.net|(?:www\.)?piped\.lunar\.icu|(?:www\.)?hyperpipe\.surge\.sh|(?:www\.)?hyperpipe\.esmailelbob\.xyz|(?:www\.)?listen\.whatever\.social|(?:www\.)?music\.adminforge\.de
                            )
                            /.*?\?.*?\blist=
                        )?
                        (?P<id>(?:(?:PL|LL|EC|UU|FL|RD|UL|TL|PU|OLAK5uy_)[0-9A-Za-z-_]{10,}|RDMM|WL|LL|LM))
                     )zYouTube playlistsry   rl   c                     t                               |          rdS ddlm}  ||          }|                    dd g          d         rdS t                                          |          S )NFr   r   v)YoutubeTabIEr4   r   r   rm   r   r   s       r   r4   zYoutubePlaylistIE.suitable   sw      %% 	5))))))Xc]]66#vq! 	5ww$$$r   r   r   r   r$   r`   r<   rZ   rY   rn   rq   r4   r   r   s   @r   r   r      sd        (G G XXJ!GNL% % % % [% % % % %r   r   c                   "    e Zd ZdZdZdZdZdZdS )YoutubeRecommendedIErw   zyoutube:recommendedz?https?://(?:www\.)?youtube\.com/?(?:[?#]|$)|:ytrec(?:ommended)?z,YouTube recommended videos; ":ytrec" keywordry   Nr   r   r   r   r   r      s'        (G#GTJ<GNNNr   r   c                   *    e Zd ZdZdZdZdZdZdZdZ	dS )	YoutubeSearchDateIErw   zyoutube:search:datez;ytsearchdate(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)z#YouTube search, newest videos firstry   ytsearchdaterl   N
r   r   r   r$   r`   r<   rZ   rY   r[   rn   r   r   r   r   r     s1        (G#GPJ3GNJLLLr   r   c                   *    e Zd ZdZdZdZdZdZdZdZ	dS )	YoutubeSearchIErw   zyoutube:searchz7ytsearch(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zYouTube searchry   ytsearchrl   Nr   r   r   r   r   r     s1        (GGLJGNJLLLr   r   c                   &    e Zd ZdZdZdZdZdZdZdS )YoutubeSearchURLIErw   zyoutube:search_urlzchttps?://(?:www\.)?youtube\.com/(?:results|search)\?([^#]+&)?(?:search_query|q)=(?:[^&]+)(?:[&#]|$)z3YouTube search URLs with sorting and filter supportry   rl   Nr   r   r   r   r   r     s,        (G"GyJCGNLLLr   r   c                   "    e Zd ZdZdZdZdZdZdS )YoutubeShortsAudioPivotIErw   zyoutube:shorts:pivot:audioz?https?://(?:www\.)?youtube\.com/source/(?P<id>[\w-]{11})/shortsz@YouTube Shorts audio pivot (Shorts using audio of a given video)ry   Nr   r   r   r   r   r     s'        (G*GUJPGNNNr   r   c                   "    e Zd ZdZdZdZdZdZdS )YoutubeSubscriptionsIErw   zyoutube:subscriptionsz:ytsub(?:scription)?s?z@YouTube subscriptions feed; ":ytsubs" keyword (requires cookies)ry   Nr   r   r   r   r   r   &  s'        (G%G)JPGNNNr   r   c                   F     e Zd ZdZdZdZdZdZdZe	 fd            Z
 xZS )r   rw   zyoutube:taba  (?x:
        https?://
            (?!consent\.)(?:\w+\.)?
            (?:
                youtube(?:kids)?\.com|
                (?:www\.)?redirect\.invidious\.io|(?:(?:www|dev)\.)?invidio\.us|(?:www\.)?invidious\.pussthecat\.org|(?:www\.)?invidious\.zee\.li|(?:www\.)?invidious\.ethibox\.fr|(?:www\.)?iv\.ggtyler\.dev|(?:www\.)?inv\.vern\.i2p|(?:www\.)?am74vkcrjp2d5v36lcdqgsj2m6x36tbrkhsruoegwfcizzabnfgf5zyd\.onion|(?:www\.)?inv\.riverside\.rocks|(?:www\.)?invidious\.silur\.me|(?:www\.)?inv\.bp\.projectsegfau\.lt|(?:www\.)?invidious\.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid\.onion|(?:www\.)?invidious\.slipfox\.xyz|(?:www\.)?invidious\.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd\.onion|(?:www\.)?inv\.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad\.onion|(?:www\.)?invidious\.tiekoetter\.com|(?:www\.)?iv\.odysfvr23q5wgt7i456o5t3trw2cw5dgn56vbjfbq2m7xsc5vqbqpcyd\.onion|(?:www\.)?invidious\.nerdvpn\.de|(?:www\.)?invidious\.weblibre\.org|(?:www\.)?inv\.odyssey346\.dev|(?:www\.)?invidious\.dhusch\.de|(?:www\.)?iv\.melmac\.space|(?:www\.)?watch\.thekitty\.zone|(?:www\.)?invidious\.privacydev\.net|(?:www\.)?ng27owmagn5amdm7l5s3rsqxwscl5ynppnis5dqcasogkyxcfqn7psid\.onion|(?:www\.)?invidious\.drivet\.xyz|(?:www\.)?vid\.priv\.au|(?:www\.)?euxxcnhsynwmfidvhjf6uzptsmh4dipkmgdmcmxxuo7tunp3ad2jrwyd\.onion|(?:www\.)?inv\.vern\.cc|(?:www\.)?invidious\.esmailelbob\.xyz|(?:www\.)?invidious\.sethforprivacy\.com|(?:www\.)?yt\.oelrichsgarcia\.de|(?:www\.)?yt\.artemislena\.eu|(?:www\.)?invidious\.flokinet\.to|(?:www\.)?invidious\.baczek\.me|(?:www\.)?y\.com\.sb|(?:www\.)?invidious\.epicsite\.xyz|(?:www\.)?invidious\.lidarshield\.cloud|(?:www\.)?yt\.funami\.tech|(?:www\.)?invidious\.3o7z6yfxhbw7n3za4rss6l434kmv55cgw2vuziwuigpwegswvwzqipyd\.onion|(?:www\.)?osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd\.onion|(?:www\.)?u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad\.onion|(?:(?:www|no)\.)?invidiou\.sh|(?:(?:www|fi)\.)?invidious\.snopyta\.org|(?:www\.)?invidious\.kabi\.tk|(?:www\.)?invidious\.mastodon\.host|(?:www\.)?invidious\.zapashcanon\.fr|(?:www\.)?(?:invidious(?:-us)?|piped)\.kavin\.rocks|(?:www\.)?invidious\.tinfoil-hat\.net|(?:www\.)?invidious\.himiko\.cloud|(?:www\.)?invidious\.reallyancient\.tech|(?:www\.)?invidious\.tube|(?:www\.)?invidiou\.site|(?:www\.)?invidious\.site|(?:www\.)?invidious\.xyz|(?:www\.)?invidious\.nixnet\.xyz|(?:www\.)?invidious\.048596\.xyz|(?:www\.)?invidious\.drycat\.fr|(?:www\.)?inv\.skyn3t\.in|(?:www\.)?tube\.poal\.co|(?:www\.)?tube\.connect\.cafe|(?:www\.)?vid\.wxzm\.sx|(?:www\.)?vid\.mint\.lgbt|(?:www\.)?vid\.puffyan\.us|(?:www\.)?yewtu\.be|(?:www\.)?yt\.elukerio\.org|(?:www\.)?yt\.lelux\.fi|(?:www\.)?invidious\.ggc-project\.de|(?:www\.)?yt\.maisputain\.ovh|(?:www\.)?ytprivate\.com|(?:www\.)?invidious\.13ad\.de|(?:www\.)?invidious\.toot\.koeln|(?:www\.)?invidious\.fdn\.fr|(?:www\.)?watch\.nettohikari\.com|(?:www\.)?invidious\.namazso\.eu|(?:www\.)?invidious\.silkky\.cloud|(?:www\.)?invidious\.exonip\.de|(?:www\.)?invidious\.riverside\.rocks|(?:www\.)?invidious\.blamefran\.net|(?:www\.)?invidious\.moomoo\.de|(?:www\.)?ytb\.trom\.tf|(?:www\.)?yt\.cyberhost\.uk|(?:www\.)?kgg2m7yk5aybusll\.onion|(?:www\.)?qklhadlycap4cnod\.onion|(?:www\.)?axqzx4s6s54s32yentfqojs3x5i7faxza6xo3ehd4bzzsg2ii4fv2iid\.onion|(?:www\.)?c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid\.onion|(?:www\.)?fz253lmuao3strwbfbmx46yu7acac2jz27iwtorgmbqlkurlclmancad\.onion|(?:www\.)?invidious\.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd\.onion|(?:www\.)?owxfohz4kjyv25fvlqilyxast7inivgiktls3th44jhk3ej3i7ya\.b32\.i2p|(?:www\.)?4l2dgddgsrkf2ous66i6seeyi6etzfgrue332grh2n7madpwopotugyd\.onion|(?:www\.)?w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd\.onion|(?:www\.)?kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad\.onion|(?:www\.)?grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad\.onion|(?:www\.)?hpniueoejy4opn7bc4ftgazyqjoeqwlvh2uiku2xqku6zpoa4bf5ruid\.onion|(?:www\.)?piped\.kavin\.rocks|(?:www\.)?piped\.tokhmi\.xyz|(?:www\.)?piped\.syncpundit\.io|(?:www\.)?piped\.mha\.fi|(?:www\.)?watch\.whatever\.social|(?:www\.)?piped\.garudalinux\.org|(?:www\.)?piped\.rivo\.lol|(?:www\.)?piped-libre\.kavin\.rocks|(?:www\.)?yt\.jae\.fi|(?:www\.)?piped\.mint\.lgbt|(?:www\.)?il\.ax|(?:www\.)?piped\.esmailelbob\.xyz|(?:www\.)?piped\.projectsegfau\.lt|(?:www\.)?piped\.privacydev\.net|(?:www\.)?piped\.palveluntarjoaja\.eu|(?:www\.)?piped\.smnz\.de|(?:www\.)?piped\.adminforge\.de|(?:www\.)?watch\.whatevertinfoil\.de|(?:www\.)?piped\.qdi\.fi|(?:(?:www|cf)\.)?piped\.video|(?:www\.)?piped\.aeong\.one|(?:www\.)?piped\.moomoo\.me|(?:www\.)?piped\.chauvet\.pro|(?:www\.)?watch\.leptons\.xyz|(?:www\.)?pd\.vern\.cc|(?:www\.)?piped\.hostux\.net|(?:www\.)?piped\.lunar\.icu|(?:www\.)?hyperpipe\.surge\.sh|(?:www\.)?hyperpipe\.esmailelbob\.xyz|(?:www\.)?listen\.whatever\.social|(?:www\.)?music\.adminforge\.de
            )/
            (?:
                (?P<channel_type>channel|c|user|browse)/|
                (?P<not_channel>
                    feed/|hashtag/|
                    (?:playlist|watch)\?.*?\blist=
                )|
                (?!(?:channel|c|user|playlist|watch|w|v|embed|e|live|watch_popup|clip|shorts|movies|results|search|shared|hashtag|trending|explore|feed|feeds|browse|oembed|get_video_info|iframe_api|s/player|source|storefront|oops|index|account|t/terms|about|upload|signin|logout)\b)  # Direct URLs
            )
            (?P<id>[^/?\#&]+)
    )zYouTube Tabsry   anyc                 ~    t                               |          rdn t                                          |          S NF)r   r4   r   r   r3   r   s     r   r4   zYoutubeTabIE.suitable6  2    !**3//JuuUWW5E5Ec5J5JJr   r   r   s   @r   r   r   .  sm        (GG T\JGNLK K K K [K K K K Kr   r   c                   "    e Zd ZdZdZdZdZdZdS )YoutubeTruncatedIDIErw   zyoutube:truncated_idzEhttps?://(?:www\.)?youtube\.com/watch\?v=(?P<id>[0-9A-Za-z_-]{1,10})$Fry   Nr   r   r   r   r   r   ;  s'        (G$G[JGNNNr   r   c                   "    e Zd ZdZdZdZdZdZdS )YoutubeTruncatedURLIErw   zyoutube:truncated_urlaX  (?x)
        (?:https?://)?
        (?:\w+\.)?[yY][oO][uU][tT][uU][bB][eE](?:-nocookie)?\.com/
        (?:watch\?(?:
            feature=[a-z_]+|
            annotation_id=annotation_[^&]+|
            x-yt-cl=[0-9]+|
            hl=[^&]*|
            t=[0-9]+
        )?
        |
            attribution_link\?a=[^&]+
        )
        $
    Fry   Nr   r   r   r   r   r   C  s*        (G%G JGNNNr   r   c                   "    e Zd ZdZdZdZdZdZdS )YoutubeWatchLaterIErw   zyoutube:watchlaterz:ytwatchlaterzDYoutube watch later list; ":ytwatchlater" keyword (requires cookies)ry   Nr   r   r   r   r   r   K  s'        (G"G JTGNNNr   r   c                   &    e Zd ZdZdZdZdZdZdZdS )YoutubeYtBeIErw   YoutubeYtBezhttps?://youtu\.be/(?P<id>[0-9A-Za-z_-]{11})/*?.*?\blist=(?P<playlist_id>(?:(?:PL|LL|EC|UU|FL|RD|UL|TL|PU|OLAK5uy_)[0-9A-Za-z-_]{10,}|RDMM|WL|LL|LM))zyoutu.bery   rk   Nr   r   r   r   r   r   S  s/        (GG kJGNLLLr   r   c                   "    e Zd ZdZdZdZdZdZdS )YoutubeYtUserIErw   zyoutube:userzytuser:(?P<id>.+)z%YouTube user videos; "ytuser:" prefixry   Nr   r   r   r   r   r   \  s'        (GG$J5GNNNr   r   c                       e Zd ZdZdZdZdZdS )ABCIEyt_dlp.extractor.abcz
abc.net.auzShttps?://(?:www\.)?abc\.net\.au/(?:news|btn|listen)/(?:[^/?#]+/){1,4}(?P<id>\d{5,})rk   Nr   r   r   r$   r`   r<   rn   r   r   r   r   r   d  s"        $GGjJLLLr   r   c                       e Zd ZdZdZdZdZdS )
ABCIViewIEr   zabc.net.au:iviewz=https?://iview\.abc\.net\.au/(?:[^/]+/)*video/(?P<id>[^/?#]+)rk   Nr   r   r   r   r   r   k  s"        $G GSJLLLr   r   c                       e Zd ZdZdZdZdZdS )ABCIViewShowSeriesIEr   zabc.net.au:iview:showseriesz@https?://iview\.abc\.net\.au/show/(?P<id>[^/]+)(?:/series/\d+)?$r   Nr   r   r   r   r   r   r  s"        $G+GWJLLLr   r   c                       e Zd ZdZdZdZdZdS )ABCOTVSClipsIEyt_dlp.extractor.abcotvszabcotvs:clipsz9https?://clips\.abcotvs\.com/(?:[^/]+/)*video/(?P<id>\d+)rk   Nr   r   r   r   r   r   y  "        (GGOJLLLr   r   c                   "    e Zd ZdZdZdZdZdZdS )	ABCOTVSIEr   abcotvszthttps?://(?P<site>abc(?:7(?:news|ny|chicago)?|11|13|30)|6abc)\.com(?:(?:/[^/]+)*/(?P<display_id>[^/]+))?/(?P<id>\d+)zABC Owned Television Stationsrk   Nr   r   r   r$   r`   r<   rZ   rn   r   r   r   r   r     s*        (GG JJ-GLLLr   r   c                       e Zd ZdZdZdS )ACastBaseIEyt_dlp.extractor.acast	ACastBaseNr   r   r   r$   r`   r   r   r   r   r             &GGGGr   r   c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )ACastChannelIEr   zacast:channela  (?x)
                    https?://
                        (?:
                            (?:(?:www|shows)\.)?acast\.com/|
                            play\.acast\.com/s/
                        )
                        (?P<id>[^/#?]+)
                    rl   c                 ~    t                               |          rdn t                                          |          S r   )ACastIEr4   r   r   s     r   r4   zACastChannelIE.suitable  2    ((--Huu5773C3CC3H3HHr   
r   r   r   r$   r`   r<   rn   rq   r4   r   r   s   @r   r   r     sb        &GG aJLI I I I [I I I I Ir   r   c                       e Zd ZdZdZdZdZdS )r   r   acasta-  (?x:
                    https?://
                        (?:
                            (?:(?:embed|www|shows)\.)?acast\.com/|
                            play\.acast\.com/s/
                        )
                        (?P<channel>[^/?#]+)/(?:episodes/)?(?P<id>[^/#?"]+)
                    )rk   Nr   r   r   r   r   r     s%        &GG LJLLLr   r   c                       e Zd ZdZdZdZdZdS )	ADNBaseIEyt_dlp.extractor.adnADNBaseAnimation Digital NetworkanimationdigitalnetworkN)r   r   r   r$   r`   rZ   rY   r   r   r   r   r     s"        $GG)G.NNNr   r   c                   &    e Zd ZdZdZdZdZdZdZdS )ADNIEr   ADNz[https?://(?:www\.)?animationdigitalnetwork\.com/(?:(?P<lang>de)/)?video/[^/?#]+/(?P<id>\d+)r   r   rk   Nr   r   r   r   r   r     s,        $GGqJ)G.NLLLr   r   c                   &    e Zd ZdZdZdZdZdZdZdS )ADNSeasonIEr   	ADNSeasonzfhttps?://(?:www\.)?animationdigitalnetwork\.com/(?:(?P<lang>de)/)?video/(?P<id>\d+)[^/?#]*/?(?:$|[#?])r   r   rl   Nr   r   r   r   r   r     s,        $GG|J)G.NLLLr   r   c                       e Zd ZdZdZdS )AGalegaBaseIEyt_dlp.extractor.agalegaAGalegaBaseNr   r   r   r   r   r             (GGGGr   r   c                       e Zd ZdZdZdZdZdS )	AGalegaIEr   zagalega:videoszAhttps?://(?:www\.)?agalega\.gal/videos/(?:detail/)?(?P<id>[0-9]+)rk   Nr   r   r   r   r   r     s"        (GGVJLLLr   r   c                       e Zd ZdZdZdZdZdS )AMCNetworksIEzyt_dlp.extractor.amcnetworksAMCNetworkszohttps?://(?:www\.)?(?:amc|bbcamerica|ifc|(?:we|sundance)tv)\.com/(?P<id>(?:movies|shows(?:/[^/?#]+)+)/[^/?#&]+)rk   Nr   r   r   r   r   r     s%        ,GG EJLLLr   r   c                       e Zd ZdZdZdZdZdS )APAIEzyt_dlp.extractor.apaAPAzk(?P<base_url>https?://[^/]+\.apa\.at)/embed/(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})rk   Nr   r   r   r   r   r     s%        $GG FJLLLr   r   c                       e Zd ZdZdZdS )ARDAudiothekBaseIEyt_dlp.extractor.ardARDAudiothekBaseNr   r   r   r   r   r             $G GGGr   r   c                       e Zd ZdZdZdZdZdS )ARDAudiothekIEr   ARDAudiothekzbhttps:?//(?:www\.)?ardaudiothek\.de/episode/(?P<id>urn:ard:(?:episode|section|extra):[a-f0-9]{16})rk   Nr   r   r   r   r  r    s"        $GGwJLLLr   r  c                       e Zd ZdZdZdZdZdS )ARDAudiothekPlaylistIEr   ARDAudiothekPlaylistzbhttps:?//(?:www\.)?ardaudiothek\.de/sendung/(?P<playlist>[\w-]+)/(?P<id>urn:ard:show:[a-f0-9]{16})rl   Nr   r   r   r   r  r    s"        $G$GxJLLLr   r  c                       e Zd ZdZdZdZdZdS )ARDBetaMediathekIEr   ARDMediathekz(?x)https?://
        (?:(?:beta|www)\.)?ardmediathek\.de/
        (?:[^/]+/)?
        (?:player|live|video)/
        (?:[^?#]+/)?
        (?P<id>[a-zA-Z0-9]+)
        /?(?:[?#]|$)rk   Nr   r   r   r   r
  r
    s%        $GG PJLLLr   r
  c                       e Zd ZdZdZdZdZdS )ARDIEr   ARDzQ(?P<mainurl>https?://(?:www\.)?daserste\.de/(?:[^/?#&]+/)+(?P<id>[^/?#&]+))\.htmlrk   Nr   r   r   r   r  r    s"        $GGgJLLLr   r  c                       e Zd ZdZdZdZdZdS )ARDMediathekCollectionIEr   ARDMediathekCollectiona  (?x)https?://
        (?:(?:beta|www)\.)?ardmediathek\.de/
        (?:[^/?#]+/)?
        (?P<playlist>sendung|serie|sammlung)/
        (?:(?P<display_id>[^?#]+?)/)?
        (?P<id>[a-zA-Z0-9]+)
        (?:/(?P<season>\d+)(?:/(?P<version>OV|AD))?)?/?(?:[?#]|$)rl   Nr   r   r   r   r  r    s%        $G&G `JLLLr   r  c                       e Zd ZdZdZdZdZdS )ATVAtIEzyt_dlp.extractor.atvatATVAtz7https?://(?:www\.)?atv\.at/tv/(?:[^/]+/){2,3}(?P<id>.*)rk   Nr   r   r   r   r  r    "        &GGLJLLLr   r  c                       e Zd ZdZdZdZdS )AWAANIEyt_dlp.extractor.awaanAWAANzrhttps?://(?:www\.)?(?:awaan|dcndigital)\.ae/(?:#/)?show/(?P<show_id>\d+)/[^/]+(?:/(?P<id>\d+)/(?P<season_id>\d+))?Nr   r   r   r$   r`   r<   r   r   r   r  r    s         &GG KJJJr   r  c                       e Zd ZdZdZdS )AWAANBaseIEr  	AWAANBaseNr   r   r   r   r  r    r   r   r  c                       e Zd ZdZdZdZdZdS )AWAANLiveIEr  z
awaan:livezChttps?://(?:www\.)?(?:awaan|dcndigital)\.ae/(?:#/)?live/(?P<id>\d+)rk   Nr   r   r   r   r  r    s"        &GGYJLLLr   r  c                       e Zd ZdZdZdZdZdS )AWAANSeasonIEr  zawaan:seasonzihttps?://(?:www\.)?(?:awaan|dcndigital)\.ae/(?:#/)?program/(?:(?P<show_id>\d+)|season/(?P<season_id>\d+))rl   Nr   r   r   r   r!  r!    s%        &GG AJLLLr   r!  c                       e Zd ZdZdZdZdZdS )AWAANVideoIEr  zawaan:videozmhttps?://(?:www\.)?(?:awaan|dcndigital)\.ae/(?:#/)?(?:video(?:/[^/]+)?|media|catchup/[^/]+/[^/]+)/(?P<id>\d+)rk   Nr   r   r   r   r#  r#    s%        &GG DJLLLr   r#  c                   "    e Zd ZdZdZdZdZdZdS )
AZMedienIEzyt_dlp.extractor.azmedienAZMediena  (?x)
                    https?://
                        (?:www\.|tv\.)?
                        (?:
                            telezueri\.ch|
                            telebaern\.tv|
                            telem1\.ch|
                            tvo-online\.ch
                        )/
                        [^/?#]+/
                        (?P<id>
                            [^/?#]+-\d+
                        )
                        (?:
                            \#video=
                            (?P<kaltura_id>
                                [_0-9a-z]+
                            )
                        )?
                    zAZ Medien videosrk   Nr   r   r   r   r%  r%  !  s*        )GG BJ GLLLr   r%  c                       e Zd ZdZdZdZdZdS )	AbcNewsIEyt_dlp.extractor.abcnewsabcnewszUhttps?://abcnews\.go\.com/(?:[^/]+/)+(?P<display_id>[0-9a-z-]+)/story\?id=(?P<id>\d+)r   Nr   r   r   r   r(  r(  )  s"        (GGlJLLLr   r(  c                       e Zd ZdZdZdS )AMPIEzyt_dlp.extractor.ampAMPNr   r   r   r   r,  r,  0          $GGGGr   r,  c                       e Zd ZdZdZdZdZdS )AbcNewsVideoIEr)  zabcnews:videoa  (?x)
                    https?://
                        (?:
                            abcnews\.go\.com/
                            (?:
                                (?:[^/]+/)*video/(?P<display_id>[0-9a-z-]+)-|
                                video/(?:embed|itemfeed)\?.*?\bid=
                            )|
                            fivethirtyeight\.abcnews\.go\.com/video/embed/\d+/
                        )
                        (?P<id>\d+)
                    rk   Nr   r   r   r   r0  r0  5  s%        (GG FJLLLr   r0  c                       e Zd ZdZdZdZdS )AbemaTVBaseIEyt_dlp.extractor.abematvAbemaTVBaseabematvNrz   r   r   r   r2  r2  <          (GGNNNr   r2  c                   "    e Zd ZdZdZdZdZdZdS )	AbemaTVIEr3  AbemaTVzWhttps?://abema\.tv/(?P<type>now-on-air|video/episode|channels/.+?/slots)/(?P<id>[^?/]+)r5  rk   Nr   r   r   r   r8  r8  B  s'        (GGkJNLLLr   r8  c                   "    e Zd ZdZdZdZdZdZdS )AbemaTVTitleIEr3  AbemaTVTitlezVhttps?://abema\.tv/video/title/(?P<id>[^?/#]+)/?(?:\?(?:[^#]+&)?s=(?P<season>[^&#]+))?r5  rl   Nr   r   r   r   r;  r;  J  s'        (GGkJNLLLr   r;  c                       e Zd ZdZdZdS )AcFunVideoBaseIEyt_dlp.extractor.acfunAcFunVideoBaseNr   r   r   r   r>  r>  R  s        &GGGGr   r>  c                       e Zd ZdZdZdZdZdS )AcFunBangumiIEr?  AcFunBangumiz0https?://www\.acfun\.cn/bangumi/(?P<id>aa[_\d]+)rk   Nr   r   r   r   rB  rB  W  "        &GGFJLLLr   rB  c                       e Zd ZdZdZdZdZdS )AcFunVideoIEr?  
AcFunVideoz*https?://www\.acfun\.cn/v/ac(?P<id>[_\d]+)rk   Nr   r   r   r   rF  rF  ^  s"        &GG@JLLLr   rF  c                       e Zd ZdZdZdZdZdS )AcademicEarthCourseIEzyt_dlp.extractor.academicearthzAcademicEarth:Coursez?https?://(?:www\.)?academicearth\.org/playlists/(?P<id>[^?#/]+)rl   Nr   r   r   r   rI  rI  e  s"        .G$GTJLLLr   rI  c                       e Zd ZdZdZdZdS )AdobeConnectIEzyt_dlp.extractor.adobeconnectAdobeConnectz.https?://\w+\.adobeconnect\.com/(?P<id>[\w-]+)Nr  r   r   r   rK  rK  l  s        -GGEJJJr   rK  c                       e Zd ZdZdZdZdZdS )AdobeTVVideoIEzyt_dlp.extractor.adobetvadobetvz,https?://video\.tv\.adobe\.com/v/(?P<id>\d+)rk   Nr   r   r   r   rN  rN  r  "        (GGCJLLLr   rN  c                       e Zd ZdZdZdS )AdobePassIEzyt_dlp.extractor.adobepass	AdobePassNr   r   r   r   rR  rR  y  s        *GGGGr   rR  c                       e Zd ZdZdZdS )TurnerBaseIEzyt_dlp.extractor.turner
TurnerBaseNr   r   r   r   rU  rU  ~          'GGGGr   rU  c                       e Zd ZdZdZdZdZdS )AdultSwimIEzyt_dlp.extractor.adultswim	AdultSwimz^https?://(?:www\.)?adultswim\.com/videos/(?P<show_path>[^/?#]+)(?:/(?P<episode_path>[^/?#]+))?r   Nr   r   r   r   rY  rY    s"        *GGsJLLLr   rY  c                       e Zd ZdZdZdZdZdS )AeonCoIEzyt_dlp.extractor.aeoncoAeonCoz1https?://(?:www\.)?aeon\.co/videos/(?P<id>[^/?]+)rk   Nr   r   r   r   r\  r\    s"        'GGFJLLLr   r\  c                       e Zd ZdZdZdZdS )AfreecaTVBaseIEyt_dlp.extractor.afreecatvAfreecaTVBase	afreecatvNrz   r   r   r   r_  r_            *GG NNNr   r_  c                   &    e Zd ZdZdZdZdZdZdZdS )AfreecaTVCatchStoryIEr`  zsoop:catchstoryzOhttps?://vod\.(?:sooplive\.co\.kr|afreecatv\.com)/player/(?P<id>\d+)/catchstoryzsooplive.co.kr catch storyrb  rl   Nr   r   r   r   re  re    s,        *GGgJ*G NLLLr   re  c                   &    e Zd ZdZdZdZdZdZdZdS )AfreecaTVIEr`  soopzdhttps?://vod\.(?:sooplive\.co\.kr|afreecatv\.com)/(?:PLAYER/STATION|player)/(?P<id>\d+)/?(?:$|[?#&])zsooplive.co.krrb  rk   Nr   r   r   r   rg  rg    s,        *GG|JG NLLLr   rg  c                   &    e Zd ZdZdZdZdZdZdZdS )AfreecaTVLiveIEr`  z	soop:livezThttps?://play\.(?:sooplive\.co\.kr|afreecatv\.com)/(?P<id>[^/?#]+)(?:/(?P<bno>\d+))?zsooplive.co.kr livestreamsrb  rk   Nr   r   r   r   rj  rj    s,        *GGlJ*G NLLLr   rj  c                   "    e Zd ZdZdZdZdZdZdS )AfreecaTVUserIEr`  z	soop:userz^https?://ch\.(?:sooplive\.co\.kr|afreecatv\.com)/(?P<id>[^/?#]+)/vods/?(?P<slug_type>[^/?#]+)?rb  rl   Nr   r   r   r   rl  rl    s'        *GGuJ NLLLr   rl  c                       e Zd ZdZdZdZdZdS )AirTVIEzyt_dlp.extractor.airtvAirTVz*https?://www\.air\.tv/watch\?v=(?P<id>\w+)rk   Nr   r   r   r   rn  rn    s"        &GGAJLLLr   rn  c                       e Zd ZdZdZdZdZdS )AitubeKZVideoIEzyt_dlp.extractor.aitubeAitubeKZVideozBhttps?://aitube\.kz/(?:video|embed/)\?(?:[^\?]+)?id=(?P<id>[\w-]+)rk   Nr   r   r   r   rq  rq    s"        'GGYJLLLr   rq  c                       e Zd ZdZdZdZdZdS )AlJazeeraIEzyt_dlp.extractor.aljazeera	AlJazeerazhttps?://(?P<base>\w+\.aljazeera\.\w+)/(?P<type>programs?/[^/]+|(?:feature|video|new)s)?/\d{4}/\d{1,2}/\d{1,2}/(?P<id>[^/?&#]+)rk   Nr   r   r   r   rt  rt    s%        *GG ZJLLLr   rt  c                       e Zd ZdZdZdZdZdS )AliExpressLiveIEzyt_dlp.extractor.aliexpressAliExpressLivez/https?://live\.aliexpress\.com/live/(?P<id>\d+)rk   Nr   r   r   r   rw  rw    s"        +GGEJLLLr   rw  c                       e Zd ZdZdZdZdZdS )	AlibabaIEzyt_dlp.extractor.alibabaAlibabazGhttps?://(?:www\.)?alibaba\.com/product-detail/[\w-]+_(?P<id>\d+)\.htmlrk   Nr   r   r   r   rz  rz    s"        (GG_JLLLr   rz  c                       e Zd ZdZdZdZdZdS )
AllocineIEzyt_dlp.extractor.allocineAllocinezhttps?://(?:www\.)?allocine\.fr/(?:article|video|film)/(?:fichearticle_gen_carticle=|player_gen_cmedia=|fichefilm_gen_cfilm=|video-)(?P<id>[0-9]+)(?:\.html)?rk   Nr   r   r   r   r}  r}    s%        )GG tJLLLr   r}  c                       e Zd ZdZdZdS )AllstarBaseIEyt_dlp.extractor.allstarAllstarBaseNr   r   r   r   r  r    r   r   r  c                       e Zd ZdZdZdZdZdS )	AllstarIEr  AllstarzUhttps?://(?:www\.)?allstar\.gg/(?P<type>(?:clip|montage))\?(?P=type)=(?P<id>[^/?#&]+)rk   Nr   r   r   r   r  r    s"        (GGkJLLLr   r  c                       e Zd ZdZdZdZdZdS )AllstarProfileIEr  AllstarProfilezDhttps?://(?:www\.)?allstar\.gg/(?:profile\?user=|u/)(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r    s"        (GGZJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )AlphaPornoIEzyt_dlp.extractor.alphaporno
AlphaPornoz7https?://(?:www\.)?alphaporno\.com/videos/(?P<id>[^/]+)r   rk   Nr   r   r   r$   r`   r<   re   rn   r   r   r   r  r    s'        +GGLJILLLr   r  c                       e Zd ZdZdZdS )Alsace20TVBaseIEyt_dlp.extractor.alsace20tvAlsace20TVBaseNr   r   r   r   r  r            +GGGGr   r  c                       e Zd ZdZdZdZdZdS )Alsace20TVEmbedIEr  Alsace20TVEmbedz1https?://(?:www\.)?alsace20\.tv/emb/(?P<id>[\w]+)rk   Nr   r   r   r   r  r    "        +GGGJLLLr   r  c                       e Zd ZdZdZdZdZdS )Alsace20TVIEr  
Alsace20TVz@https?://(?:www\.)?alsace20\.tv/(?:[\w-]+/)+[\w-]+-(?P<id>[\w]+)rk   Nr   r   r   r   r  r    "        +GGXJLLLr   r  c                       e Zd ZdZdZdZdZdS )AltCensoredChannelIEyt_dlp.extractor.altcensoredzaltcensored:channelzIhttps?://(?:www\.)?altcensored\.com/channel/(?!page|table)(?P<id>[^/?#]+)rl   Nr   r   r   r   r  r    s"        ,G#G^JLLLr   r  c                       e Zd ZdZdZdZdZdS )AltCensoredIEr  altcensoredzGhttps?://(?:www\.)?altcensored\.com/(?:watch\?v=|embed/)(?P<id>[^/?#]+)rk   Nr   r   r   r   r  r    "        ,GG]JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )AluraIEyt_dlp.extractor.aluraAlurazShttps?://(?:cursos\.)?alura\.com\.br/course/(?P<course_name>[^/]+)/task/(?P<id>\d+)alurark   Nr   r   r   r   r  r     s'        &GGjJNLLLr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )AluraCourseIEr  AluraCoursez9https?://(?:cursos\.)?alura\.com\.br/course/(?P<id>[^/]+)aluracoursec                 ~    t                               |          rdn t                                          |          S r   )r  r4   r   r   s     r   r4   zAluraCourseIE.suitable.  r   r   
r   r   r   r$   r`   r<   rY   rq   r4   r   r   s   @r   r  r  (  s_        &GGOJ"NI I I I [I I I I Ir   r  c                       e Zd ZdZdZdS )DPlayBaseIEyt_dlp.extractor.dplay	DPlayBaseNr   r   r   r   r  r  3  r   r   r  c                       e Zd ZdZdZdS )DiscoveryPlusBaseIEr  DiscoveryPlusBaseNr   r   r   r   r  r  8  s        &G!GGGr   r  c                       e Zd ZdZdZdZdZdS )AmHistoryChannelIEr  AmHistoryChannelz9https?://(?:www\.)?ahctv\.com/video/(?P<id>[^/]+/[^/?#]+)rk   Nr   r   r   r   r  r  =  s"        &G GNJLLLr   r  c                       e Zd ZdZdZdZdZdS )AmadeusTVIEzyt_dlp.extractor.amadeustv	AmadeusTVz7https?://(?:www\.)?amadeus\.tv/library/(?P<id>[\da-f]+)rk   Nr   r   r   r   r  r  D  "        *GGMJLLLr   r  c                       e Zd ZdZdZdZdZdS )AmaraIEzyt_dlp.extractor.amaraAmaraz9https?://(?:www\.)?amara\.org/(?:\w+/)?videos/(?P<id>\w+)rk   Nr   r   r   r   r  r  K  s"        &GGPJLLLr   r  c                       e Zd ZdZdZdS )AmazonMiniTVBaseIEyt_dlp.extractor.amazonminitvAmazonMiniTVBaseNr   r   r   r   r  r  R          -G GGGr   r  c                       e Zd ZdZdZdZdZdS )AmazonMiniTVIEr  AmazonMiniTVza(?:https?://(?:www\.)?amazon\.in/minitv/tp/|amazonminitv:(?:amzn1\.dv\.gti\.)?)(?P<id>[a-f0-9-]+)rk   Nr   r   r   r   r  r  W  s"        -GGyJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )AmazonMiniTVSeasonIEr  zamazonminitv:seasonz;amazonminitv:season:(?:amzn1\.dv\.gti\.)?(?P<id>[a-f0-9-]+)z-Amazon MiniTV Season, "minitv:season:" prefixrl   Nr   r   r   r   r  r  ^  '        -G#GQJ=GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )AmazonMiniTVSeriesIEr  zamazonminitv:seriesz;amazonminitv:series:(?:amzn1\.dv\.gti\.)?(?P<id>[a-f0-9-]+)z-Amazon MiniTV Series, "minitv:series:" prefixrl   Nr   r   r   r   r  r  f  r  r   r  c                       e Zd ZdZdZdZdZdS )AmazonReviewsIEyt_dlp.extractor.amazonAmazonReviewsz^https?://(?:www\.)?amazon\.(?:[a-z]{2,3})(?:\.[a-z]{2})?/gp/customer-reviews/(?P<id>[^/&#$?]+)rk   Nr   r   r   r   r  r  n  s"        'GGtJLLLr   r  c                       e Zd ZdZdZdZdZdS )AmazonStoreIEr  AmazonStorezghttps?://(?:www\.)?amazon\.(?:[a-z]{2,3})(?:\.[a-z]{2})?/(?:[^/]+/)?(?:dp|gp/product)/(?P<id>[^/&#$?]+)rl   Nr   r   r   r   r  r  u  s"        'GG}JLLLr   r  c                       e Zd ZdZdZdZdZdS )AmericasTestKitchenIE$yt_dlp.extractor.americastestkitchenAmericasTestKitchenzhttps?://(?:www\.)?(?:americastestkitchen|cooks(?:country|illustrated))\.com/(?:cooks(?:country|illustrated)/)?(?P<resource_type>episode|videos)/(?P<id>\d+)rk   Nr   r   r   r   r  r  |  s%        4G#G sJLLLr   r  c                       e Zd ZdZdZdZdZdS )AmericasTestKitchenSeasonIEr  AmericasTestKitchenSeasonzhttps?://(?:www\.)?(?P<show>americastestkitchen|(?P<cooks>cooks(?:country|illustrated)))\.com(?:(?:/(?P<show2>cooks(?:country|illustrated)))?(?:/?$|(?<!ated)(?<!ated\.com)/episodes/browse/season_(?P<season>\d+)))rl   Nr   r   r   r   r  r    s%        4G)G lJLLLr   r  c                       e Zd ZdZdZdZdZdS )AnchorFMEpisodeIEzyt_dlp.extractor.anchorfmAnchorFMEpisodezXhttps?://anchor\.fm/(?P<channel_name>\w+)/(?:embed/)?episodes/[\w-]+-(?P<episode_id>\w+)rk   Nr   r   r   r   r  r    s"        )GGoJLLLr   r  c                       e Zd ZdZdZdZdZdS )AngelIEzyt_dlp.extractor.angelAngelzhttps?://(?:www\.)?angel\.com/watch/(?P<series>[^/?#]+)/episode/(?P<id>[\w-]+)/season-(?P<season_number>\d+)/episode-(?P<episode_number>\d+)/(?P<title>[^/?#]+)rk   Nr   r   r   r   r  r    s%        &GG xJLLLr   r  c                       e Zd ZdZdZdZdZdS )AnimalPlanetIEr  AnimalPlanetz@https?://(?:www\.)?animalplanet\.com/video/(?P<id>[^/]+/[^/?#]+)rk   Nr   r   r   r   r  r    s"        &GGUJLLLr   r  c                       e Zd ZdZdZdS )AntennaBaseIEyt_dlp.extractor.antennaAntennaBaseNr   r   r   r   r  r    r   r   r  c                   "    e Zd ZdZdZdZdZdZdS )Ant1NewsGrArticleIEr  zant1newsgr:articlez:https?://(?:www\.)?ant1news\.gr/[^/]+/article/(?P<id>\d+)/zant1news.gr articlesr   Nr   r   r   r   r  r    s'        (G"GPJ$GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )Ant1NewsGrEmbedIEr  zant1newsgr:embedzo(?:https?:)?//(?:[a-zA-Z0-9\-]+\.)?(?:antenna|ant1news)\.gr/templates/pages/player\?([^#]+&)?cid=(?P<id>[^#&]+)zant1news.gr embedded videosrk   Nr   r   r   r   r  r    s*        (G G GJ+GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )AntennaGrWatchIEr  zantenna:watchzJhttps?://(?P<netloc>(?:www\.)?(?:antenna|ant1news)\.gr)/watch/(?P<id>\d+)/z!antenna.gr and ant1news.gr videosrk   Nr   r   r   r   r  r    s'        (GG`J1GLLLr   r  c                       e Zd ZdZdZdZdZdS )AnvatoIEzyt_dlp.extractor.anvatoAnvatoz/anvato:(?P<access_key_or_mcp>[^:]+):(?P<id>\d+)rk   Nr   r   r   r   r  r    s"        'GGCJLLLr   r  c                       e Zd ZdZdZdZdZdS )AparatIEzyt_dlp.extractor.aparatAparatzVhttps?://(?:www\.)?aparat\.com/(?:v/|video/video/embed/videohash/)(?P<id>[a-zA-Z0-9]+)rk   Nr   r   r   r   r  r    s"        'GGkJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )AppleConnectIEzyt_dlp.extractor.appleconnectzapple:music:connectz2https?://music\.apple\.com/[\w-]+/post/(?P<id>\d+)zApple Music Connectrk   Nr   r   r   r   r  r    s'        -G#GIJ#GLLLr   r  c                       e Zd ZdZdZdZdZdS )ApplePodcastsIEzyt_dlp.extractor.applepodcastsApplePodcastszQhttps?://podcasts\.apple\.com/(?:[^/]+/)?podcast(?:/[^/]+){1,2}.*?\bi=(?P<id>\d+)rk   Nr   r   r   r   r  r    s"        .GGhJLLLr   r  c                       e Zd ZdZdZdZdZdS )AppleTrailersIEyt_dlp.extractor.appletrailersappletrailerszahttps?://(?:www\.|movie)?trailers\.apple\.com/(?:trailers|ca)/(?P<company>[^/]+)/(?P<movie>[^/]+)rl   Nr   r   r   r   r  r    s"        .GGwJLLLr   r  c                       e Zd ZdZdZdZdZdS )AppleTrailersSectionIEr  zappletrailers:sectionzlhttps?://(?:www\.)?trailers\.apple\.com/#section=(?P<id>justadded|exclusive|justhd|mostpopular|moviestudios)rl   Nr   r   r   r   r  r    s%        .G%G CJLLLr   r  c                       e Zd ZdZdZdZdS )ArcPublishingIEzyt_dlp.extractor.arcpublishingArcPublishingzNarcpublishing:(?P<org>[a-z]+):(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})Nr  r   r   r   r  r    s        .GGdJJJr   r  c                   "    e Zd ZdZdZdZdZdZdS )ArchiveOrgIEyt_dlp.extractor.archiveorgzarchive.orgzKhttps?://(?:www\.)?archive\.org/(?:details|embed)/(?P<id>[^?#]+)(?:[?].*)?$zarchive.org video and audior   Nr   r   r   r   r   r     s'        +GG`J+GLLLr   r   c                   "    e Zd ZdZdZdZdZdZdS )ArnesIEzyt_dlp.extractor.arneszvideo.arnes.sizjhttps?://video\.arnes\.si/(?:[a-z]{2}/)?(?:watch|embed|api/(?:asset|public/video))/(?P<id>[0-9a-zA-Z]{12})zArnes Videork   Nr   r   r   r   r  r    s'        &GGJGLLLr   r  c                   "    e Zd ZdZdZddgZdZdS )Art19IEyt_dlp.extractor.art19Art19zxhttps?://(?:www\.)?art19\.com/shows/[^/#?]+/episodes/(?P<id>[\da-f]{8}-?[\da-f]{4}-?[\da-f]{4}-?[\da-f]{4}-?[\da-f]{12})zjhttps?://rss\.art19\.com/episodes/(?P<id>[\da-f]{8}-?[\da-f]{4}-?[\da-f]{4}-?[\da-f]{4}-?[\da-f]{12})\.mp3rk   Nr   r   r   r   r  r    s2        &GG T  VJ  KJLLLr   r  c                   "    e Zd ZdZdZddgZdZdS )Art19ShowIEr  	Art19ShowzIhttps?://(?:www\.)?art19\.com/shows/(?P<id>[\w-]+)(?:/embed)?/?(?:$|[#?])z3https?://rss\.art19\.com/(?P<id>[\w-]+)/?(?:$|[#?])rl   Nr   r   r   r   r	  r	    s/        &GG`  c[  \JLLLr   r	  c                       e Zd ZdZdZdS )ArteTVBaseIEyt_dlp.extractor.arte
ArteTVBaseNr   r   r   r   r  r    s        %GGGGr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )ArteTVCategoryIEr  ArteTVCategoryz_https?://(?:www\.)?arte\.tv/(?P<lang>fr|de|en|es|it|pl)/videos/(?P<id>[\w-]+(?:/[\w-]+)*)/?\s*$rl   c                     t          fdt          t          fD                        o t                                                    S )Nc              3   B   K   | ]}|                               V  d S r'   r4   r9   ier3   s     r   r;   z,ArteTVCategoryIE.suitable.<locals>.<genexpr>  s/      LLBKK$$LLLLLLr   )r   ArteTVIEArteTVPlaylistIEr   r4   r   s    `r   r4   zArteTVCategoryIE.suitable  sN     LLLL:J/KLLLLLL &  %%	'r   r   r   s   @r   r  r    sV        %GGwJL' ' ' ' [' ' ' ' 'r   r  c                       e Zd ZdZdZdZdZdS )ArteTVEmbedIEr  ArteTVEmbedzDhttps?://(?:www\.)?arte\.tv/player/v\d+/index\.php\?.*?\bjson_url=.+rk   Nr   r   r   r   r  r    s"        %GG]JLLLr   r  c                       e Zd ZdZdZdZdZdS )r  r  ArteTVa~  (?x)
                    (?:https?://
                        (?:
                            (?:www\.)?arte\.tv/(?P<lang>fr|de|en|es|it|pl)/videos|
                            api\.arte\.tv/api/player/v\d+/config/(?P<lang_2>fr|de|en|es|it|pl)
                        )
                    |arte://program)
                        /(?P<id>\d{6}-\d{3}-[AF]|LIVE)
                    rk   Nr   r   r   r   r  r  $  s%        %GG aJLLLr   r  c                       e Zd ZdZdZdZdZdS )r  r  ArteTVPlaylistzOhttps?://(?:www\.)?arte\.tv/(?P<lang>fr|de|en|es|it|pl)/videos/(?P<id>RC-\d{6})rl   Nr   r   r   r   r  r  +  s"        %GGeJLLLr   r  c                       e Zd ZdZdZdS )AsobiChannelBaseIEyt_dlp.extractor.asobichannelAsobiChannelBaseNr   r   r   r   r!  r!  2  r  r   r!  c                   "    e Zd ZdZdZdZdZdZdS )AsobiChannelIEr"  asobichannelz:https?://asobichannel\.asobistore\.jp/watch/(?P<id>[\w-]+)ASOBI CHANNELrk   Nr   r   r   r   r%  r%  7  s'        -GGPJGLLLr   r%  c                   "    e Zd ZdZdZdZdZdZdS )AsobiChannelTagURLIEr"  zasobichannel:tagz=https?://asobichannel\.asobistore\.jp/tag/(?P<id>[a-z0-9-_]+)r'  rl   Nr   r   r   r   r)  r)  ?  s'        -G GRJGLLLr   r)  c                   "    e Zd ZdZdZdZdZdZdS )AsobiStageIEzyt_dlp.extractor.asobistage
AsobiStagezqhttps?://asobistage\.asobistore\.jp/event/(?P<id>(?P<event>\w+)/(?P<type>archive|player)/(?P<slug>\w+))(?:[?#]|$)u"   ASOBISTAGE (アソビステージ)rl   Nr   r   r   r   r+  r+  G  s*        +GG IJ2GLLLr   r+  c                       e Zd ZdZdZdZdZdS )AtScaleConfEventIEzyt_dlp.extractor.atscaleconfAtScaleConfEventzAhttps?://(?:www\.)?atscaleconference\.com/events/(?P<id>[^/&$?]+)rl   Nr   r   r   r   r.  r.  O  s"        ,G GVJLLLr   r.  c                   "    e Zd ZdZdZdZdZdZdS )AtresPlayerIEzyt_dlp.extractor.atresplayerAtresPlayerz[https?://(?:www\.)?atresplayer\.com/(?:[^/?#]+/){4}(?P<display_id>.+?)_(?P<id>[0-9a-f]{24})atresplayerrk   Nr   r   r   r   r1  r1  V  s'        ,GGpJ"NLLLr   r1  c                       e Zd ZdZdZdZdZdS )AudiMediaIEzyt_dlp.extractor.audimedia	AudiMediazYhttps?://(?:www\.)?audi-mediacenter\.com/(?:en|de)/audimediatv/(?:video/)?(?P<id>[^/?#]+)rk   Nr   r   r   r   r5  r5  ^  s"        *GGnJLLLr   r5  c                       e Zd ZdZdZdZdZdS )AudioBoomIEzyt_dlp.extractor.audioboom	AudioBoomz?https?://(?:www\.)?audioboom\.com/(?:boos|posts)/(?P<id>[0-9]+)rk   Nr   r   r   r   r8  r8  e  "        *GGTJLLLr   r8  c                       e Zd ZdZdZdS )AudiodraftBaseIEyt_dlp.extractor.audiodraftAudiodraftBaseNr   r   r   r   r<  r<  l  r  r   r<  c                       e Zd ZdZdZdZdZdS )AudiodraftCustomIEr=  zAudiodraft:customz6https?://(?:[-\w]+)\.audiodraft\.com/entry/(?P<id>\d+)rk   Nr   r   r   r   r@  r@  q  s"        +G!GMJLLLr   r@  c                       e Zd ZdZdZdZdZdS )AudiodraftGenericIEr=  zAudiodraft:genericzEhttps?://www\.audiodraft\.com/contests/[^/#]+#entries&eid=(?P<id>\d+)rk   Nr   r   r   r   rB  rB  x  s"        +G"G[JLLLr   rB  c                       e Zd ZdZdZdZdZdS )AudiomackAlbumIEyt_dlp.extractor.audiomackzaudiomack:albumzIhttps?://(?:www\.)?audiomack\.com/(?:album/|(?=.+/album/))(?P<id>[\w/-]+)rl   Nr   r   r   r   rD  rD    s"        *GG_JLLLr   rD  c                       e Zd ZdZdZdZdZdS )AudiomackIErE  	audiomackzGhttps?://(?:www\.)?audiomack\.com/(?:song/|(?=.+/song/))(?P<id>[\w/-]+)rk   Nr   r   r   r   rG  rG    s"        *GG]JLLLr   rG  c                       e Zd ZdZdZdS )AudiusBaseIEyt_dlp.extractor.audius
AudiusBaseNr   r   r   r   rJ  rJ    rW  r   rJ  c                   "    e Zd ZdZdZdZdZdZdS )AudiusIErK  Audiusz_(?x)https?://(?:www\.)?(?:audius\.co/(?P<uploader>[\w\d-]+)(?!/album|/playlist)/(?P<title>\S+))z	Audius.cork   Nr   r   r   r   rN  rN    s'        'GGwJGLLLr   rN  c                   "    e Zd ZdZdZdZdZdZdS )AudiusPlaylistIErK  zaudius:playlistzVhttps?://(?:www\.)?audius\.co/(?P<uploader>[\w\d-]+)/(?:album|playlist)/(?P<title>\S+)zAudius.co playlistsrl   Nr   r   r   r   rQ  rQ    s'        'GGnJ#GLLLr   rQ  c                   "    e Zd ZdZdZdZdZdZdS )AudiusProfileIErK  zaudius:artistz6https?://(?:www)?audius\.co/(?P<id>[^\/]+)/?(?:[?#]|$)zAudius.co profile/artist pagesrl   Nr   r   r   r   rS  rS    s'        'GGKJ.GLLLr   rS  c                       e Zd ZdZdZdZdZdS )AudiusTrackIErK  zaudius:trackzE(?x)(?:audius:)(?:https?://(?:www\.)?.+/v1/tracks/)?(?P<track_id>\w+)z3Audius track ID or API link. Prepend with "audius:"Nr   r   r   r$   r`   r<   rZ   r   r   r   rU  rU    s"        'GGZJCGGGr   rU  c                       e Zd ZdZdZdZdZdS )AxsIEzyt_dlp.extractor.axszaxs.tvzJhttps?://(?:www\.)?axs\.tv/(?:channel/(?:[^/?#]+/)+)?video/(?P<id>[^/?#]+)rk   Nr   r   r   r   rX  rX    s"        $GG_JLLLr   rX  c                   "    e Zd ZdZdZdZdZdZdS )BBCCoUkArticleIEyt_dlp.extractor.bbczbbc.co.uk:articlezGhttps?://(?:www\.)?bbc\.co\.uk/programmes/articles/(?P<id>[a-zA-Z0-9]+)zBBC articlesrl   Nr   r   r   r   rZ  rZ    s'        $G!G]JGLLLr   rZ  c                   &    e Zd ZdZdZdZdZdZdZdS )	BBCCoUkIEr[  z	bbc.co.uka#  (?x)
                    https?://
                        (?:www\.)?bbc\.co\.uk/
                        (?:
                            programmes/(?!articles/)|
                            iplayer(?:/[^/]+)?/(?:episode/|playlist/)|
                            music/(?:clips|audiovideo/popular)[/#]|
                            radio/player/|
                            events/[^/]+/play/[^/]+/
                        )
                        (?P<id>(?:[pbml][\da-z]{7}|w[\da-z]{7,14}))(?!/(?:episodes|broadcasts|clips))
                    zBBC iPlayerbbcrk   Nr   r   r   r   r]  r]    s/        $GG G	JGNLLLr   r]  c                       e Zd ZdZdZdS )BBCCoUkIPlayerPlaylistBaseIEr[  BBCCoUkIPlayerPlaylistBaseNr   r   r   r   r`  r`    s        $G*GGGr   r`  c                       e Zd ZdZdZdZdZdS )BBCCoUkIPlayerEpisodesIEr[  zbbc.co.uk:iplayer:episodesz[https?://(?:www\.)?bbc\.co\.uk/iplayer/episodes/(?P<id>(?:[pbml][\da-z]{7}|w[\da-z]{7,14}))rl   Nr   r   r   r   rc  rc    s"        $G*GsJLLLr   rc  c                       e Zd ZdZdZdZdZdS )BBCCoUkIPlayerGroupIEr[  zbbc.co.uk:iplayer:groupzXhttps?://(?:www\.)?bbc\.co\.uk/iplayer/group/(?P<id>(?:[pbml][\da-z]{7}|w[\da-z]{7,14}))rl   Nr   r   r   r   re  re    s"        $G'GpJLLLr   re  c                       e Zd ZdZdZdS )BBCCoUkPlaylistBaseIEr[  BBCCoUkPlaylistBaseNr   r   r   r   rg  rg            $G#GGGr   rg  c                       e Zd ZdZdZdZdZdS )BBCCoUkPlaylistIEr[  zbbc.co.uk:playlistzshttps?://(?:www\.)?bbc\.co\.uk/programmes/(?P<id>(?:[pbml][\da-z]{7}|w[\da-z]{7,14}))/(?:episodes|broadcasts|clips)rl   Nr   r   r   r   rk  rk    s%        $G"G LJLLLr   rk  c                   F     e Zd ZdZdZdZdZdZdZe	 fd            Z
 xZS )BBCIEr[  r^  a  (?x)
        https?://(?:www\.)?(?:
            bbc\.(?:com|co\.uk)|
            bbcnewsd73hkzno2ini43t4gblxvycyac5aw4gnv7t2rccijh7745uqd\.onion|
            bbcweb3hytmzhn5d532owbu6oqadra5z3ar726vq5kgwwn6aucdccrad\.onion
        )/(?:[^/]+/)+(?P<id>[^/#?]+)BBCr   c                     t           t          t          t          t          f}t          fd|D                       rdn t                                                    S )Nc              3   B   K   | ]}|                               V  d S r'   r  r  s     r   r;   z!BBCIE.suitable.<locals>.<genexpr>  s/      CC"R[[--CCCCCCr   F)r]  rZ  rc  re  rk  r   r   r4   )r   r3   
EXCLUDE_IEr   s    ` r   r4   zBBCIE.suitable  s[    !13KMbduv
CCCC
CCCCC +WW%%c**	,r   r   r   s   @r   rm  rm    sc        $GG `JGNL, , , , [, , , , ,r   rm  c                       e Zd ZdZdZdS )ZattooPlatformBaseIEyt_dlp.extractor.zattooZattooPlatformBaseNr   r   r   r   rs  rs            'G"GGGr   rs  c                       e Zd ZdZdZdZdS )BBVTVBaseIErt  	BBVTVBasebbvtvNrz   r   r   r   rx  rx            'GGNNNr   rx  c                       e Zd ZdZdZdZdZdS )BBVTVIErt  BBVTVz(?x)https?://(?:www\.)?bbv\-tv\.net/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )rz  Nr   r   r   r$   r`   r<   rY   r   r   r   r}  r}    s%        'GG jJNNNr   r}  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )BBVTVLiveIErt  	BBVTVLivez(?x)https?://(?:www\.)?bbv\-tv\.net/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )rz  c                 ~    t                               |          rdn t                                          |          S r   )r}  r4   r   r   s     r   r4   zBBVTVLiveIE.suitable  r   r   r  r   s   @r   r  r  	  sb        'GG _JNI I I I [I I I I Ir   r  c                       e Zd ZdZdZdZdZdS )BBVTVRecordingsIErt  BBVTVRecordingszs(?x)https?://(?:www\.)?bbv\-tv\.net/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )rz  Nr  r   r   r   r  r    s%        'GG OJNNNr   r  c                   "    e Zd ZdZdZdZdZdZdS )BFIPlayerIEzyt_dlp.extractor.bfiz
bfi:playerzDhttps?://player\.bfi\.org\.uk/[^/]+/film/watch-(?P<id>[\w-]+)-onlineFrk   Nr   r   r   r$   r`   r<   rD   rn   r   r   r   r  r    s'        $GG[JHLLLr   r  c                       e Zd ZdZdZdS )BFMTVBaseIEyt_dlp.extractor.bfmtv	BFMTVBaseNr   r   r   r   r  r  #  r   r   r  c                       e Zd ZdZdZdZdZdS )BFMTVArticleIEr  zbfmtv:articlezShttps?://(?:www\.|rmc\.)?bfmtv\.com/(?:[^/]+/)*[^/?&#]+_A[A-Z]-(?P<id>\d{12})\.htmlr   Nr   r   r   r   r  r  (  s"        &GGkJLLLr   r  c                       e Zd ZdZdZdZdZdS )BFMTVIEr  bfmtvzShttps?://(?:www\.|rmc\.)?bfmtv\.com/(?:[^/]+/)*[^/?&#]+_V[A-Z]-(?P<id>\d{12})\.htmlrk   Nr   r   r   r   r  r  /  s"        &GGkJLLLr   r  c                       e Zd ZdZdZdZdZdS )BFMTVLiveIEr  z
bfmtv:livez@https?://(?:www\.|rmc\.)?bfmtv\.com/(?P<id>(?:[^/]+/)?en-direct)rk   Nr   r   r   r   r  r  6  s"        &GGVJLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )BRIEzyt_dlp.extractor.brBRza(?P<base_url>https?://(?:www\.)?br(?:-klassik)?\.de)/(?:[a-z0-9\-_]+/)+(?P<id>[a-z0-9\-_]+)\.htmlFzBayerischer Rundfunkrk   N	r   r   r   r$   r`   r<   rD   rZ   rn   r   r   r   r  r  =  s,        #GGyJH$GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )BTArticleIEyt_dlp.extractor.vgtvz
bt:articlez<https?://(?:www\.)?bt\.no/(?:[^/]+/)+(?P<id>[^/]+)-\d+\.htmlzBergens Tidende Articlesrk   Nr   r   r   r   r  r  F  s'        %GGSJ(GLLLr   r  c                       e Zd ZdZdZdZdZdS )	BTVPlusIEzyt_dlp.extractor.btvplusBTVPluszQhttps?://(?:www\.)?btvplus\.bg/produkt/(?:predavaniya|seriali|novini)/(?P<id>\d+)rk   Nr   r   r   r   r  r  N  s"        (GGgJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )BTVestlendingenIEr  zbt:vestlendingenz>https?://(?:www\.)?bt\.no/spesial/vestlendingen/#!/(?P<id>\d+)zBergens Tidende - Vestlendingenrk   Nr   r   r   r   r  r  U  s'        %G GTJ/GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )BYUtvIEzyt_dlp.extractor.byutvBYUtvzihttps?://(?:www\.)?byutv\.org/(?:watch|player)/(?!event/)(?P<id>[0-9a-f-]+)(?:/(?P<display_id>[^/?#&]+))?Frk   Nr  r   r   r   r  r  ]  s'        &GG~JHLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )BaiduVideoIEzyt_dlp.extractor.baidu
BaiduVideoz8https?://v\.baidu\.com/(?P<type>[a-z]+)/(?P<id>\d+)\.htmu   百度视频rl   Nr   r   r   r   r  r  e  s'        &GGOJGLLLr   r  c                       e Zd ZdZdZdS )BanByeBaseIEyt_dlp.extractor.banbye
BanByeBaseNr   r   r   r   r  r  m  rW  r   r  c                       e Zd ZdZdZdZdZdS )BanByeChannelIEr  BanByeChannelz:https?://(?:www\.)?banbye\.com/(?:en/)?channel/(?P<id>\w+)rl   Nr   r   r   r   r  r  r  s"        'GGPJLLLr   r  c                       e Zd ZdZdZdZdZdS )BanByeIEr  BanByez;https?://(?:www\.)?banbye\.com/(?:en/)?watch/(?P<id>[\w-]+)r   Nr   r   r   r   r  r  y  s"        'GGQJLLLr   r  c                       e Zd ZdZdZdZdZdS )
BandcampIEyt_dlp.extractor.bandcampBandcampzBhttps?://(?P<uploader>[^/]+)\.bandcamp\.com/track/(?P<id>[^/?#&]+)rk   Nr   r   r   r   r  r    "        )GGWJLLLr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )BandcampAlbumIEr  zBandcamp:albumzHhttps?://(?:(?P<subdomain>[^.]+)\.)?bandcamp\.com/album/(?P<id>[^/?#&]+)rl   c                     t                               |          st                              |          rdn t                                          |          S r   )BandcampWeeklyIEr4   r  r   r   s     r   r4   zBandcampAlbumIE.suitable  sO     $,,S11+5?5H5H5M5M+WW%%c**	,r   r   r   s   @r   r  r    sV        )GG]JL, , , , [, , , , ,r   r  c                       e Zd ZdZdZdZdZdS )BandcampUserIEr  zBandcamp:userzEhttps?://(?!www\.)(?P<id>[^.]+)\.bandcamp\.com(?:/music)?/?(?:[#?]|$)rl   Nr   r   r   r   r  r    s"        )GG[JLLLr   r  c                       e Zd ZdZdZdZdZdS )r  r  zBandcamp:weeklyzEhttps?://(?:www\.)?bandcamp\.com/radio/?\?(?:[^#]+&)?show=(?P<id>\d+)rk   Nr   r   r   r   r  r    s"        )GG\JLLLr   r  c                       e Zd ZdZdZdS )BandlabBaseIEyt_dlp.extractor.bandlabBandlabBaseNr   r   r   r   r  r    r   r   r  c                   "    e Zd ZdZdZddgZdZdS )	BandlabIEr  BandlabzShttps?://(?:www\.)?bandlab.com/(?P<url_type>track|post|revision)/(?P<id>[\da-f_-]+)zThttps?://(?:www\.)?bandlab.com/(?P<url_type>embed)/\?(?:[^#]*&)?id=(?P<id>[\da-f-]+)rk   Nr   r   r   r   r  r    s/        (GGi  lE  FJLLLr   r  c                   "    e Zd ZdZdZddgZdZdS )BandlabPlaylistIEr  BandlabPlaylistzXhttps?://(?:www\.)?bandlab.com/(?:[\w]+/)?(?P<type>albums|collections)/(?P<id>[\da-f-]+)z[https?://(?:www\.)?bandlab.com/(?P<type>embed)/collection/\?(?:[^#]*&)?id=(?P<id>[\da-f-]+)rl   Nr   r   r   r   r  r    s/        (GGo  rR  SJLLLr   r  c                       e Zd ZdZdZdZdZdS )BannedVideoIEzyt_dlp.extractor.bannedvideoBannedVideoz<https?://(?:www\.)?banned\.video/watch\?id=(?P<id>[0-f]{24})rk   Nr   r   r   r   r  r    "        ,GGRJLLLr   r  c                       e Zd ZdZdZdZdZdS )
BeaconTvIEzyt_dlp.extractor.beaconBeaconTvz4https?://(?:www\.)?beacon\.tv/content/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r    s"        'GGJJLLLr   r  c                       e Zd ZdZdZdZdZdS )BeatBumpPlaylistIEyt_dlp.extractor.beatbumpBeatBumpPlaylistzMhttps?://beatbump\.(?:ml|io)/(?:release\?id=|artist/|playlist/)(?P<id>[\w-]+)rl   Nr   r   r   r   r  r    s"        )G GcJLLLr   r  c                       e Zd ZdZdZdZdZdS )BeatBumpVideoIEr  BeatBumpVideoz6https?://beatbump\.(?:ml|io)/listen\?id=(?P<id>[\w-]+)rk   Nr   r   r   r   r  r    s"        )GGLJLLLr   r  c                       e Zd ZdZdZdZdZdS )
BeatportIEzyt_dlp.extractor.beatportBeatportzQhttps?://(?:www\.|pro\.)?beatport\.com/track/(?P<display_id>[^/]+)/(?P<id>[0-9]+)rk   Nr   r   r   r   r  r    "        )GGgJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )BeegIEzyt_dlp.extractor.beegBeegz9https?://(?:www\.)?beeg\.(?:com(?:/video)?)/-?(?P<id>\d+)r   rk   Nr  r   r   r   r  r    s'        %GGOJILLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )BehindKinkIEzyt_dlp.extractor.behindkink
BehindKinkzlhttps?://(?:www\.)?behindkink\.com/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/(?P<id>[^/#?_]+)Fr   rk   N	r   r   r   r$   r`   r<   rD   re   rn   r   r   r   r  r    s/        +GG BJHILLLr   r  c                       e Zd ZdZdZdZdZdS )
BerufeTVIEzyt_dlp.extractor.berufetvBerufeTVzUhttps?://(?:www\.)?web\.arbeitsagentur\.de/berufetv/[^?#]+/film;filmId=(?P<id>[\w-]+)rk   Nr   r   r   r   r  r    s"        )GGlJLLLr   r  c                       e Zd ZdZdZdS )MTVServicesBaseIEyt_dlp.extractor.mtvMTVServicesBaseNr   r   r   r   r  r            $GGGGr   r  c                       e Zd ZdZdZdZdZdS )BetIEzyt_dlp.extractor.betBetzGhttps?://(?:www\.)?bet\.com/(?:video-clips|episodes)/(?P<id>[\da-z]{6})rk   Nr   r   r   r   r  r    "        $GG]JLLLr   r  c                       e Zd ZdZdZdS )BibelTVBaseIEyt_dlp.extractor.bibeltvBibelTVBaseNr   r   r   r   r  r    r   r   r  c                   "    e Zd ZdZdZdZdZdZdS )BibelTVLiveIEr  zbibeltv:livez9https?://(?:www\.)?bibeltv\.de/livestreams/(?P<id>[\w-]+)zBibelTV live programrk   Nr   r   r   r   r  r    s'        (GGOJ$GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )BibelTVSeriesIEr  zbibeltv:serieszAhttps?://(?:www\.)?bibeltv\.de/mediathek/serien/(?P<id>\d+)[\w-]+zBibelTV series playlistrl   Nr   r   r   r   r  r  	  s'        (GGXJ'GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )BibelTVVideoIEr  zbibeltv:videozAhttps?://(?:www\.)?bibeltv\.de/mediathek/videos/(?P<id>\d+)[\w-]+zBibelTV single videork   Nr   r   r   r   r  r    s'        (GGXJ$GLLLr   r  c                       e Zd ZdZdZdZdZdS )	BigflixIEzyt_dlp.extractor.bigflixBigflixz1https?://(?:www\.)?bigflix\.com/.+/(?P<id>[0-9]+)rk   Nr   r   r   r   r  r    s"        (GGFJLLLr   r  c                       e Zd ZdZdZdZdZdS )BigoIEzyt_dlp.extractor.bigoBigoz8https?://(?:www\.)?bigo\.tv/(?:[a-z]{2,}/)?(?P<id>[^/]+)rk   Nr   r   r   r   r  r     s"        %GGMJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )BildIEzyt_dlp.extractor.bildBildzchttps?://(?:www\.)?bild\.de/(?:[^/]+/)+(?P<display_id>[^/]+)-(?P<id>\d+)(?:,auto=true)?\.bild\.htmlzBild.derk   Nr   r   r   r   r  r  '  s'        %GG{JGLLLr   r  c                       e Zd ZdZdZdS )BilibiliBaseIEyt_dlp.extractor.bilibiliBilibiliBaseNr   r   r   r   r   r   /          )GGGGr   r   c                       e Zd ZdZdZdZdZdS )BiliBiliBangumiIEr  BiliBiliBangumiz;https?://(?:www\.)?bilibili\.com/bangumi/play/ep(?P<id>\d+)rk   Nr   r   r   r   r  r  4  s"        )GGQJLLLr   r  c                       e Zd ZdZdZdZdZdS )BiliBiliBangumiMediaIEr  BiliBiliBangumiMediaz<https?://(?:www\.)?bilibili\.com/bangumi/media/md(?P<id>\d+)rl   Nr   r   r   r   r  r  ;  s"        )G$GRJLLLr   r  c                       e Zd ZdZdZdZdZdS )BiliBiliBangumiSeasonIEr  BiliBiliBangumiSeasonz?(?x)https?://(?:www\.)?bilibili\.com/bangumi/play/ss(?P<id>\d+)rl   Nr   r   r   r   r  r  B  s"        )G%GUJLLLr   r  c                       e Zd ZdZdZdZdZdS )BiliBiliDynamicIEr  BiliBiliDynamiczFhttps?://(?:t\.bilibili\.com|(?:www\.)?bilibili\.com/opus)/(?P<id>\d+)rk   Nr   r   r   r   r  r  I  s"        )GG^JLLLr   r  c                       e Zd ZdZdZdZdZdS )
BiliBiliIEr  BiliBilizthttps?://(?:www\.)?bilibili\.com/(?:video/|festival/[^/?#]+\?(?:[^#]*&)?bvid=)(?P<prefix>[aAbB][vV])(?P<id>[^/?#&]+)r   Nr   r   r   r   r  r  P  s%        )GG KJLLLr   r  c                       e Zd ZdZdZdZdS )BiliBiliPlayerIEr  BiliBiliPlayerzAhttps?://player\.bilibili\.com/player\.html\?.*?\baid=(?P<id>\d+)Nr  r   r   r   r  r  W  s        )GGZJJJr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )BiliBiliSearchIEr  BiliBiliSearchz9bilisearch(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zBilibili video search
bilisearchrl   N	r   r   r   r$   r`   r<   rZ   r[   rn   r   r   r   r  r  ]  s,        )GGNJ%GJLLLr   r  c                       e Zd ZdZdZdZdS )BiliIntlBaseIEr  BiliIntlBasebiliintlNrz   r   r   r   r  r  f          )GGNNNr   r  c                   "    e Zd ZdZdZdZdZdZdS )
BiliIntlIEr  BiliIntlzzhttps?://(?:www\.)?bili(?:bili\.tv|intl\.com)/(?:[a-zA-Z]{2}/)?(play/(?P<season_id>\d+)/(?P<ep_id>\d+)|video/(?P<aid>\d+))r  rk   Nr   r   r   r   r!  r!  l  s*        )GG TJNLLLr   r!  c                   "    e Zd ZdZdZdZdZdZdS )BiliIntlSeriesIEr  zbiliIntl:serieszehttps?://(?:www\.)?bili(?:bili\.tv|intl\.com)/(?:[a-zA-Z]{2}/)?(?:play|media)/(?P<id>\d+)/?(?:[?#]|$)r  rl   Nr   r   r   r   r$  r$  t  s'        )GG|JNLLLr   r$  c                       e Zd ZdZdZdZdZdS )
BiliLiveIEr  BiliLivez3https?://live\.bilibili\.com/(?:blanc/)?(?P<id>\d+)rk   Nr   r   r   r   r&  r&  |  s"        )GGIJLLLr   r&  c                       e Zd ZdZdZdS )BilibiliAudioBaseIEr  BilibiliAudioBaseNr   r   r   r   r)  r)            )G!GGGr   r)  c                       e Zd ZdZdZdZdZdS )BilibiliAudioAlbumIEr  BilibiliAudioAlbumz4https?://(?:www\.)?bilibili\.com/audio/am(?P<id>\d+)rl   Nr   r   r   r   r-  r-    s"        )G"GJJLLLr   r-  c                       e Zd ZdZdZdZdZdS )BilibiliAudioIEr  BilibiliAudioz4https?://(?:www\.)?bilibili\.com/audio/au(?P<id>\d+)rk   Nr   r   r   r   r0  r0    "        )GGJJLLLr   r0  c                       e Zd ZdZdZdZdZdS )BilibiliCategoryIEr  zBilibili category extractorz7https?://(?:www\.)?bilibili\.com/v/[a-zA-Z]+\/[a-zA-Z]+rl   Nr   r   r   r   r4  r4    s"        )G+GMJLLLr   r4  c                       e Zd ZdZdZdS )BilibiliCheeseBaseIEr  BilibiliCheeseBaseNr   r   r   r   r6  r6    s        )G"GGGr   r6  c                       e Zd ZdZdZdZdZdS )BilibiliCheeseIEr  BilibiliCheesez:https?://(?:www\.)?bilibili\.com/cheese/play/ep(?P<id>\d+)rk   Nr   r   r   r   r9  r9    s"        )GGPJLLLr   r9  c                       e Zd ZdZdZdZdZdS )BilibiliCheeseSeasonIEr  BilibiliCheeseSeasonz:https?://(?:www\.)?bilibili\.com/cheese/play/ss(?P<id>\d+)rl   Nr   r   r   r   r<  r<    s"        )G$GPJLLLr   r<  c                       e Zd ZdZdZdS )BilibiliSpaceBaseIEr  BilibiliSpaceBaseNr   r   r   r   r?  r?    r+  r   r?  c                       e Zd ZdZdZdS )BilibiliSpaceListBaseIEr  BilibiliSpaceListBaseNr   r   r   r   rB  rB    s        )G%GGGr   rB  c                   B     e Zd ZdZdZddgZdZe fd            Z xZ	S )BilibiliCollectionListIEr  BilibiliCollectionListzWhttps?://space\.bilibili\.com/(?P<mid>\d+)/channel/collectiondetail/?\?sid=(?P<sid>\d+)z=https?://space\.bilibili\.com/(?P<mid>\d+)/lists/(?P<sid>\d+)rl   c                 ~    t                               |          rdn t                                          |          S r   )BilibiliSeriesListIEr4   r   r   s     r   r4   z!BilibiliCollectionListIE.suitable  3    ,55c::Uuu@P@PQT@U@UUr   r   r   s   @r   rE  rE    sl        )G&Gp  sv  wJLV V V V [V V V V Vr   rE  c                       e Zd ZdZdZdZdZdS )BilibiliFavoritesListIEr  BilibiliFavoritesListzlhttps?://(?:space\.bilibili\.com/\d+/favlist/?\?fid=|(?:www\.)?bilibili\.com/medialist/detail/ml)(?P<id>\d+)rl   Nr   r   r   r   rK  rK    s%        )G%G GJLLLr   rK  c                       e Zd ZdZdZdZdZdS )BilibiliPlaylistIEr  BilibiliPlaylistzDhttps?://(?:www\.)?bilibili\.com/(?:medialist/play|list)/(?P<id>\w+)r   Nr   r   r   r   rN  rN    s"        )G GZJLLLr   rN  c                   "    e Zd ZdZdZddgZdZdS )rH  r  BilibiliSeriesListzUhttps?://space\.bilibili\.com/(?P<mid>\d+)/channel/seriesdetail/?\?\bsid=(?P<sid>\d+)zahttps?://space\.bilibili\.com/(?P<mid>\d+)/lists/(?P<sid>\d+)/?\?(?:[^#]+&)?type=series(?:[&#]|$)rl   Nr   r   r   r   rH  rH    s/        )G"Go  rZ  [JLLLr   rH  c                       e Zd ZdZdZdZdZdS )BilibiliSpaceAudioIEr  BilibiliSpaceAudioz;https?://space\.bilibili\.com/(?P<id>\d+)/(?:upload/)?audiorl   Nr   r   r   r   rS  rS    s"        )G"GQJLLLr   rS  c                       e Zd ZdZdZdZdZdS )BilibiliSpaceVideoIEr  BilibiliSpaceVideozShttps?://space\.bilibili\.com/(?P<id>\d+)(?P<video>(?:/upload)?/video)?/?(?:[?#]|$)rl   Nr   r   r   r   rV  rV    s"        )G"GiJLLLr   rV  c                       e Zd ZdZdZdZdZdS )BilibiliWatchlaterIEr  BilibiliWatchlaterz7https?://(?:www\.)?bilibili\.com/watchlater/?(?:[?#]|$)rl   Nr   r   r   r   rY  rY    s"        )G"GLJLLLr   rY  c                       e Zd ZdZdZdZdZdS )BioBioChileTVIEzyt_dlp.extractor.biobiochiletvBioBioChileTVzWhttps?://(?:tv|www)\.biobiochile\.cl/(?:notas|noticias)/(?:[^/]+/)+(?P<id>[^/]+)\.shtmlrk   Nr   r   r   r   r\  r\    s"        .GGmJLLLr   r\  c                       e Zd ZdZdZdZdZdS )BitChuteChannelIEyt_dlp.extractor.bitchuteBitChuteChannelzThttps?://(?:(?:www|old)\.)?bitchute\.com/(?P<type>channel|playlist)/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r_  r_    s"        )GGiJLLLr   r_  c                       e Zd ZdZdZdZdZdS )
BitChuteIEr`  BitChutezYhttps?://(?:(?:www|old)\.)?bitchute\.com/(?:video|embed|torrent/[^/?#]+)/(?P<id>[^/?#&]+)rk   Nr   r   r   r   rc  rc    s"        )GGnJLLLr   rc  c                       e Zd ZdZdZdZdZdS )
BitmovinIEzyt_dlp.extractor.bitmovinBitmovinz+https?://streams\.bitmovin\.com/(?P<id>\w+)rk   Nr   r   r   r   rf  rf    s"        )GGAJLLLr   rf  c                       e Zd ZdZdZdZdZdS )BlackboardCollaborateIE&yt_dlp.extractor.blackboardcollaborateBlackboardCollaboratea,  (?x)
                        https?://
                        (?P<region>[a-z]+)(?:-lti)?\.bbcollab\.com/
                        (?:
                            collab/ui/session/playback/load|
                            recording
                        )/
                        (?P<id>[^/?#]+)rk   Nr   r   r   r   ri  ri    s%        6G%G IJLLLr   ri  c                       e Zd ZdZdZdZdS )BlackboardCollaborateLaunchIErj  BlackboardCollaborateLaunchz5https?://[a-z]+\.bbcollab\.com/launch/(?P<id>[^/?#]+)Nr  r   r   r   rm  rm    s        6G+GJJJJr   rm  c                   "    e Zd ZdZdZdZdZdZdS )BleacherReportCMSIEyt_dlp.extractor.bleacherreportBleacherReportCMSzRhttps?://(?:www\.)?bleacherreport\.com/video_embed\?id=(?P<id>[0-9a-f-]{36}|\d{5})Frk   Nr  r   r   r   rp  rp    s'        /G!GiJHLLLr   rp  c                   "    e Zd ZdZdZdZdZdZdS )BleacherReportIErq  BleacherReportz;https?://(?:www\.)?bleacherreport\.com/articles/(?P<id>\d+)Frk   Nr  r   r   r   rt  rt     s'        /GGQJHLLLr   rt  c                       e Zd ZdZdZdZdZdS )BlerpIEzyt_dlp.extractor.blerpblerpz=https?://(?:www\.)?blerp\.com/soundbites/(?P<id>[0-9a-zA-Z]+)rk   Nr   r   r   r   rw  rw  (  s"        &GGRJLLLr   rw  c                       e Zd ZdZdZdZdZdS )BlobIEyt_dlp.extractor.commonmistakesBlobzblob:FNrV  r   r   r   rz  rz  /  s"        /GGJGGGr   rz  c                       e Zd ZdZdZdZdZdS )	BloggerIEzyt_dlp.extractor.bloggerzblogger.comz:https?://(?:www\.)?blogger\.com/video\.g\?token=(?P<id>.+)rk   Nr   r   r   r   r~  r~  6  s"        (GGQJLLLr   r~  c                       e Zd ZdZdZdZdZdS )BloombergIEzyt_dlp.extractor.bloomberg	Bloombergz<https?://(?:www\.)?bloomberg\.com/(?:[^/]+/)*(?P<id>[^/?#]+)rk   Nr   r   r   r   r  r  =  s"        *GGQJLLLr   r  c                   &    e Zd ZdZdZddgZdZdZdS )	BlueskyIEzyt_dlp.extractor.blueskyBlueskyz_https?://(?:www\.)?(?:bsky\.app|main\.bsky\.dev)/profile/(?P<handle>[\w.:%-]+)/post/(?P<id>\w+)z<at://(?P<handle>[\w.:%-]+)/app\.bsky\.feed\.post/(?P<id>\w+)r   r   Nr  r   r   r   r  r  D  s4        (GGy  |  @JILLLr   r  c                       e Zd ZdZdZdS )BokeCCBaseIEyt_dlp.extractor.bokecc
BokeCCBaseNr   r   r   r   r  r  L  rW  r   r  c                   "    e Zd ZdZdZdZdZdZdS )BokeCCIEr  BokeCCz8https?://union\.bokecc\.com/playvideo\.bo\?(?P<query>.*)u   CC视频rk   Nr   r   r   r   r  r  Q  s'        'GGOJGLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )BongaCamsIEzyt_dlp.extractor.bongacams	BongaCamszIhttps?://(?P<host>(?:[^/]+\.)?bongacams\d*\.(?:com|net))/(?P<id>[^/?&#]+)r   rk   Nr  r   r   r   r  r  Y  s'        *GG_JILLLr   r  c                       e Zd ZdZdZdZdZdS )BoostyIEzyt_dlp.extractor.boostyBoostyzJhttps?://(?:www\.)?boosty\.to/(?P<user>[^/#?]+)/posts/(?P<post_id>[^/#?]+)r   Nr   r   r   r   r  r  a  s"        'GG_JLLLr   r  c                       e Zd ZdZdZdZdZdS )BostonGlobeIEzyt_dlp.extractor.bostonglobeBostonGlobezG(?i)https?://(?:www\.)?bostonglobe\.com/.*/(?P<id>[^/]+)/\w+(?:\.html)?rk   Nr   r   r   r   r  r  h  s"        ,GG^JLLLr   r  c                       e Zd ZdZdZdZdZdS )BoxCastVideoIEzyt_dlp.extractor.boxcastBoxCastVideoz(?x)
        https?://boxcast\.tv/(?:
            view-embed/|
            channel/\w+\?(?:[^#]+&)?b=|
            video-portal/(?:\w+/){2}
        )(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  o  s%        (GG AJLLLr   r  c                       e Zd ZdZdZdZdZdS )BoxIEzyt_dlp.extractor.boxBoxzdhttps?://(?:[^.]+\.)?(?P<service>app|ent)\.box\.com/s/(?P<shared_name>[^/?#]+)(?:/file/(?P<id>\d+))?rk   Nr   r   r   r   r  r  v  s"        $GG{JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )BpbIEzyt_dlp.extractor.bpbBpbzBhttps?://(?:www\.|m\.)?bpb\.de/(?:[^/?#]+/)*(?P<id>\d+)(?:[/?#]|$)u&   Bundeszentrale für politische Bildungrk   Nr   r   r   r   r  r  }  s'        $GGYJ6GLLLr   r  c                       e Zd ZdZdZdZdZdS )BrainPOPBaseIEyt_dlp.extractor.brainpopBrainPOPBase'/(?P<slug>[^/]+/[^/]+/(?P<id>[^/?#&]+))brainpopNr  r   r   r   r  r    s"        )GG:JNNNr   r  c                       e Zd ZdZdZdZdZdS )BrainPOPLegacyBaseIEr  BrainPOPLegacyBaser  r  Nr  r   r   r   r  r    s"        )G"G:JNNNr   r  c                   "    e Zd ZdZdZdZdZdZdS )BrainPOPELLIEr  BrainPOPELLzBhttps?://ell\.brainpop\.com/(?P<slug>[^/]+/[^/]+/(?P<id>[^/?#&]+))r  rk   Nr   r   r   r   r  r    s'        )GGWJNLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )BrainPOPEspIEr  BrainPOPEspzBhttps?://esp\.brainpop\.com/(?P<slug>[^/]+/[^/]+/(?P<id>[^/?#&]+))u   BrainPOP Españolr  rk   Nr   r   r   r   r  r    s,        )GGWJ!GNLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )BrainPOPFrIEr  
BrainPOPFrzAhttps?://fr\.brainpop\.com/(?P<slug>[^/]+/[^/]+/(?P<id>[^/?#&]+))u   BrainPOP Françaisr  rk   Nr   r   r   r   r  r    s,        )GGVJ"GNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
BrainPOPIEr  BrainPOPzGhttps?://(?:www\.)?brainpop\.com/(?P<slug>[^/]+/[^/]+/(?P<id>[^/?#&]+))r  rk   Nr   r   r   r   r  r    s'        )GG\JNLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )BrainPOPIlIEr  
BrainPOPIlzAhttps?://il\.brainpop\.com/(?P<slug>[^/]+/[^/]+/(?P<id>[^/?#&]+))zBrainPOP Hebrewr  rk   Nr   r   r   r   r  r    s,        )GGVJGNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )BrainPOPJrIEr  
BrainPOPJrzAhttps?://jr\.brainpop\.com/(?P<slug>[^/]+/[^/]+/(?P<id>[^/?#&]+))r  rk   Nr   r   r   r   r  r    s'        )GGVJNLLLr   r  c                       e Zd ZdZdZdS )ThePlatformBaseIEyt_dlp.extractor.theplatformThePlatformBaseNr   r   r   r   r  r            ,GGGGr   r  c                       e Zd ZdZdZdS )NBCUniversalBaseIEyt_dlp.extractor.nbcNBCUniversalBaseNr   r   r   r   r  r    r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )	BravoTVIEr  BravoTVzGhttps?://(?:www\.)?(?:bravotv|oxygen)\.com/(?:[^/?#]+/)+(?P<id>[^/?#]+)   rk   Nr  r   r   r   r  r    s'        $GG\JILLLr   r  c                       e Zd ZdZdZdZdZdS )BreitBartIEzyt_dlp.extractor.breitbart	BreitBartz:https?://(?:www\.)?breitbart\.com/videos/v/(?P<id>[^/?#]+)rk   Nr   r   r   r   r  r    s"        *GGOJLLLr   r  c                       e Zd ZdZdZdZdZdS )BrightcoveLegacyIEyt_dlp.extractor.brightcovezbrightcove:legacyzN(?:https?://.*brightcove\.com/(services|viewer).*?\?|brightcove:)(?P<query>.*)r   Nr   r   r   r   r  r    s"        +G!GcJLLLr   r  c                       e Zd ZdZdZdS )BrightcoveNewBaseIEr  BrightcoveNewBaseNr   r   r   r   r  r    s        +G!GGGr   r  c                       e Zd ZdZdZdZdZdS )BrightcoveNewIEr  zbrightcove:newzhttps?://players\.brightcove\.net/(?P<account_id>\d+)/(?P<player_id>[^/]+)_(?P<embed>[^/]+)/index\.html\?.*(?P<content_type>video|playlist)Id=(?P<video_id>\d+|ref:[^&]+)r   Nr   r   r   r   r  r    s%        +GG CJLLLr   r  c                       e Zd ZdZdZdZdS )BrilliantpalaBaseIEyt_dlp.extractor.brilliantpalaBrilliantpalaBasebrilliantpalaNrz   r   r   r   r  r    s        .G!G$NNNr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )BrilliantpalaClassesIEr  zBrilliantpala:Classesz^https?://classes\.brilliantpala\.org/courses/(?P<course_id>\d+)/contents/(?P<content_id>\d+)/?z VoD on classes.brilliantpala.orgr  rk   Nr   r   r   r   r  r    s,        .G%GuJ0G$NLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )BrilliantpalaElearnIEr  zBrilliantpala:Elearnz]https?://elearn\.brilliantpala\.org/courses/(?P<course_id>\d+)/contents/(?P<content_id>\d+)/?zVoD on elearn.brilliantpala.orgr  rk   Nr   r   r   r   r  r    s,        .G$GtJ/G$NLLLr   r  c                       e Zd ZdZdZdZdZdS )BundesligaIEzyt_dlp.extractor.bundesliga
Bundesligazdhttps?://(?:www\.)?bundesliga\.com/[a-z]{2}/bundesliga/videos(?:/[^?]+)?\?vid=(?P<id>[a-zA-Z0-9]{8})rk   Nr   r   r   r   r  r  
  s"        +GGzJLLLr   r  c                   "    e Zd ZdZdZddgZdZdS )BundestagIEzyt_dlp.extractor.bundestag	Bundestagz%https?://dbtg\.tv/[cf]vid/(?P<id>\d+)zGhttps?://www\.bundestag\.de/mediathek/?\?(?:[^#]+&)?videoid=(?P<id>\d+)rk   Nr   r   r   r   r  r    s.        *GG;  >K  LJLLLr   r  c                       e Zd ZdZdZdZdZdS )
BunnyCdnIEzyt_dlp.extractor.bunnycdnBunnyCdnz|https?://(?:(?:iframe|player)\.mediadelivery\.net|video\.bunnycdn\.com)/(?:embed|play)/(?P<library_id>\d+)/(?P<id>[\da-f-]+)rk   Nr   r   r   r   r  r    s%        )GG VJLLLr   r  c                       e Zd ZdZdZdZdZdS )BusinessInsiderIEz yt_dlp.extractor.businessinsiderBusinessInsiderzLhttps?://(?:[^/]+\.)?businessinsider\.(?:com|nl)/(?:[^/]+/)*(?P<id>[^/?#&]+)rk   Nr   r   r   r   r  r    s"        0GGaJLLLr   r  c                       e Zd ZdZdZdZdZdS )
BuzzFeedIEzyt_dlp.extractor.buzzfeedBuzzFeedz7https?://(?:www\.)?buzzfeed\.com/[^?#]*?/(?P<id>[^?#]+)rl   Nr   r   r   r   r  r  &  s"        )GGLJLLLr   r  c                       e Zd ZdZdZdZdZdS )C56IEzyt_dlp.extractor.c56z56.comzdhttps?://(?:(?:www|player)\.)?56\.com/(?:.+?/)?(?:v_|(?:play_album.+-))(?P<textid>.+?)\.(?:html|swf)r   Nr   r   r   r   r  r  -  s"        $GGzJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )CAM4IEzyt_dlp.extractor.cam4CAM4z1https?://(?:[^/]+\.)?cam4\.com/(?P<id>[a-z0-9_]+)r   rk   Nr  r   r   r   r  r  4  s'        %GGFJILLLr   r  c                       e Zd ZdZdZdZdS )CBCGemBaseIEyt_dlp.extractor.cbc
CBCGemBasecbcgemNrz   r   r   r   r  r  <  s        $GGNNNr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )CBCGemIEr  z
gem.cbc.cazRhttps?://gem\.cbc\.ca/(?:media/)?(?P<id>[0-9a-z-]+/s(?P<season>[0-9]+)[a-z][0-9]+)r  r  rk   N	r   r   r   r$   r`   r<   rY   re   rn   r   r   r   r  r  B  s,        $GGgJNILLLr   r  c                       e Zd ZdZdZdZdZdS )CBCGemLiveIEr  zgem.cbc.ca:livez1https?://gem\.cbc\.ca/live(?:-event)?/(?P<id>\d+)rk   Nr   r   r   r   r  r  K  s"        $GGGJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )CBCGemPlaylistIEr  zgem.cbc.ca:playlistz]https?://gem\.cbc\.ca/(?:media/)?(?P<id>(?P<show>[0-9a-z-]+)/s(?P<season>[0-9]+))/?(?:[?#]|$)r  rl   Nr   r   r   r   r  r  R  s'        $G#GrJNLLLr   r  c                       e Zd ZdZdZdZdZdS )CBCIEr  zcbc.caz`https?://(?:www\.)?cbc\.ca/(?!player/|listen/|i/caffeine/syndicate/)(?:[^/?#]+/)+(?P<id>[^/?#]+)r   Nr   r   r   r   r  r  Z  s"        $GGuJLLLr   r  c                       e Zd ZdZdZdZdZdS )CBCListenIEr  zcbc.ca:listenzWhttps?://(?:www\.)?cbc\.ca/listen/(?:cbc-podcasts|live-radio)/[\w-]+/[\w-]+/(?P<id>\d+)rk   Nr   r   r   r   r  r  a  s"        $GGoJLLLr   r  c                       e Zd ZdZdZdZdZdS )CBCPlayerIEr  zcbc.ca:playerzy(?:cbcplayer:|https?://(?:www\.)?cbc\.ca/(?:player/play/(?:video/)?|i/caffeine/syndicate/\?mediaId=))(?P<id>(?:\d\.)?\d+)rk   Nr   r   r   r   r  r  h  s%        $GG SJLLLr   r  c                       e Zd ZdZdZdZdZdS )CBCPlayerPlaylistIEr  zcbc.ca:player:playlistz=https?://(?:www\.)?cbc\.ca/(?:player/)(?!play/)(?P<id>[^?#]+)rl   Nr   r   r   r   r  r  o  s"        $G&GRJLLLr   r  c                       e Zd ZdZdZdS )CBSNewsBaseIEyt_dlp.extractor.cbsnewsCBSNewsBaseNr   r   r   r   r  r  v  r   r   r  c                       e Zd ZdZdZdS )CBSLocalBaseIEr  CBSLocalBaseNr   r   r   r   r  r  {  s        (GGGGr   r  c                       e Zd ZdZdZdZdZdS )CBSLocalArticleIEr  CBSLocalArticlezhttps?://(?:www\.)?cbsnews\.com/(?:atlanta|baltimore|boston|chicago|colorado|detroit|losangeles|miami|minnesota|newyork|philadelphia|pittsburgh|sacramento|sanfrancisco|texas)/news/(?P<id>[\w-]+)r   Nr   r   r   r   r
  r
    s%        (GG YJLLLr   r
  c                       e Zd ZdZdZdZdZdS )
CBSLocalIEr  CBSLocalzhttps?://(?:www\.)?cbsnews\.com/(?:atlanta|baltimore|boston|chicago|colorado|detroit|losangeles|miami|minnesota|newyork|philadelphia|pittsburgh|sacramento|sanfrancisco|texas)/(?:live/)?video/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r    s%        (GG dJLLLr   r  c                       e Zd ZdZdZdS )CBSNewsLiveBaseIEr  CBSNewsLiveBaseNr   r   r   r   r  r            (GGGGr   r  c                       e Zd ZdZdZdZdZdS )CBSLocalLiveIEr  CBSLocalLivezhttps?://(?:www\.)?cbsnews\.com/(?P<id>atlanta|baltimore|boston|chicago|colorado|detroit|losangeles|miami|minnesota|newyork|philadelphia|pittsburgh|sacramento|sanfrancisco|texas)/live/?(?:[?#]|$)rk   Nr   r   r   r   r  r    s%        (GG YJLLLr   r  c                       e Zd ZdZdZdZdZdS )CBSNewsEmbedIEr  zcbsnews:embedz;https?://(?:www\.)?cbsnews\.com/embed/video[^#]*#(?P<id>.+)rk   Nr   r   r   r   r  r    s"        (GGPJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	CBSNewsIEr  cbsnewsz=https?://(?:www\.)?cbsnews\.com/(?:news|video)/(?P<id>[\w-]+)zCBS Newsr   Nr   r   r   r   r  r    s'        (GGSJGLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )CBSNewsLiveIEr  zcbsnews:livez0https?://(?:www\.)?cbsnews\.com/live/?(?:[?#]|$)zCBS News Livestreamrk   Nr   r   r   r   r  r    s'        (GGEJ#GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )CBSNewsLiveVideoIEr  zcbsnews:livevideoz:https?://(?:www\.)?cbsnews\.com/live/video/(?P<id>[^/?#]+)zCBS News Live Videosrk   Nr   r   r   r   r  r    s'        (G!GOJ$GLLLr   r  c                       e Zd ZdZdZdZdZdS )CBSSportsEmbedIEyt_dlp.extractor.cbssportszcbssports:embedz(?ix)https?://(?:(?:www\.)?cbs|embed\.247)sports\.com/player/embed.+?
        (?:
            ids%3D(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})|
            pcid%3D(?P<pcid>\d+)
        )FNr   r   r   r$   r`   r<   rD   r   r   r   r   r     s%        *GG _JHHHr   r   c                       e Zd ZdZdZdS )CBSSportsBaseIEr!  CBSSportsBaseNr   r   r   r   r$  r$            *GGGGr   r$  c                   "    e Zd ZdZdZdZdZdZdS )CBSSportsIEr!  	cbssportsz>https?://(?:www\.)?cbssports\.com/[^/]+/video/(?P<id>[^/?#&]+)Frk   Nr  r   r   r   r(  r(    s'        *GGSJHLLLr   r(  c                       e Zd ZdZdZdZdZdS )CCCIEyt_dlp.extractor.ccczmedia.ccc.dez4https?://(?:www\.)?media\.ccc\.de/v/(?P<id>[^/?#&]+)rk   Nr   r   r   r   r+  r+    s"        $GGJJLLLr   r+  c                       e Zd ZdZdZdZdZdS )CCCPlaylistIEr,  zmedia.ccc.de:listsz4https?://(?:www\.)?media\.ccc\.de/c/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r.  r.    s"        $G"GJJLLLr   r.  c                   &    e Zd ZdZdZdZdZdZdZdS )CCMAIEzyt_dlp.extractor.ccmaCCMAzWhttps?://(?:www\.)?3cat\.cat/(?:3cat|tv3/sx3)/[^/?#]+/(?P<type>video|audio)/(?P<id>\d+)u   3Cat, TV3 and Catalunya Ràdio   rk   N	r   r   r   r$   r`   r<   rZ   re   rn   r   r   r   r0  r0    s,        %GGmJ.GILLLr   r0  c                   "    e Zd ZdZdZdZdZdZdS )CCTVIEzyt_dlp.extractor.cctvCCTVzhttps?://(?:(?:[^/]+)\.(?:cntv|cctv)\.(?:com|cn)|(?:www\.)?ncpa-classic\.com)/(?:[^/]+/)*?(?P<id>[^/?#&]+?)(?:/index)?(?:\.s?html|[?#&]|$)u	   央视网rk   Nr   r   r   r   r5  r5    s*        %GG cJGLLLr   r5  c                       e Zd ZdZdZdZdZdS )CDAFolderIEyt_dlp.extractor.cda	CDAFolderzGhttps?://(?:(?:www|m)\.)?cda\.pl/(?P<channel>[\w-]+)/folder/(?P<id>\d+)rl   Nr   r   r   r   r8  r8    s"        $GG^JLLLr   r8  c                   &    e Zd ZdZdZdZdZdZdZdS )CDAIEr9  CDAzWhttps?://(?:(?:(?:www|m)\.)?cda\.pl/video|ebd\.cda\.pl/[0-9]+x[0-9]+)/(?P<id>[0-9a-z]+)cdaplr   rk   Nr  r   r   r   r<  r<    s,        $GGnJNILLLr   r<  c                       e Zd ZdZdZdZdZdS )CGTNIEzyt_dlp.extractor.cgtnCGTNzhhttps?://news\.cgtn\.com/news/[0-9]{4}-[0-9]{2}-[0-9]{2}/[a-zA-Z0-9-]+-(?P<id>[a-zA-Z0-9-]+)/index\.htmlrk   Nr   r   r   r   r@  r@    s"        %GG~JLLLr   r@  c                       e Zd ZdZdZdZdZdS )CHZZKLiveIEyt_dlp.extractor.chzzkz
chzzk:livez0https?://chzzk\.naver\.com/live/(?P<id>[\da-f]+)rk   Nr   r   r   r   rC  rC  	  s"        &GGFJLLLr   rC  c                       e Zd ZdZdZdZdZdS )CHZZKVideoIErD  zchzzk:videoz,https?://chzzk\.naver\.com/video/(?P<id>\d+)rk   Nr   r   r   r   rF  rF  
	  "        &GGBJLLLr   rF  c                       e Zd ZdZdZdZdZdS )CJSWIEzyt_dlp.extractor.cjswCJSWzKhttps?://(?:www\.)?cjsw\.com/program/(?P<program>[^/]+)/episode/(?P<id>\d+)rk   Nr   r   r   r   rI  rI  	  s"        %GGaJLLLr   rI  c                       e Zd ZdZdZdZdZdS )CNBCVideoIEzyt_dlp.extractor.cnbc	CNBCVideozGhttps?://(?:www\.)?cnbc\.com/video/(?:[^/?#]+/)+(?P<id>[^./?#&]+)\.htmlrk   Nr   r   r   r   rL  rL  	  s"        %GG]JLLLr   rL  c                       e Zd ZdZdZdZdZdS )CNNIEyt_dlp.extractor.cnnCNNzqhttps?://(?:(?:edition|www|money|cnnespanol)\.)?cnn\.com/(?!audio/)(?P<display_id>[^?#]+?)(?:[?#]|$|/index\.html)r   Nr   r   r   r   rO  rO  	  s%        $GG HJLLLr   rO  c                       e Zd ZdZdZdZdZdS )CNNIndonesiaIErP  CNNIndonesiazghttps?://www\.cnnindonesia\.com/[\w-]+/(?P<upload_date>\d{8})\d+-\d+-(?P<id>\d+)/(?P<display_id>[\w-]+)rk   Nr   r   r   r   rS  rS  &	  s%        $GG CJLLLr   rS  c                       e Zd ZdZdZdZdZdS )CONtvIEzyt_dlp.extractor.contvCONtvz9https?://(?:www\.)?contv\.com/details-movie/(?P<id>[^/]+)r   Nr   r   r   r   rV  rV  -	  s"        &GGNJLLLr   rV  c                       e Zd ZdZdZdZdZdS )CPACIEyt_dlp.extractor.cpaccpaczchttps?://(?:www\.)?cpac\.ca/(?P<fr>l-)?episode\?id=(?P<id>[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12})rk   Nr   r   r   r   rY  rY  4	  s"        %GG|JLLLr   rY  c                       e Zd ZdZdZdZdZdS )CPACPlaylistIErZ  zcpac:playlistz(?i)https?://(?:www\.)?cpac\.ca/(?:program|search|(?P<fr>emission|rechercher))\?(?:[^&]+&)*?(?P<id>(?:id=\d+|programId=\d+|key=[^&]+))rl   Nr   r   r   r   r]  r]  ;	  s%        %GG _JLLLr   r]  c                       e Zd ZdZdZdZdZdS )CPTwentyFourIEyt_dlp.extractor.ninecninemediacp24z0https?://(?:www\.)?cp24\.com/news/(?P<id>[^?#]+)rk   Nr   r   r   r   r_  r_  B	  s"        /GGEJLLLr   r_  c                       e Zd ZdZdZdZdZdS )CSpanCongressIEyt_dlp.extractor.cspanCSpanCongressz(https?://(?:www\.)?c-span\.org/congress/rk   Nr   r   r   r   rc  rc  I	  s"        &GG=JLLLr   rc  c                   "    e Zd ZdZdZdZdZdZdS )CSpanIErd  CSpanz8https?://(?:www\.)?c-span\.org/video/\?(?P<id>[0-9a-f]+)zC-SPANr   Nr   r   r   r   rg  rg  P	  s'        &GGNJGLLLr   rg  c                   "    e Zd ZdZdZg dZdZdS )	CTVNewsIEzyt_dlp.extractor.ctvnewsCTVNews)z6https?://(?:[^.]+\.)?ctvnews\.ca/video/c(?P<id>\d{5,})zLhttps?://(?:[^.]+\.)?ctvnews\.ca/video(?:-gallery)?/?\?clipId=(?P<id>\d{5,})zOhttps?://(?:[^.]+\.)?ctvnews\.ca/video/?\?(?:playlist|bin)Id=(?P<id>\d\.\d{5,})zPhttps?://(?:[^.]+\.)?ctvnews\.ca/(?!video/)[^?#]*?(?P<id>\d\.\d{5,})/?(?:$|[?#])zKhttps?://(?:[^.]+\.)?ctvnews\.ca/(?!video/)[^?#]+\?binId=(?P<id>\d\.\d{5,})r   Nr   r   r   r   rj  rj  X	  s1        (GG j  j  jJLLLr   rj  c                   "    e Zd ZdZdZdZdZdZdS )CaffeineTVIEzyt_dlp.extractor.caffeinetv
CaffeineTVz?https?://(?:www\.)?caffeine\.tv/[^/?#]+/video/(?P<id>[\da-f-]+)   rk   Nr  r   r   r   rm  rm  _	  s'        +GGUJILLLr   rm  c                       e Zd ZdZdZdZdZdS )CallinIEzyt_dlp.extractor.callinCallinz9https?://(?:www\.)?callin\.com/episode/(?P<id>[-a-zA-Z]+)rk   Nr   r   r   r   rq  rq  g	  "        'GGNJLLLr   rq  c                       e Zd ZdZdZdZdZdS )
CaltransIEzyt_dlp.extractor.caltransCaltranszAhttps?://(?:[^/]+\.)?ca\.gov/vm/loc/[^/]+/(?P<id>[a-z0-9_]+)\.htmrk   Nr   r   r   r   ru  ru  n	  r  r   ru  c                       e Zd ZdZdZdZdZdS )CamFMEpisodeIEyt_dlp.extractor.camfmCamFMEpisodez5https?://(?:www\.)?camfm\.co\.uk/player/(?P<id>[^/]+)rk   Nr   r   r   r   rx  rx  u	  "        &GGKJLLLr   rx  c                       e Zd ZdZdZdZdZdS )CamFMShowIEry  	CamFMShowz4https?://(?:www\.)?camfm\.co\.uk/shows/(?P<id>[^/]+)rl   Nr   r   r   r   r}  r}  |	  s"        &GGJJLLLr   r}  c                       e Zd ZdZdZdZdS )CamModelsIEzyt_dlp.extractor.cammodels	CamModelsz6https?://(?:www\.)?cammodels\.com/cam/(?P<id>[^/?#&]+)Nr  r   r   r   r  r  	  s        *GGKJJJr   r  c                       e Zd ZdZdZdZdZdS )CamdemyFolderIEyt_dlp.extractor.camdemyCamdemyFolderz2https?://(?:www\.)?camdemy\.com/folder/(?P<id>\d+)rl   Nr   r   r   r   r  r  	  s"        (GGHJLLLr   r  c                       e Zd ZdZdZdZdZdS )	CamdemyIEr  Camdemyz1https?://(?:www\.)?camdemy\.com/media/(?P<id>\d+)rk   Nr   r   r   r   r  r  	  s"        (GGGJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	CamsodaIEzyt_dlp.extractor.camsodaCamsodaz)https?://www\.camsoda\.com/(?P<id>[\w-]+)r   rk   Nr  r   r   r   r  r  	  s'        (GG?JILLLr   r  c                       e Zd ZdZdZdZdS )CamtasiaEmbedIEzyt_dlp.extractor.camtasiaCamtasiaEmbedFNr  r   r   r   r  r  	  s        )GGJJJr   r  c                       e Zd ZdZdZdZdZdS )Canal1IEzyt_dlp.extractor.canal1Canal1zHhttps?://(?:www\.|noticias\.)?canal1\.com\.co/(?:[^?#&])+/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  	  s"        'GG`JLLLr   r  c                       e Zd ZdZdZdZdZdS )CanalAlphaIEzyt_dlp.extractor.canalalpha
CanalAlphazBhttps?://(?:www\.)?canalalpha\.ch/play/[^/]+/[^/]+/(?P<id>\d+)/?.*rk   Nr   r   r   r   r  r  	  r  r   r  c                       e Zd ZdZdZdZdZdS )	Canalc2IEzyt_dlp.extractor.canalc2z
canalc2.tvzmhttps?://(?:(?:www\.)?canalc2\.tv/video/|archives-canalc2\.u-strasbg\.fr/video\.asp\?.*\bidVideo=)(?P<id>\d+)rk   Nr   r   r   r   r  r  	  s%        (GG IJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )CanalplusIEzyt_dlp.extractor.canalplus	Canalpluszvhttps?://(?:www\.)?(?P<site>mycanal|piwiplus)\.fr/(?:[^/]+/)*(?P<display_id>[^?/]+)(?:\.html\?.*\bvid=|/p/)(?P<id>\d+)zmycanal.fr and piwiplus.frrk   Nr   r   r   r   r  r  	  s*        *GG PJ*GLLLr   r  c                       e Zd ZdZdZdZdZdS )CanalsurmasIEzyt_dlp.extractor.canalsurmasCanalsurmasz5https?://(?:www\.)?canalsurmas\.es/videos/(?P<id>\d+)rk   Nr   r   r   r   r  r  	  "        ,GGKJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )CaracolTvPlayIEzyt_dlp.extractor.caracoltvCaracolTvPlayz:https?://play\.caracoltv\.com/videoDetails/(?P<id>[^/?#]+)zcaracoltv-playrl   Nr   r   r   r   r  r  	  s'        *GGOJ%NLLLr   r  c                       e Zd ZdZdZdS )VidyardBaseIEyt_dlp.extractor.vidyardVidyardBaseNr   r   r   r   r  r  	  r   r   r  c                       e Zd ZdZdZdZdZdS )CellebriteIEzyt_dlp.extractor.cellebrite
Cellebritez0https?://cellebrite\.com/(?:\w+)?/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  	  s"        +GGFJLLLr   r  c                       e Zd ZdZdZdZdZdS )CeskaTelevizeIEzyt_dlp.extractor.ceskatelevizeCeskaTelevizez\https?://(?:www\.)?ceskatelevize\.cz/(?:ivysilani|porady|zive)/(?:[^/?#&]+/)*(?P<id>[^/#?]+)r   Nr   r   r   r   r  r  	  s"        .GGqJLLLr   r  c                       e Zd ZdZdZdZdZdS )CharlieRoseIEzyt_dlp.extractor.charlieroseCharlieRosezNhttps?://(?:www\.)?charlierose\.com/(?:video|episode)(?:s|/player)/(?P<id>\d+)rk   Nr   r   r   r   r  r  	  s"        ,GGdJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )ChaturbateIEzyt_dlp.extractor.chaturbate
Chaturbatezahttps?://(?:[^/]+\.)?chaturbate\.(?P<tld>com|eu|global)/(?:fullvideo/?\?.*?\bb=)?(?P<id>[^/?&#]+)r   rk   Nr  r   r   r   r  r  	  s'        +GGxJILLLr   r  c                       e Zd ZdZdZdZdZdS )ChilloutzoneIEzyt_dlp.extractor.chilloutzoneChilloutzonez?https?://(?:www\.)?chilloutzone\.net/video/(?P<id>[\w-]+)\.htmlrk   Nr   r   r   r   r  r  	  s"        -GGVJLLLr   r  c                       e Zd ZdZdZdS )	HBOBaseIEyt_dlp.extractor.hboHBOBaseNr   r   r   r   r  r  	          $GGGGr   r  c                   "    e Zd ZdZdZdZdZdZdS )	CinemaxIEzyt_dlp.extractor.cinemaxCinemaxzLhttps?://(?:www\.)?cinemax\.com/(?P<path>[^/]+/video/[0-9a-z-]+-(?P<id>\d+))Frk   Nr  r   r   r   r  r  	  s'        (GGbJHLLLr   r  c                       e Zd ZdZdZdZdZdS )CinetecaMilanoIEzyt_dlp.extractor.cinetecamilanoCinetecaMilanoz6https?://(?:www\.)?cinetecamilano\.it/film/(?P<id>\d+)rk   Nr   r   r   r   r  r  
  s"        /GGLJLLLr   r  c                       e Zd ZdZdZdS )CineverseBaseIEyt_dlp.extractor.cineverseCineverseBaseNr   r   r   r   r  r  
  r&  r   r  c                       e Zd ZdZdZdZdZdS )CineverseDetailsIEr  CineverseDetailszhttps?://www\.(?P<host>cineverse\.com|asiancrush\.com|dovechannel\.com|screambox\.com|midnightpulp\.com|fandor\.com|retrocrush\.tv)/details/(?P<id>[A-Z0-9]+)r   Nr   r   r   r   r  r  
  s%        *G G yJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )CineverseIEr  	Cineversezhttps?://www\.(?P<host>cineverse\.com|asiancrush\.com|dovechannel\.com|screambox\.com|midnightpulp\.com|fandor\.com|retrocrush\.tv)/watch/(?P<id>[A-Z0-9]+)r2  rk   Nr  r   r   r   r  r  
  s*        *GG wJILLLr   r  c                       e Zd ZdZdZdS )CiscoLiveBaseIEyt_dlp.extractor.ciscoliveCiscoLiveBaseNr   r   r   r   r  r  "
  r&  r   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )CiscoLiveSearchIEr  CiscoLiveSearchzWhttps?://(?:www\.)?ciscolive(?:\.cisco)?\.com/(?:global/)?on-demand-library(?:\.html|/)rl   c                 ~    t                               |          rdn t                                          |          S r   )CiscoLiveSessionIEr4   r   r   s     r   r4   zCiscoLiveSearchIE.suitable-
  2    *33C88Suuegg>N>Ns>S>SSr   r   r   s   @r   r  r  '
  s_        *GGnJLT T T T [T T T T Tr   r  c                       e Zd ZdZdZdZdZdS )r  r  CiscoLiveSessionzLhttps?://(?:www\.)?ciscolive(?:\.cisco)?\.com/[^#]*#/session/(?P<id>[^/?&]+)rk   Nr   r   r   r   r  r  2
  s"        *G GbJLLLr   r  c                       e Zd ZdZdZdZdZdS )CiscoWebexIEzyt_dlp.extractor.ciscowebex
ciscowebexaU  (?x)
                    (?P<url>https?://(?P<subdomain>[^/#?]*)\.webex\.com/(?:
                        (?P<siteurl_1>[^/#?]*)/(?:ldr|lsr).php\?(?:[^#]*&)*RCID=(?P<rcid>[0-9a-f]{32})|
                        (?:recordingservice|webappng)/sites/(?P<siteurl_2>[^/#?]*)/recording/(?:playback/|play/)?(?P<id>[0-9a-f]{32})
                    ))zCisco WebexNrV  r   r   r   r  r  9
  s%        +GG pJGGGr   r  c                       e Zd ZdZdZdS )
OnetBaseIEyt_dlp.extractor.onetOnetBaseNr   r   r   r   r  r  @
          %GGGGr   r  c                   "    e Zd ZdZdZdZdZdZdS )ClipRsIEzyt_dlp.extractor.cliprsClipRsz-https?://(?:www\.)?clip\.rs/(?P<id>[^/]+)/\d+Frk   Nr  r   r   r   r  r  E
  s'        'GGCJHLLLr   r  c                       e Zd ZdZdZdZdZdS )ClipchampIEzyt_dlp.extractor.clipchamp	Clipchampz6https?://(?:www\.)?clipchamp\.com/watch/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  M
  "        *GGLJLLLr   r  c                       e Zd ZdZdZdZdZdS )	ClippitIEzyt_dlp.extractor.clippitClippitz3https?://(?:www\.)?clippituser\.tv/c/(?P<id>[a-z]+)rk   Nr   r   r   r   r  r  T
  s"        (GGHJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )CloserToTruthIEzyt_dlp.extractor.closertotruthCloserToTruthzAhttps?://(?:www\.)?closertotruth\.com/(?:[^/]+/)*(?P<id>[^/?#&]+)Fr   Nr  r   r   r   r  r  [
  s'        .GGVJHLLLr   r  c                       e Zd ZdZdZdZdZdS )CloudflareStreamIEz!yt_dlp.extractor.cloudflarestreamCloudflareStreama9  https?://(?:(?:(?:watch|iframe|customer-\w+)\.)?(?P<domain>(?:cloudflarestream\.com|(?:videodelivery|bytehighway)\.net))/|(?:embed\.|(?:(?:watch|iframe|customer-\w+)\.)?)(?:cloudflarestream\.com|(?:videodelivery|bytehighway)\.net)/embed/[^/?#]+\.js\?(?:[^#]+&)?video=)(?P<id>[\da-f]{32}|eyJ[\w-]+\.[\w-]+\.[\w-]+)rk   Nr   r   r   r   r  r  c
  s%        1G G ^JLLLr   r  c                       e Zd ZdZdZdZdZdS )CloudyCDNIEzyt_dlp.extractor.cloudycdn	CloudyCDNzn(?:https?:)?//embed\.(?P<domain>cloudycdn\.services|backscreen\.com)/(?P<site_id>[^/?#]+)/media/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  j
  s%        *GG FJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )ClubicIEzyt_dlp.extractor.clubicClubiczLhttps?://(?:www\.)?clubic\.com/video/(?:[^/]+/)*video.*-(?P<id>[0-9]+)\.htmlFrk   Nr  r   r   r   r  r  q
  s'        'GGbJHLLLr   r  c                       e Zd ZdZdZdZdZdS )ClypIEzyt_dlp.extractor.clypClypz-https?://(?:www\.)?clyp\.it/(?P<id>[a-z0-9]+)rk   Nr   r   r   r   r  r  y
  "        %GGBJLLLr   r  c                       e Zd ZdZdZdZdZdS )ComedyCentralIEzyt_dlp.extractor.comedycentralComedyCentralz9https?://(?:www\.)?cc\.com/video-clips/(?P<id>[\da-z]{6})rk   Nr   r   r   r   r  r  
  s"        .GGOJLLLr   r  c                       e Zd ZdZdZdZdZdS )CommonMistakesIEr{  CommonMistakesz(?:url|URL|yt-dlp)$FNrV  r   r   r   r  r  
  s"        /GG&JGGGr   r  c                       e Zd ZdZdZdS )TeamcocoBaseIEyt_dlp.extractor.teamcocoTeamcocoBaseNr   r   r   r   r  r  
  r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )ConanClassicIEr  ConanClassiczShttps?://(?:(?:www\.)?conanclassic|conan25\.teamcoco)\.com/(?P<id>([^/]+/)*[^/?#]+)Frk   Nr  r   r   r   r  r  
  s'        )GGiJHLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )CondeNastIEzyt_dlp.extractor.condenast	CondeNasta  (?x)https?://(?:video|www|player(?:-backend)?)\.(?:allure|architecturaldigest|arstechnica|bonappetit|brides|cnevids|cntraveler|details|epicurious|glamour|golfdigest|gq|newyorker|self|teenvogue|vanityfair|vogue|wired|wmagazine)\.com/
        (?:
            (?:
                embed(?:js)?|
                (?:script|inline)/video
            )/(?P<id>[0-9a-f]{24})(?:/(?P<player_id>[0-9a-f]{24}))?(?:.+?\btarget=(?P<target>[^&]+))?|
            (?P<type>watch|series|video)/(?P<display_id>[^/?#]+)
        )u   Condé Nast media group: Allure, Architectural Digest, Ars Technica, Bon Appétit, Brides, Condé Nast, Condé Nast Traveler, Details, Epicurious, GQ, Glamour, Golf Digest, SELF, Teen Vogue, The New Yorker, Vanity Fair, Vogue, W Magazine, WIREDrk   Nr   r   r   r   r  r  
  s-        *GG ZJ EGLLLr   r  c                       e Zd ZdZdZdZdZdS )CookingChannelIEr  CookingChannelzFhttps?://(?:watch\.)?cookingchanneltv\.com/video/(?P<id>[^/]+/[^/?#]+)rk   Nr   r   r   r   r  r  
  s"        &GG[JLLLr   r  c                       e Zd ZdZdZdZdZdS )CoubIEzyt_dlp.extractor.coubCoubzz(?:coub:|https?://(?:coub\.com/(?:view|embed|coubs)/|c-cdn\.coub\.com/fb-player\.swf\?.*\bcoub(?:ID|id)=))(?P<id>[\da-z]+)rk   Nr   r   r   r   r  r  
  s%        %GG UJLLLr   r  c                       e Zd ZdZdZdZdZdS )CozyTVIEzyt_dlp.extractor.cozytvCozyTVzIhttps?://(?:www\.)?cozy\.tv/(?P<uploader>[^/]+)/replays/(?P<id>[^/$#&?]+)rk   Nr   r   r   r   r  r  
  s"        'GG^JLLLr   r  c                       e Zd ZdZdZdZdZdS )	CrackedIEzyt_dlp.extractor.crackedCrackedzAhttps?://(?:www\.)?cracked\.com/video_(?P<id>\d+)_[\da-z-]+\.htmlrk   Nr   r   r   r   r  r  
  "        (GGYJLLLr   r  c                       e Zd ZdZdZdZdZdS )	CraftsyIEzyt_dlp.extractor.craftsyCraftsyz/https?://www\.craftsy\.com/class/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  
  s"        (GGEJLLLr   r  c                       e Zd ZdZdZdZdZdS )CroatianFilmIEzyt_dlp.extractor.croatianfilmzcroatian.filmz>https://?(?:www\.)?croatian\.film/[a-z]{2}/[^/?#]+/(?P<id>\d+)rk   Nr   r   r   r   r  r  
  s"        -GGTJLLLr   r  c                       e Zd ZdZdZdZdZdS )CrooksAndLiarsIEzyt_dlp.extractor.crooksandliarsCrooksAndLiarszDhttps?://embed\.crooksandliars\.com/(?:embed|v)/(?P<id>[A-Za-z0-9]+)rk   Nr   r   r   r   r  r  
  s"        /GGYJLLLr   r  c                       e Zd ZdZdZdZdZdS )CrowdBunkerChannelIEyt_dlp.extractor.crowdbunkerCrowdBunkerChannelz6https?://(?:www\.)?crowdbunker\.com/@(?P<id>[^/?#$&]+)rl   Nr   r   r   r   r  r  
  s"        ,G"GKJLLLr   r  c                       e Zd ZdZdZdZdZdS )CrowdBunkerIEr  CrowdBunkerz7https?://(?:www\.)?crowdbunker\.com/v/(?P<id>[^/?#$&]+)rk   Nr   r   r   r   r!  r!  
  s"        ,GGLJLLLr   r!  c                       e Zd ZdZdZdZdZdS )CrtvgIEzyt_dlp.extractor.crtvgCrtvgz8https?://(?:www\.)?crtvg\.es/tvg/a-carta/(?P<id>[^/#?]+)rk   Nr   r   r   r   r$  r$  
  "        &GGMJLLLr   r$  c                   "    e Zd ZdZdZdZdZdZdS )	CtsNewsIEzyt_dlp.extractor.ctsnewsCtsNewsz?https?://news\.cts\.com\.tw/[a-z]+/[a-z]+/\d+/(?P<id>\d+)\.htmlu   華視新聞rk   Nr   r   r   r   r(  r(  
  s'        (GGXJGLLLr   r(  c                       e Zd ZdZdZdZdZdS )CultureUnpluggedIEz!yt_dlp.extractor.cultureunpluggedCultureUnpluggedzthttps?://(?:www\.)?cultureunplugged\.com/(?:documentary/watch-online/)?play/(?P<id>\d+)(?:/(?P<display_id>[^/#?]+))?rk   Nr   r   r   r   r+  r+  
  s%        1G G KJLLLr   r+  c                       e Zd ZdZdZdZdS )CuriosityStreamBaseIE yt_dlp.extractor.curiositystreamCuriosityStreamBasecuriositystreamNrz   r   r   r   r.  r.  
          0G#G&NNNr   r.  c                       e Zd ZdZdZdZdS )CuriosityStreamCollectionBaseIEr/  CuriosityStreamCollectionBaser1  Nrz   r   r   r   r4  r4  
  s        0G-G&NNNr   r4  c                   "    e Zd ZdZdZdZdZdZdS )CuriosityStreamCollectionsIEr/  zcuriositystream:collectionsz?https?://(?:app\.)?curiositystream\.com/collections/(?P<id>\d+)r1  rl   Nr   r   r   r   r7  r7    s'        0G+GUJ&NLLLr   r7  c                   "    e Zd ZdZdZdZdZdZdS )CuriosityStreamIEr/  r1  z9https?://(?:app\.)?curiositystream\.com/video/(?P<id>\d+)rk   Nr   r   r   r   r9  r9    s'        0GGOJ&NLLLr   r9  c                   "    e Zd ZdZdZdZdZdZdS )CuriosityStreamSeriesIEr/  zcuriositystream:serieszIhttps?://(?:app\.)?curiositystream\.com/(?:series|collection)/(?P<id>\d+)r1  rl   Nr   r   r   r   r;  r;    s'        0G&G_J&NLLLr   r;  c                       e Zd ZdZdZdZdS )CybraryBaseIEyt_dlp.extractor.cybraryCybraryBasecybraryNrz   r   r   r   r=  r=    r6  r   r=  c                   "    e Zd ZdZdZdZdZdZdS )CybraryCourseIEr>  CybraryCoursezBhttps?://app\.cybrary\.it/browse/course/(?P<id>[\w-]+)/?(?:$|[#?])r@  rl   Nr   r   r   r   rB  rB  "  s'        (GGXJNLLLr   rB  c                   "    e Zd ZdZdZdZdZdZdS )	CybraryIEr>  CybraryzRhttps?://app\.cybrary\.it/immersive/(?P<enrollment>[0-9]+)/activity/(?P<id>[0-9]+)r@  rk   Nr   r   r   r   rE  rE  *  s'        (GGgJNLLLr   rE  c                       e Zd ZdZdZdZdZdS )DBTVIEzyt_dlp.extractor.dbtvDBTVzthttps?://(?:www\.)?dagbladet\.no/video/(?:(?:embed|(?P<display_id>[^/]+))/)?(?P<id>[0-9A-Za-z_-]{11}|[a-zA-Z0-9]{8})rk   Nr   r   r   r   rH  rH  2  s%        %GG JJLLLr   rH  c                       e Zd ZdZdZdZdZdS )DFBIEzyt_dlp.extractor.dfbz	tv.dfb.dez<https?://tv\.dfb\.de/video/(?P<display_id>[^/]+)/(?P<id>\d+)rk   Nr   r   r   r   rK  rK  9  s"        $GGRJLLLr   rK  c                   &    e Zd ZdZdZdZdZdZdZdS )DHMIEzyt_dlp.extractor.dhmDHMz>https?://(?:www\.)?dhm\.de/filmarchiv/(?:[^/]+/)+(?P<id>[^/]+)Fz*Filmarchiv - Deutsches Historisches Museumrk   Nr  r   r   r   rM  rM  @  s,        $GGSJH:GLLLr   rM  c                       e Zd ZdZdZdS )	DLFBaseIEyt_dlp.extractor.dlfDLFBaseNr   r   r   r   rP  rP  I  r  r   rP  c                   "    e Zd ZdZdZdZdZdZdS )DLFCorpusIErQ  z
dlf:corpuszXhttps?://(?:www\.)?deutschlandfunk\.de/(?P<id>(?![\w-]+-dlf-[\da-f]{8})[\w-]+-\d+)\.htmlzDLF Multi-feed Archivesrl   Nr   r   r   r   rT  rT  N  s'        $GGrJ'GLLLr   rT  c                       e Zd ZdZdZdZdZdS )DLFIErQ  dlfzNhttps?://(?:www\.)?deutschlandfunk\.de/[\w-]+-dlf-(?P<id>[\da-f]{8})-100\.htmlrk   Nr   r   r   r   rV  rV  V  s"        $GGfJLLLr   rV  c                       e Zd ZdZdZdZdS )DLiveStreamIEyt_dlp.extractor.dlivezdlive:streamz2https?://(?:www\.)?dlive\.tv/(?!p/)(?P<id>[\w.-]+)Nr  r   r   r   rY  rY  ]  s        &GGHJJJr   rY  c                       e Zd ZdZdZdZdZdS )
DLiveVODIErZ  z	dlive:vodzEhttps?://(?:www\.)?dlive\.tv/p/(?P<uploader_id>.+?)\+(?P<id>[^/?#&]+)rk   Nr   r   r   r   r\  r\  c  s"        &GG[JLLLr   r\  c                       e Zd ZdZdZdZdZdS )DPlayIEr  DPlayaO  (?x)https?://
        (?P<domain>
            (?:www\.)?(?P<host>d
                (?:
                    play\.(?P<country>dk|fi|jp|se|no)|
                    iscoveryplus\.(?P<plus_country>dk|es|fi|it|se|no)
                )
            )|
            (?P<subdomain_country>es|it)\.dplay\.com
        )/[^/]+/(?P<id>[^/]+/[^/?#]+)rk   Nr   r   r   r   r^  r^  j  s%        &GG qJLLLr   r^  c                       e Zd ZdZdZdZdZdS )DRBonanzaIEzyt_dlp.extractor.drbonanza	DRBonanzazVhttps?://(?:www\.)?dr\.dk/bonanza/[^/]+/\d+/[^/]+/(?P<id>\d+)/(?P<display_id>[^/?#&]+)rk   Nr   r   r   r   ra  ra  q  s"        *GGmJLLLr   ra  c                       e Zd ZdZdZdZdZdS )DRTVIEyt_dlp.extractor.drtvdrtvaF  (?x)
                    https?://
                        (?:
                            (?:www\.)?dr\.dk/tv/se(?:/ondemand)?/(?:[^/?#]+/)*|
                            (?:www\.)?(?:dr\.dk|dr-massive\.com)/drtv/(?:se|episode|program)/
                        )
                        (?P<id>[\da-z_-]+)
                    rk   Nr   r   r   r   rd  rd  x  s%        %GG gJLLLr   rd  c                       e Zd ZdZdZdZdZdS )
DRTVLiveIEre  z	drtv:livez:https?://(?:www\.)?dr\.dk/(?:tv|TV)/live/(?P<id>[\da-z-]+)rk   Nr   r   r   r   rh  rh    s"        %GGPJLLLr   rh  c                       e Zd ZdZdZdZdZdS )DRTVSeasonIEre  zdrtv:seasonz\https?://(?:www\.)?(?:dr\.dk|dr-massive\.com)/drtv/saeson/(?P<display_id>[\w-]+)_(?P<id>\d+)rl   Nr   r   r   r   rj  rj    s"        %GGtJLLLr   rj  c                       e Zd ZdZdZdZdZdS )DRTVSeriesIEre  zdrtv:seriesz[https?://(?:www\.)?(?:dr\.dk|dr-massive\.com)/drtv/serie/(?P<display_id>[\w-]+)_(?P<id>\d+)rl   Nr   r   r   r   rl  rl    s"        %GGsJLLLr   rl  c                   "    e Zd ZdZdZdZdZdZdS )DTubeIEzyt_dlp.extractor.dtubeDTubezUhttps?://(?:www\.)?d\.tube/(?:#!/)?v/(?P<uploader_id>[0-9a-z.-]+)/(?P<id>[0-9a-z]{8})Frk   Nr  r   r   r   rn  rn    s'        &GGjJHLLLr   rn  c                   "    e Zd ZdZdZdZdZdZdS )DVTVIEzyt_dlp.extractor.dvtvdvtvz>https?://video\.aktualne\.cz/(?:[^/]+/)+r~(?P<id>[0-9a-f]{32})zhttp://video.aktualne.cz/r   Nr   r   r   r   rq  rq    s'        %GGSJ)GLLLr   rq  c                   &    e Zd ZdZdZdZdZdZdZdS )DWArticleIEyt_dlp.extractor.dwz
dw:articleNz3https?://(?:www\.)?dw\.com/(?:[^/]+/)+a-(?P<id>\d+)Frk   	r   r   r   r$   r`   rp   r<   rD   rn   r   r   r   rt  rt    s,        #GGHIJHLLLr   rt  c                   &    e Zd ZdZdZdZdZdZdZdS )DWIEru  dwNz:https?://(?:www\.)?dw\.com/(?:[^/]+/)+(?:av|e)-(?P<id>\d+)Frk   rv  r   r   r   rx  rx    s,        #GGHPJHLLLr   rx  c                       e Zd ZdZdZdZdS )DacastBaseIEyt_dlp.extractor.dacast
DacastBasezDhttps?://iframe\.dacast\.com/None/(?P<user_id>[\w-]+)/(?P<id>[\w-]+)Nr  r   r   r   r{  r{    s        'GG[JJJr   r{  c                       e Zd ZdZdZdZdZdS )DacastPlaylistIEr|  DacastPlaylistzHhttps?://iframe\.dacast\.com/playlist/(?P<user_id>[\w-]+)/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r    s"        'GG_JLLLr   r  c                       e Zd ZdZdZdZdZdS )DacastVODIEr|  	DacastVODzChttps?://iframe\.dacast\.com/vod/(?P<user_id>[\w-]+)/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r    s"        'GGZJLLLr   r  c                       e Zd ZdZdZdS )	VRTBaseIEyt_dlp.extractor.vrtVRTBaseNr   r   r   r   r  r    r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )DagelijkseKostIEr  DagelijkseKostz;https?://dagelijksekost\.een\.be/gerechten/(?P<id>[^/?#&]+)zdagelijksekost.een.berk   Nr   r   r   r   r  r    s'        $GGPJ%GLLLr   r  c                       e Zd ZdZdZdZdZdS )DailyMailIEzyt_dlp.extractor.dailymail	DailyMailzVhttps?://(?:www\.)?dailymail\.co\.uk/(?:video/[^/]+/video-|embed/video/)(?P<id>[0-9]+)rk   Nr   r   r   r   r  r    "        *GGlJLLLr   r  c                       e Zd ZdZdZdS )DailyWireBaseIEyt_dlp.extractor.dailywireDailyWireBaseNr   r   r   r   r  r    r&  r   r  c                       e Zd ZdZdZdZdZdS )DailyWireIEr  	DailyWirezRhttps?://(?:www\.)dailywire(?:\.com)/(?P<sites_type>episode|videos)/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r    s"        *GGhJLLLr   r  c                       e Zd ZdZdZdZdZdS )DailyWirePodcastIEr  DailyWirePodcastzbhttps?://(?:www\.)dailywire(?:\.com)/(?P<sites_type>podcasts)/(?P<podcaster>[\w-]+/(?P<id>[\w-]+))rk   Nr   r   r   r   r  r    s"        *G GyJLLLr   r  c                       e Zd ZdZdZdZdS )DailymotionBaseInfoExtractoryt_dlp.extractor.dailymotionDailymotionBaseInfoExtractdailymotionNrz   r   r   r   r  r    s        ,G*G"NNNr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )DailymotionIEr  r  a  (?ix)
                    (?:https?:)?//
                    (?:
                        dai\.ly/|
                        (?:
                            (?:(?:www|touch|geo)\.)?dailymotion\.[a-z]{2,3}|
                            (?:www\.)?lequipe\.fr
                        )/
                        (?:
                            swf/(?!video)|
                            (?:(?:crawler|embed|swf)/)?video/|
                            player(?:/[\da-z]+)?\.html\?(?:video|(?P<is_playlist>playlist))=
                        )
                    )
                    (?P<id>[^/?_&#]+)(?:[\w-]*\?playlist=(?P<playlist_id>x[0-9a-z]+))?
    r   rk   Nr  r   r   r   r  r    s/        ,GG t
J"NILLLr   r  c                       e Zd ZdZdZdZdS )DailymotionPlaylistBaseIEr  DailymotionPlaylistBaser  Nrz   r   r   r   r  r     s        ,G'G"NNNr   r  c                   "    e Zd ZdZdZdZdZdZdS )DailymotionPlaylistIEr  zdailymotion:playlistzK(?:https?://)?(?:www\.)?dailymotion\.[a-z]{2,3}/playlist/(?P<id>x[0-9a-z]+)r  rl   Nr   r   r   r   r  r    s'        ,G$G`J"NLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )DailymotionSearchIEr  zdailymotion:searchzHhttps?://(?:www\.)?dailymotion\.[a-z]{2,3}/search/(?P<id>[^/?#]+)/videosr  rl   Nr   r   r   r   r  r    s'        ,G"G]J"NLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )DailymotionUserIEr  zdailymotion:userzhttps?://(?:www\.)?dailymotion\.[a-z]{2,3}/(?!(?:embed|swf|#|video|playlist|search|crawler)/)(?:(?:old/)?user/)?(?P<id>[^/?#]+)r  rl   Nr   r   r   r   r  r    s*        ,G G UJ"NLLLr   r  c                       e Zd ZdZdZdS )DamtomoBaseIEyt_dlp.extractor.damtomoDamtomoBaseNr   r   r   r   r  r    r   r   r  c                       e Zd ZdZdZdZdZdS )DamtomoRecordIEr  zdamtomo:recordzqhttps?://(?:www\.)?clubdam\.com/app/damtomo/(?:SP/)?karaokePost/StreamingKrk\.do\?karaokeContributeId=(?P<id>\d+)rk   Nr   r   r   r   r  r  #  s%        (GG JJLLLr   r  c                       e Zd ZdZdZdZdZdS )DamtomoVideoIEr  zdamtomo:videozmhttps?://(?:www\.)?clubdam\.com/app/damtomo/(?:SP/)?karaokeMovie/StreamingDkm\.do\?karaokeMovieId=(?P<id>\d+)rk   Nr   r   r   r   r  r  *  s%        (GG FJLLLr   r  c                       e Zd ZdZdZdZdS )DangalPlayBaseIEyt_dlp.extractor.dangalplayDangalPlayBase
dangalplayNrz   r   r   r   r  r  1          +GG!NNNr   r  c                   "    e Zd ZdZdZdZdZdZdS )DangalPlayIEr  r  zchttps?://(?:www\.)?dangalplay.com/shows/(?P<series>[^/?#]+)/(?P<id>(?!episodes)[^/?#]+)/?(?:$|[?#])rk   Nr   r   r   r   r  r  7  s'        +GGwJ!NLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )DangalPlaySeasonIEr  zdangalplay:seasonzehttps?://(?:www\.)?dangalplay.com/shows/(?P<id>[^/?#]+)(?:/(?P<sub>ep-[^/?#]+)/episodes)?/?(?:$|[?#])r  rl   Nr   r   r   r   r  r  ?  s'        +G!GyJ!NLLLr   r  c                       e Zd ZdZdZdS )
DaumBaseIEyt_dlp.extractor.daumDaumBaseNr   r   r   r   r  r  G  r  r   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )
DaumClipIEr  zdaum.net:clipzbhttps?://(?:m\.)?tvpot\.daum\.net/(?:clip/ClipView.(?:do|tv)|mypot/View.do)\?.*?clipid=(?P<id>\d+)rk   c                     t                               |          st                              |          rdn t                                          |          S r   )DaumPlaylistIEr4   
DaumUserIEr   r   s     r   r4   zDaumClipIE.suitableR  sI    &//44k
8K8KC8P8PkuuV[V]V]VfVfgjVkVkkr   r   r   s   @r   r  r  L  s_        %GGzJLl l l l [l l l l lr   r  c                       e Zd ZdZdZdZdZdS )DaumIEr  zdaum.netzshttps?://(?:(?:m\.)?tvpot\.daum\.net/v/|videofarm\.daum\.net/controller/player/VodPlayer\.swf\?vid=)(?P<id>[^?#&]+)rk   Nr   r   r   r   r  r  W  s%        %GG NJLLLr   r  c                       e Zd ZdZdZdS )
DaumListIEr  DaumListNr   r   r   r   r  r  ^  r  r   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )r  r  zdaum.net:playlistzZhttps?://(?:m\.)?tvpot\.daum\.net/mypot/(?:View\.do|Top\.tv)\?.*?playlistid=(?P<id>[0-9]+)r   c                 ~    t                               |          rdn t                                          |          S r   )r  r4   r   r   s     r   r4   zDaumPlaylistIE.suitablei  2    "++C00Kuuegg6F6Fs6K6KKr   r   r   s   @r   r  r  c  s_        %G!GsJLL L L L [L L L L Lr   r  c                       e Zd ZdZdZdZdZdS )r  r  zdaum.net:userz`https?://(?:m\.)?tvpot\.daum\.net/mypot/(?:View|Top)\.(?:do|tv)\?.*?ownerid=(?P<id>[0-9a-zA-Z]+)r   Nr   r   r   r   r  r  n  s"        %GGxJLLLr   r  c                       e Zd ZdZdZdZdZdS )DaystarClipIEzyt_dlp.extractor.daystarzdaystar:clipz(https?://player\.daystar\.tv/(?P<id>\w+)rk   Nr   r   r   r   r  r  u  s"        (GG>JLLLr   r  c                       e Zd ZdZdZdZdZdS )DctpTvIEzyt_dlp.extractor.dctpDctpTvz9https?://(?:www\.)?dctp\.tv/(?:#/)?filme/(?P<id>[^/?#&]+)rk   Nr   r   r   r   r  r  |  s"        %GGNJLLLr   r  c                       e Zd ZdZdZdZdZdS )DemocracynowIEzyt_dlp.extractor.democracynowdemocracynowz3https?://(?:www\.)?democracynow\.org/(?P<id>[^\?]*)rk   Nr   r   r   r   r  r    s"        -GGIJLLLr   r  c                       e Zd ZdZdZdZdZdS )DestinationAmericaIEr  DestinationAmericazFhttps?://(?:www\.)?destinationamerica\.com/video/(?P<id>[^/]+/[^/?#]+)rk   Nr   r   r   r   r  r    s"        &G"G[JLLLr   r  c                       e Zd ZdZdZdZdS )DetikEmbedIEzyt_dlp.extractor.detik
DetikEmbedFNr  r   r   r   r  r    s        &GGJJJr   r  c                       e Zd ZdZdZdZdZdS )DeuxMIEyt_dlp.extractor.deuxmDeuxMzDhttps?://(?:www\.)?2m\.ma/[^/]+/replay/single/(?P<id>([\w.]{1,24})+)rk   Nr   r   r   r   r  r    s"        &GGZJLLLr   r  c                       e Zd ZdZdZdZdZdS )DeuxMNewsIEr  	DeuxMNewsz<https?://(?:www\.)?2m\.ma/(?P<lang>\w+)/news/(?P<id>[^/#?]+)rk   Nr   r   r   r   r  r    s"        &GGRJLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )DigitalConcertHallIEz#yt_dlp.extractor.digitalconcerthallDigitalConcertHallz}https?://(?:www\.)?digitalconcerthall\.com/(?P<language>[a-z]+)/(?P<type>film|concert|work)/(?P<id>[0-9]+)-?(?P<part>[0-9]+)?zDigitalConcertHall extractordigitalconcerthallr   Nr   r   r   r   r  r    s/        3G"G SJ,G)NLLLr   r  c                       e Zd ZdZdZdZdZdS )DigitallySpeakingIEzyt_dlp.extractor.dispeakDigitallySpeakingz\https?://(?:s?evt\.dispeak|events\.digitallyspeaking)\.com/(?:[^/]+/)+xml/(?P<id>[^.]+)\.xmlrk   Nr   r   r   r   r  r    s"        (G!GsJLLLr   r  c                       e Zd ZdZdZdZdZdS )
DigitekaIEzyt_dlp.extractor.digitekaDigitekaa  (?x)
        https?://(?:www\.)?(?:digiteka\.net|ultimedia\.com)/
        (?:
            deliver/
            (?P<embed_type>
                generic|
                musique
            )
            (?:/[^/]+)*/
            (?:
                src|
                article
            )|
            default/index/video
            (?P<site_type>
                generic|
                music
            )
            /id
        )/(?P<id>[\d+a-z]+)rk   Nr   r   r   r   r  r    s%        )GG qJLLLr   r  c                       e Zd ZdZdZdZdZdS )
DigiviewIEzyt_dlp.extractor.digiviewDigiviewzAhttps?://(?:www\.)?ladigitale\.dev/digiview/#/v/(?P<id>[0-9a-f]+)rk   Nr   r   r   r   r  r    s"        )GGVJLLLr   r  c                       e Zd ZdZdZdZdZdS )DiscogsReleasePlaylistIEzyt_dlp.extractor.discogsDiscogsReleasePlaylistzDhttps?://(?:www\.)?discogs\.com/(?P<type>release|master)/(?P<id>\d+)rl   Nr   r   r   r   r  r    s"        (G&GZJLLLr   r  c                       e Zd ZdZdZdZdZdS )DiscoveryLifeIEr  DiscoveryLifezAhttps?://(?:www\.)?discoverylife\.com/video/(?P<id>[^/]+/[^/?#]+)rk   Nr   r   r   r   r  r    s"        &GGVJLLLr   r  c                       e Zd ZdZdZdZdZdS )DiscoveryNetworksDeIEr  DiscoveryNetworksDezhttps?://(?:www\.)?(?P<domain>(?:tlc|dmax)\.de)/(?:programme|show|sendungen)/(?P<programme>[^/?#]+)/(?:video/)?(?P<alternate_id>[^/?#]+)rk   Nr   r   r   r   r  r    s%        &G#G ^JLLLr   r  c                       e Zd ZdZdZdZdZdS )DiscoveryPlusIEr  DiscoveryPluszxhttps?://(?:www\.)?discoveryplus\.com/(?!it/)(?:(?P<country>[a-z]{2})/)?video(?:/sport|/olympics)?/(?P<id>[^/]+/[^/?#]+)rk   Nr   r   r   r   r  r    s%        &GG NJLLLr   r  c                       e Zd ZdZdZdZdZdS )DiscoveryPlusIndiaIEr  DiscoveryPlusIndiazBhttps?://(?:www\.)?discoveryplus\.in/videos?/(?P<id>[^/]+/[^/?#]+)rk   Nr   r   r   r   r  r    s"        &G"GWJLLLr   r  c                       e Zd ZdZdZdS )DiscoveryPlusShowBaseIEr  DiscoveryPlusShowBaseNr   r   r   r   r  r    s        &G%GGGr   r  c                       e Zd ZdZdZdZdZdS )DiscoveryPlusIndiaShowIEr  DiscoveryPlusIndiaShowzJhttps?://(?:www\.)?discoveryplus\.in/show/(?P<show_name>[^/]+)/?(?:[?#]|$)rl   Nr   r   r   r   r  r    s"        &G&G_JLLLr   r  c                       e Zd ZdZdZdZdS )DiscoveryPlusItalyIEr  DiscoveryPlusItalyzYhttps?://(?:www\.)?discoveryplus\.com/it/video(?:/sport|/olympics)?/(?P<id>[^/]+/[^/?#]+)Nr  r   r   r   r  r    s        &G"GnJJJr   r  c                       e Zd ZdZdZdZdZdS )DiscoveryPlusItalyShowIEr  DiscoveryPlusItalyShowzOhttps?://(?:www\.)?discoveryplus\.it/programmi/(?P<show_name>[^/]+)/?(?:[?#]|$)rl   Nr   r   r   r   r  r    s"        &G&GdJLLLr   r  c                       e Zd ZdZdZdZdZdS )DisneyIEzyt_dlp.extractor.disneyDisneya  (?x)
        https?://(?P<domain>(?:[^/]+\.)?(?:disney\.[a-z]{2,3}(?:\.[a-z]{2})?|disney(?:(?:me|latino)\.com|turkiye\.com\.tr|channel\.de)|(?:starwars|marvelkids)\.com))/(?:(?:embed/|(?:[^/]+/)+[\w-]+-)(?P<id>[a-z0-9]{24})|(?:[^/]+/)?(?P<display_id>[^/?#]+))rk   Nr   r   r   r   r  r    s%        'GG aJLLLr   r  c                       e Zd ZdZdZdS )TikTokBaseIEyt_dlp.extractor.tiktok
TikTokBaseNr   r   r   r   r  r    rW  r   r  c                       e Zd ZdZdZdZdZdS )DouyinIEr  Douyinz3https?://(?:www\.)?douyin\.com/video/(?P<id>[0-9]+)rk   Nr   r   r   r   r  r    s"        'GGHJLLLr   r  c                       e Zd ZdZdZdS )DouyuBaseIEyt_dlp.extractor.douyutv	DouyuBaseNr   r   r   r   r  r            (GGGGr   r  c                       e Zd ZdZdZdZdZdS )DouyuShowIEr  	DouyuShowz;https?://v(?:mobile)?\.douyu\.com/show/(?P<id>[0-9a-zA-Z]+)rk   Nr   r   r   r   r  r    s"        (GGPJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	DouyuTVIEr  DouyuTVzVhttps?://(?:www\.)?douyu(?:tv)?\.com/(topic/\w+\?rid=|(?:[^/]+/))*(?P<id>[A-Za-z0-9]+)u   斗鱼直播rk   Nr   r   r   r   r  r    s'        (GGmJGLLLr   r  c                       e Zd ZdZdZdZdZdS )	DrTalksIEzyt_dlp.extractor.drtalksDrTalksz5https?://(?:www\.)?drtalks\.com/videos/(?P<id>[\w-]+)rk   Nr   r   r   r   r   r   &  s"        (GGKJLLLr   r   c                   "    e Zd ZdZdZdZdZdZdS )	DrTuberIEzyt_dlp.extractor.drtuberDrTuberz]https?://(?:(?:www|m)\.)?drtuber\.com/(?:video|embed)/(?P<id>\d+)(?:/(?P<display_id>[\w-]+))?r   rk   Nr  r   r   r   r#  r#  -  s'        (GGtJILLLr   r#  c                       e Zd ZdZdZdS )	ZDFBaseIEyt_dlp.extractor.zdfZDFBaseNr   r   r   r   r&  r&  5  r  r   r&  c                       e Zd ZdZdZdZdZdS )	DreiSatIEzyt_dlp.extractor.dreisat3satz?https?://(?:www\.)?3sat\.de/(?:[^/?#]+/)*(?P<id>[^/?#&]+)\.htmlrk   Nr   r   r   r   r*  r*  :  s"        (GGUJLLLr   r*  c                       e Zd ZdZdZdZdZdS )	DroobleIEzyt_dlp.extractor.droobleDrooblez(?x)https?://drooble\.com/(?:
        (?:(?P<user>[^/]+)/)?(?P<kind>song|videos|music/albums)/(?P<id>\d+)|
        (?P<user_2>[^/]+)/(?P<kind_2>videos|music))
    r   Nr   r   r   r   r-  r-  A  s%        (GG |JLLLr   r-  c                       e Zd ZdZdZdZdZdS )	DropboxIEzyt_dlp.extractor.dropboxDropboxzDhttps?://(?:www\.)?dropbox\.com/(?:(?:e/)?scl/f[io]|sh?)/(?P<id>\w+)rk   Nr   r   r   r   r0  r0  H  "        (GGZJLLLr   r0  c                   "    e Zd ZdZdZdZdZdZdS )	DropoutIEyt_dlp.extractor.dropoutDropoutzPhttps?://(?:watch\.)?dropout\.tv/(?:[^/?#]+/)*videos/(?P<id>[^/?#]+)/?(?:[?#]|$)dropoutrk   Nr   r   r   r   r4  r4  O  s'        (GGeJNLLLr   r4  c                       e Zd ZdZdZdZdZdS )DropoutSeasonIEr5  DropoutSeasonzXhttps?://(?:watch\.)?dropout\.tv/(?P<id>[^\/$&?#]+)(?:/?$|/season:(?P<season>[0-9]+)/?$)rl   Nr   r   r   r   r9  r9  W  s"        (GGnJLLLr   r9  c                   "    e Zd ZdZdZdZdZdZdS )DubokuIEyt_dlp.extractor.dubokudubokuzE(?:https?://[^/]+\.duboku\.io/vodplay/)(?P<id>[0-9]+-[0-9-]+)\.html.*zwww.duboku.iork   Nr   r   r   r   r<  r<  ^  s'        'GG[JGLLLr   r<  c                   "    e Zd ZdZdZdZdZdZdS )DubokuPlaylistIEr=  zduboku:listz?(?:https?://[^/]+\.duboku\.io/voddetail/)(?P<id>[0-9]+)\.html.*zwww.duboku.io entire seriesrl   Nr   r   r   r   r@  r@  f  s'        'GGUJ+GLLLr   r@  c                       e Zd ZdZdZdZdZdS )	DumpertIEzyt_dlp.extractor.dumpertDumpertz(?x)
        (?P<protocol>https?)://(?:(?:www|legacy)\.)?dumpert\.nl/(?:
            (?:mediabase|embed|item)/|
            [^#]*[?&]selectedId=
        )(?P<id>[0-9]+[/_][0-9a-zA-Z]+)rk   Nr   r   r   r   rB  rB  n  s%        (GG RJLLLr   rB  c                       e Zd ZdZdZdZdZdS )	DuoplayIEzyt_dlp.extractor.duoplayDuoplayz+https?://duoplay\.ee/(?P<id>\d+)(?:[/?#]|$)rk   Nr   r   r   r   rE  rE  u  s"        (GG@JLLLr   rE  c                       e Zd ZdZdZdS )TNAFlixNetworkBaseIEyt_dlp.extractor.tnaflixTNAFlixNetworkBaseNr   r   r   r   rH  rH  |  s        (G"GGGr   rH  c                       e Zd ZdZdZdS )TNAEMPFlixBaseIErI  TNAEMPFlixBaseNr   r   r   r   rL  rL            (GGGGr   rL  c                   "    e Zd ZdZdZdZdZdZdS )	EMPFlixIErI  EMPFlixz{https?://(?:www\.)?(?P<host>empflix)\.com/(?:videos/(?P<display_id>.+?)-|[^/]+/(?P<display_id_2>[^/]+)/video)(?P<id>[0-9]+)r   rk   Nr  r   r   r   rP  rP    s*        (GG QJILLLr   rP  c                       e Zd ZdZdZdZdZdS )ERRArhiivIEyt_dlp.extractor.err	ERRArhiivz8https://arhiiv\.err\.ee/video/(?:vaata/)?(?P<id>[^/?#]+)rk   Nr   r   r   r   rS  rS    s"        $GGMJLLLr   rS  c                       e Zd ZdZdZdZdZdS )ERRJupiterIErT  
ERRJupiterz?https?://(?:jupiter(?:pluss)?|lasteekraan)\.err\.ee/(?P<id>\d+)rk   Nr   r   r   r   rW  rW    s"        $GGUJLLLr   rW  c                       e Zd ZdZdZdS )ERTFlixBaseIEyt_dlp.extractor.ertgrERTFlixBaseNr   r   r   r   rZ  rZ    s        &GGGGr   rZ  c                   "    e Zd ZdZdZdZdZdZdS )ERTFlixCodenameIEr[  zertflix:codenamezertflix:(?P<id>[\w-]+)zERTFLIX videos by codenamerk   Nr   r   r   r   r^  r^    s'        &G G*J*GLLLr   r^  c                   &    e Zd ZdZdZdZdZdZdZdS )	ERTFlixIEr[  ertflixzIhttps?://www\.ertflix\.gr/(?:[^/]+/)?(?:series|vod)/(?P<id>[a-z]{3}\.\d+)zERTFLIX videos   r   Nr3  r   r   r   r`  r`    s,        &GG`JGILLLr   r`  c                   "    e Zd ZdZdZdZdZdZdS )ERTWebtvEmbedIEr[  zertwebtv:embedzVhttps?://www\.ert\.gr/webtv/live\-uni/vod/dt\-uni\-vod\.php\?([^#]+&)?f=(?P<id>[^#&]+)zert.gr webtv embedded videosrk   Nr   r   r   r   rd  rd    s'        &GGpJ,GLLLr   rd  c                   :     e Zd ZdZdZdZe fd            Z xZS )ESPNArticleIEyt_dlp.extractor.espnESPNArticlezBhttps?://(?:espn\.go|(?:www\.)?espn)\.com/(?:[^/]+/)*(?P<id>[^/]+)c                     t                               |          st                              |          rdn t                                          |          S r   )ESPNIEr4   WatchESPNIEr   r   s     r   r4   zESPNArticleIE.suitable  sG    --f1E1Ec1J1JfuuQVQXQXQaQabeQfQffr   )	r   r   r   r$   r`   r<   rq   r4   r   r   s   @r   rf  rf    sZ        %GGXJg g g g [g g g g gr   rf  c                       e Zd ZdZdZdZdZdS )ESPNCricInfoIErg  ESPNCricInfozOhttps?://(?:www\.)?espncricinfo\.com/(?:cricket-)?videos?/[^#$&?/]+-(?P<id>\d+)rk   Nr   r   r   r   rm  rm    s"        %GGeJLLLr   rm  c                       e Zd ZdZdZdZdZdS )rj  rg  ESPNa  (?x)
                    https?://
                        (?:
                            (?:
                                (?:
                                    (?:(?:\w+\.)+)?espn\.go|
                                    (?:www\.)?espn
                                )\.com/
                                (?:
                                    (?:
                                        video/(?:clip|iframe/twitter)|
                                    )
                                    (?:
                                        .*?\?.*?\bid=|
                                        /_/id/
                                    )|
                                    [^/]+/video/
                                )
                            )|
                            (?:www\.)espnfc\.(?:com|us)/(?:video/)?[^/]+/\d+/video/
                        )
                        (?P<id>\d+)
                    rk   Nr   r   r   r   rj  rj    s%        %GG VJLLLr   rj  c                       e Zd ZdZdZdZdZdS )
EUScreenIEzyt_dlp.extractor.euscreenEUScreenz>https?://(?:www\.)?euscreen\.eu/item.html\?id=(?P<id>[^&?$/]+)rk   Nr   r   r   r   rr  rr    s"        )GGTJLLLr   rr  c                       e Zd ZdZdZdZdS )EWETVBaseIErt  	EWETVBaseewetvNrz   r   r   r   ru  ru    r{  r   ru  c                       e Zd ZdZdZdZdZdS )EWETVIErt  EWETVz(?x)https?://(?:www\.)?tvonline\.ewe\.de/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )rw  Nr  r   r   r   ry  ry    s%        'GG oJNNNr   ry  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )EWETVLiveIErt  	EWETVLivez(?x)https?://(?:www\.)?tvonline\.ewe\.de/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )rw  c                 ~    t                               |          rdn t                                          |          S r   )ry  r4   r   r   s     r   r4   zEWETVLiveIE.suitable  r   r   r  r   s   @r   r|  r|    sb        'GG dJNI I I I [I I I I Ir   r|  c                       e Zd ZdZdZdZdZdS )EWETVRecordingsIErt  EWETVRecordingszx(?x)https?://(?:www\.)?tvonline\.ewe\.de/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )rw  Nr  r   r   r   r  r    s%        'GG TJNNNr   r  c                       e Zd ZdZdZdZdZdS )EbaumsWorldIEzyt_dlp.extractor.ebaumsworldEbaumsWorldz<https?://(?:www\.)?ebaumsworld\.com/videos/[^/]+/(?P<id>\d+)rk   Nr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdZdZdS )EbayIEzyt_dlp.extractor.ebayEbayz,https?://(?:www\.)?ebay\.com/itm/(?P<id>\d+)rk   Nr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdS )EggheadBaseIEyt_dlp.extractor.eggheadEggheadBaseNr   r   r   r   r  r    r   r   r  c                   "    e Zd ZdZdZdZdZdZdS )EggheadCourseIEr  zegghead:coursezDhttps?://(?:app\.)?egghead\.io/(?:course|playlist)s/(?P<id>[^/?#&]+)zegghead.io courserl   Nr   r   r   r   r  r    s'        (GGYJ!GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )EggheadLessonIEr  zegghead:lessonzChttps?://(?:app\.)?egghead\.io/(?:api/v1/)?lessons/(?P<id>[^/?#&]+)zegghead.io lessonrk   Nr   r   r   r   r  r    s'        (GGXJ!GLLLr   r  c                       e Zd ZdZdZdS )
EggsBaseIEyt_dlp.extractor.eggsEggsBaseNr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdZdZdS )EggsArtistIEr  zeggs:artistz1https?://eggs\.mu/artist/(?P<id>\w+)/?(?:[?#&]|$)rl   Nr   r   r   r   r  r     s"        %GGFJLLLr   r  c                       e Zd ZdZdZdZdZdS )EggsIEr  zeggs:singlez7https?://eggs\.mu/artist/[^/?#]+/song/(?P<id>[\da-f-]+)rk   Nr   r   r   r   r  r  '  s"        %GGLJLLLr   r  c                       e Zd ZdZdZdZdZdS )EightTracksIEzyt_dlp.extractor.eighttracks8tracksz=https?://8tracks\.com/(?P<user>[^/]+)/(?P<id>[^/#]+)(?:#.*)?$rl   Nr   r   r   r   r  r  .  s"        ,GGQJLLLr   r  c                       e Zd ZdZdZdZdS )EinsUndEinsTVBaseIErt  EinsUndEinsTVBase1und1tvNrz   r   r   r   r  r  5  s        'G!GNNNr   r  c                       e Zd ZdZdZdZdZdS )EinsUndEinsTVIErt  EinsUndEinsTVz(?x)https?://(?:www\.)?1und1\.tv/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r  Nr  r   r   r   r  r  ;  s%        'GG fJNNNr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )EinsUndEinsTVLiveIErt  EinsUndEinsTVLivez(?x)https?://(?:www\.)?1und1\.tv/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r  c                 ~    t                               |          rdn t                                          |          S r   )r  r4   r   r   s     r   r4   zEinsUndEinsTVLiveIE.suitableH  2    '0055Puu577;K;KC;P;PPr   r  r   s   @r   r  r  B  sb        'G!G [JNQ Q Q Q [Q Q Q Q Qr   r  c                       e Zd ZdZdZdZdZdS )EinsUndEinsTVRecordingsIErt  EinsUndEinsTVRecordingszp(?x)https?://(?:www\.)?1und1\.tv/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r  Nr  r   r   r   r  r  M  s%        'G'G KJNNNr   r  c                       e Zd ZdZdZdZdZdS )EitbIEzyt_dlp.extractor.eitbzeitb.tvzHhttps?://(?:www\.)?eitb\.tv/(?:eu/bideoa|es/video)/[^/]+/\d+/(?P<id>\d+)rk   Nr   r   r   r   r  r  T  s"        %GG_JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )ElPaisIEzyt_dlp.extractor.elpaisElPaiszChttps?://(?:[^.]+\.)?elpais\.com/.*/(?P<id>[^/#?]+)\.html(?:$|[?#])u   El Paísrk   Nr   r   r   r   r  r  [  s'        'GGYJGLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )ElTreceTVIEzyt_dlp.extractor.eltrecetv	ElTreceTVzShttps?://(?:www\.)?eltrecetv\.com\.ar/[\w-]+/capitulos/temporada-\d+/(?P<id>[\w-]+)zEl Trece TV (Argentina)rk   Nr   r   r   r   r  r  c  s'        *GGlJ'GLLLr   r  c                       e Zd ZdZdZdZdS )ElementorEmbedIEzyt_dlp.extractor.elementorembedElementorEmbedFNr  r   r   r   r  r  k  s        /GGJJJr   r  c                       e Zd ZdZdZdZdZdS )ElonetIEzyt_dlp.extractor.elonetElonetzEhttps?://elonet\.finna\.fi/Record/kavi\.elonet_elokuva_(?P<id>[0-9]+)rk   Nr   r   r   r   r  r  q  s"        'GG[JLLLr   r  c                       e Zd ZdZdZdZdZdS )	EmbedlyIEzyt_dlp.extractor.embedlyEmbedlyz[https?://(?:www|cdn\.)?embedly\.com/widgets/media\.html\?(?:[^#]*?&)?(?:src|url)=(?:[^#&]+)r   Nr   r   r   r   r  r  x  s"        (GGrJLLLr   r  c                       e Zd ZdZdZdZdZdS )EpiconIEyt_dlp.extractor.epiconEpiconz_https?://(?:www\.)?epicon\.in/(?:documentaries|movies|tv-shows/[^/?#]+/[^/?#]+)/(?P<id>[^/?#]+)rk   Nr   r   r   r   r  r    s"        'GGtJLLLr   r  c                       e Zd ZdZdZdZdZdS )EpiconSeriesIEr  EpiconSerieszB(?!.*season)https?://(?:www\.)?epicon\.in/tv-shows/(?P<id>[^/?#]+)rl   Nr   r   r   r   r  r    s"        'GGWJLLLr   r  c                       e Zd ZdZdZdZdZdS )EpidemicSoundIEzyt_dlp.extractor.epidemicsoundEpidemicSoundzchttps?://(?:www\.)?epidemicsound\.com/(?:(?P<sfx>sound-effects/tracks)|track)/(?P<id>[0-9a-zA-Z-]+)rk   Nr   r   r   r   r  r    s"        .GGxJLLLr   r  c                   *    e Zd ZdZdZddgZdZdZdZdS )	EplusIbIEzyt_dlp.extractor.eplusepluszGhttps?://live\.eplus\.jp/ex/player\?ib=(?P<id>(?:\w|%2B|%2F){86}%3D%3D)z+https?://live\.eplus\.jp/(?P<id>sample|\d+)u   e+ (イープラス)rk   Nr   r   r   r   r  r    s9        &GG_  bR  SJ$GNLLLr   r  c                       e Zd ZdZdZdZdZdS )EpochIEzyt_dlp.extractor.epochEpochz7https?://www.theepochtimes\.com/[\w-]+_(?P<id>\d+).htmlrk   Nr   r   r   r   r  r    r&  r   r  c                   "    e Zd ZdZdZdZdZdZdS )	EpornerIEzyt_dlp.extractor.epornerEpornerzdhttps?://(?:www\.)?eporner\.com/(?:(?:hd-porn|embed)/|video-)(?P<id>\w+)(?:/(?P<display_id>[\w-]+))?r   rk   Nr  r   r   r   r  r    '        (GG{JILLLr   r  c                       e Zd ZdZdZdZdZdS )EroProfileAlbumIEyt_dlp.extractor.eroprofilezEroProfile:albumz?https?://(?:www\.)?eroprofile\.com/m/videos/album/(?P<id>[^/]+)rl   Nr   r   r   r   r  r    s"        +G GTJLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )EroProfileIEr  
EroProfilez>https?://(?:www\.)?eroprofile\.com/m/videos/view/(?P<id>[^/]+)
eroprofiler   rk   Nr  r   r   r   r  r    s,        +GGSJ!NILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	ErocastIEzyt_dlp.extractor.erocastErocastz3https?://(?:www\.)?erocast\.me/track/(?P<id>[0-9]+)r   rk   Nr  r   r   r   r  r    s'        (GGHJILLLr   r  c                       e Zd ZdZdZdZdZdS )EttuTvIEzyt_dlp.extractor.ettutvEttuTvz<https?://(?:www\.)?ettu\.tv/[^?#]+/playerpage/(?P<id>[0-9]+)rk   Nr   r   r   r   r  r    "        'GGQJLLLr   r  c                       e Zd ZdZdZdZdZdS )EuroParlWebstreamIEyt_dlp.extractor.europaEuroParlWebstreamzu(?x)
        https?://multimedia\.europarl\.europa\.eu/
        (?:\w+/)?webstreaming/(?:[\w-]+_)?(?P<id>[\w-]+)
    rk   Nr   r   r   r   r  r    s%        'G!G RJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )EuropaIEr  Europazkhttps?://ec\.europa\.eu/avservices/(?:video/player|audio/audioDetails)\.cfm\?.*?\bref=(?P<id>[A-Za-z0-9-]+)Frk   Nr  r   r   r   r  r    s*        'GG DJHLLLr   r  c                       e Zd ZdZdZdZdZdS )EuropeanTourIEzyt_dlp.extractor.europeantourEuropeanTourzNhttps?://(?:www\.)?europeantour\.com/dpworld-tour/news/video/(?P<id>[^/&?#$]+)rk   Nr   r   r   r   r  r    s"        -GGcJLLLr   r  c                       e Zd ZdZdZdZdZdS )EurosportIEzyt_dlp.extractor.eurosport	Eurosportz(?x)
        https?://(?:
            (?:(?:www|espanol)\.)?eurosport\.(?:com(?:\.tr)?|de|dk|es|fr|hu|it|nl|no|ro)|
            eurosport\.tvn24\.pl
        )/[\w-]+/(?:[\w-]+/[\d-]+/)?[\w.-]+_(?P<id>vid\d+)
    rk   Nr   r   r   r   r  r    s%        *GG wJLLLr   r  c                       e Zd ZdZdZdZdZdS )ExpressenIEzyt_dlp.extractor.expressen	Expressena  (?x)
                    https?://
                        (?:www\.)?(?:expressen|di)\.se/
                        (?:(?:tvspelare/video|video-?player/embed)/)?
                        (?:tv|nyheter)/(?:[^/?#]+/)*
                        (?P<id>[^/?#&]+)
                    rk   Nr   r   r   r   r  r    s%        *GG oJLLLr   r  c                       e Zd ZdZdZdZdZdS )	EyedoTVIEzyt_dlp.extractor.eyedotvEyedoTVzEhttps?://(?:www\.)?eyedo\.tv/[^/]+/(?:#!/)?Live/Detail/(?P<id>[0-9]+)rk   Nr   r   r   r   r  r    r2  r   r  c                       e Zd ZdZdZdZdZdS )
FC2EmbedIEyt_dlp.extractor.fc2z	fc2:embedz1https?://video\.fc2\.com/flv2\.swf\?(?P<query>.+)rk   Nr   r   r   r   r  r    s"        $GGHJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )FC2IEr  fc2zB(?:https?://video\.fc2\.com/(?:[^/]+/)*content/|fc2:)(?P<id>[^/]+)rk   Nr   r   r   r   r  r    s'        $GGWJNLLLr   r  c                       e Zd ZdZdZdZdZdS )	FC2LiveIEr  zfc2:livez#https?://live\.fc2\.com/(?P<id>\d+)rk   Nr   r   r   r   r  r    s"        $GG9JLLLr   r  c                       e Zd ZdZdZdZdS )FOX9IEyt_dlp.extractor.fox9FOX9z.https?://(?:www\.)?fox9\.com/video/(?P<id>\d+)Nr  r   r   r   r  r    s        %GGDJJJr   r  c                       e Zd ZdZdZdZdZdS )
FOX9NewsIEr  FOX9Newsz2https?://(?:www\.)?fox9\.com/news/(?P<id>[^/?&#]+)rk   Nr   r   r   r   r  r    s"        %GGGJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )FOXIEzyt_dlp.extractor.foxFOXzKhttps?://(?:www\.)?fox(?:sports)?\.com/(?:watch|replay)/(?P<id>[\da-fA-F]+)r  rk   Nr  r   r   r   r   r     s'        $GGaJILLLr   r   c                       e Zd ZdZdZdZdZdS )FacebookAdsIEyt_dlp.extractor.facebookzfacebook:adszLhttps?://(?:[\w-]+\.)?facebook\.com/ads/library/?\?(?:[^#]+&)?id=(?P<id>\d+)r   Nr   r   r   r   r  r  !  s"        )GGdJLLLr   r  c                       e Zd ZdZdZdZdZdS )
FacebookIEr  facebooka(  (?x)
                (?:
                    https?://
                        (?:[\w-]+\.)?(?:facebook\.com|facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd\.onion)/
                        (?:[^#]*?\#!/)?
                        (?:
                            (?:
                                permalink\.php|
                                video/video\.php|
                                photo\.php|
                                video\.php|
                                video/embed|
                                story\.php|
                                watch(?:/live)?/?
                            )\?(?:.*?)(?:v|video_id|story_fbid)=|
                            [^/]+/videos/(?:[^/]+/)?|
                            [^/]+/posts/|
                            events/(?:[^/]+/)?|
                            groups/[^/]+/(?:permalink|posts)/(?:[\da-f]+/)?|
                            watchparty/
                        )|
                    facebook:
                )
                (?P<id>pfbid[A-Za-z0-9]+|\d+)
                r   Nr   r   r   r   r  r  (  s%        )GG aJLLLr   r  c                       e Zd ZdZdZdZdZdS )FacebookPluginsVideoIEr  FacebookPluginsVideozQhttps?://(?:[\w-]+\.)?facebook\.com/plugins/video\.php\?.*?\bhref=(?P<id>https.+)rk   Nr   r   r   r   r	  r	  /  s"        )G$GjJLLLr   r	  c                   "    e Zd ZdZdZdZdZdZdS )FacebookRedirectURLIEr  FacebookRedirectURLz0https?://(?:[\w-]+\.)?facebook\.com/flx/warn[/?]Frk   Nr   r   r   r   r  r  6  s'        )G#GFJGLLLr   r  c                       e Zd ZdZdZdZdZdS )FacebookReelIEr  zfacebook:reelz4https?://(?:[\w-]+\.)?facebook\.com/reel/(?P<id>\d+)rk   Nr   r   r   r   r  r  >  "        )GGKJLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )FancodeVodIEyt_dlp.extractor.fancodezfancode:vodz6https?://(?:www\.)?fancode\.com/video/(?P<id>[0-9]+)\bFfancoderk   N	r   r   r   r$   r`   r<   rD   rY   rn   r   r   r   r  r  E  s,        (GGLJHNLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )FancodeLiveIEr  zfancode:livez4https?://(www\.)?fancode\.com/match/(?P<id>[0-9]+).+Fr  rk   Nr  r   r   r   r  r  N  s,        (GGIJHNLLLr   r  c                       e Zd ZdZdZdZdZdS )FathomIEzyt_dlp.extractor.fathomFathomz7https?://(?:www\.)?fathom\.video/share/(?P<id>[^/?#&]+)rk   Nr   r   r   r   r  r  W  "        'GGLJLLLr   r  c                       e Zd ZdZdZdS )FaulioBaseIEyt_dlp.extractor.faulio
FaulioBaseNr   r   r   r   r  r  ^  rW  r   r  c                   "    e Zd ZdZdZdZdZdZdS )FaulioIEr  Fauliozhttps?://(?:aloula\.sba\.sa|bahry\.com|maraya\.sba\.net\.ae|sat7plus\.org)/(?:(?:ar|en|fa)/)?(?:episode|media)/(?P<id>[a-zA-Z0-9-]+)   rk   Nr  r   r   r   r!  r!  c  s*        'GG _JILLLr   r!  c                       e Zd ZdZdZdZdZdS )FaulioLiveIEr  
FaulioLivezwhttps?://(?:aloula\.sba\.sa|bahry\.com|maraya\.sba\.net\.ae|sat7plus\.org)/(?:(?:ar|en|fa)/)?live/(?P<id>[a-zA-Z0-9-]+)rk   Nr   r   r   r   r%  r%  k  s%        'GG RJLLLr   r%  c                       e Zd ZdZdZdZdZdS )FazIEzyt_dlp.extractor.fazzfaz.netz<https?://(?:www\.)?faz\.net/(?:[^/]+/)*.*?-(?P<id>\d+)\.htmlrk   Nr   r   r   r   r(  r(  r  s"        $GGSJLLLr   r(  c                       e Zd ZdZdZdZdZdS )	FczenitIEzyt_dlp.extractor.fczenitFczenitz4https?://(?:www\.)?fc-zenit\.ru/video/(?P<id>[0-9]+)rk   Nr   r   r   r   r*  r*  y  "        (GGIJLLLr   r*  c                       e Zd ZdZdZdZdZdS )FifaIEzyt_dlp.extractor.fifaFifazBhttps?://www\.fifa\.com/fifaplus/\w{2}/watch/([^#?]+/)?(?P<id>\w+)rk   Nr   r   r   r   r.  r.    s"        %GGYJLLLr   r.  c                   "    e Zd ZdZdZdZdZdZdS )FilmArchivIEzyt_dlp.extractor.filmarchiv
FilmArchivzRhttps?://(?:www\.)?filmarchiv\.at/de/filmarchiv-on/video/(?P<id>f_[0-9a-zA-Z]{5,})zFILMARCHIV ONrk   Nr   r   r   r   r1  r1    s'        +GGgJGLLLr   r1  c                       e Zd ZdZdZdZdZdS )FilmOnChannelIEyt_dlp.extractor.filmonzfilmon:channelz@https?://(?:www\.)?filmon\.com/(?:tv|channel)/(?P<id>[a-z0-9-]+)rk   Nr   r   r   r   r4  r4    "        'GGUJLLLr   r4  c                       e Zd ZdZdZdZdZdS )FilmOnIEr5  filmonz?(?:https?://(?:www\.)?filmon\.com/vod/view/|filmon:)(?P<id>\d+)r   Nr   r   r   r   r8  r8    s"        'GGUJLLLr   r8  c                       e Zd ZdZdZdZdZdS )	FilmwebIEzyt_dlp.extractor.filmwebFilmwebzRhttps?://(?:www\.)?filmweb\.no/(?P<type>trailere|filmnytt)/article(?P<id>\d+)\.ecerk   Nr   r   r   r   r;  r;    s"        (GGiJLLLr   r;  c                   "    e Zd ZdZdZdZdZdZdS )	FirstTVIEyt_dlp.extractor.firsttv1tvzAhttps?://(?:www\.)?(?:sport)?1tv\.ru/(?:[^/?#]+/)+(?P<id>[^/?#]+)u   Первый каналr   Nr   r   r   r   r>  r>    s'        (GGVJ'GLLLr   r>  c                   "    e Zd ZdZdZdZdZdZdS )FirstTVLiveIEr?  z1tv:livezhttps?://(?:www\.)?1tv\.ru/liveu/   Первый канал (прямой эфир)rk   Nr   r   r   r   rB  rB    s'        (GG4J?GLLLr   rB  c                       e Zd ZdZdZdZdZdS )FiveTVIEzyt_dlp.extractor.fivetvFiveTVa  (?x)
                    https?://
                        (?:www\.)?5-tv\.ru/
                        (?:
                            (?:[^/]+/)+(?P<id>\d+)|
                            (?P<path>[^/?#]+)(?:[/?#])?
                        )
                    rk   Nr   r   r   r   rD  rD    s%        'GG cJLLLr   rD  c                       e Zd ZdZdZdZdZdS )FiveThirtyEightIErg  FiveThirtyEightz@https?://(?:www\.)?fivethirtyeight\.com/features/(?P<id>[^/?#]+)rk   Nr   r   r   r   rG  rG    s"        %GGUJLLLr   rG  c                   "    e Zd ZdZdZdZdZdZdS )FlexTVIEzyt_dlp.extractor.flextv	ttinglivezNhttps?://(?:www\.)?(?:ttinglive\.com|flextv\.co\.kr)/channels/(?P<id>\d+)/liveu   띵라이브 (formerly FlexTV)rk   Nr   r   r   r   rJ  rJ    s'        'GGfJ.GLLLr   rJ  c                       e Zd ZdZdZdZdZdS )FlickrIEzyt_dlp.extractor.flickrFlickrzDhttps?://(?:www\.|secure\.)?flickr\.com/photos/[\w\-_@]+/(?P<id>\d+)rk   Nr   r   r   r   rM  rM    "        'GG]JLLLr   rM  c                       e Zd ZdZdZdZdZdS )FloatplaneChannelIEyt_dlp.extractor.floatplaneFloatplaneChannelz`https?://(?:(?:www|beta)\.)?floatplane\.com/channel/(?P<id>[\w-]+)/home(?:/(?P<channel>[\w-]+))?rl   Nr   r   r   r   rQ  rQ    s"        +G!GwJLLLr   rQ  c                       e Zd ZdZdZdS )FloatplaneBaseIErR  FloatplaneBaseNr   r   r   r   rU  rU    r  r   rU  c                       e Zd ZdZdZdZdZdS )FloatplaneIErR  
Floatplanez<https?://(?:(?:www|beta)\.)?floatplane\.com/post/(?P<id>\w+)r   Nr   r   r   r   rX  rX    s"        +GGRJLLLr   rX  c                   "    e Zd ZdZdZdZdZdZdS )FolketingetIEzyt_dlp.extractor.folketingetFolketingetzChttps?://(?:www\.)?ft\.dk/webtv/video/[^?#]*?\.(?P<id>[0-9]+)\.aspxz&Folketinget (ft.dk; Danish parliament)rk   Nr   r   r   r   r[  r[    s'        ,GGZJ6GLLLr   r[  c                       e Zd ZdZdZdZdZdS )FoodNetworkIEr  FoodNetworkzAhttps?://(?:watch\.)?foodnetwork\.com/video/(?P<id>[^/]+/[^/?#]+)rk   Nr   r   r   r   r^  r^    s"        &GGVJLLLr   r^  c                       e Zd ZdZdZdZdZdS )FootyRoomIEzyt_dlp.extractor.footyroom	FootyRoomz+https?://footyroom\.com/matches/(?P<id>\d+)rl   Nr   r   r   r   ra  ra    s"        *GG@JLLLr   ra  c                       e Zd ZdZdZdZdZdS )
Formula1IEzyt_dlp.extractor.formula1Formula1zJhttps?://(?:www\.)?formula1\.com/en/latest/video\.[^.]+\.(?P<id>\d+)\.htmlrk   Nr   r   r   r   rd  rd    "        )GGcJLLLr   rd  c                       e Zd ZdZdZdS )FourTubeBaseIEyt_dlp.extractor.fourtubeFourTubeBaseNr   r   r   r   rh  rh    r  r   rh  c                   "    e Zd ZdZdZdZdZdZdS )
FourTubeIEri  4tubezdhttps?://(?:(?P<kind>www|m)\.)?4tube\.com/(?:videos|embed)/(?P<id>\d+)(?:/(?P<display_id>[^/?#&]+))?r   rk   Nr  r   r   r   rl  rl    s'        )GGzJILLLr   rl  c                       e Zd ZdZdZdZdZdS )FoxNewsArticleIEyt_dlp.extractor.foxnewszfoxnews:articlezKhttps?://(?:www\.)?(?:insider\.)?foxnews\.com/(?!v)([^/]+/)+(?P<id>[a-z-]+)rk   Nr   r   r   r   ro  ro    s"        (GGaJLLLr   ro  c                   "    e Zd ZdZdZdZdZdZdS )	FoxNewsIErp  foxnewszfhttps?://video\.(?:insider\.)?fox(?:news|business)\.com/v/(?:video-embed\.html\?video_id=)?(?P<id>\d+)zFox News and Fox Business Videork   Nr   r   r   r   rr  rr    s'        (GGJ/GLLLr   rr  c                       e Zd ZdZdZdZdZdS )FoxNewsVideoIErp  FoxNewsVideoz1https?://(?:www\.)?foxnews\.com/video/(?P<id>\d+)rk   Nr   r   r   r   ru  ru    s"        (GGGJLLLr   ru  c                       e Zd ZdZdZdZdZdS )FoxSportsIEzyt_dlp.extractor.foxsports	FoxSportsz6https?://(?:www\.)?foxsports\.com/watch/(?P<id>[\w-]+)rk   Nr   r   r   r   rx  rx  $  r  r   rx  c                   "    e Zd ZdZdZdZdZdZdS )	FptplayIEzyt_dlp.extractor.fptplayfptplayzXhttps?://fptplay\.vn/xem-video/[^/]+\-(?P<id>\w+)(?:/tap-(?P<episode>\d+)?/?(?:[?#]|$)|)z
fptplay.vnrk   Nr   r   r   r   r{  r{  +  s'        (GGoJGLLLr   r{  c                       e Zd ZdZdZdZdZdS )FrancaisFacileIEzyt_dlp.extractor.francaisfacileFrancaisFacilez]https?://francaisfacile\.rfi\.fr/[a-z]{2}/(?:actualit%C3%A9|podcasts/[^/#?]+)/(?P<id>[^/#?]+)rk   Nr   r   r   r   r~  r~  3  s"        /GGrJLLLr   r~  c                       e Zd ZdZdZdS )RadioFranceBaseIEyt_dlp.extractor.radiofranceRadioFranceBaseNr   r   r   r   r  r  :  r  r   r  c                       e Zd ZdZdZdZdZdS )FranceCultureIEr  FranceCulturez(?x)
        https?://(?:www\.)?radiofrance\.fr
        /(?:franceculture|franceinfo|franceinter|francemusique|fip|mouv)
        /podcasts/(?:[^?#]+/)?(?P<display_id>[^?#]+)-(?P<id>\d{6,})(?:$|[?#])
    rk   Nr   r   r   r   r  r  ?  s%        ,GG fJLLLr   r  c                       e Zd ZdZdZdZdZdS )FranceInterIEzyt_dlp.extractor.franceinterFranceInterz;https?://(?:www\.)?franceinter\.fr/emissions/(?P<id>[^?#]+)rk   Nr   r   r   r   r  r  F  s"        ,GGPJLLLr   r  c                       e Zd ZdZdZdZdZdS )
FranceTVIEyt_dlp.extractor.francetvfrancetvzfrancetv:(?P<id>[^@#]+)rk   Nr   r   r   r   r  r  M  s"        )GG*JLLLr   r  c                       e Zd ZdZdZdS )FranceTVBaseInfoExtractorr  FranceTVBaseInfoExtractNr   r   r   r   r  r  T  s        )G'GGGr   r  c                   "    e Zd ZdZdZdZdZdZdS )FranceTVInfoIEr  
franceinfoz\https?://(?:www|mobile|france3-regions)\.france(?:tv)?info.fr/(?:[^/?#]+/)*(?P<id>[^/?#&.]+)z(franceinfo.fr (formerly francetvinfo.fr)rk   Nr   r   r   r   r  r  Y  s'        )GGpJ8GLLLr   r  c                       e Zd ZdZdZdZdZdS )FranceTVSiteIEr  zfrancetv:sitezShttps?://(?:(?:www\.)?france\.tv|mobile\.france\.tv)/(?:[^/]+/)*(?P<id>[^/]+)\.htmlrk   Nr   r   r   r   r  r  a  s"        )GGkJLLLr   r  c                       e Zd ZdZdZdS )FreeTvBaseIEyt_dlp.extractor.freetv
FreeTvBaseNr   r   r   r   r  r  h  rW  r   r  c                       e Zd ZdZdZdZdZdS )FreeTvIEr  zfreetv:seriesz3https?://(?:www\.)?freetv\.com/series/(?P<id>[^/]+)rl   Nr   r   r   r   r  r  m  s"        'GGHJLLLr   r  c                       e Zd ZdZdZdZdZdS )FreeTvMoviesIEr  FreeTvMoviesz6https?://(?:www\.)?freetv\.com/peliculas/(?P<id>[^/]+)rk   Nr   r   r   r   r  r  t  s"        'GGKJLLLr   r  c                       e Zd ZdZdZdZdZdS )FreesoundIEzyt_dlp.extractor.freesound	FreesoundzChttps?://(?:www\.)?freesound\.org/people/[^/]+/sounds/(?P<id>[^/]+)rk   Nr   r   r   r   r  r  {  s"        *GGXJLLLr   r  c                       e Zd ZdZdZdZdZdS )FreespeechIEzyt_dlp.extractor.freespeechzfreespeech.orgz5https?://(?:www\.)?freespeech\.org/stories/(?P<id>.+)rk   Nr   r   r   r   r  r    s"        +GGJJLLLr   r  c                       e Zd ZdZdZdZdS )FrontendMastersBaseIE yt_dlp.extractor.frontendmastersFrontendMastersBasefrontendmastersNrz   r   r   r   r  r    r2  r   r  c                       e Zd ZdZdZdZdS )FrontendMastersPageBaseIEr  FrontendMastersPageBaser  Nrz   r   r   r   r  r    s        0G'G&NNNr   r  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )FrontendMastersCourseIEr  FrontendMastersCoursez=https?://(?:www\.)?frontendmasters\.com/courses/(?P<id>[^/]+)r  rl   c                     t                               |          rdn't          t          |                               |          S r   )FrontendMastersLessonIEr4   r   r  r   s     r   r4   z FrontendMastersCourseIE.suitable  s@    /88== 6uu5!3D( D((0	6r   r   r   r   r$   r`   r<   rY   rn   rq   r4   r   r   s   @r   r  r    s[        0G%GRJ&NL6 6 6 6 [6 6 6 6 6r   r  c                   "    e Zd ZdZdZdZdZdZdS )FrontendMastersIEr  FrontendMasterszW(?:frontendmasters:|https?://api\.frontendmasters\.com/v\d+/kabuki/video/)(?P<id>[^/]+)r  rk   Nr   r   r   r   r  r    s'        0GGmJ&NLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )r  r  FrontendMastersLessonz]https?://(?:www\.)?frontendmasters\.com/courses/(?P<course_name>[^/]+)/(?P<lesson_name>[^/]+)r  rk   Nr   r   r   r   r  r    s'        0G%GrJ&NLLLr   r  c                       e Zd ZdZdZdZdZdS )FujiTVFODPlus7IEzyt_dlp.extractor.fujitvFujiTVFODPlus7zIhttps?://fod\.fujitv\.co\.jp/title/(?P<sid>[0-9a-z]{4})/(?P<id>[0-9a-z]+)rk   Nr   r   r   r   r  r    s"        'GG_JLLLr   r  c                       e Zd ZdZdZdZdZdS )FunkIEzyt_dlp.extractor.funkFunkzphttps?://(?:(?:www|origin|play)\.)?funk\.net/(?:channel|playlist)/[^/?#]+/(?P<display_id>[0-9a-z-]+)-(?P<id>\d+)rk   Nr   r   r   r   r  r    s%        %GG GJLLLr   r  c                       e Zd ZdZdZdZdZdS )Funker530IEzyt_dlp.extractor.funker530	Funker530z7https?://(?:www\.)?funker530\.com/video/(?P<id>[^/?#]+)rk   Nr   r   r   r   r  r    r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )FuxIEri  Fuxzahttps?://(?:(?P<kind>www|m)\.)?fux\.com/(?:video|embed)/(?P<id>\d+)(?:/(?P<display_id>[^/?#&]+))?r   rk   Nr  r   r   r   r  r    s'        )GGwJILLLr   r  c                       e Zd ZdZdZdZdZdS )	FuyinTVIEzyt_dlp.extractor.fuyintvFuyinTVz;https?://(?:www\.)?fuyin\.tv/html/(?:\d+)/(?P<id>\d+)\.htmlrk   Nr   r   r   r   r  r    "        (GGSJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )GBNewsIEzyt_dlp.extractor.gbnewsGBNewsz=https?://(?:www\.)?gbnews\.(?:uk|com)/(?:\w+/)?(?P<id>[^#?]+)z(GB News clips, features and live streamsrk   Nr   r   r   r   r  r    s'        'GGSJ8GLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )
GDCVaultIEzyt_dlp.extractor.gdcvaultGDCVaultzGhttps?://(?:www\.)?gdcvault\.com/play/(?P<id>\d+)(?:/(?P<name>[\w-]+))?Fgdcvaultrk   Nr  r   r   r   r  r    s,        )GG^JHNLLLr   r  c                       e Zd ZdZdZdZdZdS )GMANetworkVideoIEzyt_dlp.extractor.gmanetworkGMANetworkVideozUhttps?://(?:www)\.gmanetwork\.com/(?:\w+/){3}(?P<id>\d+)/(?P<display_id>[\w-]+)/videork   Nr   r   r   r   r  r    s"        +GGmJLLLr   r  c                       e Zd ZdZdZdZdZdS )GPUTechConfIEzyt_dlp.extractor.gputechconfGPUTechConfzFhttps?://on-demand\.gputechconf\.com/gtc/2015/video/S(?P<id>\d+)\.htmlrk   Nr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdZdZdS )GabIEyt_dlp.extractor.gabGabz3https?://(?:www\.)?gab\.com/[^/]+/posts/(?P<id>\d+)rk   Nr   r   r   r   r  r    "        $GGIJLLLr   r  c                       e Zd ZdZdZdZdZdS )GabTVIEr  GabTVz;https?://tv\.gab\.com/channel/[^/]+/view/(?P<id>[a-z0-9-]+)rk   Nr   r   r   r   r  r    s"        $GGPJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )GaiaIEzyt_dlp.extractor.gaiaGaiazZhttps?://(?:www\.)?gaia\.com/video/(?P<id>[^/?]+).*?\bfullplayer=(?P<type>feature|preview)gaiark   Nr   r   r   r   r  r    s'        %GGpJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )GameDevTVDashboardIEzyt_dlp.extractor.gamedevtvGameDevTVDashboardz\https?://(?:www\.)?gamedev\.tv/dashboard/courses/(?P<course_id>\d+)(?:/(?P<lecture_id>\d+))?	gamedevtvr   Nr   r   r   r   r  r    s'        *G"GsJ NLLLr   r  c                       e Zd ZdZdZdS )GameJoltBaseIEyt_dlp.extractor.gamejoltGameJoltBaseNr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdS )GameJoltPostListBaseIEr  GameJoltPostListBaseNr   r   r   r   r  r            )G$GGGr   r  c                       e Zd ZdZdZdZdZdS )GameJoltCommunityIEr  GameJoltCommunityzhttps?://(?:www\.)?gamejolt\.com/c/(?P<id>(?P<community>[\w-]+)(?:/(?P<channel>[\w-]+))?)(?:(?:\?|\#!?)(?:.*?[&;])??sort=(?P<sort>\w+))?rl   Nr   r   r   r   r  r    s%        )G!G cJLLLr   r  c                       e Zd ZdZdZdZdZdS )GameJoltGameIEr  GameJoltGamez9https?://(?:www\.)?gamejolt\.com/games/[\w-]+/(?P<id>\d+)rl   Nr   r   r   r   r  r  $  s"        )GGPJLLLr   r  c                       e Zd ZdZdZdZdZdS )GameJoltGameSoundtrackIEr  GameJoltGameSoundtrackz\https?://(?:www\.)?gamejolt\.com/get/soundtrack(?:\?|\#!?)(?:.*?[&;])??game=(?P<id>(?:\d+)+)rl   Nr   r   r   r   r  r  +  s"        )G&GtJLLLr   r  c                       e Zd ZdZdZdZdZdS )
GameJoltIEr  GameJoltz<https?://(?:www\.)?gamejolt\.com/p/(?:[\w-]*-)?(?P<id>\w{8})r   Nr   r   r   r   r  r  2  s"        )GGSJLLLr   r  c                       e Zd ZdZdZdZdZdS )GameJoltSearchIEr  GameJoltSearchz}https?://(?:www\.)?gamejolt\.com/search(?:/(?P<filter>communities|users|games))?(?:\?|\#!?)(?:.*?[&;])??q=(?P<id>(?:[^&#]+)+)rl   Nr   r   r   r   r  r  9  s%        )GG UJLLLr   r  c                       e Zd ZdZdZdZdZdS )GameJoltUserIEr  GameJoltUserz0https?://(?:www\.)?gamejolt\.com/@(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  @  s"        )GGFJLLLr   r  c                       e Zd ZdZdZdZdZdS )
GameSpotIEzyt_dlp.extractor.gamespotGameSpotz[https?://(?:www\.)?gamespot\.com/(?:video|article|review)s/(?:[^/]+/\d+-|embed/)(?P<id>\d+)rk   Nr   r   r   r   r  r  G  "        )GGrJLLLr   r  c                       e Zd ZdZdZdZdZdS )
GameStarIEzyt_dlp.extractor.gamestarGameStarzLhttps?://(?:www\.)?game(?P<site>pro|star)\.de/videos/.*,(?P<id>[0-9]+)\.htmlrk   Nr   r   r   r   r  r  N  s"        )GGbJLLLr   r  c                       e Zd ZdZdZdZdZdS )
GaskrankIEzyt_dlp.extractor.gaskrankGaskrankzKhttps?://(?:www\.)?gaskrank\.tv/tv/(?P<categories>[^/]+)/(?P<id>[^/]+)\.htmrk   Nr   r   r   r   r  r  U  s"        )GGaJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )GazetaIEzyt_dlp.extractor.gazetaGazetazx(?P<url>https?://(?:www\.)?gazeta\.ru/(?:[^/]+/)?video/(?:main/)*(?:\d{4}/\d{2}/\d{2}/)?(?P<id>[A-Za-z0-9-_.]+)\.s?html)Frk   Nr  r   r   r   r	  r	  \  s*        'GG RJHLLLr   r	  c                       e Zd ZdZdZdZdZdS )GediDigitalIEzyt_dlp.extractor.gedidigitalGediDigitala  (?x:(?P<base_url>(?:https?:)//video\.
        (?:
            (?:
                (?:espresso\.)?repubblica
                |lastampa
                |ilsecoloxix
                |huffingtonpost
            )|
            (?:
                iltirreno
                |messaggeroveneto
                |ilpiccolo
                |gazzettadimantova
                |mattinopadova
                |laprovinciapavese
                |tribunatreviso
                |nuovavenezia
                |gazzettadimodena
                |lanuovaferrara
                |corrierealpi
                |lasentinella
            )\.gelocal
        )\.it(?:/[^/]+){2,4}/(?P<id>\d+))(?:$|[?&].*))rk   Nr   r   r   r   r  r  d  s%        ,GG VJLLLr   r  c                       e Zd ZdZdZdZdZdS )GeniusIEyt_dlp.extractor.geniusGeniuszHhttps?://(?:www\.)?genius\.com/(?:videos|(?P<article>a))/(?P<id>[^?/#]+)rk   Nr   r   r   r   r  r  k  rO  r   r  c                       e Zd ZdZdZdZdZdS )GeniusLyricsIEr  GeniusLyricsz@https?://(?:www\.)?genius\.com/(?P<id>[^?/#]+)-lyrics(?:[?/#]|$)rl   Nr   r   r   r   r  r  r  s"        'GGUJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )GermanupaIEzyt_dlp.extractor.germanupa	Germanupaz/https?://germanupa\.de/mediathek/(?P<id>[\w-]+)zgermanupa.derk   Nr   r   r   r   r  r  y  s'        *GGDJGLLLr   r  c                   &    e Zd ZdZdZddgZdZdZdS )GetCourseRuIEyt_dlp.extractor.getcourseruGetCourseRuzhttps?://(?:(?!player02\.)[^.]+\.getcourse\.(?:ru|io)|academymel\.online|marafon\.mani\-beauty\.com|on\.psbook\.ru)/(?!pl/|teach/)(?P<id>[^?#]+)zhttps?://(?:(?!player02\.)[^.]+\.getcourse\.(?:ru|io)|academymel\.online|marafon\.mani\-beauty\.com|on\.psbook\.ru)/(?:pl/)?teach/control/lesson/view\?(?:[^#]+&)?id=(?P<id>\d+)getcourserurl   Nr   r   r   r   r  r    s7        ,GG n  pm  nJ"NLLLr   r  c                       e Zd ZdZdZdZdZdS )GetCourseRuPlayerIEr  GetCourseRuPlayerz_https?://(?:player02\.getcourse\.ru|cf-api-2\.vhcdn\.com)/sign-player/?\?(?:[^#]+&)?json=[^#&]+rk   Nr   r   r   r   r  r    s"        ,G!GwJLLLr   r  c                       e Zd ZdZdZdS )GettrBaseIEyt_dlp.extractor.gettr	GettrBaseNr   r   r   r   r!  r!    r   r   r!  c                       e Zd ZdZdZdZdZdS )GettrIEr"  Gettrz2https?://(www\.)?gettr\.com/post/(?P<id>[a-z0-9]+)rk   Nr   r   r   r   r%  r%    "        &GGGJLLLr   r%  c                       e Zd ZdZdZdZdZdS )GettrStreamingIEr"  GettrStreamingz7https?://(www\.)?gettr\.com/streaming/(?P<id>[a-z0-9]+)rk   Nr   r   r   r   r)  r)    s"        &GGLJLLLr   r)  c                       e Zd ZdZdZdZdZdS )GiantBombIEzyt_dlp.extractor.giantbomb	GiantBombzXhttps?://(?:www\.)?giantbomb\.com/(?:videos|shows)/(?P<display_id>[^/]+)/(?P<id>\d+-\d+)rk   Nr   r   r   r   r,  r,    s"        *GGoJLLLr   r,  c                       e Zd ZdZdZdZdS )GlattvisionTVBaseIErt  GlattvisionTVBaseglattvisiontvNrz   r   r   r   r/  r/    s        'G!G$NNNr   r/  c                       e Zd ZdZdZdZdZdS )GlattvisionTVIErt  GlattvisionTVz(?x)https?://(?:www\.)?iptv\.glattvision\.ch/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r1  Nr  r   r   r   r3  r3    s%        'GG sJ$NNNr   r3  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )GlattvisionTVLiveIErt  GlattvisionTVLivez(?x)https?://(?:www\.)?iptv\.glattvision\.ch/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r1  c                 ~    t                               |          rdn t                                          |          S r   )r3  r4   r   r   s     r   r4   zGlattvisionTVLiveIE.suitable  r  r   r  r   s   @r   r6  r6    sb        'G!G hJ$NQ Q Q Q [Q Q Q Q Qr   r6  c                       e Zd ZdZdZdZdZdS )GlattvisionTVRecordingsIErt  GlattvisionTVRecordingsz|(?x)https?://(?:www\.)?iptv\.glattvision\.ch/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r1  Nr  r   r   r   r:  r:    s%        'G'G XJ$NNNr   r:  c                   "    e Zd ZdZdZdZdZdZdS )GlideIEzyt_dlp.extractor.glideGlidez3https?://share\.glide\.me/(?P<id>[A-Za-z0-9\-=_+]+)z&Glide mobile video messages (glide.me)rk   Nr   r   r   r   r=  r=    s'        &GGIJ6GLLLr   r=  c                       e Zd ZdZdZdS )GlobalPlayerBaseIEyt_dlp.extractor.globalplayerGlobalPlayerBaseNr   r   r   r   r@  r@    r  r   r@  c                       e Zd ZdZdZdZdZdS )GlobalPlayerAudioEpisodeIErA  GlobalPlayerAudioEpisodezjhttps?://www\.globalplayer\.com/(?:(?P<podcast>podcasts)|catchup/\w+/\w+)/episodes/(?P<id>\w+)/?(?:$|[?#])rk   Nr   r   r   r   rD  rD    s%        -G(G CJLLLr   rD  c                       e Zd ZdZdZdZdZdS )GlobalPlayerAudioIErA  GlobalPlayerAudiozbhttps?://www\.globalplayer\.com/(?:(?P<podcast>podcasts)/|catchup/\w+/\w+/)(?P<id>\w+)/?(?:$|[?#])rl   Nr   r   r   r   rG  rG    s"        -G!GzJLLLr   rG  c                       e Zd ZdZdZdZdZdS )GlobalPlayerLiveIErA  GlobalPlayerLivez4https?://www\.globalplayer\.com/live/(?P<id>\w+)/\w+rk   Nr   r   r   r   rJ  rJ    s"        -G GKJLLLr   rJ  c                       e Zd ZdZdZdZdZdS )GlobalPlayerLivePlaylistIErA  GlobalPlayerLivePlaylistz5https?://www\.globalplayer\.com/playlists/(?P<id>\w+)rk   Nr   r   r   r   rM  rM    s"        -G(GKJLLLr   rM  c                       e Zd ZdZdZdZdZdS )GlobalPlayerVideoIErA  GlobalPlayerVideoz2https?://www\.globalplayer\.com/videos/(?P<id>\w+)rk   Nr   r   r   r   rP  rP    s"        -G!GHJLLLr   rP  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )GloboArticleIEyt_dlp.extractor.globoGloboArticlezNhttps?://(?!globoplay).+?\.globo\.com/(?:[^/?#]+/)*(?P<id>[^/?#.]+)(?:\.html)?rl   c                 ~    t                               |          rdn t                                          |          S r   )GloboIEr4   r   r   s     r   r4   zGloboArticleIE.suitable  r   r   r   r   s   @r   rS  rS    s_        &GGdJLI I I I [I I I I Ir   rS  c                   "    e Zd ZdZdZdZdZdZdS )rW  rT  GlobozC(?:globo:|https?://[^/?#]+?\.globo\.com/(?:[^/?#]+/))(?P<id>\d{7,})globork   Nr   r   r   r   rW  rW    s'        &GGYJNLLLr   rW  c                       e Zd ZdZdZdS )GlomexBaseIEyt_dlp.extractor.glomex
GlomexBaseNr   r   r   r   r\  r\    rW  r   r\  c                   "    e Zd ZdZdZdZdZdZdS )GlomexEmbedIEr]  zglomex:embedzfhttps?://player\.glomex\.com/integration/[^/]/iframe\-player\.html\?([^#]+&)?playlistId=(?P<id>[^#&]+)zGlomex embedded videosr   Nr   r   r   r   r`  r`    s'        'GG~J&GLLLr   r`  c                   "    e Zd ZdZdZdZdZdZdS )GlomexIEr]  glomexz1https?://video\.glomex\.com/[^/]+/(?P<id>v-[^-]+)zGlomex videosrk   Nr   r   r   r   rb  rb    s'        'GGFJGLLLr   rb  c                       e Zd ZdZdZdZdZdS )GoDiscoveryIEr  GoDiscoveryz<https?://(?:go\.)?discovery\.com/video/(?P<id>[^/]+/[^/?#]+)rk   Nr   r   r   r   re  re  !  s"        &GGQJLLLr   re  c                   &    e Zd ZdZdZg dZdZdZdS )GoIEzyt_dlp.extractor.goGo)z|https?://(?:www\.)?(?P<site>abc)\.com/(?:video|episode|movies-and-specials)/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})zhttps?://(?:www\.)?(?P<site>freeform)\.com/(?:video|episode|movies-and-specials)/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})zhttps?://(?:www\.)?(?P<site>disneynow)\.com/(?:video|episode|movies-and-specials)/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})zhttps?://fxnow\.(?P<site>fxnetworks)\.com/(?:video|episode|movies-and-specials)/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})zhttps?://(?:www\.)?(?P<site>nationalgeographic)\.com/tv/(?:video|episode|movies-and-specials)/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})ro  rk   Nr  r   r   r   rh  rh  (  s6        #GG L  L  LJILLLr   rh  c                   &    e Zd ZdZdZdZdZdZdZdS )GoPlayIEzyt_dlp.extractor.goplayzplay.tvzAhttps?://(www\.)?play\.tv/video/([^/?#]+/[^/?#]+/|)(?P<id>[^/#]+)zPLAY (formerly goplay.be)goplayrk   Nr   r   r   r   rk  rk  0  s,        'GGVJ)GNLLLr   rk  c                       e Zd ZdZdZdZdZdS )GoProIEzyt_dlp.extractor.goproGoProz2https?://(www\.)?gopro\.com/v/(?P<id>[A-Za-z0-9]+)rk   Nr   r   r   r   rn  rn  9  r'  r   rn  c                       e Zd ZdZdZdZdZdS )GoToStageIEzyt_dlp.extractor.gotostage	GoToStagezUhttps?://(?:www\.)?gotostage\.com/channel/[a-z0-9]+/recording/(?P<id>[a-z0-9]+)/watchrk   Nr   r   r   r   rq  rq  @  s"        *GGjJLLLr   rq  c                       e Zd ZdZdZdZdZdS )GodResourceIEzyt_dlp.extractor.godresourceGodResourcez0https?://new\.godresource\.com/video/(?P<id>\w+)rk   Nr   r   r   r   rt  rt  G  s"        ,GGFJLLLr   rt  c                   "    e Zd ZdZdZdZdZdZdS )	GodTubeIEzyt_dlp.extractor.godtubeGodTubez=https?://(?:www\.)?godtube\.com/watch/\?v=(?P<id>[\da-zA-Z]+)Frk   Nr  r   r   r   rw  rw  N  '        (GGTJHLLLr   rw  c                       e Zd ZdZdZdZdZdS )GofileIEzyt_dlp.extractor.gofileGofilez-https?://(?:www\.)?gofile\.io/d/(?P<id>[^/]+)rl   Nr   r   r   r   r{  r{  V  s"        'GGBJLLLr   r{  c                       e Zd ZdZdZdZdZdS )GolemIEzyt_dlp.extractor.golemGolemz*https?://video\.golem\.de/.+?/(?P<id>.+?)/rk   Nr   r   r   r   r~  r~  ]  s"        &GG?JLLLr   r~  c                   "    e Zd ZdZdZdZdZdZdS )
GoodGameIEzyt_dlp.extractor.goodgamezgoodgame:streamz2https?://goodgame\.ru/(?!channel/)(?P<id>[\w.*-]+)r   rk   Nr  r   r   r   r  r  d  s'        )GGGJILLLr   r  c                       e Zd ZdZdZdZdZdS )GoogleDriveFolderIEyt_dlp.extractor.googledrivezGoogleDrive:FolderzEhttps?://(?:docs|drive)\.google\.com/drive/folders/(?P<id>[\w-]{28,})rl   Nr   r   r   r   r  r  l  s"        ,G"G[JLLLr   r  c                       e Zd ZdZdZdZdZdS )GoogleDriveIEr  GoogleDrivea  (?x)
                        https?://
                            (?:
                                (?:docs|drive|drive\.usercontent)\.google\.com/
                                (?:
                                    (?:uc|open|download)\?.*?id=|
                                    file/d/
                                )|
                                video\.google\.com/get_player\?.*?docid=
                            )
                            (?P<id>[a-zA-Z0-9_-]{28,})
                    rk   Nr   r   r   r   r  r  s  s%        ,GG dJLLLr   r  c                       e Zd ZdZdZdS )GooglePodcastsBaseIEyt_dlp.extractor.googlepodcastsGooglePodcastsBaseNr   r   r   r   r  r  z  s        /G"GGGr   r  c                       e Zd ZdZdZdZdZdS )GooglePodcastsFeedIEr  zgoogle:podcasts:feedzAhttps?://podcasts\.google\.com/feed/(?P<id>[^/?&#]+)/?(?:[?#&]|$)rl   Nr   r   r   r   r  r    s"        /G$GVJLLLr   r  c                       e Zd ZdZdZdZdZdS )GooglePodcastsIEr  zgoogle:podcastszPhttps?://podcasts\.google\.com/feed/(?P<feed_url>[^/]+)/episode/(?P<id>[^/?&#]+)rk   Nr   r   r   r   r  r    s"        /GGeJLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )GoogleSearchIEzyt_dlp.extractor.googlesearchzvideo.google:searchz7gvsearch(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zGoogle Video searchgvsearchrl   Nr  r   r   r   r  r    s,        -G#GLJ#GJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	GoshgayIEzyt_dlp.extractor.goshgayGoshgayz6https?://(?:www\.)?goshgay\.com/video(?P<id>\d+?)($|/)r   rk   Nr  r   r   r   r  r    s'        (GGLJILLLr   r  c                       e Zd ZdZdZdZdZdS )	GraspopIEzyt_dlp.extractor.graspopGraspopz/https?://vod\.graspop\.be/[a-z]{2}/(?P<id>\d+)/rk   Nr   r   r   r   r  r    s"        (GGEJLLLr   r  c                       e Zd ZdZdZdZdZdS )GronkhFeedIEyt_dlp.extractor.gronkhzgronkh:feedz0https?://(?:www\.)?gronkh\.tv(?:/feed)?/?(?:#|$)rl   Nr   r   r   r   r  r    s"        'GGEJLLLr   r  c                       e Zd ZdZdZdZdZdS )GronkhIEr  Gronkhz=https?://(?:www\.)?gronkh\.tv/(?:watch/)?streams?/(?P<id>\d+)rk   Nr   r   r   r   r  r    "        'GGSJLLLr   r  c                       e Zd ZdZdZdZdZdS )GronkhVodsIEr  zgronkh:vodsz3https?://(?:www\.)?gronkh\.tv/vods/streams/?(?:#|$)rl   Nr   r   r   r   r  r    s"        'GGHJLLLr   r  c                       e Zd ZdZdZdZdZdS )	GrouponIEzyt_dlp.extractor.grouponGrouponz6https?://(?:www\.)?groupon\.com/deals/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r    s"        (GGKJLLLr   r  c                       e Zd ZdZdZdZdZdS )HBOIEr  hbozFhttps?://(?:www\.)?hbo\.com/(?:video|embed)(?:/[^/]+)*/(?P<id>[^/?#]+)rk   Nr   r   r   r   r  r    s"        $GG[JLLLr   r  c                       e Zd ZdZdZdZdZdS )HGTVComShowIEzyt_dlp.extractor.hgtvzhgtv.com:showz9https?://(?:www\.)?hgtv\.com/shows/[^/]+/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r    s"        %GGNJLLLr   r  c                       e Zd ZdZdZdZdZdS )HGTVDeIEr  HGTVDez6https?://de\.hgtv\.com/sendungen/(?P<id>[^/]+/[^/?#]+)rk   Nr   r   r   r   r  r    s"        &GGKJLLLr   r  c                       e Zd ZdZdZdZdZdS )	HGTVUsaIEr  HGTVUsaz:https?://(?:watch\.)?hgtv\.com/video/(?P<id>[^/]+/[^/?#]+)rk   Nr   r   r   r   r  r    s"        &GGOJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )HKETVIEzyt_dlp.extractor.hketvhketvz<https?://(?:www\.)?hkedcity\.net/etv/resource/(?P<id>[0-9]+)uX   香港教育局教育電視 (HKETV) Educational Television, Hong Kong Educational Bureaurk   Nr   r   r   r   r  r    s'        &GGQJhGLLLr   r  c                       e Zd ZdZdZdZdZdS )HRFernsehenIEzyt_dlp.extractor.hrfensehenhrfernsehenzNhttps?://www\.(?:hr-fernsehen|hessenschau)\.de/.*,video-(?P<id>[0-9]{6})\.htmlrk   Nr   r   r   r   r  r    s"        +GGdJLLLr   r  c                       e Zd ZdZdZdZdS )
HRTiBaseIEyt_dlp.extractor.hrtiHRTiBasehrtiNrz   r   r   r   r  r    s        %GGNNNr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )HRTiIEr  HRTia  (?x)
                        (?:
                            hrti:(?P<short_id>[0-9]+)|
                            https?://
                                hrti\.hrt\.hr/(?:\#/)?video/show/(?P<id>[0-9]+)/(?P<display_id>[^/]+)?
                        )
                    r     rk   Nr  r   r   r   r  r    s/        %GG pJNILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )HRTiPlaylistIEr  HRTiPlaylistzWhttps?://hrti\.hrt\.hr/(?:#/)?video/list/category/(?P<id>[0-9]+)/(?P<display_id>[^/]+)?r  rl   Nr   r   r   r   r  r    s'        %GGlJNLLLr   r  c                       e Zd ZdZdZdS )HSEShowBaseIEyt_dlp.extractor.hseHSEShowBaseNr   r   r   r   r  r    s        $GGGGr   r  c                       e Zd ZdZdZdZdZdS )HSEProductIEr  
HSEProductz7https?://(?:www\.)?hse\.de/dpl/p/product/(?P<id>[0-9]+)rk   Nr   r   r   r   r  r    s"        $GGLJLLLr   r  c                       e Zd ZdZdZdZdZdS )	HSEShowIEr  HSEShowz8https?://(?:www\.)?hse\.de/dpl/c/tv-shows/(?P<id>[0-9]+)rk   Nr   r   r   r   r  r    s"        $GGMJLLLr   r  c                       e Zd ZdZdZdZdS )HTML5MediaEmbedIEyt_dlp.extractor.genericembedshtml5FNr  r   r   r   r  r    s        .GGJJJr   r  c                       e Zd ZdZdZdZdZdS )HarpodeonIEzyt_dlp.extractor.harpodeon	HarpodeonzChttps?://(?:www\.)?harpodeon\.com/(?:video|preview)/\w+/(?P<id>\d+)rk   Nr   r   r   r   r  r    s"        *GGZJLLLr   r  c                       e Zd ZdZdZdZdZdS )HearThisAtIEzyt_dlp.extractor.hearthisat
HearThisAtzFhttps?://(?:www\.)?hearthis\.at/(?P<artist>[^/?#]+)/(?P<title>[\w.-]+)rk   Nr   r   r   r   r  r  #  s"        +GG\JLLLr   r  c                       e Zd ZdZdZdZdZdS )HeiseIEzyt_dlp.extractor.heiseHeisezBhttps?://(?:www\.)?heise\.de/(?:[^/]+/)+[^/]+-(?P<id>[0-9]+)\.htmlrk   Nr   r   r   r   r  r  *  s"        &GGXJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )HellPornoIEzyt_dlp.extractor.hellporno	HellPornoz@https?://(?:www\.)?hellporno\.(?:com/videos|net/v)/(?P<id>[^/]+)r   rk   Nr  r   r   r   r  r  1  s'        *GGUJILLLr   r  c                       e Zd ZdZdZdS )NPODataMidEmbedIEyt_dlp.extractor.npoNPODataMidEmbedNr   r   r   r   r  r  9  r  r   r  c                       e Zd ZdZdZdZdZdS )HetKlokhuisIEr  hetklokhuisz=https?://(?:www\.)?hetklokhuis\.nl/[^/]+/\d+/(?P<id>[^/?#&]+)rk   Nr   r   r   r   r  r  >  s"        $GGSJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )HiDiveIEzyt_dlp.extractor.hidiveHiDivezPhttps?://(?:www\.)?hidive\.com/stream/(?P<id>(?P<title>[^/]+)/(?P<key>[^/?#&]+))hidiverk   Nr   r   r   r   r  r  E  s'        'GGeJNLLLr   r  c                       e Zd ZdZdZdZdZdS )HistoricFilmsIEzyt_dlp.extractor.historicfilmsHistoricFilmsz@https?://(?:www\.)?historicfilms\.com/(?:tapes/|play)(?P<id>\d+)rk   Nr   r   r   r   r  r  M  s"        .GGVJLLLr   r  c                       e Zd ZdZdZdZdZdS )HitRecordIEzyt_dlp.extractor.hitrecord	HitRecordz5https?://(?:www\.)?hitrecord\.org/records/(?P<id>\d+)rk   Nr   r   r   r   r  r  T  s"        *GGKJLLLr   r  c                       e Zd ZdZdZdZdZdS )HollywoodReporterIE"yt_dlp.extractor.hollywoodreporterHollywoodReporterz>https?://(?:www\.)?hollywoodreporter\.com/video/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  [  s"        2G!GTJLLLr   r  c                       e Zd ZdZdZdZdZdS )HollywoodReporterPlaylistIEr  HollywoodReporterPlaylistzPhttps?://(?:www\.)?hollywoodreporter\.com/vcategory/(?P<slug>[\w-]+)-(?P<id>\d+)rl   Nr   r   r   r   r  r  b  s"        2G)GgJLLLr   r  c                       e Zd ZdZdZdZdZdS )	HolodexIEzyt_dlp.extractor.holodexHolodexz(?x)https?://(?:www\.|staging\.)?holodex\.net/(?:
            api/v2/playlist/(?P<playlist>\d+)|
            watch/(?P<id>[\w-]{11})(?:\?(?:[^#]+&)?playlist=(?P<playlist2>\d+))?
        )r   Nr   r   r   r   r  r  i  s%        (GG YJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )HotNewHipHopIEzyt_dlp.extractor.hotnewhiphopHotNewHipHopz9https?://(?:www\.)?hotnewhiphop\.com/.*\.(?P<id>.*)\.htmlFrk   Nr  r   r   r   r  r  p  s'        -GGPJHLLLr   r  c                       e Zd ZdZdZdS )HotStarBaseIEyt_dlp.extractor.hotstarHotStarBaseNr   r   r   r   r  r  x  r   r   r  c                   "    e Zd ZdZdZdZdZdZdS )	HotStarIEr  hotstarz(?x)
        https?://(?:www\.)?hotstar\.com(?:/in)?/(?!in/)
        (?:
            (?P<type>movies|sports|clips|episode|(?P<tv>tv|shows))/
            (?(tv)(?:[^/?#]+/){2}|[^?#]*)
        )?
        [^/?#]+/
        (?P<id>\d{10})
    
JioHotstarrk   Nr   r   r   r   r  r  }  s*        (GG MJGLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )HotStarPrefixIEr  HotStarPrefixz'hotstar:(?:(?P<type>\w+):)?(?P<id>\d+)$Frk   Nr   r   r   r   r	  r	    s'        (GG<JGLLLr   r	  c                       e Zd ZdZdZdZdZdS )HotStarSeriesIEr  zhotstar:seriesz[(?P<url>https?://(?:www\.)?hotstar\.com(?:/in)?/(?:tv|shows)/[^/]+/(?P<id>\d+))/?(?:[#?]|$)rl   Nr   r   r   r   r	  r	    s"        (GGqJLLLr   r	  c                       e Zd ZdZdZdZdZdS )HrefLiRedirectIEzyt_dlp.extractor.hreflizhref.lizhttps?://href\.li/\?(?P<url>.+)FNrV  r   r   r   r	  r	    s"        'GG4JGGGr   r	  c                   "    e Zd ZdZdZdZdZdZdS )	HuajiaoIEzyt_dlp.extractor.huajiaoHuajiaoz0https?://(?:www\.)?huajiao\.com/l/(?P<id>[0-9]+)u   花椒直播rk   Nr   r   r   r   r
	  r
	    s'        (GGEJGLLLr   r
	  c                   "    e Zd ZdZdZdZdZdZdS )
HuffPostIEzyt_dlp.extractor.huffpostHuffPostz(?x)
        https?://(embed\.)?live\.huffingtonpost\.com/
        (?:
            r/segment/[^/]+/|
            HPLEmbedPlayer/\?segmentId=
        )
        (?P<id>[0-9a-f]+)zHuffington Postrk   Nr   r   r   r   r	  r	    s*        )GG NJGLLLr   r	  c                       e Zd ZdZdZdS )HungamaBaseIEyt_dlp.extractor.hungamaHungamaBaseNr   r   r   r   r	  r	    r   r   r	  c                       e Zd ZdZdZdZdZdS )HungamaAlbumPlaylistIEr	  HungamaAlbumPlaylistzPhttps?://(?:www\.|un\.)?hungama\.com/(?P<path>playlists|album)/[^/]+/(?P<id>\d+)rl   Nr   r   r   r   r	  r	    s"        (G$GgJLLLr   r	  c                       e Zd ZdZdZdZdZdS )	HungamaIEr	  HungamaaI  (?x)
                    https?://
                        (?:www\.|un\.)?hungama\.com/
                        (?:
                            (?:video|movie|short-film)/[^/]+/|
                            tv-show/(?:[^/]+/){2}\d+/episode/[^/]+/
                        )
                        (?P<id>\d+)
                    rk   Nr   r   r   r   r	  r	    s%        (GG jJLLLr   r	  c                       e Zd ZdZdZdZdZdS )HungamaSongIEr	  HungamaSongz;https?://(?:www\.|un\.)?hungama\.com/song/[^/]+/(?P<id>\d+)rk   Nr   r   r   r   r	  r	    s"        (GGRJLLLr   r	  c                   "    e Zd ZdZdZdZdZdZdS )
HuyaLiveIEyt_dlp.extractor.huyaz	huya:livezLhttps?://(?:www\.|m\.)?huya\.com/(?!(?:video/play/))(?P<id>[^/#?&]+)(?:\D|$)u   虎牙直播rk   Nr   r   r   r   r	  r	    s'        %GGcJGLLLr   r	  c                   "    e Zd ZdZdZdZdZdZdS )HuyaVideoIEr	  z
huya:videoz9https?://(?:www\.)?huya\.com/video/play/(?P<id>\d+)\.htmlu   虎牙视频rk   Nr   r   r   r   r 	  r 	    s'        %GGPJGLLLr   r 	  c                       e Zd ZdZdZdZdZdS )HypemIEzyt_dlp.extractor.hypemHypemz7https?://(?:www\.)?hypem\.com/track/(?P<id>[0-9a-z]{5})rk   Nr   r   r   r   r"	  r"	    r  r   r"	  c                       e Zd ZdZdZdZdZdS )HytaleIEzyt_dlp.extractor.hytaleHytalez>https?://(?:www\.)?hytale\.com/news/\d+/\d+/(?P<id>[a-z0-9-]+)rl   Nr   r   r   r   r%	  r%	    "        'GGUJLLLr   r%	  c                       e Zd ZdZdZdS )	IGNBaseIEyt_dlp.extractor.ignIGNBaseNr   r   r   r   r)	  r)	    r  r   r)	  c                       e Zd ZdZdZdZdZdS )IGNArticleIEr*	  
IGNArticlezrhttps?://.+?\.ign\.com/(?:articles(?:/\d{4}/\d{2}/\d{2})?|(?:[a-z]{2}/)?(?:[\w-]+/)*?feature/\d+)/(?P<id>[^/?&#]+)rl   Nr   r   r   r   r-	  r-	    s%        $GG MJLLLr   r-	  c                       e Zd ZdZdZdZdZdS )IGNIEr*	  zign.comzyhttps?://(?:.+?\.ign|www\.pcmag)\.com/videos(?:/(?:\d{4}/\d{2}/\d{2}/)?(?P<id>.+?)(?:[/?&#]|$)|(?:/?\?(?P<filt>[^&#]+))?)rk   Nr   r   r   r   r0	  r0	    s%        $GG TJLLLr   r0	  c                       e Zd ZdZdZdZdZdS )
IGNVideoIEr*	  IGNVideozIhttps?://.+?\.ign\.com/(?:[a-z]{2}/)?[^/]+/(?P<id>\d+)/(?:video|trailer)/rk   Nr   r   r   r   r2	  r2	    "        $GG_JLLLr   r2	  c                       e Zd ZdZdZdS )IHeartRadioBaseIEyt_dlp.extractor.iheartIHeartRadioBaseNr   r   r   r   r6	  r6	    s        'GGGGr   r6	  c                       e Zd ZdZdZdZdZdS )IHeartRadioIEr7	  iheartradiozj(?:https?://(?:www\.)?iheart\.com/podcast/[^/]+/episode/(?P<display_id>[^/?&#]+)-|iheartradio:)(?P<id>\d+)rk   Nr   r   r   r   r:	  r:	    s%        'GG AJLLLr   r:	  c                       e Zd ZdZdZdZdZdS )IHeartRadioPodcastIEr7	  ziheartradio:podcastz[https?://(?:www\.)?iheart(?:podcastnetwork)?\.com/podcast/[^/?&#]+-(?P<id>\d+)/?(?:[?#&]|$)rl   Nr   r   r   r   r=	  r=	  	  s"        'G#GqJLLLr   r=	  c                       e Zd ZdZdZdZdZdS )IPrimaCNNIEyt_dlp.extractor.iprima	IPrimaCNNz4https?://cnn\.iprima\.cz/(?:[^/]+/)*(?P<id>[^/?#&]+)rk   Nr   r   r   r   r?	  r?	    s"        'GGIJLLLr   r?	  c                   "    e Zd ZdZdZdZdZdZdS )IPrimaIEr@	  IPrimazAhttps?://(?!cnn)(?:[^/]+)\.iprima\.cz/(?:[^/]+/)*(?P<id>[^/?#&]+)iprimark   Nr   r   r   r   rC	  rC	    '        'GGVJNLLLr   rC	  c                       e Zd ZdZdZdS )ITProTVBaseIEyt_dlp.extractor.itprotvITProTVBaseNr   r   r   r   rH	  rH	    r   r   rH	  c                       e Zd ZdZdZdZdZdS )ITProTVCourseIErI	  ITProTVCoursez9https?://app\.itpro\.tv/course/(?P<id>[\w-]+)/?(?:$|[#?])rl   Nr   r   r   r   rL	  rL	  $  s"        (GGOJLLLr   rL	  c                       e Zd ZdZdZdZdZdS )	ITProTVIErI	  ITProTVz@https?://app\.itpro\.tv/course/(?P<course>[\w-]+)/(?P<id>[\w-]+)rk   Nr   r   r   r   rO	  rO	  +  "        (GGWJLLLr   rO	  c                       e Zd ZdZdZdZdZdS )	ITVBTCCIEyt_dlp.extractor.itvITVBTCCzEhttps?://(?:www\.)?itv\.com/(?:news|btcc)/(?:[^/]+/)*(?P<id>[^/?#&]+)rl   Nr   r   r   r   rS	  rS	  2  s"        $GGZJLLLr   rS	  c                       e Zd ZdZdZdZdZdS )ITVIErT	  ITVz:https?://(?:www\.)?itv\.com/hub/[^/]+/(?P<id>[0-9a-zA-Z]+)rk   Nr   r   r   r   rW	  rW	  9  s"        $GGOJLLLr   rW	  c                       e Zd ZdZdZdZdZdS )IVXPlayerIEyt_dlp.extractor.tempo	IVXPlayerz/ivxplayer:(?P<video_id>\d+):(?P<player_key>\w+)rk   Nr   r   r   r   rZ	  rZ	  @  s"        &GGDJLLLr   rZ	  c                       e Zd ZdZdZdZdZdS )	IcareusIEzyt_dlp.extractor.icareusIcareusz(?P<base_url>https?://(?:www\.)?(?:asahitv\.fi|helsinkikanava\.fi|hyvinvointitv\.fi|inez\.fi|permanto\.fi|suite\.icareus\.com|videos\.minifiddlers\.org))/[^?#]+/player/[^?#]+\?(?:[^#]+&)?(?:assetId|eventId)=(?P<id>\d+)rk   Nr   r   r   r   r^	  r^	  G  s%        (GG zJLLLr   r^	  c                       e Zd ZdZdZdZdZdS )IchinanaLiveClipIEyt_dlp.extractor.ichinanalivez17live:clipzXhttps?://(?:www\.)?17\.live/(?:[^/]+/)*profile/r/(?P<uploader_id>\d+)/clip/(?P<id>[^/]+)rk   Nr   r   r   r   ra	  ra	  N  s"        -GGnJLLLr   ra	  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )IchinanaLiveIErb	  17livezEhttps?://(?:www\.)?17\.live/(?:[^/]+/)*(?:live|profile/r)/(?P<id>\d+)rk   c                 |    t                               |           o t                                          |          S r'   )ra	  r4   r   r   s     r   r4   zIchinanaLiveIE.suitable[  s1    %..s333M8H8H8M8MMr   r   r   s   @r   rd	  rd	  U  s_        -GG[JLN N N N [N N N N Nr   rd	  c                       e Zd ZdZdZdZdZdS )IchinanaLiveVODIErb	  z
17live:vodz:https?://(?:www\.)?17\.live/ja/vod/[^/?#]+/(?P<id>[^/?#]+)rk   Nr   r   r   r   rh	  rh	  `  s"        -GGOJLLLr   rh	  c                       e Zd ZdZdZdS )IdagioPlaylistBaseIEyt_dlp.extractor.idagioIdagioPlaylistBaseNr   r   r   r   rj	  rj	  g  rv  r   rj	  c                       e Zd ZdZdZdZdZdS )IdagioAlbumIErk	  IdagioAlbumzGhttps?://(?:www\.)?app\.idagio\.com(?:/[a-z]{2})?/albums/(?P<id>[\w-]+)rl   Nr   r   r   r   rn	  rn	  l  s"        'GG^JLLLr   rn	  c                       e Zd ZdZdZdZdZdS )IdagioPersonalPlaylistIErk	  IdagioPersonalPlaylistzVhttps?://(?:www\.)?app\.idagio\.com(?:/[a-z]{2})?/playlists/personal/(?P<id>[\da-f-]+)rl   Nr   r   r   r   rq	  rq	  s  s"        'G&GmJLLLr   rq	  c                       e Zd ZdZdZdZdZdS )IdagioPlaylistIErk	  IdagioPlaylistzWhttps?://(?:www\.)?app\.idagio\.com(?:/[a-z]{2})?/playlists/(?!personal/)(?P<id>[\w-]+)rl   Nr   r   r   r   rt	  rt	  z  s"        'GGnJLLLr   rt	  c                       e Zd ZdZdZdZdZdS )IdagioRecordingIErk	  IdagioRecordingz`https?://(?:www\.)?app\.idagio\.com(?:/[a-z]{2})?/recordings/(?P<id>\d+)(?![^#]*[&?]trackId=\d+)rl   Nr   r   r   r   rw	  rw	    s"        'GGxJLLLr   rw	  c                       e Zd ZdZdZdZdZdS )IdagioTrackIErk	  IdagioTrackz`https?://(?:www\.)?app\.idagio\.com(?:/[a-z]{2})?/recordings/\d+\?(?:[^#]+&)?trackId=(?P<id>\d+)rk   Nr   r   r   r   rz	  rz	    s"        'GGyJLLLr   rz	  c                       e Zd ZdZdZdZdZdS )
IdolPlusIEzyt_dlp.extractor.idolplusIdolPlusz^https?://(?:www\.)?idolplus\.com/z[us]/(?:concert/|contents/?\?(?:[^#]+&)?albumId=)(?P<id>\w+)rk   Nr   r   r   r   r}	  r}	    s"        )GGuJLLLr   r}	  c                       e Zd ZdZdZdS )TencentBaseIEyt_dlp.extractor.tencentTencentBaseNr   r   r   r   r	  r	    r   r   r	  c                       e Zd ZdZdZdS )
WeTvBaseIEr	  WeTvBaseNr   r   r   r   r	  r	    s        (GGGGr   r	  c                       e Zd ZdZdZdS )IflixBaseIEr	  	IflixBaseNr   r   r   r   r	  r	    r  r   r	  c                       e Zd ZdZdZdZdZdS )IflixEpisodeIEr	  ziflix:episodezehttps?://(?:www\.)?iflix\.com/(?:[^?#]+/)?play/(?P<series_id>\w+)(?:-[^?#]+)?/(?P<id>\w+)(?:-[^?#]+)?rk   Nr   r   r   r   r	  r	    s"        (GG|JLLLr   r	  c                       e Zd ZdZdZdZdZdS )IflixSeriesIEr	  IflixSerieszShttps?://(?:www\.)?iflix\.com/(?:[^?#]+/)?play/(?P<id>\w+)(?:-[^/?#]+)?/?(?:[?#]|$)rl   Nr   r   r   r   r	  r	    s"        (GGiJLLLr   r	  c                       e Zd ZdZdZdZdZdS )IlPostIEzyt_dlp.extractor.ilpostIlPostz6https?://(?:www\.)?ilpost\.it/episodes/(?P<id>[^/?#]+)rk   Nr   r   r   r   r	  r	    "        'GGKJLLLr   r	  c                       e Zd ZdZdZdZdZdS )IltalehtiIEzyt_dlp.extractor.iltalehti	Iltalehtiz9https?://(?:www\.)?iltalehti\.fi/[^/?#]+/a/(?P<id>[^/?#])rk   Nr   r   r   r   r	  r	    s"        *GGNJLLLr   r	  c                   "    e Zd ZdZdZdZdZdZdS )ImdbIEyt_dlp.extractor.imdbimdbzFhttps?://(?:www|m)\.imdb\.com/(?:video|title|list).*?[/-]vi(?P<id>\d+)z Internet Movie Database trailersrk   Nr   r   r   r   r	  r	    s'        %GG\J0GLLLr   r	  c                   "    e Zd ZdZdZdZdZdZdS )
ImdbListIEr	  z	imdb:listzGhttps?://(?:www\.)?imdb\.com/list/ls(?P<id>\d{9})(?!/videoplayer/vi\d+)zInternet Movie Database listsrl   Nr   r   r   r   r	  r	    s'        %GG^J-GLLLr   r	  c                       e Zd ZdZdZdS )ImgurBaseIEyt_dlp.extractor.imgur	ImgurBaseNr   r   r   r   r	  r	    r   r   r	  c                       e Zd ZdZdZdS )ImgurGalleryBaseIEr	  ImgurGalleryBaseNr   r   r   r   r	  r	            &G GGGr   r	  c                       e Zd ZdZdZdZdZdS )ImgurAlbumIEr	  zimgur:albumz?https?://(?:i\.)?imgur\.com/a/(?:[^/?#]+-)?(?P<id>[a-zA-Z0-9]+)rl   Nr   r   r   r   r	  r	    s"        &GGTJLLLr   r	  c                       e Zd ZdZdZdZdZdS )ImgurGalleryIEr	  zimgur:galleryzbhttps?://(?:i\.)?imgur\.com/(?:gallery|(?:t(?:opic)?|r)/[^/?#]+)/(?:[^/?#]+-)?(?P<id>[a-zA-Z0-9]+)r   Nr   r   r   r   r	  r	    s"        &GGwJLLLr   r	  c                       e Zd ZdZdZdZdZdS )ImgurIEr	  ImgurzYhttps?://(?:i\.)?imgur\.com/(?!(?:a|gallery|t|topic|r)/)(?:[^/?#]+-)?(?P<id>[a-zA-Z0-9]+)rk   Nr   r   r   r   r	  r	    s"        &GGnJLLLr   r	  c                       e Zd ZdZdZdZdZdS )InaIEzyt_dlp.extractor.inaInaz:https?://(?:(?:www|m)\.)?ina\.fr/(?:[^?#]+/)(?P<id>[\w-]+)rk   Nr   r   r   r   r	  r	    "        $GGPJLLLr   r	  c                       e Zd ZdZdZdZdZdS )IncIEzyt_dlp.extractor.incIncz9https?://(?:www\.)?inc\.com/(?:[^/]+/)+(?P<id>[^.]+).htmlrk   Nr   r   r   r   r	  r	    "        $GGNJLLLr   r	  c                       e Zd ZdZdZdZdZdS )IndavideoEmbedIEzyt_dlp.extractor.indavideoIndavideoEmbedzhttps?://(?:(?:embed\.)?indavideo\.hu/player/video/|assets\.indavideo\.hu/swf/player\.swf\?.*\b(?:v(?:ID|id))=)(?P<id>[\da-f]+)rk   Nr   r   r   r   r	  r	    s%        *GG [JLLLr   r	  c                       e Zd ZdZdZdZdZdS )InfoQIEzyt_dlp.extractor.infoqInfoQz6https?://(?:www\.)?infoq\.com/(?:[^/]+/)+(?P<id>[^/]+)rk   Nr   r   r   r   r	  r	    "        &GGKJLLLr   r	  c                       e Zd ZdZdZdS )InstagramBaseIEyt_dlp.extractor.instagramInstagramBaseNr   r   r   r   r	  r	    r&  r   r	  c                       e Zd ZdZdZdZdZdS )InstagramIEr	  	Instagramzm(?P<url>https?://(?:www\.)?instagram\.com(?:/(?!share/)[^/?#]+)?/(?:p|tv|reels?(?!/audio/))/(?P<id>[^/?#&]+))r   Nr   r   r   r   r	  r	    s%        *GG CJLLLr   r	  c                   "    e Zd ZdZdZdZdZdZdS )InstagramIOSIEr	  InstagramIOSz$instagram://media\?id=(?P<id>[\d_]+)zIOS instagram:// URLrk   Nr   r   r   r   r	  r	    s'        *GG9J$GLLLr   r	  c                       e Zd ZdZdZdZdZdS )InstagramStoryIEr	  zinstagram:storyzLhttps?://(?:www\.)?instagram\.com/stories/(?P<user>[^/?#]+)(?:/(?P<id>\d+))?rl   Nr   r   r   r   r	  r	     s"        *GGbJLLLr   r	  c                       e Zd ZdZdZdS )InstagramPlaylistBaseIEr	  InstagramPlaylistBaseNr   r   r   r   r	  r	  '  s        *G%GGGr   r	  c                   "    e Zd ZdZdZdZdZdZdS )InstagramTagIEr	  zinstagram:tagz<https?://(?:www\.)?instagram\.com/explore/tags/(?P<id>[^/]+)zInstagram hashtag search URLsrl   Nr   r   r   r   r	  r	  ,  s'        *GGQJ-GLLLr   r	  c                   &    e Zd ZdZdZdZdZdZdZdS )InstagramUserIEr	  zinstagram:userz>https?://(?:www\.)?instagram\.com/(?P<id>[^/]{2,})/?(?:$|[?#])FzInstagram user profilerl   Nr  r   r   r   r	  r	  4  s,        *GGSJH&GLLLr   r	  c                       e Zd ZdZdZdZdZdS )InternazionaleIEzyt_dlp.extractor.internazionaleInternazionalezGhttps?://(?:www\.)?internazionale\.it/video/(?:[^/]+/)*(?P<id>[^/?#&]+)rk   Nr   r   r   r   r	  r	  =  s"        /GG\JLLLr   r	  c                       e Zd ZdZdZdZdZdS )InternetVideoArchiveIEz%yt_dlp.extractor.internetvideoarchiveInternetVideoArchivezYhttps?://video\.internetvideoarchive\.net/(?:player|flash/players)/.*?\?.*?publishedid.*?rk   Nr   r   r   r   r	  r	  D  s"        5G$GoJLLLr   r	  c                       e Zd ZdZdZdZdZdS )InvestigationDiscoveryIEr  InvestigationDiscoveryzJhttps?://(?:www\.)?investigationdiscovery\.com/video/(?P<id>[^/]+/[^/?#]+)rk   Nr   r   r   r   r	  r	  K  s"        &G&G_JLLLr   r	  c                   "    e Zd ZdZdZdZdZdZdS )	IqAlbumIEyt_dlp.extractor.iqiyiziq.com:albumz9https?://(?:www\.)?iq\.com/album/(?:[\w%-]*-)?(?P<id>\w+)r2  r   Nr  r   r   r   r	  r	  R  s'        &GGPJILLLr   r	  c                   &    e Zd ZdZdZdZdZdZdZdS )IqIEr	  ziq.comz8https?://(?:www\.)?iq\.com/play/(?:[\w%-]*-)?(?P<id>\w+)zInternational version of iQiyir2  rk   Nr3  r   r   r   r	  r	  Z  s,        &GGOJ.GILLLr   r	  c                   "    e Zd ZdZdZdZdZdZdS )IqiyiIEr	  iqiyiz9https?://(?:(?:[^.]+\.)?iqiyi\.com|www\.pps\.tv)/.+\.htmlu	   爱奇艺r   Nr   r   r   r   r	  r	  c  s'        &GGQJGLLLr   r	  c                       e Zd ZdZdZdZdZdS )IslamChannelIEyt_dlp.extractor.islamchannelIslamChannelz2https?://watch\.islamchannel\.tv/watch/(?P<id>\d+)rk   Nr   r   r   r   r	  r	  k  "        -GGHJLLLr   r	  c                       e Zd ZdZdZdZdZdS )IslamChannelSeriesIEr	  IslamChannelSeriesz9https?://watch\.islamchannel\.tv/series/(?P<id>[a-f\d-]+)rl   Nr   r   r   r   r	  r	  r  s"        -G"GOJLLLr   r	  c                       e Zd ZdZdZdZdZdS )IsraelNationalNewsIEz#yt_dlp.extractor.israelnationalnewsIsraelNationalNewsz;https?://(?:www\.)?israelnationalnews\.com/news/(?P<id>\d+)rl   Nr   r   r   r   r	  r	  y  s"        3G"GQJLLLr   r	  c                   "    e Zd ZdZdZdZdZdZdS )IviCompilationIEyt_dlp.extractor.ivizivi:compilationzchttps?://(?:www\.)?ivi\.ru/watch/(?!\d+)(?P<compilationid>[a-z\d_-]+)(?:/season(?P<seasonid>\d+))?$zivi.ru compilationsrl   Nr   r   r   r   r	  r	    s'        $GG{J#GLLLr   r	  c                   "    e Zd ZdZdZdZdZdZdS )IviIEr	  iviz\https?://(?:www\.)?ivi\.(?:ru|tv)/(?:watch/(?:[^/]+/)?|video/player\?.*?videoId=)(?P<id>\d+)zivi.rurk   Nr   r   r   r   r	  r	    s'        $GGsJGLLLr   r	  c                   "    e Zd ZdZdZdZdZdZdS )	IvideonIEzyt_dlp.extractor.ivideonivideonz\https?://(?:www\.)?ivideon\.com/tv/(?:[^/]+/)*camera/(?P<id>\d+-[\da-f]+)/(?P<camera_id>\d+)z
Ivideon TVrk   Nr   r   r   r   r	  r	    s'        (GGtJGLLLr   r	  c                       e Zd ZdZdZdZdZdS )IvooxIEzyt_dlp.extractor.ivooxIvoox)zJhttps?://(?:www\.)?ivoox\.com/(?:\w{2}/)?[^/?#]+_rf_(?P<id>[0-9]+)_1\.htmlz)https?://go\.ivoox\.com/rf/(?P<id>[0-9]+)rk   Nr   r   r   r   r	  r	    s%        &GG SJLLLr   r	  c                       e Zd ZdZdZdZdS )IwaraBaseIEyt_dlp.extractor.iwara	IwaraBaseiwaraNrz   r   r   r   r	  r	            &GGNNNr   r	  c                   &    e Zd ZdZdZdZdZdZdZdS )IwaraIEr	  r	  zAhttps?://(?:www\.|ecchi\.)?iwara\.tv/videos?/(?P<id>[a-zA-Z0-9]+)r   rk   Nr  r   r   r   r	  r	    s,        &GGWJNILLLr   r	  c                   "    e Zd ZdZdZdZdZdZdS )IwaraPlaylistIEr	  ziwara:playlistz8https?://(?:www\.)?iwara\.tv/playlist/(?P<id>[0-9a-f-]+)r	  rl   Nr   r   r   r   r	  r	    s'        &GGMJNLLLr   r	  c                   "    e Zd ZdZdZdZdZdZdS )IwaraUserIEr	  z
iwara:userz5https?://(?:www\.)?iwara\.tv/profile/(?P<id>[^/?#&]+)r	  rl   Nr   r   r   r   r	  r	    s'        &GGJJNLLLr   r	  c                       e Zd ZdZdZdZdZdS )IxiguaIEzyt_dlp.extractor.ixiguaIxiguaz7https?://(?:\w+\.)?ixigua\.com/(?:video/)?(?P<id>\d+).+rk   Nr   r   r   r   r
  r
    rs  r   r
  c                       e Zd ZdZdZdZdZdS )
IzleseneIEzyt_dlp.extractor.izleseneIzlesenezu(?x)
        https?://(?:(?:www|m)\.)?izlesene\.com/
        (?:video|embedplayer)/(?:[^/]+/)?(?P<id>[0-9]+)
        rk   Nr   r   r   r   r
  r
    s%        )GG NJLLLr   r
  c                       e Zd ZdZdZdZdZdS )	JStreamIEzyt_dlp.extractor.jstreamJStreamzFjstream:(?P<host>www\d+):(?P<id>(?P<publisher>[a-z0-9]+):(?P<mid>\d+))rk   Nr   r   r   r   r
  r
    s"        (GG[JLLLr   r
  c                   &    e Zd ZdZdZdZdZdZdZdS )JTBCIEyt_dlp.extractor.jtbcJTBCz(?x)
        https?://(?:
            vod\.jtbc\.co\.kr/player/(?:program|clip)
            |tv\.jtbc\.co\.kr/(?:replay|trailer|clip)/pr\d+/pm\d+
        )/(?P<id>(?:ep|vo)\d+)z
jtbc.co.kr   rk   Nr3  r   r   r   r

  r

    s/        %GG QJGILLLr   r

  c                       e Zd ZdZdZdZdZdS )JTBCProgramIEr
  zJTBC:programzihttps?://(?:vod\.jtbc\.co\.kr/program|tv\.jtbc\.co\.kr/replay)/(?P<id>pr\d+)/(?:replay|pm\d+)/?(?:$|[?#])rl   Nr   r   r   r   r
  r
    s%        %GG EJLLLr   r
  c                       e Zd ZdZdZdZdZdS )JWPlatformIEzyt_dlp.extractor.jwplatform
JWPlatformz(?:https?://(?:content\.jwplatform|cdn\.jwplayer)\.com/(?:(?:feed|player|thumb|preview|manifest)s|jw6|v2/media)/|jwplatform:)(?P<id>[a-zA-Z0-9]{8})rk   Nr   r   r   r   r
  r
    s%        +GG jJLLLr   r
  c                       e Zd ZdZdZdZdZdS )	JamendoIEyt_dlp.extractor.jamendoJamendoa'  (?x)
                    https?://
                        (?:
                            licensing\.jamendo\.com/[^/]+|
                            (?:www\.)?jamendo\.com
                        )
                        /track/(?P<id>[0-9]+)(?:/(?P<display_id>[^/?#&]+))?
                    rk   Nr   r   r   r   r
  r
    s%        (GG FJLLLr   r
  c                       e Zd ZdZdZdZdZdS )JamendoAlbumIEr
  JamendoAlbumz4https?://(?:www\.)?jamendo\.com/album/(?P<id>[0-9]+)rl   Nr   r   r   r   r
  r
    s"        (GGIJLLLr   r
  c                   &    e Zd ZdZdZdZdZdZdZdS )JeuxVideoIEzyt_dlp.extractor.jeuxvideo	JeuxVideoNz*https?://.*?\.jeuxvideo\.com/.*/(.*?)\.htmFrk   rv  r   r   r   r
  r
    s,        *GGH@JHLLLr   r
  c                       e Zd ZdZdZdS )JioSaavnBaseIEyt_dlp.extractor.jiosaavnJioSaavnBaseNr   r   r   r   r
  r
    r  r   r
  c                       e Zd ZdZdZdZdZdS )JioSaavnAlbumIEr
  zjiosaavn:albumzChttps?://(?:www\.)?(?:jio)?saavn\.com/album/[^/?#]+/(?P<id>[^/?#]+)rl   Nr   r   r   r   r"
  r"
    s"        )GGXJLLLr   r"
  c                       e Zd ZdZdZdZdZdS )JioSaavnArtistIEr
  zjiosaavn:artistzDhttps?://(?:www\.)?(?:jio)?saavn\.com/artist/[^/?#]+/(?P<id>[^/?#]+)rl   Nr   r   r   r   r$
  r$
    s"        )GGYJLLLr   r$
  c                       e Zd ZdZdZdZdZdS )JioSaavnPlaylistIEr
  zjiosaavn:playlistzehttps?://(?:www\.)?(?:jio)?saavn\.com/(?:s/playlist/(?:[^/?#]+/){2}|featured/[^/?#]+/)(?P<id>[^/?#]+)rl   Nr   r   r   r   r&
  r&
    s"        )G!GzJLLLr   r&
  c                       e Zd ZdZdZdZdZdS )JioSaavnShowIEr
  zjiosaavn:showzShttps?://(?:www\.)?(?:jio)?saavn\.com/shows/[^/?#]+/(?P<id>[^/?#]{11,})/?(?:$|[?#])rk   Nr   r   r   r   r(
  r(
    s"        )GGhJLLLr   r(
  c                       e Zd ZdZdZdZdZdS )JioSaavnShowPlaylistIEr
  zjiosaavn:show:playlistzUhttps?://(?:www\.)?(?:jio)?saavn\.com/shows/(?P<show>[^#/?]+)/(?P<season>\d+)/[^/?#]+rl   Nr   r   r   r   r*
  r*
  "  s"        )G&GkJLLLr   r*
  c                       e Zd ZdZdZdZdZdS )JioSaavnSongIEr
  zjiosaavn:songz^https?://(?:www\.)?(?:jio)?saavn\.com(?:/song/[^/?#]+/|/s/song/(?:[^/?#]+/){3})(?P<id>[^/?#]+)rk   Nr   r   r   r   r,
  r,
  )  s"        )GGsJLLLr   r,
  c                       e Zd ZdZdZdZdZdS )JojIEzyt_dlp.extractor.jojJojz(?x)
                    (?:
                        joj:|
                        https?://media\.joj\.sk/embed/
                    )
                    (?P<id>[^/?#^]+)
                rk   Nr   r   r   r   r.
  r.
  0  s%        $GG YJLLLr   r.
  c                       e Zd ZdZdZdZdZdS )JoveIEzyt_dlp.extractor.joveJovez1https?://(?:www\.)?jove\.com/video/(?P<id>[0-9]+)rk   Nr   r   r   r   r1
  r1
  7  s"        %GGFJLLLr   r1
  c                       e Zd ZdZdZdZdZdS )KTHIEzyt_dlp.extractor.kthKTHz4https?://play\.kth\.se/(?:[^/]+/)+(?P<id>[a-z0-9_]+)rk   Nr   r   r   r   r4
  r4
  >  r  r   r4
  c                       e Zd ZdZdZdZdZdS )KakaoIEzyt_dlp.extractor.kakaoKakaoz^https?://(?:play-)?tv\.kakao\.com/(?:channel/\d+|embed/player)/cliplink/(?P<id>\d+|[^?#&]+@my)rk   Nr   r   r   r   r7
  r7
  E  "        &GGuJLLLr   r7
  c                       e Zd ZdZdZdZdZdS )	KalturaIEzyt_dlp.extractor.kalturaKalturaa  (?x)
                (?:
                    kaltura:(?P<partner_id>\w+):(?P<id>\w+)(?::(?P<player_type>\w+))?|
                    https?://
                        (?:(?:www|cdnapi(?:sec)?)\.)?kaltura\.com(?::\d+)?/
                        (?:
                            (?:
                                # flash player
                                index\.php/(?:kwidget|extwidget/preview)|
                                # html5 player
                                html5/html5lib/[^/]+/mwEmbedFrame\.php
                            )
                        )(?:/(?P<path>[^?]+))?(?:\?(?P<query>.*))?
                )
                r   Nr   r   r   r   r;
  r;
  L  s%        (GG s
JLLLr   r;
  c                   "    e Zd ZdZdZdZdZdZdS )KankaNewsIEzyt_dlp.extractor.kankanews	KankaNewszDhttps?://(?:www\.)?kankanews\.com/a/\d+\-\d+\-\d+/(?P<id>\d+)\.shtmlFrk   Nr  r   r   r   r>
  r>
  S  s'        *GG`JHLLLr   r>
  c                       e Zd ZdZdZdZdZdS )KaraoketvIEzyt_dlp.extractor.karaoketv	Karaoketvz6https?://(?:www\.)?karaoketv\.co\.il/[^/]+/(?P<id>\d+)rk   Nr   r   r   r   rA
  rA
  [  r  r   rA
  c                   "    e Zd ZdZdZdZdZdZdS )	KatsomoIEyt_dlp.extractor.tv2Katsomozhttps?://(?:www\.)?(?:katsomo|mtv(uutiset)?)\.fi/(?:sarja/[0-9a-z-]+-\d+/[0-9a-z-]+-|(?:#!/)?jakso/(?:\d+/[^/]+/)?|video/prog)(?P<id>\d+)Frk   Nr  r   r   r   rD
  rD
  b  s*        $GG bJHLLLr   rD
  c                   "    e Zd ZdZdZdZdZdZdS )
KelbyOneIEzyt_dlp.extractor.kelbyoneKelbyOnez8https?://members\.kelbyone\.com/course/(?P<id>[^$&?#/]+)Frl   Nr  r   r   r   rH
  rH
  j  s'        )GGMJHLLLr   rH
  c                       e Zd ZdZdZdZdZdS )Kenh14PlaylistIEyt_dlp.extractor.kenh14Kenh14Playlistz>https?://video\.kenh14\.vn/playlist/[\w-]+-(?P<id>[0-9]+)\.chnrl   Nr   r   r   r   rK
  rK
  r  s"        'GGUJLLLr   rK
  c                       e Zd ZdZdZdZdZdS )Kenh14VideoIErL
  Kenh14Videoz@https?://video\.kenh14\.vn/(?:video/)?[\w-]+-(?P<id>[0-9]+)\.chnrk   Nr   r   r   r   rO
  rO
  y  s"        'GGWJLLLr   rO
  c                       e Zd ZdZdZdS )KhanAcademyBaseIEyt_dlp.extractor.khanacademyKhanAcademyBaseNr   r   r   r   rR
  rR
    r  r   rR
  c                       e Zd ZdZdZdZdZdS )KhanAcademyIErS
  khanacademyzChttps?://(?:www\.)?khanacademy\.org/(?P<id>(?:[^/]+/){4}v/[^?#/&]+)rk   Nr   r   r   r   rV
  rV
    "        ,GGXJLLLr   rV
  c                       e Zd ZdZdZdZdZdS )KhanAcademyUnitIErS
  zkhanacademy:unitzPhttps?://(?:www\.)?khanacademy\.org/(?P<id>(?:[^/]+/){1,2}[^?#/&]+)/?(?:[?#&]|$)rl   Nr   r   r   r   rZ
  rZ
    s"        ,G GeJLLLr   rZ
  c                       e Zd ZdZdZdS )
KickBaseIEyt_dlp.extractor.kickKickBaseNr   r   r   r   r\
  r\
    r  r   r\
  c                   "    e Zd ZdZdZdZdZdZdS )
KickClipIEr]
  z
kick:clipszVhttps?://(?:www\.)?kick\.com/[\w-]+(?:/clips/|/?\?(?:[^#]+&)?clip=)(?P<id>clip_[\w-]+)r   rk   Nr  r   r   r   r`
  r`
    s'        %GGnJILLLr   r`
  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )KickIEr]
  z	kick:livezZhttps?://(?:www\.)?kick\.com/(?!(?:video|categories|search|auth)(?:[/?#]|$))(?P<id>[\w-]+)r   rk   c                     t                               |          st                              |          rdn t                                          |          S r   )	KickVODIEr4   r`
  r   r   s     r   r4   zKickIE.suitable  sI    "++C00hJ4G4G4L4LhuuSXSZSZScScdgShShhr   r   r   r   r$   r`   r<   re   rn   rq   r4   r   r   s   @r   rb
  rb
    sd        %GGpJILi i i i [i i i i ir   rb
  c                       e Zd ZdZdZdZdZdS )KickStarterIEzyt_dlp.extractor.kickstarterKickStarterz=https?://(?:www\.)?kickstarter\.com/projects/(?P<id>[^/]*)/.*rk   Nr   r   r   r   rg
  rg
    r  r   rg
  c                   "    e Zd ZdZdZdZdZdZdS )rd
  r]
  zkick:vodz[https?://(?:www\.)?kick\.com/[\w-]+/videos/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})r   rk   Nr  r   r   r   rd
  rd
    s'        %GGtJILLLr   rd
  c                       e Zd ZdZdZdZdZdS )KickerIEzyt_dlp.extractor.kickerKickerz5https?://(?:www\.)kicker\.(?:de)/(?P<id>[\w-]+)/videork   Nr   r   r   r   rk
  rk
    r	  r   rk
  c                   "    e Zd ZdZdZdZdZdZdS )KikaIEyt_dlp.extractor.kikaKikaz=https?://(?:www\.)?kika\.de/[\w/-]+/videos/(?P<id>[a-z-]+\d+)zKiKA.derk   Nr   r   r   r   rn
  rn
    s'        %GGTJGLLLr   rn
  c                       e Zd ZdZdZdZdZdS )KikaPlaylistIEro
  KikaPlaylistz5https?://(?:www\.)?kika\.de/[\w-]+/(?P<id>[a-z-]+\d+)rl   Nr   r   r   r   rr
  rr
    s"        %GGLJLLLr   rr
  c                       e Zd ZdZdZdZdS )KinjaEmbedIEzyt_dlp.extractor.kinjazkinja:embeda/  (?x)https?://(?:[^.]+\.)?
        (?:
            avclub|
            clickhole|
            deadspin|
            gizmodo|
            jalopnik|
            jezebel|
            kinja|
            kotaku|
            lifehacker|
            splinternews|
            the(?:inventory|onion|root|takeout)
        )\.com/
        (?:
            ajax/inset|
            embed/video
        )/iframe\?.*?\bid=
        (?P<type>
            fb|
            imgur|
            instagram|
            jwp(?:layer)?-video|
            kinjavideo|
            mcp|
            megaphone|
            soundcloud(?:-playlist)?|
            tumblr-post|
            twitch-stream|
            twitter|
            ustream-channel|
            vimeo|
            vine|
            youtube-(?:list|video)
        )-(?P<id>[^&]+)Nr  r   r   r   ru
  ru
    s         &GG iJJJr   ru
  c                   "    e Zd ZdZdZdZdZdZdS )KinoPoiskIEzyt_dlp.extractor.kinopoisk	KinoPoiskz1https?://(?:www\.)?kinopoisk\.ru/film/(?P<id>\d+)r  rk   Nr  r   r   r   rw
  rw
    s'        *GGGJILLLr   rw
  c                       e Zd ZdZdZdZdZdS )UnsupportedInfoExtractoryt_dlp.extractor.unsupportedUnsupportedInfoExtractzhttps?://(?:www\.)?(?:)FNrV  r   r   r   rz
  rz
    s"        ,G&G+JGGGr   rz
  c                       e Zd ZdZdZdZdZdS )
KnownDRMIEr{
  DRMa,  https?://(?:www\.)?(?:play\.hbomax\.com|channel(?:4|5)\.com|peacocktv\.com|(?:[\w.]+\.)?disneyplus\.com|open\.spotify\.com|tvnz\.co\.nz|oneplus\.ch|artstation\.com/learning/courses|philo\.com|(?:[\w.]+\.)?mech-plus\.com|aha\.video|mubi\.com|vootkids\.com|nowtv\.it/watch|tv\.apple\.com|primevideo\.com|hulu\.com|resource\.inkryptvideos\.com|joyn\.de|amazon\.(?:\w{2}\.)?\w+/gp/video|music\.amazon\.(?:\w{2}\.)?\w+|(?:watch|front)\.njpwworld\.com|qub\.ca/vrai|(?:beta\.)?crunchyroll\.com|viki\.com|deezer\.com|b-ch\.com|ctv\.ca|noovo\.ca|tsn\.ca|paramountplus\.com|(?:m\.)?(?:sony)?crackle\.com|cw(?:tv(?:pr)?|seed)\.com|6play\.fr|rtlplay\.be|play\.rtl\.hr|rtlmost\.hu|plus\.rtl\.de(?!/podcast/)|mediasetinfinity\.es|tv5mondeplus\.com|tv\.rakuten\.co\.jp|watch\.telusoriginals\.com|video\.unext\.jp|www\.web\.nhk)FNrV  r   r   r   r~
  r~
    s%        ,GG GJGGGr   r~
  c                       e Zd ZdZdZdZdZdS )KnownPiracyIEr{
  PiracyaP  https?://(?:www\.)?(?:dood\.(?:to|watch|so|pm|wf|re)|viewsb\.com|filemoon\.sx|hentai\.animestigma\.com|thisav\.com|gounlimited\.to|highstream\.tv|uqload\.com|vedbam\.xyz|vadbam\.netvidlo\.us|wolfstream\.tv|xvideosharing\.com|(?:\w+\.)?viidshar\.com|sxyprn\.com|jable\.tv|91porn\.com|einthusan\.(?:tv|com|ca)|yourupload\.com|xanimu\.com)FNrV  r   r   r   r
  r
    s%        ,GG |JGGGr   r
  c                       e Zd ZdZdZdZdZdS )KommunetvIEzyt_dlp.extractor.kommunetv	Kommunetvz/https?://\w+\.kommunetv\.no/archive/(?P<id>\w+)rk   Nr   r   r   r   r
  r
    s"        *GGFJLLLr   r
  c                       e Zd ZdZdZdS )JixieBaseIEzyt_dlp.extractor.jixie	JixieBaseNr   r   r   r   r
  r
    r   r   r
  c                       e Zd ZdZdZdZdZdS )KompasVideoIEzyt_dlp.extractor.kompasKompasVideoz<https?://video\.kompas\.com/\w+/(?P<id>\d+)/(?P<slug>[\w-]+)rk   Nr   r   r   r   r
  r
     s"        'GGTJLLLr   r
  c                   "    e Zd ZdZdZdZdZdZdS )KooIEzyt_dlp.extractor.kooKooz:https?://(?:www\.)?kooapp\.com/koo/[^/]+/(?P<id>[^/&#$?]+)Frk   Nr  r   r   r   r
  r
    s'        $GGOJHLLLr   r
  c                   &    e Zd ZdZdZdZdZdZdZdS )
KrasViewIEzyt_dlp.extractor.krasviewKrasViewz1https?://krasview\.ru/(?:video|embed)/(?P<id>\d+)Fu   Красвьюrk   Nr  r   r   r   r
  r
    s,        )GGFJHGLLLr   r
  c                       e Zd ZdZdZdZdZdS )Ku6IEzyt_dlp.extractor.ku6Ku6z=https?://v\.ku6\.com/show/(?P<id>[a-zA-Z0-9\-\_]+)(?:\.)*htmlrk   Nr   r   r   r   r
  r
    "        $GGUJLLLr   r
  c                       e Zd ZdZdZdZdZdS )KukuluLiveIEzyt_dlp.extractor.kukululive
KukuluLivez1https?://live\.erinn\.biz/live\.php\?h(?P<id>\d+)rk   Nr   r   r   r   r
  r
    s"        +GGIJLLLr   r
  c                   &    e Zd ZdZdZdZdZdZdZdS )KuwoAlbumIEyt_dlp.extractor.kuwoz
kuwo:albumz/https?://(?:www\.)?kuwo\.cn/album/(?P<id>\d+?)/Fu   酷我音乐 - 专辑rl   Nr  r   r   r   r
  r
  &  s,        %GGEJH%GLLLr   r
  c                   &    e Zd ZdZdZdZdZdZdZdS )KuwoCategoryIEr
  zkuwo:categoryz3https?://yinyue\.kuwo\.cn/yy/cinfo_(?P<id>\d+?).htmFu   酷我音乐 - 分类rl   Nr  r   r   r   r
  r
  /  s,        %GGIJH%GLLLr   r
  c                   &    e Zd ZdZdZdZdZdZdZdS )KuwoChartIEr
  z
kuwo:chartz5https?://yinyue\.kuwo\.cn/billboard_(?P<id>[^.]+).htmFu   酷我音乐 - 排行榜rl   Nr  r   r   r   r
  r
  8  s,        %GGJJH(GLLLr   r
  c                       e Zd ZdZdZdS )
KuwoBaseIEr
  KuwoBaseNr   r   r   r   r
  r
  A  r  r   r
  c                   &    e Zd ZdZdZdZdZdZdZdS )KuwoIEr
  z	kuwo:songz.https?://(?:www\.)?kuwo\.cn/yinyue/(?P<id>\d+)Fu   酷我音乐rk   Nr  r   r   r   r
  r
  F  s,        %GGDJHGLLLr   r
  c                   &    e Zd ZdZdZdZdZdZdZdS )KuwoMvIEr
  zkuwo:mvz,https?://(?:www\.)?kuwo\.cn/mv/(?P<id>\d+?)/Fu   酷我音乐 - MVrk   Nr  r   r   r   r
  r
  O  s,        %GGBJH!GLLLr   r
  c                   &    e Zd ZdZdZdZdZdZdZdS )KuwoSingerIEr
  zkuwo:singerz2https?://(?:www\.)?kuwo\.cn/mingxing/(?P<id>[^/]+)Fu   酷我音乐 - 歌手rl   Nr  r   r   r   r
  r
  X  s,        %GGGJH%GLLLr   r
  c                       e Zd ZdZdZdZdZdS )LA7IEyt_dlp.extractor.la7zla7.itz(?x)https?://(?:
        (?:www\.)?la7\.it/([^/]+)/(?:rivedila7|video|news)/|
        tg\.la7\.it/repliche-tgla7\?id=
    )(?P<id>.+)rk   Nr   r   r   r   r
  r
  a  s%        $GG aJLLLr   r
  c                       e Zd ZdZdZdZdZdS )LA7PodcastEpisodeIEr
  zla7.it:pod:episodez=https?://(?:www\.)?la7\.it/[^/]+/podcast/([^/]+-)?(?P<id>\d+)rk   Nr   r   r   r   r
  r
  h  s"        $G"GSJLLLr   r
  c                       e Zd ZdZdZdZdZdS )LA7PodcastIEr
  zla7.it:podcastz<https?://(?:www\.)?la7\.it/(?P<id>[^/]+)/podcast/?(?:$|[#?])rl   Nr   r   r   r   r
  r
  o  s"        $GGQJLLLr   r
  c                       e Zd ZdZdZdS )
LBRYBaseIEyt_dlp.extractor.lbryLBRYBaseNr   r   r   r   r
  r
  v  r  r   r
  c                   "    e Zd ZdZdZdZdZdZdS )LBRYChannelIEr
  zlbry:channelzs(?x)(?:https?://(?:www\.)?(?:lbry\.tv|odysee\.com)/|lbry://)(?P<id>@[^$@:/?#&]+(?:[:#][0-9a-f]{1,40})?)/?(?:[?&]|$)zodysee.com channelsrl   Nr   r   r   r   r
  r
  {  s*        %GG JJ#GLLLr   r
  c                   "    e Zd ZdZdZdZdZdZdS )LBRYIEr
  lbryz(?x)(?:https?://(?:www\.)?(?:lbry\.tv|odysee\.com)/|lbry://)
        (?:\$/(?:download|embed)/)?
        (?P<id>
            [^$@:/?#]+/[0-9a-f]{1,40}
            |(?:@[^$@:/?#&]+(?:[:#][0-9a-f]{1,40})?/)?[^$@:/?#&]+(?:[:#][0-9a-f]{1,40})?
        )z
odysee.comrk   Nr   r   r   r   r
  r
    s*        %GG VJGLLLr   r
  c                   "    e Zd ZdZdZdZdZdZdS )LBRYPlaylistIEr
  zlbry:playlistz_(?x)(?:https?://(?:www\.)?(?:lbry\.tv|odysee\.com)/|lbry://)\$/(?:play)?list/(?P<id>[0-9a-f-]+)zodysee.com playlistsrl   Nr   r   r   r   r
  r
    s'        %GGvJ$GLLLr   r
  c                       e Zd ZdZdZdZdZdS )LCIIEzyt_dlp.extractor.lciLCIzLhttps?://(?:www\.)?(?:lci|tf1info)\.fr/(?:[^/?#]+/)+[\w-]+-(?P<id>\d+)\.htmlrk   Nr   r   r   r   r
  r
    s"        $GGdJLLLr   r
  c                   "    e Zd ZdZdZdZdZdZdS )LEGOIEzyt_dlp.extractor.legoLEGOzthttps?://(?:www\.)?lego\.com/(?P<locale>[a-z]{2}-[a-z]{2})/(?:[^/]+/)*videos/(?:[^/]+/)*[^/?#]+-(?P<id>[0-9a-f]{32})   rk   Nr  r   r   r   r
  r
    s*        %GG JJILLLr   r
  c                       e Zd ZdZdZdZdZdS )
LRTRadioIEyt_dlp.extractor.lrtLRTRadiozIhttps?://(?:www\.)?lrt\.lt/radioteka/irasas/(?P<id>\d+)/(?P<path>[^?#/]+)rk   Nr   r   r   r   r
  r
    r4	  r   r
  c                       e Zd ZdZdZdZdZdS )LRTStreamIEr
  	LRTStreamz>https?://(?:www\.)?lrt\.lt/mediateka/tiesiogiai/(?P<id>[\w-]+)rk   Nr   r   r   r   r
  r
    s"        $GGTJLLLr   r
  c                   "    e Zd ZdZdZddgZdZdS )LRTVODIEr
  LRTVODzGhttps?://(?:(?:www|archyvai)\.)?lrt\.lt/mediateka/irasas/(?P<id>[0-9]+)zahttps?://(?:(?:www|archyvai)\.)?lrt\.lt/mediateka/video/[^?#]+\?(?:[^#]*&)?episode=(?P<id>[0-9]+)rk   Nr   r   r   r   r
  r
    s/        $GG]  `F  GJLLLr   r
  c                       e Zd ZdZdZdZdZdS )LSMLREmbedIEyt_dlp.extractor.lsm
LSMLREmbedz(?x)
        https?://(?:
            (?:latvijasradio|lr1|lr2|klasika|lr4|naba|radioteatris)\.lsm|
            pieci
        )\.lv/[^/?#]+/(?:
            pleijeris|embed
        )/?\?(?:[^#]+&)?(?:show|id)=(?P<id>\d+)r   Nr   r   r   r   r
  r
    s%        $GG yJLLLr   r
  c                       e Zd ZdZdZdZdZdS )LSMLTVEmbedIEr
  LSMLTVEmbedz8https?://ltv\.lsm\.lv/embed\?(?:[^#]+&)?c=(?P<id>[^#&]+)rk   Nr   r   r   r   r
  r
    "        $GGNJLLLr   r
  c                       e Zd ZdZdZdZdZdS )LSMReplayIEr
  	LSMReplayz_https?://replay\.lsm\.lv/[^/?#]+/(?:skaties/|klausies/)?(?:ieraksts|statja)/[^/?#]+/(?P<id>\d+)rk   Nr   r   r   r   r
  r
    s"        $GGuJLLLr   r
  c                   "    e Zd ZdZdZdZdZdZdS )LaXarxaMesIEzyt_dlp.extractor.laxarxames
LaXarxaMeszShttps?://(?:www\.)?laxarxames\.cat/(?:[^/?#]+/)*?(player|movie-details)/(?P<id>\d+)
laxarxamesrk   Nr   r   r   r   r
  r
    s'        +GGiJ!NLLLr   r
  c                       e Zd ZdZdZdS )LaracastsBaseIEyt_dlp.extractor.laracastsLaracastsBaseNr   r   r   r   r
  r
    r&  r   r
  c                       e Zd ZdZdZdZdZdS )LaracastsIEr
  	laracastszPhttps?://(?:www\.)?laracasts\.com/series/(?P<id>[\w-]+/episodes/\d+)/?(?:[?#]|$)rk   Nr   r   r   r   r
  r
    s"        *GGgJLLLr   r
  c                       e Zd ZdZdZdZdZdS )LaracastsPlaylistIEr
  zlaracasts:serieszChttps?://(?:www\.)?laracasts\.com/series/(?P<id>[\w-]+)/?(?:[?#]|$)rl   Nr   r   r   r   r
  r
    s"        *G GYJLLLr   r
  c                       e Zd ZdZdZdZdZdS )LastFMIEyt_dlp.extractor.lastfmLastFMz>https?://(?:www\.)?last\.fm/music(?:/[^/]+){2}/(?P<id>[^/#?]+)rk   Nr   r   r   r   r
  r
    r  r   r
  c                       e Zd ZdZdZdS )LastFMPlaylistBaseIEr
  LastFMPlaylistBaseNr   r   r   r   r
  r
    rv  r   r
  c                       e Zd ZdZdZdZdZdS )LastFMPlaylistIEr
  LastFMPlaylistzLhttps?://(?:www\.)?last\.fm/(music|tag)/(?P<id>[^/]+)(?:/[^/]+)?/?(?:[?#]|$)rl   Nr   r   r   r   r
  r
    s"        'GGaJLLLr   r
  c                       e Zd ZdZdZdZdZdS )LastFMUserIEr
  
LastFMUserz@https?://(?:www\.)?last\.fm/user/[^/]+/playlists/(?P<id>[^/#?]+)rl   Nr   r   r   r   r
  r
    s"        'GGUJLLLr   r
  c                   "    e Zd ZdZdZdZdZdZdS )LcpIEyt_dlp.extractor.lcpLcpz3https?://(?:www\.)?lcp\.fr/(?:[^/]+/)*(?P<id>[^/]+)Frk   Nr  r   r   r   r
  r
    s'        $GGHJHLLLr   r
  c                   "    e Zd ZdZdZdZdZdZdS )	LcpPlayIEr
  LcpPlayzLhttps?://play\.lcp\.fr/embed/(?P<id>[^/]+)/(?P<account_id>[^/]+)/[^/]+/[^/]+Frk   Nr  r   r   r   r
  r
  	  s'        $GGaJHLLLr   r
  c                       e Zd ZdZdZdZdZdS )LeFigaroVideoEmbedIEyt_dlp.extractor.lefigaroLeFigaroVideoEmbedz8https?://video\.lefigaro\.fr/embed/[^?#]+/(?P<id>[\w-]+)rk   Nr   r   r   r   r
  r
    s"        )G"GNJLLLr   r
  c                       e Zd ZdZdZdZdZdS )LeFigaroVideoSectionIEr
  LeFigaroVideoSectionz>https?://video\.lefigaro\.fr/figaro/(?P<id>[\w-]+)/?(?:[#?]|$)rl   Nr   r   r   r   r
  r
    s"        )G$GTJLLLr   r
  c                   "    e Zd ZdZdZdZdZdZdS )LeIEyt_dlp.extractor.leecoLezlhttps?://(?:www\.le\.com/ptv/vplay|(?:sports\.le|(?:www\.)?lesports)\.com/(?:match|video))/(?P<id>\d+)\.htmlu	   乐视网rk   Nr   r   r   r   r   r     s*        &GG GJGLLLr   r   c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )LePlaylistIEr  
LePlaylistz;https?://[a-z]+\.le\.com/(?!video)[a-z]+/(?P<id>[a-z0-9_]+)rl   c                 ~    t                               |          rdn t                                          |          S r   )r   r4   r   r   s     r   r4   zLePlaylistIE.suitable-  0    c**Euu0@0@0E0EEr   r   r   s   @r   r  r  '  s_        &GGPJLF F F F [F F F F Fr   r  c                       e Zd ZdZdZdZdZdS )LearningOnScreenIEz!yt_dlp.extractor.learningonscreenLearningOnScreenzFhttps?://learningonscreen\.ac\.uk/ondemand/index\.php/prog/(?P<id>\w+)rk   Nr   r   r   r   r	  r	  2  s"        1G G]JLLLr   r	  c                   "    e Zd ZdZdZdZdZdZdS )Lecture2GoIEzyt_dlp.extractor.lecture2go
Lecture2GozDhttps?://lecture2go\.uni-hamburg\.de/veranstaltungen/-/v/(?P<id>\d+)Frk   Nr  r   r   r   r  r  9  s'        +GGZJHLLLr   r  c                       e Zd ZdZdZdZdS )LecturioBaseIEyt_dlp.extractor.lecturioLecturioBaselecturioNrz   r   r   r   r  r  A  r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )LecturioCourseIEr  LecturioCoursezZhttps?://app\.lecturio\.com/(?:[^/]+/(?P<nt>[^/?#&]+)\.course|(?:#/)?course/c/(?P<id>\d+))r  rl   Nr   r   r   r   r  r  G  s'        )GGqJNLLLr   r  c                       e Zd ZdZdZdZdZdS )LecturioDeCourseIEr  LecturioDeCoursez<https?://(?:www\.)?lecturio\.de/[^/]+/(?P<id>[^/?#&]+)\.kursr  Nr  r   r   r   r  r  O  s"        )G GRJNNNr   r  c                   "    e Zd ZdZdZdZdZdZdS )
LecturioIEr  Lecturioa?  (?x)
                    https://
                        (?:
                            app\.lecturio\.com/([^/?#]+/(?P<nt>[^/?#&]+)\.lecture|(?:\#/)?lecture/c/\d+/(?P<id>\d+))|
                            (?:www\.)?lecturio\.de/(?:[^/?#]+/)+(?P<nt_de>[^/?#&]+)\.vortrag
                        )
                    r  rk   Nr   r   r   r   r  r  V  s*        )GG bJNLLLr   r  c                       e Zd ZdZdZdZdZdS )	LemondeIEzyt_dlp.extractor.lemondeLemondez=https?://(?:.+?\.)?lemonde\.fr/(?:[^/]+/)*(?P<id>[^/]+)\.htmlrk   Nr   r   r   r   r  r  ^  r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )LentaIEzyt_dlp.extractor.lentaLentaz?https?://(?:www\.)?lenta\.ru/[^/]+/\d+/\d+/\d+/(?P<id>[^/?#&]+)Frk   Nr  r   r   r   r   r   e  s'        &GGWJHLLLr   r   c                   "    e Zd ZdZdZdZdZdZdS )LetvCloudIEr  	LetvCloudz)https?://yuntv\.letv\.com/bcloud.html\?.+u	   乐视云rk   Nr   r   r   r   r#  r#  m  s'        &GG?JGLLLr   r#  c                       e Zd ZdZdZdZdZdS )LiTVIEzyt_dlp.extractor.litvLiTVzahttps?://(?:www\.)?litv\.tv/(?:[^/?#]+/watch/|vod/[^/?#]+/content\.do\?content_id=)(?P<id>[\w-]+)r   Nr   r   r   r   r&  r&  u  s"        %GGyJLLLr   r&  c                   "    e Zd ZdZdZdZdZdZdS )LibraryOfCongressIEz"yt_dlp.extractor.libraryofcongressloczchttps?://(?:www\.)?loc\.gov/(?:item/|today/cyberlc/feature_wdesc\.php\?.*\brec=)(?P<id>[0-9a-z_.]+)zLibrary of Congressrk   Nr   r   r   r   r)  r)  |  s'        2GG{J#GLLLr   r)  c                       e Zd ZdZdZdZdZdS )LibsynIEzyt_dlp.extractor.libsynLibsynzO(?P<mainurl>https?://html5-player\.libsyn\.com/embed/episode/id/(?P<id>[0-9]+))rk   Nr   r   r   r   r,  r,    s"        'GGdJLLLr   r,  c                       e Zd ZdZdZdZdZdS )LifeEmbedIEyt_dlp.extractor.lifenewsz
life:embedz<https?://embed\.life\.ru/(?:embed|video)/(?P<id>[\da-f]{32})rk   Nr   r   r   r   r/  r/    s"        )GGRJLLLr   r/  c                   "    e Zd ZdZdZdZdZdZdS )
LifeNewsIEr0  lifez%https?://life\.ru/t/[^/]+/(?P<id>\d+)zLife.rur   Nr   r   r   r   r2  r2    s'        )GG:JGLLLr   r2  c                       e Zd ZdZdZdZdZdS )LikeeIEyt_dlp.extractor.likeelikeezR(?x)https?://(www\.)?likee\.video/(?:(?P<channel_name>[^/]+)/video/|v/)(?P<id>\w+)rk   Nr   r   r   r   r5  r5    "        &GGhJLLLr   r5  c                       e Zd ZdZdZdZdZdS )LikeeUserIEr6  z
likee:userz.https?://(www\.)?likee\.video/(?P<id>[^/]+)/?$rl   Nr   r   r   r   r:  r:    s"        &GGCJLLLr   r:  c                       e Zd ZdZdZdZdS )LinkedInBaseIEyt_dlp.extractor.linkedinLinkedInBaselinkedinNrz   r   r   r   r<  r<    r  r   r<  c                   "    e Zd ZdZdZdZdZdZdS )LinkedInEventsIEr=  zlinkedin:eventsz6https?://(?:www\.)?linkedin\.com/events/(?P<id>[\w-]+)r?  rk   Nr   r   r   r   rA  rA    s'        )GGLJNLLLr   rA  c                   &    e Zd ZdZdZddgZdZdZdS )
LinkedInIEr=  LinkedInzLhttps?://(?:www\.)?linkedin\.com/posts/[^/?#]+-(?P<id>\d+)-\w{4}/?(?:[?#]|$)zHhttps?://(?:www\.)?linkedin\.com/feed/update/urn:li:activity:(?P<id>\d+)r?  rk   Nr   r   r   r   rC  rC    s4        )GGd  gt  uJNLLLr   rC  c                       e Zd ZdZdZdZdS )LinkedInLearningBaseIEr=  LinkedInLearningBaser?  Nrz   r   r   r   rF  rF    s        )G$GNNNr   rF  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )LinkedInLearningCourseIEr=  zlinkedin:learning:coursez9https?://(?:www\.)?linkedin\.com/learning/(?P<id>[^/?#]+)r?  rl   c                 ~    t                               |          rdn t                                          |          S r   )LinkedInLearningIEr4   r   r   s     r   r4   z!LinkedInLearningCourseIE.suitable  r  r   r  r   s   @r   rI  rI    sd        )G(GNJNLT T T T [T T T T Tr   rI  c                   "    e Zd ZdZdZdZdZdZdS )rK  r=  zlinkedin:learningzPhttps?://(?:www\.)?linkedin\.com/learning/(?P<course_slug>[^/]+)/(?P<id>[^/?#]+)r?  rk   Nr   r   r   r   rK  rK    s'        )G!GeJNLLLr   rK  c                       e Zd ZdZdZdZdZdS )
Liputan6IEzyt_dlp.extractor.liputan6Liputan6z7https?://www\.liputan6\.com/\w+/read/\d+/(?P<id>[\w-]+)rk   Nr   r   r   r   rN  rN    s"        )GGOJLLLr   rN  c                       e Zd ZdZdZdZdZdS )ListenNotesIEzyt_dlp.extractor.listennotesListenNoteszDhttps?://(?:www\.)?listennotes\.com/podcasts/[^/]+/[^/]+-(?P<id>.+)/rk   Nr   r   r   r   rQ  rQ    s"        ,GGYJLLLr   rQ  c                   "    e Zd ZdZdZdZdZdZdS )LiveJournalIEzyt_dlp.extractor.livejournalLiveJournalzHhttps?://(?:[^.]+\.)?livejournal\.com/video/album/\d+.+?\bid=(?P<id>\d+)Frk   Nr  r   r   r   rT  rT    s'        ,GG`JHLLLr   rT  c                       e Zd ZdZdZdZdZdS )LivestreamIEyt_dlp.extractor.livestream
livestreamz(?x)
        https?://(?:new\.)?livestream\.com/
        (?:accounts/(?P<account_id>\d+)|(?P<account_name>[^/]+))
        (?:/events/(?P<event_id>\d+)|/(?P<event_name>[^/]+))?
        (?:/videos/(?P<id>\d+))?
    r   Nr   r   r   r   rW  rW    s%        +GG sJLLLr   rW  c                       e Zd ZdZdZdZdZdS )LivestreamOriginalIErX  zlivestream:originalz(?x)https?://original\.livestream\.com/
        (?P<user>[^/\?#]+)(?:/(?P<type>video|folder)
        (?:(?:\?.*?Id=|/)(?P<id>.*?)(&|$))?)?
        r   Nr   r   r   r   r[  r[    s%        +G#G nJLLLr   r[  c                       e Zd ZdZdZdZdZdS )LivestreamShortenerIErX  zlivestream:shortenerz https?://livestre\.am/(?P<id>.+)FNrV  r   r   r   r]  r]    s"        +G$G4JGGGr   r]  c                       e Zd ZdZdZdZdZdS )LivestreamfailsIEz yt_dlp.extractor.livestreamfailsLivestreamfailszDhttps?://(?:www\.)?livestreamfails\.com/(?:clip|post)/(?P<id>[0-9]+)rk   Nr   r   r   r   r_  r_    s"        0GGYJLLLr   r_  c                       e Zd ZdZdZdZdZdS )LnkIEzyt_dlp.extractor.lnkLnkz,https?://(?:www\.)?lnk\.lt/[^/]+/(?P<id>\d+)rk   Nr   r   r   r   rb  rb  
  s"        $GGBJLLLr   rb  c                       e Zd ZdZdZdZdZdS )LocoIEzyt_dlp.extractor.locoLocozGhttps?://(?:www\.)?loco\.com/(?P<type>streamers|stream)/(?P<id>[^/?#]+)rk   Nr   r   r   r   re  re    s"        %GG\JLLLr   re  c                   "    e Zd ZdZdZdZdZdZdS )LoomFolderIEyt_dlp.extractor.loomzloom:folderz=https?://(?:www\.)?loom\.com/share/folder/(?P<id>[\da-f]{32})Frl   Nr  r   r   r   rh  rh    s'        %GGSJHLLLr   rh  c                       e Zd ZdZdZdZdZdS )LoomIEri  loomz@https?://(?:www\.)?loom\.com/(?:share|embed)/(?P<id>[\da-f]{32})rk   Nr   r   r   r   rk  rk     s"        %GGVJLLLr   rk  c                       e Zd ZdZdZdS )NuevoBaseIEzyt_dlp.extractor.nuevo	NuevoBaseNr   r   r   r   rn  rn  '  r   r   rn  c                   "    e Zd ZdZdZdZdZdZdS )LoveHomePornIEzyt_dlp.extractor.lovehomepornLoveHomePornzThttps?://(?:www\.)?lovehomeporn\.com/video/(?P<id>\d+)(?:/(?P<display_id>[^/?#&]+))?r   rk   Nr  r   r   r   rq  rq  ,  s'        -GGjJILLLr   rq  c                       e Zd ZdZdZdZdZdS )LumniIEzyt_dlp.extractor.lumniLumniz1https?://(?:www\.)?lumni\.fr/video/(?P<id>[\w-]+)rk   Nr   r   r   r   rt  rt  4  r'  r   rt  c                       e Zd ZdZdZdZdS )LyndaBaseIEyt_dlp.extractor.lynda	LyndaBaselyndaNrz   r   r   r   rw  rw  ;  r	  r   rw  c                   "    e Zd ZdZdZdZdZdZdS )LyndaCourseIErx  zlynda:coursezihttps?://(?:www|m)\.(?:lynda\.com|educourse\.ga)/(?P<coursepath>(?:[^/]+/){2,3}(?P<courseid>\d+))-2\.htmlzlynda.com online coursesrz  Nr   r   r   r   r|  r|  A  s*        &GG BJ(GNNNr   r|  c                   &    e Zd ZdZdZdZdZdZdZdS )LyndaIErx  rz  a:  (?x)
                    https?://
                        (?:www\.)?(?:lynda\.com|educourse\.ga)/
                        (?:
                            (?:[^/]+/){2,3}(?P<course_id>\d+)|
                            player/embed
                        )/
                        (?P<id>\d+)
                    zlynda.com videosrk   Nr   r   r   r   r~  r~  I  s/        &GG [J GNLLLr   r~  c                   "    e Zd ZdZdZdZdZdZdS )MBNIEzyt_dlp.extractor.mbnMBNzWhttps?://(?:www\.)?mbn\.co\.kr/vod/programContents/preview(?:list)?/\d+/\d+/(?P<id>\d+)u   mbn.co.kr (매일방송)rk   Nr   r   r   r   r  r  R  s'        $GGpJ(GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )MDRIEzyt_dlp.extractor.mdrMDRzEhttps?://(?:www\.)?mdr\.de/(?:.*)/[a-z-]+-?(?P<id>\d+)(?:_.+?)?\.htmlzMDR.DErk   Nr   r   r   r   r  r  Z  s'        $GG\JGLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )MGTVIEzyt_dlp.extractor.mgtvMangoTVzChttps?://(?:w(?:ww)?\.)?mgtv\.com/[bv]/(?:[^/]+/)*(?P<id>\d+)\.htmlu   芒果TVrk   Nr   r   r   r   r  r  b  s'        %GGZJGLLLr   r  c                       e Zd ZdZdZdZdZdS )MLBArticleIEyt_dlp.extractor.mlb
MLBArticlez*https?://www\.mlb\.com/news/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  j  s"        $GG@JLLLr   r  c                       e Zd ZdZdZdS )	MLBBaseIEr  MLBBaseNr   r   r   r   r  r  q  r  r   r  c                       e Zd ZdZdZdZdZdS )MLBIEr  MLBa6  (?x)
                    https?://
                        (?:[\da-z_-]+\.)*mlb\.com/
                        (?:
                            (?:
                                (?:[^/]+/)*video/[^/]+/c-|
                                (?:
                                    shared/video/embed/(?:embed|m-internal-embed)\.html|
                                    (?:[^/]+/)+(?:play|index)\.jsp|
                                )\?.*?\bcontent_id=
                            )
                            (?P<id>\d+)
                        )
                    rk   Nr   r   r   r   r  r  v  s%        $GG _	JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )MLBTVIEr  MLBTVz-https?://(?:www\.)?mlb\.com/tv/g(?P<id>\d{6})mlbrk   Nr   r   r   r   r  r  }  s'        $GGCJNLLLr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )
MLBVideoIEr  MLBVideoz=https?://(?:www\.)?mlb\.com/(?:[^/]+/)*video/(?P<id>[^/?&#]+)rk   c                 ~    t                               |          rdn t                                          |          S r   )r  r4   r   r   s     r   r4   zMLBVideoIE.suitable  0    s++Fuu1A1A#1F1FFr   r   r   s   @r   r  r    s_        $GGRJLG G G G [G G G G Gr   r  c                       e Zd ZdZdZdZdZdS )MLSSoccerIEzyt_dlp.extractor.mlssoccer	MLSSoccera|  https?://(?:www\.)?(?:(?:cfmontreal|intermiamicf|lagalaxy|lafc|houstondynamofc|dcunited|atlutd|mlssoccer|fcdallas|columbuscrew|coloradorapids|fccincinnati|chicagofirefc|austinfc|nashvillesc|whitecapsfc|sportingkc|soundersfc|sjearthquakes|rsl|timbers|philadelphiaunion|orlandocitysc|newyorkredbulls|nycfc)\.com|(?:torontofc)\.ca|(?:revolutionsoccer)\.net)/video/#?(?P<id>[^/&$#?]+)rk   Nr   r   r   r   r  r    s%        *GG TJLLLr   r  c                       e Zd ZdZdZdZdS )MNetTVBaseIErt  
MNetTVBasemnettvNrz   r   r   r   r  r            'GGNNNr   r  c                       e Zd ZdZdZdZdZdS )MNetTVIErt  MNetTVz(?x)https?://(?:www\.)?tvplus\.m\-net\.de/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r  Nr  r   r   r   r  r    s%        'GG qJNNNr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )MNetTVLiveIErt  
MNetTVLivez(?x)https?://(?:www\.)?tvplus\.m\-net\.de/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r  c                 ~    t                               |          rdn t                                          |          S r   )r  r4   r   r   s     r   r4   zMNetTVLiveIE.suitable  2     ))#..IuuEGG4D4DS4I4IIr   r  r   s   @r   r  r    sb        'GG fJNJ J J J [J J J J Jr   r  c                       e Zd ZdZdZdZdZdS )MNetTVRecordingsIErt  MNetTVRecordingszy(?x)https?://(?:www\.)?tvplus\.m\-net\.de/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r  Nr  r   r   r   r  r    s%        'G G VJNNNr   r  c                       e Zd ZdZdZdZdZdS )MSNIEzyt_dlp.extractor.msnMSNzhttps?://(?:(?:www|preview)\.)?msn\.com/(?P<locale>[a-z]{2}-[a-z]{2})/(?:[^/?#]+/)+(?P<display_id>[^/?#]+)/[a-z]{2}-(?P<id>[\da-zA-Z]+)r   Nr   r   r   r   r  r    s%        $GG ^JLLLr   r  c                       e Zd ZdZdZdZdZdS )MTVIEr  mtvzGhttps?://(?:www\.)?mtv\.com/(?:video-clips|episodes)/(?P<id>[\da-z]{6})rk   Nr   r   r   r   r  r    r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )MTVUutisetArticleIErE
  MTVUutisetArticlez<https?://(?:www\.)mtvuutiset\.fi/artikkeli/[^/]+/(?P<id>\d+)Frk   Nr  r   r   r   r  r    s'        $G!GRJHLLLr   r  c                       e Zd ZdZdZdZdZdS )MaarivIEzyt_dlp.extractor.maarivzmaariv.co.ilzQhttps?://player\.maariv\.co\.il/public/player\.html\?(?:[^#]+&)?media=(?P<id>\d+)rk   Nr   r   r   r   r  r    s"        'GGjJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )MagellanTVIEzyt_dlp.extractor.magellantv
MagellanTVzAhttps?://(?:www\.)?magellantv\.com/(?:watch|video)/(?P<id>[\w-]+)r  rk   Nr  r   r   r   r  r    s'        +GGWJILLLr   r  c                       e Zd ZdZdZdZdZdS )MagentaMusikIEzyt_dlp.extractor.magentamusikMagentaMusikz3https?://(?:www\.)?magentamusik\.de/(?P<id>[^/?#]+)rk   Nr   r   r   r   r  r    r	  r   r  c                   "    e Zd ZdZdZdZdZdZdS )MailRuIEyt_dlp.extractor.mailrumailrua  (?x)
                    https?://
                        (?:(?:www|m|videoapi)\.)?my\.mail\.ru/+
                        (?:
                            video/.*\#video=/?(?P<idv1>(?:[^/]+/){3}\d+)|
                            (?:videos/embed/)?(?:(?P<idv2prefix>(?:[^/]+/+){2})(?:video/(?:embed/)?)?(?P<idv2suffix>[^/]+/\d+))(?:\.html)?|
                            (?:video/embed|\+/video/meta)/(?P<metaid>\d+)
                        )
                    u   Видео@Mail.Rurk   Nr   r   r   r   r  r    s*        'GG rJ"GLLLr   r  c                       e Zd ZdZdZdS )MailRuMusicSearchBaseIEr  MailRuMusicSearchBaseNr   r   r   r   r  r    s        'G%GGGr   r  c                   "    e Zd ZdZdZdZdZdZdS )MailRuMusicIEr  zmailru:musicz>https?://my\.mail\.ru/+music/+songs/+[^/?#&]+-(?P<id>[\da-f]+)   Музыка@Mail.Rurk   Nr   r   r   r   r  r    s'        'GGTJ$GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )MailRuMusicSearchIEr  zmailru:music:searchz6https?://my\.mail\.ru/+music/+search/+(?P<id>[^/?#&]+)r  rl   Nr   r   r   r   r  r    s'        'G#GKJ$GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )MainStreamingIEzyt_dlp.extractor.mainstreamingMainStreamingzchttps?://(?:webtools-?)?(?P<host>[A-Za-z0-9-]*\.msvdn\.net)/(?:embed|amp_embed|content)/(?P<id>\w+)zMainStreaming Playerr   Nr   r   r   r   r  r    s'        .GGyJ$GLLLr   r  c                       e Zd ZdZdZdZdS )MangomoloBaseIEyt_dlp.extractor.mangomoloMangomoloBasezl(?:https?:)?//(?:admin\.mangomolo\.com/analytics/index\.php/customers/embed/|player\.mangomolo\.com/v1/)NoneNr  r   r   r   r  r    s         *GG EJJJr   r  c                       e Zd ZdZdZdZdS )MangomoloLiveIEr  zmangomolo:livez(?:https?:)?//(?:admin\.mangomolo\.com/analytics/index\.php/customers/embed/|player\.mangomolo\.com/v1/)(?:live|index)\?.*?\bchannelid=(?P<id>(?:[A-Za-z0-9+/=]|%2B|%2F|%3D)+)Nr  r   r   r   r  r    s         *GG IJJJr   r  c                       e Zd ZdZdZdZdS )MangomoloVideoIEr  zmangomolo:videoz(?:https?:)?//(?:admin\.mangomolo\.com/analytics/index\.php/customers/embed/|player\.mangomolo\.com/v1/)video\?.*?\bid=(?P<id>\d+)Nr  r   r   r   r  r    s         *GG ^JJJr   r  c                       e Zd ZdZdZdZdZdS )
ManyVidsIEzyt_dlp.extractor.manyvidsManyVidsz6(?i)https?://(?:www\.)?manyvids\.com/video/(?P<id>\d+)rk   Nr   r   r   r   r  r    s"        )GGLJLLLr   r  c                       e Zd ZdZdZdZdZdS )	MaoriTVIEzyt_dlp.extractor.maoritvMaoriTVzIhttps?://(?:www\.)?maoritelevision\.com/shows/(?:[^/]+/)+(?P<id>[^/?&#]+)rk   Nr   r   r   r   r  r     "        (GG^JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	MarkizaIEyt_dlp.extractor.markizaMarkizaz]https?://(?:www\.)?videoarchiv\.markiza\.sk/(?:video/(?:[^/]+/)*|embed/)(?P<id>\d+)(?:[_/]|$)Fr   Nr  r   r   r   r  r  '  s'        (GGtJHLLLr   r  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )MarkizaPageIEr  MarkizaPagezOhttps?://(?:www\.)?(?:(?:[^/]+\.)?markiza|tvnoviny)\.sk/(?:[^/]+/)*(?P<id>\d+)_Frk   c                 ~    t                               |          rdn t                                          |          S r   )r  r4   r   r   s     r   r4   zMarkizaPageIE.suitable6  r   r   r   r   r   r$   r`   r<   rD   rn   rq   r4   r   r   s   @r   r  r  /  sd        (GGfJHLK K K K [K K K K Kr   r  c                       e Zd ZdZdZdZdZdS )MassengeschmackTVIEz"yt_dlp.extractor.massengeschmacktvzmassengeschmack.tvz;https?://(?:www\.)?massengeschmack\.tv/play/(?P<id>[^?&#]+)rk   Nr   r   r   r   r  r  ;  s"        2G"GPJLLLr   r  c                       e Zd ZdZdZdZdZdS )	MastersIEzyt_dlp.extractor.mastersMasterszShttps?://(?:www\.)?masters\.com/en_US/watch/(?P<date>\d{4}-\d{2}-\d{2})/(?P<id>\d+)rk   Nr   r   r   r   r  r  B  s"        (GGlJLLLr   r  c                   "    e Zd ZdZdZddgZdZdS )	MatchTVIEzyt_dlp.extractor.matchtvMatchTVz'https?://matchtv\.ru/on-air/?(?:$|[?#])z:https?://video\.matchtv\.ru/iframe/channel/106/?(?:$|[?#])rk   Nr   r   r   r   r  r  I  s(        (GG<>|}JLLLr   r  c                       e Zd ZdZdZdS )
MaveBaseIEyt_dlp.extractor.maveMaveBaseNr   r   r   r   r  r  P  r  r   r  c                       e Zd ZdZdZdZdZdS )MaveChannelIEr  zmave:channelz2https?://(?P<id>[\w-]+)\.mave\.digital/?(?:$|[?#])rl   Nr   r   r   r   r  r  U  s"        %GGHJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )MaveIEr  mavezGhttps?://(?P<channel_id>[\w-]+)\.mave\.digital/ep-(?P<episode_code>\d+)r   rk   Nr  r   r   r   r  r  \  s'        %GG^JILLLr   r  c                       e Zd ZdZdZdZdZdS )	MeWatchIEyt_dlp.extractor.togglemewatchzEhttps?://(?:(?:www|live)\.)?mewatch\.sg/watch/[^/?#&]+-(?P<id>[0-9]+)rk   Nr   r   r   r   r  r  d  s"        'GGZJLLLr   r  c                       e Zd ZdZdZdZdZdS )	MedalTVIEzyt_dlp.extractor.medaltvMedalTVzBhttps?://(?:www\.)?medal\.tv/games/[^/?#&]+/clips/(?P<id>[^/?#&]+)rk   Nr   r   r   r   r  r  k  rQ	  r   r  c                       e Zd ZdZdZdZdZdS )MediaKlikkIEzyt_dlp.extractor.mediaklikk
MediaKlikkz(?x)https?://(?:www\.)?
                        (?:mediaklikk|m4sport|hirado)\.hu/.*?(?:videok?|cikk)/
                        (?:(?P<year>[0-9]{4})/(?P<month>[0-9]{1,2})/(?P<day>[0-9]{1,2})/)?
                        (?P<id>[^/#?_]+)rk   Nr   r   r   r   r  r  r  s%        +GG CJLLLr   r  c                       e Zd ZdZdZdS )MediaStreamBaseIEyt_dlp.extractor.mediastreamMediaStreamBaseNr   r   r   r   r  r  y  r  r   r  c                       e Zd ZdZdZdZdZdS )MediaStreamIEr  MediaStreamz6https?://mdstrm\.com/(?:embed|live-stream)/(?P<id>\w+)rk   Nr   r   r   r   r  r  ~  r  r   r  c                       e Zd ZdZdZdZdZdS )MediaWorksNZVODIEzyt_dlp.extractor.mediaworksnzMediaWorksNZVODzThttps?://vodupload-api\.mediaworks\.nz/library/asset/published/(?P<id>[A-Za-z0-9-]+)rk   Nr   r   r   r   r	  r	    s"        -GGiJLLLr   r	  c                       e Zd ZdZdZdZdZdS )
MediaiteIEzyt_dlp.extractor.mediaiteMediaitez;https?://(?:www\.)?mediaite\.com(?!/category)(?:/[\w-]+){2}rk   Nr   r   r   r   r  r    s"        )GGQJLLLr   r  c                       e Zd ZdZdZdS )MedialaanBaseIEyt_dlp.extractor.medialaanMedialaanBaseNr   r   r   r   r  r    r&  r   r  c                       e Zd ZdZdZdZdZdS )MedialaanIEr  	MedialaanaA  (?x)
                    https?://
                        (?:
                            (?:embed\.)?mychannels.video/embed/|
                            embed\.mychannels\.video/(?:s(?:dk|cript)/)?production/|
                            (?:www\.)?(?:
                                (?:
                                    7sur7|
                                    demorgen|
                                    hln|
                                    joe|
                                    qmusic
                                )\.be|
                                (?:
                                    [abe]d|
                                    bndestem|
                                    destentor|
                                    gelderlander|
                                    pzc|
                                    tubantia|
                                    volkskrant
                                )\.nl
                            )/videos?/(?:[^/?#]+/)*[^/?&#]+(?:-|~p)
                        )
                        (?P<id>\d+)
                    rk   Nr   r   r   r   r  r    s%        *GG uJLLLr   r  c                       e Zd ZdZdZdZdZdS )
MediasetIEyt_dlp.extractor.mediasetMediaseta  (?x)
                    (?:
                        mediaset:|
                        https?://
                            (?:\w+\.)+mediaset\.it/
                            (?:
                                (?:video|on-demand|movie)/(?:[^/]+/)+[^/]+_|
                                player/(?:v\d+/)?index\.html\?\S*?\bprogramGuid=
                            )
                    )(?P<id>F[0-9A-Z]{15})
                    rk   Nr   r   r   r   r  r    s%        )GG WJLLLr   r  c                       e Zd ZdZdZdZdZdS )MediasetShowIEr  MediasetShowa  (?x)
                    (?:
                        https?://
                            (\w+\.)+mediaset\.it/
                            (?:
                                (?:fiction|programmi-tv|serie-tv|kids)/(?:.+?/)?
                                    (?:[a-z-]+)_SE(?P<id>\d{12})
                                    (?:,ST(?P<st>\d{12}))?
                                    (?:,sb(?P<sb>\d{9}))?$
                            )
                    )
                    rl   Nr   r   r   r   r  r    s%        )GG FJLLLr   r  c                       e Zd ZdZdZdZdZdS )MediasiteCatalogIEyt_dlp.extractor.mediasiteMediasiteCatalogaC  (?xi)
                        (?P<url>https?://[^/]+/Mediasite)
                        /Catalog/Full/
                        (?P<catalog_id>(?:[0-9a-f]{32,34}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12,14}))
                        (?:
                            /(?P<current_folder_id>(?:[0-9a-f]{32,34}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12,14}))
                            /(?P<root_dynamic_folder_id>(?:[0-9a-f]{32,34}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12,14}))
                        )?
                    rl   Nr   r   r   r   r  r    s%        *G G _	JLLLr   r  c                       e Zd ZdZdZdZdZdS )MediasiteIEr  	Mediasitez(?xi)https?://[^/]+/Mediasite/(?:Play|Showcase/[^/#?]+/Presentation)/(?P<id>(?:[0-9a-f]{32,34}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12,14}))(?P<query>\?[^#]+|)rk   Nr   r   r   r   r!  r!    s%        *GG HJLLLr   r!  c                       e Zd ZdZdZdZdS )MediasiteNamedCatalogIEr  MediasiteNamedCatalogzR(?xi)(?P<url>https?://[^/]+/Mediasite)/Catalog/catalogs/(?P<catalog_name>[^/?#&]+)Nr  r   r   r   r$  r$    s        *G%GeJJJr   r$  c                       e Zd ZdZdZdZdZdS )MediciIEzyt_dlp.extractor.mediciMedicizLhttps?://(?:(?P<sub>www|edu)\.)?medici\.tv/[a-z]{2}/[\w.-]+/(?P<id>[^/?#&]+)rk   Nr   r   r   r   r'  r'    s"        'GGbJLLLr   r'  c                       e Zd ZdZdZdS )MegaTVComBaseIEyt_dlp.extractor.megatvcomMegaTVComBaseNr   r   r   r   r*  r*    r&  r   r*  c                   "    e Zd ZdZdZdZdZdZdS )MegaTVComEmbedIEr+  zmegatvcom:embedz:(?:https?:)?//(?:www\.)?megatv\.com/embed/?\?p=(?P<id>\d+)zmegatv.com embedded videosrk   Nr   r   r   r   r.  r.    s'        *GGQJ*GLLLr   r.  c                   "    e Zd ZdZdZdZdZdZdS )MegaTVComIEr+  	megatvcomzVhttps?://(?:www\.)?megatv\.com/(?:\d{4}/\d{2}/\d{2}|[^/]+/(?P<id>\d+))/(?P<slug>[^/]+)zmegatv.com videosrk   Nr   r   r   r   r0  r0    s'        *GGoJ!GLLLr   r0  c                   "    e Zd ZdZdZdZdZdZdS )MegaphoneIEzyt_dlp.extractor.megaphonezmegaphone.fmz0https?://player\.megaphone\.fm/(?P<id>[A-Z0-9]+)zmegaphone.fm embedded playersrk   Nr   r   r   r   r3  r3    s'        *GGEJ-GLLLr   r3  c                   "    e Zd ZdZdZdZdZdZdS )MeipaiIEzyt_dlp.extractor.meipaiMeipaiz3https?://(?:www\.)?meipai\.com/media/(?P<id>[0-9]+)u   美拍rk   Nr   r   r   r   r5  r5    s'        'GGHJGLLLr   r5  c                       e Zd ZdZdZdZdZdS )
MelonVODIEzyt_dlp.extractor.melonvodMelonVODzEhttps?://vod\.melon\.com/video/detail2\.html?\?.*?mvId=(?P<id>[0-9]+)rk   Nr   r   r   r   r8  r8    s"        )GG\JLLLr   r8  c                       e Zd ZdZdZdZdZdS )MetacriticIEzyt_dlp.extractor.metacritic
Metacriticz;https?://(?:www\.)?metacritic\.com/.+?/trailers/(?P<id>\d+)rk   Nr   r   r   r   r;  r;    s"        +GGQJLLLr   r;  c                   "    e Zd ZdZdZddgZdZdS )MicrosoftBuildIEyt_dlp.extractor.microsoftembedMicrosoftBuildz@https?://build\.microsoft\.com/[\w-]+/sessions/(?P<id>[\da-f-]+)zBhttps?://build\.microsoft\.com/[\w-]+/(?P<id>sessions)/?(?:[?#]|$)r   Nr   r   r   r   r>  r>    s/        /GGX  [b  cJLLLr   r>  c                       e Zd ZdZdZdZdZdS )MicrosoftEmbedIEr?  MicrosoftEmbedzShttps?://(?:www\.)?microsoft\.com/(?:[^/]+/)?videoplayer/embed/(?P<id>[a-z0-9A-Z]+)rk   Nr   r   r   r   rB  rB    s"        /GGhJLLLr   rB  c                       e Zd ZdZdZdS )MicrosoftMediusBaseIEr?  MicrosoftMediusBaseNr   r   r   r   rE  rE  	  s        /G#GGGr   rE  c                       e Zd ZdZdZdZdZdS )MicrosoftLearnEpisodeIEr?  MicrosoftLearnEpisodezGhttps?://learn\.microsoft\.com/(?:[\w-]+/)?shows/[\w-]+/(?P<id>[^?#/]+)rk   Nr   r   r   r   rH  rH    s"        /G%G^JLLLr   rH  c                       e Zd ZdZdZdZdZdS )MicrosoftLearnPlaylistIEr?  MicrosoftLearnPlaylistz\https?://learn\.microsoft\.com/(?:[\w-]+/)?(?P<type>shows|events)/(?P<id>[\w-]+)/?(?:[?#]|$)rl   Nr   r   r   r   rK  rK    s"        /G&GsJLLLr   rK  c                       e Zd ZdZdZdZdZdS )MicrosoftLearnSessionIEr?  MicrosoftLearnSessionzHhttps?://learn\.microsoft\.com/(?:[\w-]+/)?events/[\w-]+/(?P<id>[^?#/]+)rk   Nr   r   r   r   rN  rN    s"        /G%G_JLLLr   rN  c                       e Zd ZdZdZdZdZdS )MicrosoftMediusIEr?  MicrosoftMediusz]https?://medius\.microsoft\.com/Embed/(?:Video\?id=|video-nc/|VideoDetails/)(?P<id>[\da-f-]+)rk   Nr   r   r   r   rQ  rQ  #  s"        /GGtJLLLr   rQ  c                       e Zd ZdZdZdZdZdS )MicrosoftStreamIEz yt_dlp.extractor.microsoftstreammicrosoftstreamzuhttps?://(?:web|www|msit)\.microsoftstream\.com/video/(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})zMicrosoft StreamNrV  r   r   r   rT  rT  *  s%        0GG PJ GGGr   rT  c                       e Zd ZdZdZdS )MindsBaseIEyt_dlp.extractor.minds	MindsBaseNr   r   r   r   rW  rW  1  r   r   rW  c                       e Zd ZdZdZdS )MindsFeedBaseIErX  MindsFeedBaseNr   r   r   r   r[  r[  6  s        &GGGGr   r[  c                       e Zd ZdZdZdZdZdS )MindsChannelIErX  zminds:channelzXhttps?://(?:www\.)?minds\.com/(?!(?:newsfeed|media|api|archive|groups)/)(?P<id>[^/?&#]+)rl   Nr   r   r   r   r^  r^  ;  s"        &GGmJLLLr   r^  c                       e Zd ZdZdZdZdZdS )MindsGroupIErX  zminds:groupz;https?://(?:www\.)?minds\.com/groups/profile/(?P<id>[0-9]+)rl   Nr   r   r   r   r`  r`  B  s"        &GGPJLLLr   r`  c                       e Zd ZdZdZdZdZdS )MindsIErX  mindszLhttps?://(?:www\.)?minds\.com/(?:media|newsfeed|archive/view)/(?P<id>[0-9]+)rk   Nr   r   r   r   rb  rb  I  "        &GGaJLLLr   rb  c                       e Zd ZdZdZdZdS )MinotoIEzyt_dlp.extractor.minotoMinotozh(?:minoto:|https?://(?:play|iframe|embed)\.minoto-video\.com/(?P<player_id>[0-9]+)/)(?P<id>[a-zA-Z0-9]+)Nr  r   r   r   rf  rf  P  s        'GG}JJJr   rf  c                       e Zd ZdZdZdZdZdS )	Mir24TvIEzyt_dlp.extractor.mir24tvzmir24.tvz8https?://(?:www\.)?mir24\.tv/news/(?P<id>[0-9]+)/[^/?#]+rk   Nr   r   r   r   ri  ri  V  s"        (GGMJLLLr   ri  c                       e Zd ZdZdZdS )MirrativBaseIEyt_dlp.extractor.mirrativMirrativBaseNr   r   r   r   rk  rk  ]  r  r   rk  c                       e Zd ZdZdZdZdZdS )
MirrativIErl  mirrativz6https?://(?:www\.)?mirrativ\.com/live/(?P<id>[^/?#&]+)rk   Nr   r   r   r   ro  ro  b  "        )GGKJLLLr   ro  c                       e Zd ZdZdZdZdS )MirrativUserIErl  zmirrativ:userz1https?://(?:www\.)?mirrativ\.com/user/(?P<id>\d+)Nr  r   r   r   rs  rs  i  s        )GGGJJJr   rs  c                       e Zd ZdZdZdZdZdS )MirrorCoUKIEzyt_dlp.extractor.mirrorcouk
MirrorCoUKz7https?://(?:www\.)?mirror\.co\.uk/[/+[\w-]+-(?P<id>\d+)rk   Nr   r   r   r   ru  ru  o  s"        +GGOJLLLr   ru  c                       e Zd ZdZdZdZdZdS )MixchArchiveIEyt_dlp.extractor.mixchzmixch:archivez&https?://mixch\.tv/archive/(?P<id>\d+)rk   Nr   r   r   r   rx  rx  v  s"        &GG;JLLLr   rx  c                       e Zd ZdZdZdZdZdS )MixchIEry  mixchz https?://mixch\.tv/u/(?P<id>\d+)rk   Nr   r   r   r   r{  r{  }  s"        &GG5JLLLr   r{  c                       e Zd ZdZdZdZdZdS )MixchMovieIEry  zmixch:moviez https?://mixch\.tv/m/(?P<id>\w+)rk   Nr   r   r   r   r~  r~    s"        &GG5JLLLr   r~  c                       e Zd ZdZdZdS )MixcloudBaseIEyt_dlp.extractor.mixcloudMixcloudBaseNr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdZdZdS )
MixcloudIEr  mixcloudzihttps?://(?:(?:www|beta|m)\.)?mixcloud\.com/([^/]+)/(?!stream|uploads|favorites|listens|playlists)([^/]+)rk   Nr   r   r   r   r  r    "        )GG~JLLLr   r  c                       e Zd ZdZdZdS )MixcloudPlaylistBaseIEr  MixcloudPlaylistBaseNr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdZdZdS )MixcloudPlaylistIEr  zmixcloud:playlistzQhttps?://(?:www\.)?mixcloud\.com/(?P<user>[^/]+)/playlists/(?P<playlist>[^/]+)/?$rl   Nr   r   r   r   r  r    s"        )G!GfJLLLr   r  c                       e Zd ZdZdZdZdZdS )MixcloudUserIEr  zmixcloud:userz]https?://(?:www\.)?mixcloud\.com/(?P<id>[^/]+)/(?P<type>uploads|favorites|listens|stream)?/?$rl   Nr   r   r   r   r  r    s"        )GGrJLLLr   r  c                       e Zd ZdZdZdZdZdS )MixlrIEyt_dlp.extractor.mixlrMixlrzFhttps?://(?:www\.)?(?P<username>[\w-]+)\.mixlr\.com/events/(?P<id>\d+)rk   Nr   r   r   r   r  r    s"        &GG^JLLLr   r  c                       e Zd ZdZdZdZdZdS )MixlrRecoringIEr  MixlrRecoringzJhttps?://(?:www\.)?(?P<username>[\w-]+)\.mixlr\.com/recordings/(?P<id>\d+)rk   Nr   r   r   r   r  r    s"        &GGbJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )MmsIE yt_dlp.extractor.commonprotocolsMmsz(?i)mms://.+Frk   Nr   r   r   r   r  r    s'        0GGJGLLLr   r  c                       e Zd ZdZdZdZdZdS )MochaVideoIEzyt_dlp.extractor.mocha
MochaVideoz5https?://video\.mocha\.com\.vn/(?P<video_slug>[\w-]+)rk   Nr   r   r   r   r  r    s"        &GGLJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )MojevideoIEzyt_dlp.extractor.mojevideo	MojevideozQhttps?://(?:www\.)?mojevideo\.sk/video/(?P<id>\w+)/(?P<display_id>[\w()]+?)\.htmlzmojevideo.skrk   Nr   r   r   r   r  r    s'        *GGiJGLLLr   r  c                       e Zd ZdZdZdZdZdS )
MojvideoIEzyt_dlp.extractor.mojvideoMojvideozNhttps?://(?:www\.)?mojvideo\.com/video-(?P<display_id>[^/]+)/(?P<id>[a-f0-9]+)rk   Nr   r   r   r   r  r    rf  r   r  c                   "    e Zd ZdZdZdZdZdZdS )MonsterSirenHypergryphMusicIEzyt_dlp.extractor.hypergryphmonstersirenz9https?://monster-siren\.hypergryph\.com/music/(?P<id>\d+)u   塞壬唱片rk   Nr   r   r   r   r  r    s'        +GGOJGLLLr   r  c                       e Zd ZdZdZdZdZdS )MonstercatIEzyt_dlp.extractor.monstercat
Monstercatz1https?://www\.monstercat\.com/release/(?P<id>\d+)rl   Nr   r   r   r   r  r    s"        +GGGJLLLr   r  c                       e Zd ZdZdZdS )MotherlessPaginatedIEyt_dlp.extractor.motherlessMotherlessPaginatedNr   r   r   r   r  r    s        +G#GGGr   r  c                       e Zd ZdZdZdZdZdS )MotherlessGalleryIEr  MotherlessGalleryzGhttps?://(?:www\.)?motherless\.com/G[VIG]?(?P<id>[A-F0-9]+)/?(?:$|[#?])rl   Nr   r   r   r   r  r    s"        +G!G\JLLLr   r  c                       e Zd ZdZdZdZdZdS )MotherlessGroupIEr  MotherlessGroupzJhttps?://(?:www\.)?motherless\.com/g[vifm]?/(?P<id>[a-z0-9_]+)/?(?:$|[#?])rl   Nr   r   r   r   r  r    s"        +GG_JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )MotherlessIEr  
MotherlesszXhttps?://(?:www\.)?motherless\.com/(?:g/[a-z0-9_]+/|G[VIG]?[A-F0-9]+/)?(?P<id>[A-F0-9]+)r   rk   Nr  r   r   r   r  r    s'        +GGmJILLLr   r  c                       e Zd ZdZdZdZdZdS )MotherlessUploaderIEr  MotherlessUploaderz<https?://(?:www\.)?motherless\.com/u/(?P<id>\w+)/?(?:$|[?#])rl   Nr   r   r   r   r  r     s"        +G"GRJLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )MotorsportIEzyt_dlp.extractor.motorsport
MotorsportzVhttps?://(?:www\.)?motorsport\.com/[^/?#]+/video/(?:[^/?#]+/)(?P<id>[^/]+)/?(?:$|[?#])Fzmotorsport.comrk   Nr  r   r   r   r  r    s,        +GGkJHGLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
MovieFapIErI  MovieFapz_https?://(?:www\.)?(?P<host>moviefap)\.com/videos/(?P<id>[0-9a-f]+)/(?P<display_id>[^/]+)\.htmlr   rk   Nr  r   r   r   r  r    s'        (GGuJILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )MoviepilotIEzyt_dlp.extractor.moviepilot
moviepilotz6https?://(?:www\.)?moviepilot\.de/movies/(?P<id>[^/]+)zMoviepilot trailerrk   Nr   r   r   r   r  r    s'        +GGKJ"GLLLr   r  c                       e Zd ZdZdZdZdZdS )MoviewPlayIEzyt_dlp.extractor.moview
MoviewPlayz0https?://www\.moview\.id/play/\d+/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r     s"        'GGGJLLLr   r  c                       e Zd ZdZdZdZdZdS )MoviezineIEzyt_dlp.extractor.moviezine	Moviezinez5https?://(?:www\.)?moviezine\.se/video/(?P<id>[^?#]+)rk   Nr   r   r   r   r  r  '  s"        *GGJJLLLr   r  c                       e Zd ZdZdZdZdZdS )MovingImageIEzyt_dlp.extractor.movingimageMovingImagez.https?://movingimage\.nls\.uk/film/(?P<id>\d+)rk   Nr   r   r   r   r  r  .  s"        ,GGDJLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )MuenchenTVIEzyt_dlp.extractor.muenchentv
MuenchenTVz*https?://(?:www\.)?muenchen\.tv/livestreamFu   münchen.tvrk   Nr  r   r   r   r  r  5  s,        +GG?JHGLLLr   r  c                       e Zd ZdZdZdS )RozhlasBaseIEyt_dlp.extractor.rozhlasRozhlasBaseNr   r   r   r   r  r  >  r   r   r  c                       e Zd ZdZdZdZdZdS )MujRozhlasIEr  
MujRozhlasz=https?://(?:www\.)?mujrozhlas\.cz/(?:[^/]+/)*(?P<id>[^/?#&]+)r   Nr   r   r   r   r  r  C  s"        (GGRJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
MurrtubeIEyt_dlp.extractor.murrtubeMurrtubea7  (?x)
                        (?:
                            murrtube:|
                            https?://murrtube\.net/(?:v/|videos/(?P<slug>[a-z0-9-]+?)-)
                        )
                        (?P<id>[A-Z0-9]{4}|[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})
                    r   rk   Nr  r   r   r   r  r  J  s*        )GG RJILLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )MurrtubeUserIEr  MurrtubeUserz%https?://murrtube\.net/(?P<id>[^/]+)$FzMurrtube user profilerl   Nr  r   r   r   r  r  R  s,        )GG9JH%GLLLr   r  c                       e Zd ZdZdZdZdZdS )MuseAIIEzyt_dlp.extractor.museaiMuseAIz3https?://(?:www\.)?muse\.ai/(?:v|embed)/(?P<id>\w+)rk   Nr   r   r   r   r  r  [  "        'GGIJLLLr   r  c                       e Zd ZdZdZdZdZdS )MuseScoreIEzyt_dlp.extractor.musescore	MuseScorezPhttps?://(?:www\.)?musescore\.com/(?:user/\d+|[^/]+)(?:/scores)?/(?P<id>[^#&?]+)rk   Nr   r   r   r   r  r  b  s"        *GGfJLLLr   r  c                       e Zd ZdZdZdS )MusicdexBaseIEyt_dlp.extractor.musicdexMusicdexBaseNr   r   r   r   r  r  i  r  r   r  c                       e Zd ZdZdZdZdZdS )MusicdexAlbumIEr  MusicdexAlbumz2https?://(?:www\.)?musicdex\.org/album/(?P<id>\d+)rl   Nr   r   r   r   r  r  n  s"        )GGHJLLLr   r  c                       e Zd ZdZdZdS )MusicdexPageIEr  MusicdexPageNr   r   r   r   r  r  u  r  r   r  c                       e Zd ZdZdZdZdZdS )MusicdexArtistIEr  MusicdexArtistz3https?://(?:www\.)?musicdex\.org/artist/(?P<id>\d+)rl   Nr   r   r   r   r  r  z  s"        )GGIJLLLr   r  c                       e Zd ZdZdZdZdZdS )MusicdexPlaylistIEr  MusicdexPlaylistz5https?://(?:www\.)?musicdex\.org/playlist/(?P<id>\d+)rl   Nr   r   r   r   r  r    s"        )G GKJLLLr   r  c                       e Zd ZdZdZdZdZdS )MusicdexSongIEr  MusicdexSongz2https?://(?:www\.)?musicdex\.org/track/(?P<id>\d+)rk   Nr   r   r   r   r  r    s"        )GGHJLLLr   r  c                       e Zd ZdZdZdZdZdS )MuxIEzyt_dlp.extractor.muxMuxzAhttps?://(?:stream\.new/v|player\.mux\.com)/(?P<id>[A-Za-z0-9-]+)rk   Nr   r   r   r   r  r    "        $GGWJLLLr   r  c                       e Zd ZdZdZdS )	Mx3BaseIEyt_dlp.extractor.mx3Mx3BaseNr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdZdZdS )Mx3IEr  Mx3z(https?://(?:www\.)?mx3\.ch/t/(?P<id>\w+)rk   Nr   r   r   r   r  r    s"        $GG>JLLLr   r  c                       e Zd ZdZdZdZdZdS )Mx3NeoIEr  Mx3Neoz-https?://(?:www\.)?neo\.mx3\.ch/t/(?P<id>\w+)rk   Nr   r   r   r   r  r    s"        $GGDJLLLr   r  c                       e Zd ZdZdZdZdZdS )Mx3VolksmusikIEr  Mx3Volksmusikz4https?://(?:www\.)?volksmusik\.mx3\.ch/t/(?P<id>\w+)rk   Nr   r   r   r   r  r    s"        $GGKJLLLr   r  c                       e Zd ZdZdZdZdZdS )
MxplayerIEyt_dlp.extractor.mxplayerMxplayerzehttps?://(?:www\.)?mxplayer\.in/(?P<type>movie|show/[-\w]+/[-\w]+)/(?P<display_id>[-\w]+)-(?P<id>\w+)rk   Nr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdZdZdS )MxplayerShowIEr  MxplayerShowzShttps?://(?:www\.)?mxplayer\.in/show/(?P<display_id>[-\w]+)-(?P<id>\w+)/?(?:$|[#?])rl   Nr   r   r   r   r  r    s"        )GGjJLLLr   r  c                       e Zd ZdZdZdZdZdS )MySpaceAlbumIEyt_dlp.extractor.myspacezMySpace:albumzChttps?://myspace\.com/([^/]+)/music/album/(?P<title>.*-)(?P<id>\d+)rl   Nr   r   r   r   r  r    "        (GGXJLLLr   r  c                       e Zd ZdZdZdZdZdS )	MySpaceIEr  MySpacea0  (?x)
                    https?://
                        myspace\.com/[^/]+/
                        (?P<mediatype>
                            video/[^/]+/(?P<video_id>\d+)|
                            music/song/[^/?#&]+-(?P<song_id>\d+)-\d+(?:[/?#&]|$)
                        )
                    rk   Nr   r   r   r   r  r    s%        (GG OJLLLr   r  c                       e Zd ZdZdZdZdZdS )	MySpassIEzyt_dlp.extractor.myspassMySpassz=https?://(?:www\.)?myspass\.de/(?:[^/]+/)*(?P<id>\d+)/?[^/]*$rk   Nr   r   r   r   r  r    r  r   r  c                       e Zd ZdZdZdZdZdS )MyVideoGeIEzyt_dlp.extractor.myvideoge	MyVideoGez/https?://(?:www\.)?myvideo\.ge/v/(?P<id>[0-9]+)rk   Nr   r   r   r   r  r    s"        *GGDJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )MyVidsterIEzyt_dlp.extractor.myvidster	MyVidsterz3https?://(?:www\.)?myvidster\.com/video/(?P<id>\d+)r   rk   Nr  r   r   r   r  r    s'        *GGIJILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )MzaaloIEzyt_dlp.extractor.mzaaloMzaalozi(?i)https?://(?:www\.)?mzaalo\.com/(?:play|watch)/(?P<type>movie|original|clip)/(?P<id>[a-f0-9-]+)/[\w-]+r2  rk   Nr  r   r   r   r  r    s'        'GGJILLLr   r  c                       e Zd ZdZdZdZdZdS )N1InfoAssetIEyt_dlp.extractor.n1N1InfoAssetzFhttps?://best-vod\.umn\.cdn\.united\.cloud/stream\?asset=(?P<id>[^&]+)rk   Nr   r   r   r   r!  r!    s"        #GG^JLLLr   r!  c                       e Zd ZdZdZdZdZdS )	N1InfoIIEr"  zN1Info:articlezLhttps?://(?:(?:\w+\.)?n1info\.\w+|nova\.rs)/(?:[^/?#]+/){1,2}(?P<id>[^/?#]+)rk   Nr   r   r   r   r%  r%    s"        #GGdJLLLr   r%  c                       e Zd ZdZdZdS )NBACVPBaseIEyt_dlp.extractor.nba
NBACVPBaseNr   r   r   r   r'  r'            $GGGGr   r'  c                       e Zd ZdZdZdS )	NBABaseIEr(  NBABaseNr   r   r   r   r,  r,    r  r   r,  c                   "    e Zd ZdZdZdZdZdZdS )NBAChannelIEr(  znba:channelak  (?x)
        https?://(?:www\.)?nba\.com/
            (?P<team>
                blazers|
                bucks|
                bulls|
                cavaliers|
                celtics|
                clippers|
                grizzlies|
                hawks|
                heat|
                hornets|
                jazz|
                kings|
                knicks|
                lakers|
                magic|
                mavericks|
                nets|
                nuggets|
                pacers|
                pelicans|
                pistons|
                raptors|
                rockets|
                sixers|
                spurs|
                suns|
                thunder|
                timberwolves|
                warriors|
                wizards
            )
        (?:/play\#)?/(?:video/channel|series)/(?P<id>[^/?#&]+)Frl   Nr  r   r   r   r/  r/    s*        $GG dJHLLLr   r/  c                       e Zd ZdZdZdZdZdS )
NBAEmbedIEr(  z	nba:embedzhhttps?://secure\.nba\.com/assets/amp/include/video/(?:topI|i)frame\.html\?.*?\bcontentId=(?P<id>[^?#&]+)FNr"  r   r   r   r1  r1  
  s%        $GG AJHHHr   r1  c                   "    e Zd ZdZdZdZdZdZdS )NBAIEr(  nbaa{  (?x)
        https?://(?:www\.)?nba\.com/
            (?P<team>
                blazers|
                bucks|
                bulls|
                cavaliers|
                celtics|
                clippers|
                grizzlies|
                hawks|
                heat|
                hornets|
                jazz|
                kings|
                knicks|
                lakers|
                magic|
                mavericks|
                nets|
                nuggets|
                pacers|
                pelicans|
                pistons|
                raptors|
                rockets|
                sixers|
                spurs|
                suns|
                thunder|
                timberwolves|
                warriors|
                wizards
            )
        (?:/play\#)?/(?!video/channel|series)video/(?P<id>(?:[^/]+/)*[^/?#&]+)Frk   Nr  r   r   r   r3  r3    s*        $GG tJHLLLr   r3  c                       e Zd ZdZdZdS )NBAWatchBaseIEr(  NBAWatchBaseNr   r   r   r   r6  r6    s        $GGGGr   r6  c                   "    e Zd ZdZdZdZdZdZdS )NBAWatchCollectionIEr(  znba:watch:collectionz[https?://(?:(?:www\.)?nba\.com(?:/watch)?|watch\.nba\.com)/list/collection/(?P<id>[^/?#&]+)Frl   Nr  r   r   r   r9  r9    s'        $G$GrJHLLLr   r9  c                   "    e Zd ZdZdZdZdZdZdS )NBAWatchEmbedIEr(  znba:watch:embedzUhttps?://(?:(?:www\.)?nba\.com(?:/watch)?|watch\.nba\.com)/embed\?.*?\bid=(?P<id>\d+)Frk   Nr  r   r   r   r;  r;  &  s'        $GGoJHLLLr   r;  c                   "    e Zd ZdZdZdZdZdZdS )
NBAWatchIEr(  z	nba:watchzyhttps?://(?:(?:www\.)?nba\.com(?:/watch)?|watch\.nba\.com)/(?:nba/)?video/(?P<id>.+?(?=/index\.html)|(?:[^/]+/)*[^/?#&]+)Frk   Nr  r   r   r   r=  r=  .  s*        $GG RJHLLLr   r=  c                   "    e Zd ZdZdZdZdZdZdS )NBCIEr  NBCz\https?(?P<permalink>://(?:www\.)?nbc\.com/(?:classic-tv/)?[^/?#]+/video/[^/?#]+/(?P<id>\w+))r  rk   Nr  r   r   r   r?  r?  6  s'        $GGrJILLLr   r?  c                       e Zd ZdZdZdZdZdS )NBCOlympicsIEr  nbcolympicsz9https?://www\.nbcolympics\.com/videos?/(?P<id>[0-9a-z-]+)rk   Nr   r   r   r   rB  rB  >  r
  r   rB  c                   "    e Zd ZdZdZdZdZdZdS )NBCOlympicsStreamIEr  znbcolympics:streamz4https?://stream\.nbcolympics\.com/(?P<id>[0-9a-z-]+)Frk   Nr  r   r   r   rE  rE  E  s'        $G"GIJHLLLr   rE  c                   "    e Zd ZdZdZdZdZdZdS )NBCSportsIEr  	NBCSportszMhttps?://(?:www\.)?nbcsports\.com//?(?!vplayer/)(?:[^/]+/)+(?P<id>[0-9a-z-]+)Frk   Nr  r   r   r   rG  rG  M  s'        $GGbJHLLLr   rG  c                   "    e Zd ZdZdZdZdZdZdS )NBCSportsStreamIEr  NBCSportsStreamz4https?://stream\.nbcsports\.com/.+?\bpid=(?P<id>\d+)Frk   Nr  r   r   r   rJ  rJ  U  s'        $GGKJHLLLr   rJ  c                   "    e Zd ZdZdZdZdZdZdS )NBCSportsVPlayerIEr  NBCSportsVPlayerzfhttps?://(?:vplayer\.nbcsports\.com|(?:www\.)?nbcsports\.com/vplayer)/(?:[^/]+/)+(?P<id>[0-9a-zA-Z_]+)Frk   Nr  r   r   r   rM  rM  ]  s'        $G G}JHLLLr   rM  c                       e Zd ZdZdZdZdZdS )NBCStationsIEr  NBCStationsa  https?://(?:www\.)?(?P<site>nbcbayarea|nbcboston|nbcchicago|nbcconnecticut|nbcdfw|nbclosangeles|nbcmiami|nbcnewyork|nbcphiladelphia|nbcsandiego|nbcwashington|necn|telemundo52|telemundoarizona|telemundochicago|telemundonuevainglaterra)\.com/(?:[^/?#]+/)*(?P<id>[^/?#]+)/?(?:$|[#?])rk   Nr   r   r   r   rP  rP  e  s%        $GG nJLLLr   rP  c                       e Zd ZdZdZdZdS )NDREmbedBaseIEyt_dlp.extractor.ndrzndr:embed:basezN(?:ndr:(?P<id_s>[\da-z]+)|https?://www\.ndr\.de/(?P<id>[\da-z]+)-ppjson\.json)Nr  r   r   r   rS  rS  l  s        $GGfJJJr   rS  c                       e Zd ZdZdZdZdZdS )
NDREmbedIErT  z	ndr:embedz^https?://(?:\w+\.)*ndr\.de/(?:[^/]+/)*(?P<id>[\da-z]+)-(?:(?:ard)?player|externalPlayer)\.htmlrk   Nr   r   r   r   rV  rV  r  s"        $GGvJLLLr   rV  c                       e Zd ZdZdZdS )	NDRBaseIErT  NDRBaseNr   r   r   r   rX  rX  y  r  r   rX  c                   "    e Zd ZdZdZdZdZdZdS )NDRIErT  ndrzDhttps?://(?:\w+\.)*ndr\.de/(?:[^/]+/)*(?P<id>[^/?#]+),[\da-z]+\.htmlzNDR.de - Norddeutscher Rundfunkrk   Nr   r   r   r   r[  r[  ~  s'        $GG\J/GLLLr   r[  c                   "    e Zd ZdZdZdZdZdZdS )NDTVIEzyt_dlp.extractor.ndtvNDTVzRhttps?://(?:[^/]+\.)?ndtv\.com/(?:[^/]+/)*videos?/?(?:[^/]+/)*[^/?^&]+-(?P<id>\d+)Frk   Nr  r   r   r   r^  r^    s'        %GGhJHLLLr   r^  c                       e Zd ZdZdZdS )	NFBBaseIEyt_dlp.extractor.nfbNFBBaseNr   r   r   r   ra  ra    r  r   ra  c                   &    e Zd ZdZdZddgZdZdZdS )NFBIErb  nfbzHhttps?://(?:www\.)?(?P<site>nfb|onf)\.ca/(?P<type>film)/(?P<id>[^/?#&]+)zghttps?://(?:www\.)?(?P<site>nfb|onf)\.ca/(?P<type>series?)/(?P<id>[^/?#&]+/s(?:ea|ai)son\d+/episode\d+)z$nfb.ca and onf.ca films and episodesrk   Nr   r   r   r   re  re    s4        $GG^  aN  OJ4GLLLr   re  c                   "    e Zd ZdZdZdZdZdZdS )NFBSeriesIErb  z
nfb:serieszWhttps?://(?:www\.)?(?P<site>nfb|onf)\.ca/(?P<type>series?)/(?P<id>[^/?#&]+)/?(?:[?#]|$)znfb.ca and onf.ca seriesrl   Nr   r   r   r   rh  rh    s'        $GGlJ(GLLLr   rh  c                       e Zd ZdZdZdZdZdS )NFHSNetworkIEzyt_dlp.extractor.nfhsnetworkNFHSNetworkzVhttps?://(?:www\.)?nfhsnetwork\.com/events/[\w-]+/(?P<id>(?:gam|evt|dd|)?[\w\d]{0,10})rk   Nr   r   r   r   rj  rj    s"        ,GGnJLLLr   rj  c                       e Zd ZdZdZdS )	NFLBaseIEyt_dlp.extractor.nflNFLBaseNr   r   r   r   rm  rm    r  r   rm  c                       e Zd ZdZdZdZdZdS )NFLArticleIErn  znfl.com:articlea  (?x)
                    https?://
                        (?P<host>
                            (?:www\.)?
                            (?:
                                (?:
                                    nfl|
                                    buffalobills|
                                    miamidolphins|
                                    patriots|
                                    newyorkjets|
                                    baltimoreravens|
                                    bengals|
                                    clevelandbrowns|
                                    steelers|
                                    houstontexans|
                                    colts|
                                    jaguars|
                                    (?:titansonline|tennesseetitans)|
                                    denverbroncos|
                                    (?:kc)?chiefs|
                                    raiders|
                                    chargers|
                                    dallascowboys|
                                    giants|
                                    philadelphiaeagles|
                                    (?:redskins|washingtonfootball)|
                                    chicagobears|
                                    detroitlions|
                                    packers|
                                    vikings|
                                    atlantafalcons|
                                    panthers|
                                    neworleanssaints|
                                    buccaneers|
                                    azcardinals|
                                    (?:stlouis|the)rams|
                                    49ers|
                                    seahawks
                                )\.com|
                                .+?\.clubs\.nfl\.com
                            )
                        )/
                    news/(?P<id>[^/#?&]+)rl   Nr   r   r   r   rq  rq    s%        $GG [ JLLLr   rq  c                       e Zd ZdZdZdZdZdS )NFLIErn  znfl.coma  (?x)
                    https?://
                        (?P<host>
                            (?:www\.)?
                            (?:
                                (?:
                                    nfl|
                                    buffalobills|
                                    miamidolphins|
                                    patriots|
                                    newyorkjets|
                                    baltimoreravens|
                                    bengals|
                                    clevelandbrowns|
                                    steelers|
                                    houstontexans|
                                    colts|
                                    jaguars|
                                    (?:titansonline|tennesseetitans)|
                                    denverbroncos|
                                    (?:kc)?chiefs|
                                    raiders|
                                    chargers|
                                    dallascowboys|
                                    giants|
                                    philadelphiaeagles|
                                    (?:redskins|washingtonfootball)|
                                    chicagobears|
                                    detroitlions|
                                    packers|
                                    vikings|
                                    atlantafalcons|
                                    panthers|
                                    neworleanssaints|
                                    buccaneers|
                                    azcardinals|
                                    (?:stlouis|the)rams|
                                    49ers|
                                    seahawks
                                )\.com|
                                .+?\.clubs\.nfl\.com
                            )
                        )/
                    (?:videos?|listen|audio)/(?P<id>[^/#?&]+)rk   Nr   r   r   r   rs  rs    s%        $GG o JLLLr   rs  c                       e Zd ZdZdZdZdZdS )NFLPlusEpisodeIErn  znfl.com:plus:episodez8https?://(?:www\.)?nfl\.com/plus/episodes/(?P<id>[\w-]+)rk   Nr   r   r   r   ru  ru    s"        $G$GNJLLLr   ru  c                       e Zd ZdZdZdZdZdS )NFLPlusReplayIErn  znfl.com:plus:replayzHhttps?://(?:www\.)?nfl\.com/plus/games/(?P<slug>[\w-]+)(?:/(?P<id>\d+))?r   Nr   r   r   r   rw  rw    s"        $G#G_JLLLr   rw  c                       e Zd ZdZdZdS )	NHLBaseIEyt_dlp.extractor.nhlNHLBaseNr   r   r   r   ry  ry    r  r   ry  c                       e Zd ZdZdZdZdZdS )NHLIErz  znhl.comzFhttps?://(?:www\.)?(?P<site>nhl|wch2016)\.com/(?:[^/]+/)*c-(?P<id>\d+)rk   Nr   r   r   r   r}  r}    s"        $GG\JLLLr   r}  c                       e Zd ZdZdZdZdZdS )NJoyEmbedIErT  z
njoy:embedz^https?://(?:www\.)?n-joy\.de/(?:[^/]+/)*(?P<id>[\da-z]+)-(?:player|externalPlayer)_[^/]+\.htmlrk   Nr   r   r   r   r  r    s"        $GGuJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )NJoyIErT  njoyz[https?://(?:www\.)?n-joy\.de/(?:[^/]+/)*(?:(?P<display_id>[^/?#]+),)?(?P<id>[\da-z]+)\.htmlzN-JOYrk   Nr   r   r   r   r  r    s'        $GGrJGLLLr   r  c                       e Zd ZdZdZdZdZdS )NOSNLArticleIEzyt_dlp.extractor.nosnlNOSNLArticlezGhttps?://nos\.nl/(?P<type>video|(\w+/)?\w+)/?\d+-(?P<display_id>[\w-]+)r   Nr   r   r   r   r  r    s"        &GG_JLLLr   r  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )NPOIEr  npo  (?x)
                    (?:
                        npo:|
                        https?://
                            (?:www\.)?
                            (?:
                                npo\.nl/(?:[^/]+/)*|
                                (?:ntr|npostart)\.nl/(?:[^/]+/){2,}|
                                omroepwnl\.nl/video/fragment/[^/]+__|
                                (?:zapp|npo3)\.nl/(?:[^/]+/){2,}
                            )
                        )
                        (?P<id>[^/?#]+)
                1npo.nl, ntr.nl, omroepwnl.nl, zapp.nl and npo3.nlrk   c                     t          fdt          t          t          fD                       rdn t	                                                    S )Nc              3   B   K   | ]}|                               V  d S r'   r  r  s     r   r;   z!NPOIE.suitable.<locals>.<genexpr>  K       G G  [[-- G G G G G Gr   Fr   	NPOLiveIE
NPORadioIENPORadioFragmentIEr   r4   r   s    `r   r4   zNPOIE.suitable  k     G G G G$j2DEG G G G G +WW%%c**	,r   r   r   r   r$   r`   r<   rZ   rn   rq   r4   r   r   s   @r   r  r    s^        $GG {JAGL, , , , [, , , , ,r   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )NPOPlaylistBaseIEr  r  r  r  c                     t          fdt          t          t          fD                       rdn t	                                                    S )Nc              3   B   K   | ]}|                               V  d S r'   r  r  s     r   r;   z-NPOPlaylistBaseIE.suitable.<locals>.<genexpr>  r  r   Fr  r   s    `r   r4   zNPOPlaylistBaseIE.suitable  r  r   )
r   r   r   r$   r`   r<   rZ   rq   r4   r   r   s   @r   r  r    sY        $GG {JAG, , , , [, , , , ,r   r  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )AndereTijdenIEr  anderetijdenzIhttps?://(?:www\.)?anderetijden\.nl/programma/(?:[^/]+/)+(?P<id>[^/?#&]+)r  rl   c                     t          fdt          t          t          fD                       rdn t	                                                    S )Nc              3   B   K   | ]}|                               V  d S r'   r  r  s     r   r;   z*AndereTijdenIE.suitable.<locals>.<genexpr>  r  r   Fr  r   s    `r   r4   zAndereTijdenIE.suitable  r  r   r  r   s   @r   r  r    s[        $GG^JAGL, , , , [, , , , ,r   r  c                       e Zd ZdZdZdZdZdS )r  r  znpo.nl:livez?https?://(?:www\.)?npo(?:start)?\.nl/live(?:/(?P<id>[^/?#&]+))?rk   Nr   r   r   r   r  r    s"        $GGTJLLLr   r  c                       e Zd ZdZdZdZdZdS )r  r  znpo.nl:radio:fragmentz;https?://(?:www\.)?npo\.nl/radio/[^/]+/fragment/(?P<id>\d+)rk   Nr   r   r   r   r  r    s"        $G%GQJLLLr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )r  r  znpo.nl:radioz.https?://(?:www\.)?npo\.nl/radio/(?P<id>[^/]+)rk   c                 ~    t                               |          rdn t                                          |          S r   )r  r4   r   r   s     r   r4   zNPORadioIE.suitable*  r  r   r   r   s   @r   r  r  $  s_        $GGCJLT T T T [T T T T Tr   r  c                       e Zd ZdZdZdS )	NRKBaseIEyt_dlp.extractor.nrkNRKBaseNr   r   r   r   r  r  /  r  r   r  c                       e Zd ZdZdZdZdZdS )NRKIEr  NRKa  (?x)
                        (?:
                            nrk:|
                            https?://
                                (?:
                                    (?:www\.)?nrk\.no/video/(?:PS\*|[^_]+_)|
                                    v8[-.]psapi\.nrk\.no/mediaelement/
                                )
                            )
                            (?P<id>[^?\#&]+)
                        rk   Nr   r   r   r   r  r  4  s%        $GG JJLLLr   r  c                       e Zd ZdZdZdS )NRKPlaylistBaseIEr  NRKPlaylistBaseNr   r   r   r   r  r  ;  r  r   r  c                       e Zd ZdZdZdZdZdS )NRKPlaylistIEr  NRKPlaylistzBhttps?://(?:www\.)?nrk\.no/(?!video|skole)(?:[^/]+/)+(?P<id>[^/]+)rl   Nr   r   r   r   r  r  @  s"        $GGWJLLLr   r  c                       e Zd ZdZdZdZdZdS )NRKRadioPodkastIEr  NRKRadioPodkastzohttps?://radio\.nrk\.no/pod[ck]ast/(?:[^/]+/)+(?P<id>l_[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})rk   Nr   r   r   r   r  r  G  s%        $GG JJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
NRKSkoleIEr  NRKSkolez;https?://(?:www\.)?nrk\.no/skole/?\?.*\bmediaId=(?P<id>\d+)z	NRK Skolerk   Nr   r   r   r   r  r  N  s'        $GGSJGLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )NRKTVEpisodeIEr  NRKTVEpisodezhhttps?://tv\.nrk\.no/serie/(?P<id>[^/?#]+/sesong/(?P<season_number>\d+)/episode/(?P<episode_number>\d+))   rk   Nr  r   r   r   r  r  V  s'        $GGJILLLr   r  c                       e Zd ZdZdZdZdZdS )NRKTVEpisodesIEr  NRKTVEpisodesz:https?://tv\.nrk\.no/program/[Ee]pisodes/[^/]+/(?P<id>\d+)rl   Nr   r   r   r   r  r  ^  s"        $GGPJLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )NRKTVIEr  NRKTVzLhttps?://(?:tv|radio)\.nrk(?:super)?\.no/(?:[^/]+/)*(?P<id>[a-zA-Z]{4}\d{8})zNRK TV and NRK Radior  rk   Nr3  r   r   r   r  r  e  s,        $GGbJ$GILLLr   r  c                       e Zd ZdZdZdZdZdS )NRKTVDirekteIEr  NRKTVDirektez7https?://(?:tv|radio)\.nrk\.no/direkte/(?P<id>[^/?#&]+)z$NRK TV Direkte and NRK Radio DirekteNrV  r   r   r   r  r  n  s"        $GGLJ4GGGr   r  c                       e Zd ZdZdZdS )NRKTVSerieBaseIEr  NRKTVSerieBaseNr   r   r   r   r  r  u  s        $GGGGr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )NRKTVSeasonIEr  NRKTVSeasonas  (?x)
                    https?://
                        (?P<domain>tv|radio)\.nrk\.no/
                        (?P<serie_kind>serie|pod[ck]ast)/
                        (?P<serie>[^/]+)/
                        (?:
                            (?:sesong/)?(?P<id>\d+)|
                            sesong/(?P<id_2>[^/?#&]+)
                        )
                    rl   c                     t                               |          s4t                              |          st                              |          rdn t	                                          |          S r   )r  r4   r  r  r   r   s     r   r4   zNRKTVSeasonIE.suitable  sc     ))#.. +.2I2I#2N2N +RcRlRlmpRqRq +WW%%c**	,r   r   r   s   @r   r  r  z  sY        $GG SJL, , , , [, , , , ,r   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )NRKTVSeriesIEr  NRKTVSerieszkhttps?://(?P<domain>(?:tv|radio)\.nrk|(?:tv\.)?nrksuper)\.no/(?P<serie_kind>serie|pod[ck]ast)/(?P<id>[^/]+)rl   c                     t          fdt          t          t          t          fD                       rdn t                                                    S )Nc              3   B   K   | ]}|                               V  d S r'   r  r  s     r   r;   z)NRKTVSeriesIE.suitable.<locals>.<genexpr>  sK       ` ` S)) ` ` ` ` ` `r   F)r   r  r  r  r  r   r4   r   s    `r   r4   zNRKTVSeriesIE.suitable  sp      ` ` ` `$+^=NP]#^` ` ` ` ` 'EE!!#&&	(r   r   r   s   @r   r  r    sY        $GG BJL( ( ( ( [( ( ( ( (r   r  c                   "    e Zd ZdZdZdZdZdZdS )NRLTVIEzyt_dlp.extractor.nrlNRLTVz8https?://(?:www\.)?nrl\.com/tv(/[^/]+)*/(?P<id>[^/?&#]+)Frk   Nr  r   r   r   r  r    s'        $GGMJHLLLr   r  c                       e Zd ZdZdZdZdZdS )	NTSLiveIEzyt_dlp.extractor.ntsznts.livezChttps?://(?:www\.)?nts\.live/shows/[^/?#]+/episodes/(?P<id>[^/?#]+)rk   Nr   r   r   r   r  r    s"        $GGXJLLLr   r  c                       e Zd ZdZdZdS )StreaksBaseIEyt_dlp.extractor.streaksStreaksBaseNr   r   r   r   r  r    r   r   r  c                   "    e Zd ZdZdZdZdZdZdS )NTVCoJpCUIEzyt_dlp.extractor.ntvcojpzcu.ntv.co.jpzJhttps?://cu\.ntv\.co\.jp/(?!program-list|search)(?P<id>[\w-]+)/?(?:[?#]|$)u   日テレ無料TADA!rk   Nr   r   r   r   r  r    s'        (GGaJ$GLLLr   r  c                       e Zd ZdZdZdZdZdS )NTVDeIEzyt_dlp.extractor.ntvdezn-tv.dezfhttps?://(?:www\.)?n-tv\.de/mediathek/(?:videos|magazine)/[^/?#]+/[^/?#]+-article(?P<id>[^/?#]+)\.htmlrk   Nr   r   r   r   r  r    s"        &GG|JLLLr   r  c                       e Zd ZdZdZdZdZdS )NTVRuIEzyt_dlp.extractor.ntvruzntv.ruz8https?://(?:www\.)?ntv\.ru/(?:[^/#?]+/)*(?P<id>[^/?#&]+)rk   Nr   r   r   r   r  r    s"        &GGMJLLLr   r  c                       e Zd ZdZdZdS )NYTimesBaseIEyt_dlp.extractor.nytimesNYTimesBaseNr   r   r   r   r  r    r   r   r  c                       e Zd ZdZdZdZdZdS )NYTimesArticleIEr  NYTimesArticlezphttps?://(?:www\.)?nytimes\.com/\d{4}/\d{2}/\d{2}/(?!books|podcasts)[^/?#]+/(?:\w+/)?(?P<id>[^./?#]+)(?:\.html)?r   Nr   r   r   r   r  r    s%        (GG KJLLLr   r  c                       e Zd ZdZdZdZdZdS )NYTimesCookingIEr  NYTimesCookingGuidez4https?://cooking\.nytimes\.com/guides/(?P<id>[\w-]+)r   Nr   r   r   r   r  r    s"        (G#GJJLLLr   r  c                       e Zd ZdZdZdZdZdS )NYTimesCookingRecipeIEr  NYTimesCookingRecipez2https?://cooking\.nytimes\.com/recipes/(?P<id>\d+)rk   Nr   r   r   r   r  r    s"        (G$GHJLLLr   r  c                       e Zd ZdZdZdZdZdS )	NYTimesIEr  NYTimeszhttps?://(?:(?:www\.)?nytimes\.com/video/(?:[^/]+/)+?|graphics8\.nytimes\.com/bcvideo/\d+(?:\.\d+)?/iframe/embed\.html\?videoId=)(?P<id>\d+)rk   Nr   r   r   r   r  r    s%        (GG jJLLLr   r  c                       e Zd ZdZdZdZdZdS )
NZHeraldIEzyt_dlp.extractor.nzheraldnzheraldz?https?://(?:www\.)?nzherald\.co\.nz/[\w\/-]+\/(?P<id>[A-Z0-9]+)rk   Nr   r   r   r   r  r    s"        )GGXJLLLr   r  c                       e Zd ZdZdZdZdZdS )NZOnScreenIEzyt_dlp.extractor.nzonscreen
NZOnScreenz3https?://www\.nzonscreen\.com/title/(?P<id>[^/?#]+)rk   Nr   r   r   r   r  r    s"        +GGHJLLLr   r  c                       e Zd ZdZdZdZdZdS )NZZIEzyt_dlp.extractor.nzzNZZz=https?://(?:www\.)?nzz\.ch/(?:[^/]+/)*[^/?#]+-ld\.(?P<id>\d+)rl   Nr   r   r   r   r  r    s"        $GGTJLLLr   r  c                       e Zd ZdZdZdZdZdS )NascarClassicsIEzyt_dlp.extractor.nascarNascarClassicsz>https?://(?:www\.)?classics\.nascar\.com/video/(?P<id>[\w~-]+)rk   Nr   r   r   r   r  r    r6  r   r  c                   "    e Zd ZdZdZdZdZdZdS )NateIEyt_dlp.extractor.nateNatez*https?://tv\.nate\.com/clip/(?P<id>[0-9]+)r
  rk   Nr  r   r   r   r  r    s'        %GG?JILLLr   r  c                       e Zd ZdZdZdZdZdS )NateProgramIEr  NateProgramz3https?://tv\.nate\.com/program/clips/(?P<id>[0-9]+)rl   Nr   r   r   r   r  r    s"        %GGHJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )NationalGeographicTVIE#yt_dlp.extractor.nationalgeographicNationalGeographicTVzGhttps?://(?:www\.)?nationalgeographic\.com/tv/watch/(?P<id>[\da-fA-F]+)r  rk   Nr  r   r   r   r   r   
  s'        3G$G]JILLLr   r   c                       e Zd ZdZdZdZdZdS )NationalGeographicVideoIEr  znatgeo:videoz+https?://video\.nationalgeographic\.com/.*?rk   Nr   r   r   r   r  r    s"        3GG@JLLLr   r  c                       e Zd ZdZdZdS )NaverBaseIEyt_dlp.extractor.naver	NaverBaseNr   r   r   r   r  r    r   r   r  c                       e Zd ZdZdZdZdZdS )NaverIEr  Naverz@https?://(?:m\.)?tv(?:cast)?\.naver\.com/(?:v|embed)/(?P<id>\d+)rk   Nr   r   r   r   r
  r
    "        &GGWJLLLr   r
  c                       e Zd ZdZdZdZdZdS )NaverLiveIEr  z
Naver:livez6https?://(?:m\.)?tv(?:cast)?\.naver\.com/l/(?P<id>\d+)rk   Nr   r   r   r   r  r  %  s"        &GGMJLLLr   r  c                       e Zd ZdZdZdZdZdS )
NaverNowIEr  navernowz+https?://now\.naver\.com/s/now\.(?P<id>\w+)r   Nr   r   r   r   r  r  ,  s"        &GGBJLLLr   r  c                       e Zd ZdZdZdZdS )NebulaBaseIEyt_dlp.extractor.nebula
NebulaBasewatchnebulaNrz   r   r   r   r  r  3  s        'GG"NNNr   r  c                   "    e Zd ZdZdZdZdZdZdS )NebulaChannelIEr  znebula:channelzzhttps?://(?:www\.|beta\.)?(?:watchnebula\.com|nebula\.app|nebula\.tv)/(?!myshows|library|videos)(?P<id>[\w-]+)/?(?:$|[?#])r  rl   Nr   r   r   r   r  r  9  s*        'GG TJ"NLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )NebulaClassIEr  znebula:mediazhttps?://(?:www\.|beta\.)?(?:watchnebula\.com|nebula\.app|nebula\.tv)/(?!(?:myshows|library|videos)/)(?P<id>[\w-]+)/(?P<ep>[\w-]+)/?(?:$|[?#])r  rk   Nr   r   r   r   r  r  A  s*        'GG iJ"NLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )NebulaIEr  znebula:videoz[https?://(?:www\.|beta\.)?(?:watchnebula\.com|nebula\.app|nebula\.tv)/videos/(?P<id>[\w-]+)r  rk   Nr   r   r   r   r  r  I  s'        'GGtJ"NLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )NebulaSeasonIEr  znebula:seasonzyhttps?://(?:www\.|beta\.)?(?:watchnebula\.com|nebula\.app|nebula\.tv)/(?P<series>[\w-]+)/season/(?P<season_number>[\w-]+)r  rl   Nr   r   r   r   r  r  Q  s*        'GG TJ"NLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )NebulaSubscriptionsIEr  znebula:subscriptionszwhttps?://(?:www\.|beta\.)?(?:watchnebula\.com|nebula\.app|nebula\.tv)/(?P<id>myshows|library/latest-videos)/?(?:$|[?#])r  rl   Nr   r   r   r   r   r   Y  s*        'G$G PJ"NLLLr   r   c                       e Zd ZdZdZdZdZdS )NekoHackerIEzyt_dlp.extractor.nekohacker
NekoHackerz<https?://(?:www\.)?nekohacker\.com/(?P<id>(?!free-dl)[\w-]+)rl   Nr   r   r   r   r"  r"  a  s"        +GGRJLLLr   r"  c                       e Zd ZdZdZdZdZdS )NerdCubedFeedIEzyt_dlp.extractor.nerdcubedNerdCubedFeedz0https?://(?:www\.)?nerdcubed\.co\.uk/?(?:$|[#?])rl   Nr   r   r   r   r%  r%  h  s"        *GGFJLLLr   r%  c                       e Zd ZdZdZdZdZdS )
NestClipIEyt_dlp.extractor.nestNestClipz8https?://video\.nest\.com/(?:embedded/)?clip/(?P<id>\w+)rk   Nr   r   r   r   r(  r(  o  s"        %GGNJLLLr   r(  c                       e Zd ZdZdZdZdZdS )NestIEr)  Nestz8https?://video\.nest\.com/(?:embedded/)?live/(?P<id>\w+)rk   Nr   r   r   r   r,  r,  v  s"        %GGNJLLLr   r,  c                       e Zd ZdZdZdS )NetAppBaseIEyt_dlp.extractor.netapp
NetAppBaseNr   r   r   r   r/  r/  }  rW  r   r/  c                       e Zd ZdZdZdZdZdS )NetAppCollectionIEr0  NetAppCollectionz9https?://media\.netapp\.com/collection/(?P<id>[0-9a-f-]+)rl   Nr   r   r   r   r3  r3    s"        'G GNJLLLr   r3  c                       e Zd ZdZdZdZdZdS )NetAppVideoIEr0  NetAppVideoz;https?://media\.netapp\.com/video-detail/(?P<id>[0-9a-f-]+)rk   Nr   r   r   r   r6  r6    s"        'GGPJLLLr   r6  c                       e Zd ZdZdZdS )NetEaseMusicBaseIEyt_dlp.extractor.neteasemusicNetEaseMusicBaseNr   r   r   r   r9  r9    r  r   r9  c                   "    e Zd ZdZdZdZdZdZdS )NetEaseMusicAlbumIEr:  znetease:albumz8https?://music\.163\.com/(?:#/)?album\?id=(?P<id>[0-9]+)u   网易云音乐 - 专辑rl   Nr   r   r   r   r=  r=    s'        -GGNJ(GLLLr   r=  c                   "    e Zd ZdZdZdZdZdZdS )NetEaseMusicDjRadioIEr:  znetease:djradioz:https?://music\.163\.com/(?:#/)?djradio\?id=(?P<id>[0-9]+)u   网易云音乐 - 电台rl   Nr   r   r   r   r?  r?    s'        -GGPJ(GLLLr   r?  c                   "    e Zd ZdZdZdZdZdZdS )NetEaseMusicIEr:  znetease:songzGhttps?://(?:y\.)?music\.163\.com/(?:[#m]/)?song\?.*?\bid=(?P<id>[0-9]+)u   网易云音乐rk   Nr   r   r   r   rA  rA    s'        -GG_JGLLLr   rA  c                   "    e Zd ZdZdZdZdZdZdS )NetEaseMusicListIEr:  znetease:playlistzPhttps?://music\.163\.com/(?:#/)?(?:playlist|discover/toplist)\?id=(?P<id>[0-9]+)u   网易云音乐 - 歌单rl   Nr   r   r   r   rC  rC    s'        -G GfJ(GLLLr   rC  c                   "    e Zd ZdZdZdZdZdZdS )NetEaseMusicMvIEr:  z
netease:mvz5https?://music\.163\.com/(?:#/)?mv\?id=(?P<id>[0-9]+)u   网易云音乐 - MVrk   Nr   r   r   r   rE  rE    s'        -GGKJ$GLLLr   rE  c                   "    e Zd ZdZdZdZdZdZdS )NetEaseMusicProgramIEr:  znetease:programzAhttps?://music\.163\.com/(?:#/)?(?:dj|program)\?id=(?P<id>[0-9]+)u   网易云音乐 - 电台节目r   Nr   r   r   r   rG  rG    s'        -GGWJ.GLLLr   rG  c                   "    e Zd ZdZdZdZdZdZdS )NetEaseMusicSingerIEr:  znetease:singerz9https?://music\.163\.com/(?:#/)?artist\?id=(?P<id>[0-9]+)u   网易云音乐 - 歌手rl   Nr   r   r   r   rI  rI    s'        -GGOJ(GLLLr   rI  c                       e Zd ZdZdZdZdS )NetPlusTVBaseIErt  NetPlusTVBasenetplusNrz   r   r   r   rK  rK    s        'GGNNNr   rK  c                       e Zd ZdZdZdZdZdS )NetPlusTVIErt  	NetPlusTVz(?x)https?://(?:www\.)?netplus\.tv/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )rM  Nr  r   r   r   rO  rO    s%        'GG hJNNNr   rO  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )NetPlusTVLiveIErt  NetPlusTVLivez(?x)https?://(?:www\.)?netplus\.tv/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )rM  c                 ~    t                               |          rdn t                                          |          S r   )rO  r4   r   r   s     r   r4   zNetPlusTVLiveIE.suitable  2    #,,S11Luuuww7G7G7L7LLr   r  r   s   @r   rR  rR    sb        'GG ]JNM M M M [M M M M Mr   rR  c                       e Zd ZdZdZdZdZdS )NetPlusTVRecordingsIErt  NetPlusTVRecordingszr(?x)https?://(?:www\.)?netplus\.tv/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )rM  Nr  r   r   r   rW  rW    s%        'G#G MJNNNr   rW  c                       e Zd ZdZdZdS )NetverseBaseIEyt_dlp.extractor.netverseNetverseBaseNr   r   r   r   rZ  rZ    r  r   rZ  c                       e Zd ZdZdZdZdZdS )
NetverseIEr[  NetversezNhttps?://(?:\w+\.)?netverse\.id/(?P<type>watch|video)/(?P<display_id>[^/?#&]+)rk   Nr   r   r   r   r^  r^    s"        )GGdJLLLr   r^  c                       e Zd ZdZdZdZdZdS )NetversePlaylistIEr[  NetversePlaylistzLhttps?://(?:\w+\.)?netverse\.id/(?P<type>webseries)/(?P<display_id>[^/?#&]+)rl   Nr   r   r   r   ra  ra    s"        )G GbJLLLr   ra  c                   "    e Zd ZdZdZdZdZdZdS )NetverseSearchIEr[  NetverseSearchz8netsearch(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)	netsearchrl   Nr   r   r   r$   r`   r<   r[   rn   r   r   r   rd  rd    s'        )GGMJJLLLr   rd  c                   "    e Zd ZdZdZdZdZdZdS )
NetzkinoIEzyt_dlp.extractor.netzkinoNetzkinoz7https?://(?:www\.)?netzkino\.de/details/(?P<id>[^/?#]+)r  rk   Nr  r   r   r   ri  ri     s'        )GGLJILLLr   ri  c                   &    e Zd ZdZdZdZdZdZdZdS )NewgroundsIEyt_dlp.extractor.newgrounds
Newgroundsz]https?://(?:www\.)?newgrounds\.com/(?:audio/listen|portal/view)/(?P<id>\d+)(?:/format/flash)?
newgroundsr   rk   Nr  r   r   r   rl  rl     s,        +GGsJ!NILLLr   rl  c                       e Zd ZdZdZdZdZdS )NewgroundsPlaylistIErm  zNewgrounds:playlistzUhttps?://(?:www\.)?newgrounds\.com/(?:collection|[^/]+/search/[^/]+)/(?P<id>[^/?#&]+)rl   Nr   r   r   r   rq  rq     s"        +G#GjJLLLr   rq  c                       e Zd ZdZdZdZdZdS )NewgroundsUserIErm  zNewgrounds:userzEhttps?://(?P<id>[^\.]+)\.newgrounds\.com/(?:movies|audio)/?(?:[#?]|$)rl   Nr   r   r   r   rs  rs     s"        +GG[JLLLr   rs  c                       e Zd ZdZdZdZdZdS )NewsPicksIEzyt_dlp.extractor.newspicks	NewsPicksz4https?://newspicks\.com/movie-series/(?P<id>[^?/#]+)rk   Nr   r   r   r   ru  ru  &   "        *GGHJLLLr   ru  c                       e Zd ZdZdZdZdZdS )NewsyIEzyt_dlp.extractor.newsyNewsyz7https?://(?:www\.)?newsy\.com/stories/(?P<id>[^/?#$&]+)rk   Nr   r   r   r   ry  ry  -   r  r   ry  c                       e Zd ZdZdZdZdZdS )NexxEmbedIEyt_dlp.extractor.nexx	NexxEmbedzHhttps?://embed\.nexx(?:\.cloud|cdn\.com)/\d+/(?:video/)?(?P<id>[^/?#&]+)rk   Nr   r   r   r   r|  r|  4   s"        %GG_JLLLr   r|  c                       e Zd ZdZdZdZdZdS )NexxIEr}  Nexxaa  (?x)
                        (?:
                            https?://api\.nexx(?:\.cloud|cdn\.com)/v3(?:\.\d)?/(?P<domain_id>\d+)/videos/byid/|
                            nexx:(?:(?P<domain_id_s>\d+):)?|
                            https?://arc\.nexx\.cloud/api/video/
                        )
                        (?P<id>\d+)
                    rk   Nr   r   r   r   r  r  ;   s%        %GG FJLLLr   r  c                       e Zd ZdZdZdZdZdS )NhkForSchoolBangumiIEyt_dlp.extractor.nhkNhkForSchoolBangumizbhttps?://www2\.nhk\.or\.jp/school/movie/(?P<type>bangumi|clip)\.cgi\?das_id=(?P<id>[a-zA-Z0-9_-]+)rk   Nr   r   r   r   r  r  B   s"        $G#GzJLLLr   r  c                       e Zd ZdZdZdZdZdS )NhkForSchoolProgramListIEr  NhkForSchoolProgramListzhttps?://www\.nhk\.or\.jp/school/(?P<id>(?:rika|syakai|kokugo|sansuu|seikatsu|doutoku|ongaku|taiiku|zukou|gijutsu|katei|sougou|eigo|tokkatsu|tokushi|sonota)/[a-zA-Z0-9_-]+)rl   Nr   r   r   r   r  r  I   s%        $G'G CJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )NhkForSchoolSubjectIEr  NhkForSchoolSubjectzhttps?://www\.nhk\.or\.jp/school/(?P<id>rika|syakai|kokugo|sansuu|seikatsu|doutoku|ongaku|taiiku|zukou|gijutsu|katei|sougou|eigo|tokkatsu|tokushi|sonota)/?(?:[\?#].*)?$up   Portal page for each school subjects, like Japanese (kokugo, 国語) or math (sansuu/suugaku or 算数・数学)rl   Nr   r   r   r   r  r  P   s-        $G#G @J AGLLLr   r  c                       e Zd ZdZdZdZdZdS )NhkRadioNewsPageIEr  NhkRadioNewsPagez/https?://www\.nhk\.or\.jp/radionews/?(?:$|[?#])rl   Nr   r   r   r   r  r  X   s"        $G GEJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )NhkRadiruIEr  	NhkRadiruzhttps?://www\.nhk\.or\.jp/radio/(?:player/ondemand|ondemand/detail)\.html\?p=(?P<site>[\da-zA-Z]+)_(?P<corner>[\da-zA-Z]+)(?:_(?P<headline>[\da-zA-Z]+))?u   NHK らじる (Radiru/Rajiru)r   Nr   r   r   r   r  r  _   s*        $GG uJ-GLLLr   r  c                       e Zd ZdZdZdZdZdS )NhkRadiruLiveIEr  NhkRadiruLivez<https?://www\.nhk\.or\.jp/radio/player/\?ch=(?P<id>r[12]|fm)rk   Nr   r   r   r   r  r  g   s"        $GGSJLLLr   r  c                       e Zd ZdZdZdS )	NhkBaseIEr  NhkBaseNr   r   r   r   r  r  n   r  r   r  c                   "    e Zd ZdZdZg dZdZdS )NhkVodIEr  NhkVod)zuhttps?://www3\.nhk\.or\.jp/nhkworld/(?P<lang>[a-z]{2})/shows/(?:(?P<type>video)/)?(?P<id>\d{4}[\da-z]\d+)/?(?:$|[?#])zyhttps?://www3\.nhk\.or\.jp/nhkworld/(?P<lang>[a-z]{2})/(?:ondemand|shows)/(?P<type>audio)/(?P<id>[^/?#]+?-\d{8}-[\da-z]+)zghttps?://www3\.nhk\.or\.jp/nhkworld/(?P<lang>[a-z]{2})/ondemand/(?P<type>video)/(?P<id>\d{4}[\da-z]\d+)rk   Nr   r   r   r   r  r  s   s1        $GG D  D  DJLLLr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )NhkVodProgramIEr  NhkVodProgramz(?x)
        https?://www3\.nhk\.or\.jp/nhkworld/(?P<lang>[a-z]{2})/(?:shows|tv)/
        (?:(?P<type>audio)/programs/)?(?P<id>\w+)/?
        (?:\?(?:[^#]+&)?type=(?P<episode_type>clip|(?:radio|tv)Episode))?rl   c                 ~    t                               |          rdn t                                          |          S r   )r  r4   r   r   s     r   r4   zNhkVodProgramIE.suitable   r  r   r   r   s   @r   r  r  z   sb        $GG kJLJ J J J [J J J J Jr   r  c                       e Zd ZdZdZdZdZdS )NickIEzyt_dlp.extractor.nickznick.comzHhttps?://(?:www\.)?nick\.com/(?:video-clips|episodes)/(?P<id>[\da-z]{6})rk   Nr   r   r   r   r  r     s"        %GG^JLLLr   r  c                       e Zd ZdZdZdS )NiconicoChannelPlusBaseIE$yt_dlp.extractor.niconicochannelplusNiconicoChannelPlusBaseNr   r   r   r   r  r     s        4G'GGGr   r  c                       e Zd ZdZdZdS ) NiconicoChannelPlusChannelBaseIEr  NiconicoChannelPlusChannelBaseNr   r   r   r   r  r     s        4G.GGGr   r  c                   "    e Zd ZdZdZdZdZdZdS )!NiconicoChannelPlusChannelLivesIEr  z!NiconicoChannelPlus:channel:livesz3https?://nicochannel\.jp/(?P<id>[a-z\d\._-]+)/livesui   ニコニコチャンネルプラス - チャンネル - ライブリスト. nicochannel.jp/channel/livesrl   Nr   r   r   r   r  r     s'        4G1GIJyGLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )"NiconicoChannelPlusChannelVideosIEr  z"NiconicoChannelPlus:channel:videosz=https?://nicochannel\.jp/(?P<id>[a-z\d\._-]+)/videos(?:\?.*)?ug   ニコニコチャンネルプラス - チャンネル - 動画リスト. nicochannel.jp/channel/videosrl   Nr   r   r   r   r  r     s'        4G2GTJwGLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )NiconicoChannelPlusIEr  NiconicoChannelPluszLhttps?://nicochannel\.jp/(?P<channel>[\w.-]+)/(?:video|live)/(?P<code>sm\w+)u$   ニコニコチャンネルプラスr   rk   Nr3  r   r   r   r  r     s,        4G#GbJ4GILLLr   r  c                       e Zd ZdZdZdS )NiconicoPlaylistBaseIEyt_dlp.extractor.niconicoNiconicoPlaylistBaseNr   r   r   r   r  r     r  r   r  c                       e Zd ZdZdZdZdZdS )NiconicoHistoryIEr  zniconico:historyzBhttps?://(?:www\.|sp\.)?nicovideo\.jp/my/(?P<id>history(?:/like)?)z1NicoNico user history or likes. Requires cookies.NrV  r   r   r   r  r     s"        )G GXJAGGGr   r  c                       e Zd ZdZdZdZdS )NiconicoBaseIEr  NiconicoBaseniconicoNrz   r   r   r   r  r     r  r   r  c                   &    e Zd ZdZdZdZdZdZdZdS )
NiconicoIEr  r  zLhttps?://(?:(?:embed|sp|www)\.)?nicovideo\.jp/watch/(?P<id>(?:[a-z]{2})?\d+)u   ニコニコ動画rk   Nr   r   r   r   r  r     s,        )GGbJ"GNLLLr   r  c                   *    e Zd ZdZdZdZdZdZdZdZ	dS )	NiconicoLiveIEr  zniconico:livezDhttps?://(?:sp\.)?live2?\.nicovideo\.jp/(?:watch|gate)/(?P<id>lv\d+)u   ニコニコ生放送r  r   rk   N
r   r   r   r$   r`   r<   rZ   rY   re   rn   r   r   r   r  r     s1        )GG[J%GNILLLr   r  c                       e Zd ZdZdZdZdZdS )NiconicoPlaylistIEr  zniconico:playlistzbhttps?://(?:(?:www\.|sp\.)?nicovideo\.jp|nico\.ms)/(?:user/\d+/)?(?:my/)?mylist/(?:#/)?(?P<id>\d+)rl   Nr   r   r   r   r  r     s"        )G!G{JLLLr   r  c                       e Zd ZdZdZdZdZdS )NiconicoSeriesIEr  zniconico:serieszShttps?://(?:(?:www\.|sp\.)?nicovideo\.jp(?:/user/\d+)?|nico\.ms)/series/(?P<id>\d+)rl   Nr   r   r   r   r  r     s"        )GGlJLLLr   r  c                       e Zd ZdZdZdZdZdS )NiconicoUserIEr  NiconicoUserzHhttps?://(?:www\.)?nicovideo\.jp/user/(?P<id>\d+)(?:/video)?/?(?:$|[#?])rl   Nr   r   r   r   r  r     s"        )GG^JLLLr   r  c                       e Zd ZdZdZdS )NicovideoSearchBaseIEr  NicovideoSearchBaseNr   r   r   r   r  r     s        )G#GGGr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )NicovideoSearchDateIEr  znicovideo:search:datez=nicosearchdate(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zNico video search, newest firstnicosearchdaterl   Nr  r   r   r   r  r     s,        )G%GRJ/G!JLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )NicovideoSearchIEr  znicovideo:searchz9nicosearch(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zNico video search
nicosearchrl   Nr  r   r   r   r  r     s,        )G GNJ!GJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )NicovideoSearchURLIEr  znicovideo:search_urlz8https?://(?:www\.)?nicovideo\.jp/search/(?P<id>[^?#&]+)?zNico video search URLsrl   Nr   r   r   r   r  r   !  s'        )G$GMJ&GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )NicovideoTagURLIEr  zniconico:tagz5https?://(?:www\.)?nicovideo\.jp/tag/(?P<id>[^?#&]+)?zNicoNico video tag URLsrl   Nr   r   r   r   r  r  !  s'        )GGJJ'GLLLr   r  c                       e Zd ZdZdZdZdZdS )NinaProtocolIEzyt_dlp.extractor.ninaprotocolNinaProtocolz=https?://(?:www\.)?ninaprotocol\.com/releases/(?P<id>[^/#?]+)rl   Nr   r   r   r   r  r  !  s"        -GGRJLLLr   r  c                       e Zd ZdZdZdZdS )NineCNineMediaIEr`  9c9mediaz09c9media:(?P<destination_code>[^:]+):(?P<id>\d+)Nr  r   r   r   r  r  !  s        /GGDJJJr   r  c                   "    e Zd ZdZdZdZdZdZdS )	NineGagIEzyt_dlp.extractor.ninegag9gagz1https?://(?:www\.)?9gag\.com/gag/(?P<id>[^/?&#]+)9GAGrk   Nr   r   r   r   r  r  !  s'        (GGFJGLLLr   r  c                       e Zd ZdZdZdZdZdS )
NineNewsIEzyt_dlp.extractor.ninenews9NewszLhttps?://(?:www\.)?9news\.com\.au/(?:[\w-]+/){2,3}(?P<id>[\w-]+)/?(?:$|[?#])rk   Nr   r   r   r   r  r  %!  s"        )GGdJLLLr   r  c                       e Zd ZdZdZdZdZdS )	NineNowIEzyt_dlp.extractor.ninenowz9now.com.auzVhttps?://(?:www\.)?9now\.com\.au/(?:[^/?#]+/){2}(?P<id>(?P<type>clip|episode)-[^/?#]+)rk   Nr   r   r   r   r  r  ,!  s"        (GGlJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
NintendoIEzyt_dlp.extractor.nintendoNintendozdhttps?://(?:www\.)?nintendo\.com/(?:(?P<locale>\w{2}(?:-\w{2})?)/)?nintendo-direct/(?P<slug>[^/?#]+)ro  rk   Nr  r   r   r   r  r  3!  s'        )GG{JILLLr   r  c                       e Zd ZdZdZdZdZdS )NitterIEzyt_dlp.extractor.nitterNittera  https?://(?:3nzoldnxplag42gqjs23xvghtzf6t6yzssrtytnntc6ppc7xxuoneoad\.onion|nitter\.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd\.onion|nitter7bryz3jv7e3uekphigvmoyoem4al3fynerxkj22dmoxoq553qd\.onion|npf37k3mtzwxreiw52ccs5ay4e6qt2fkcs2ndieurdyn2cuzzsfyfvid\.onion|nitter\.v6vgyqpa7yefkorazmg5d5fimstmvm2vtbirt6676mt7qmllrcnwycqd\.onion|i23nv6w3juvzlw32xzoxcqzktegd4i4fu3nmnc2ewv4ggiu4ledwklad\.onion|26oq3gioiwcmfojub37nz5gzbkdiqp7fue5kvye7d4txv4ny6fb4wwid\.onion|vfaomgh4jxphpbdfizkm5gbtjahmei234giqj4facbwhrfjtcldauqad\.onion|iwgu3cv7ywf3gssed5iqtavmrlszgsxazkmwwnt4h2kdait75thdyrqd\.onion|erpnncl5nhyji3c32dcfmztujtl3xaddqb457jsbkulq24zqq7ifdgad\.onion|ckzuw5misyahmg7j5t5xwwuj3bwy62jfolxyux4brfflramzsvvd3syd\.onion|jebqj47jgxleaiosfcxfibx2xdahjettuydlxbg64azd4khsxv6kawid\.onion|nttr2iupbb6fazdpr2rgbooon2tzbbsvvkagkgkwohhodjzj43stxhad\.onion|nitraeju2mipeziu2wtcrqsxg7h62v5y4eqgwi75uprynkj74gevvuqd\.onion|nitter\.lqs5fjmajyp7rvp4qvyubwofzi6d4imua7vs237rkc4m5qogitqwrgyd\.onion|ibsboeui2im5o7dxnik3s5yghufumgy5abevtij5nbizequfpu4qi4ad\.onion|ec5nvbycpfa5k6ro77blxgkyrzbkv7uy6r5cngcbkadtjj2733nm3uyd\.onion|nitter\.i2p|u6ikd6zndl3c4dsdq4mmujpntgeevdk5qzkfb57r4tnfeccrn2qa\.b32\.i2p|nitterlgj3n5fgwesu3vxc5h67ruku33nqaoeoocae2mvlzhsu6k7fqd\.onion|nitter\.lacontrevoie\.fr|nitter\.fdn\.fr|nitter\.1d4\.us|nitter\.kavin\.rocks|nitter\.unixfox\.eu|nitter\.domain\.glass|nitter\.namazso\.eu|birdsite\.xanny\.family|nitter\.moomoo\.me|bird\.trom\.tf|nitter\.it|twitter\.censors\.us|nitter\.grimneko\.de|twitter\.076\.ne\.jp|nitter\.fly\.dev|notabird\.site|nitter\.weiler\.rocks|nitter\.sethforprivacy\.com|nitter\.cutelab\.space|nitter\.nl|nitter\.mint\.lgbt|nitter\.bus\-hit\.me|nitter\.esmailelbob\.xyz|tw\.artemislena\.eu|nitter\.winscloud\.net|nitter\.tiekoetter\.com|nitter\.spaceint\.fr|nitter\.privacy\.com\.de|nitter\.poast\.org|nitter\.bird\.froth\.zone|nitter\.dcs0\.hu|twitter\.dr460nf1r3\.org|nitter\.garudalinux\.org|twitter\.femboy\.hu|nitter\.cz|nitter\.privacydev\.net|nitter\.evil\.site|tweet\.lambda\.dance|nitter\.kylrth\.com|nitter\.foss\.wtf|nitter\.priv\.pw|nitter\.tokhmi\.xyz|nitter\.catalyst\.sx|unofficialbird\.com|nitter\.projectsegfau\.lt|nitter\.eu\.projectsegfau\.lt|singapore\.unofficialbird\.com|canada\.unofficialbird\.com|india\.unofficialbird\.com|nederland\.unofficialbird\.com|uk\.unofficialbird\.com|n\.l5\.ca|nitter\.slipfox\.xyz|nitter\.soopy\.moe|nitter\.qwik\.space|read\.whatever\.social|nitter\.rawbit\.ninja|nt\.vern\.cc|ntr\.odyssey346\.dev|nitter\.ir|nitter\.privacytools\.io|nitter\.sneed\.network|n\.sneed\.network|nitter\.manasiwibi\.com|nitter\.smnz\.de|nitter\.twei\.space|nitter\.inpt\.fr|nitter\.d420\.de|nitter\.caioalonso\.com|nitter\.at|nitter\.drivet\.xyz|nitter\.pw|nitter\.nicfab\.eu|bird\.habedieeh\.re|nitter\.hostux\.net|nitter\.adminforge\.de|nitter\.platypush\.tech|nitter\.mask\.sh|nitter\.pufe\.org|nitter\.us\.projectsegfau\.lt|nitter\.arcticfoxes\.net|t\.com\.sb|nitter\.kling\.gg|nitter\.ktachibana\.party|nitter\.riverside\.rocks|nitter\.girlboss\.ceo|nitter\.lunar\.icu|twitter\.moe\.ngo|nitter\.freedit\.eu|ntr\.frail\.duckdns\.org|nitter\.librenode\.org|n\.opnxng\.com|nitter\.plus\.st|nitter\.ethibox\.fr|nitter\.net|is\-nitter\.resolv\.ee|lu\-nitter\.resolv\.ee|nitter\.13ad\.de|nitter\.40two\.app|nitter\.cattube\.org|nitter\.cc|nitter\.dark\.fail|nitter\.himiko\.cloud|nitter\.koyu\.space|nitter\.mailstation\.de|nitter\.mastodont\.cat|nitter\.tedomum\.net|nitter\.tokhmi\.xyz|nitter\.weaponizedhumiliation\.com|nitter\.vxempire\.xyz|tweet\.lambda\.dance|nitter\.ca|nitter\.42l\.fr|nitter\.pussthecat\.org|nitter\.nixnet\.services|nitter\.eu|nitter\.actionsack\.com|nitter\.hu|twitr\.gq|nittereu\.moomoo\.me|bird\.from\.tf|twitter\.grimneko\.de|nitter\.alefvanoon\.xyz|n\.hyperborea\.cloud|twitter\.mstdn\.social|nitter\.silkky\.cloud|nttr\.stream|fuckthesacklers\.network|nitter\.govt\.land|nitter\.datatunnel\.xyz|de\.nttr\.stream|twtr\.bch\.bar|nitter\.exonip\.de|nitter\.mastodon\.pro|nitter\.notraxx\.ch|nitter\.skrep\.in|nitter\.snopyta\.org)/(?P<uploader_id>.+)/status/(?P<id>[0-9]+)(#.)?rk   Nr   r   r   r   r  r  ;!  s&        'GG kDJLLLr   r  c                       e Zd ZdZdZdZdZdS )NobelPrizeIEzyt_dlp.extractor.nobelprize
NobelPrizez?https?://(?:(?:mediaplayer|www)\.)?nobelprize\.org/mediaplayer/rk   Nr   r   r   r   r  r  B!  "        +GGTJLLLr   r  c                       e Zd ZdZdZdZdZdS )NoicePodcastIEzyt_dlp.extractor.noiceNoicePodcastz6https?://open\.noice\.id/content/(?P<id>[a-fA-F0-9-]+)rk   Nr   r   r   r   r  r  I!  r{  r   r  c                   "    e Zd ZdZdZdZdZdZdS )
NonkTubeIEzyt_dlp.extractor.nonktubeNonkTubezahttps?://(?:www\.)?nonktube\.com/(?:(?:video|embed)/|media/nuevo/embed\.php\?.*?\bid=)(?P<id>\d+)r   rk   Nr  r   r   r   r  r  P!  s'        )GGzJILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )NoodleMagazineIEzyt_dlp.extractor.noodlemagazineNoodleMagazinezChttps?://(?:www|adult\.)?noodlemagazine\.com/watch/(?P<id>[0-9-_]+)r   rk   Nr  r   r   r   r  r  X!  s'        /GGXJILLLr   r  c                       e Zd ZdZdZdZdZdS )NovaEmbedIEyt_dlp.extractor.nova	NovaEmbedz;https?://media(?:tn)?\.cms\.nova\.cz/embed/(?P<id>[^/?#&]+)rk   Nr   r   r   r   r  r  `!  s"        %GGQJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )NovaIEr  Novazhttps?://(?:[^.]+\.)?(?P<site>tv(?:noviny)?|tn|novaplus|vymena|fanda|krasna|doma|prask)\.nova\.cz/(?:[^/]+/)+(?P<id>[^/]+?)(?:\.html|/|$)uI   TN.cz, Prásk.tv, Nova.cz, Novaplus.cz, FANDA.tv, Krásná.cz and Doma.czrk   Nr   r   r   r   r  r  g!  s*        %GG aJYGLLLr   r  c                       e Zd ZdZdZdZdZdS )
NovaPlayIEzyt_dlp.extractor.novaplayNovaPlayz0https?://play\.nova\.bg/video/[^?#]+/(?P<id>\d+)rk   Nr   r   r   r   r  r  o!  "        )GGFJLLLr   r  c                       e Zd ZdZdZdZdZdS )
NowCanalIEzyt_dlp.extractor.nowcanalNowCanalzBhttps?://(?:www\.)?nowcanal\.pt(?:/[\w-]+)+/detalhe/(?P<id>[\w-]+)rk   Nr   r   r   r   r   r   v!  s"        )GGYJLLLr   r   c                       e Zd ZdZdZdS )NownessBaseIEyt_dlp.extractor.nownessNownessBaseNr   r   r   r   r  r  }!  r   r   r  c                       e Zd ZdZdZdZdZdS )	NownessIEr  nownesszchttps?://(?:(?:www|cn)\.)?nowness\.com/(?:story|(?:series|category)/[^/]+)/(?P<id>[^/]+?)(?:$|[?#])rk   Nr   r   r   r   r  r  !  s"        (GGxJLLLr   r  c                       e Zd ZdZdZdZdZdS )NownessPlaylistIEr  znowness:playlistz;https?://(?:(?:www|cn)\.)?nowness\.com/playlist/(?P<id>\d+)rl   Nr   r   r   r   r
  r
  !  s"        (G GQJLLLr   r
  c                       e Zd ZdZdZdZdZdS )NownessSeriesIEr  znowness:serieszFhttps?://(?:(?:www|cn)\.)?nowness\.com/series/(?P<id>[^/]+?)(?:$|[?#])rl   Nr   r   r   r   r  r  !  s"        (GG[JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )NozIEzyt_dlp.extractor.nozNozz0https?://(?:www\.)?noz\.de/video/(?P<id>[0-9]+)/Frk   Nr  r   r   r   r  r  !  s'        $GGEJHLLLr   r  c                       e Zd ZdZdZdZdZdS )NprIEzyt_dlp.extractor.nprNprzMhttps?://(?:www\.)?npr\.org/(?:sections/[^/]+/)?\d{4}/\d{2}/\d{2}/(?P<id>\d+)r   Nr   r   r   r   r  r  !  s"        $GGfJLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )NubilesPornIEzyt_dlp.extractor.nubilespornNubilesPornz(?x)
        https://members\.nubiles-porn\.com/video/watch/(?P<id>\d+)
        (?:/(?P<display_id>[\w\-]+-s(?P<season>\d+)e(?P<episode>\d+)))?
    znubiles-pornr   rk   Nr  r   r   r   r  r  !  s/        ,GG rJ#NILLLr   r  c                       e Zd ZdZdZdS )
NuumBaseIEyt_dlp.extractor.nuumNuumBaseNr   r   r   r   r  r  !  r  r   r  c                       e Zd ZdZdZdZdS )
NuumLiveIEr  z	nuum:livez5https?://nuum\.ru/channel/(?P<id>[^/#?]+)/?(?:$|[#?])Nr  r   r   r   r  r  !  s        %GGIJJJr   r  c                       e Zd ZdZdZdZdZdS )NuumMediaIEr  z
nuum:mediaz8https?://nuum\.ru/(?:streams|videos|clips)/(?P<id>[\d]+)rk   Nr   r   r   r   r  r  !  s"        %GGMJLLLr   r  c                       e Zd ZdZdZdZdZdS )	NuumTabIEr  znuum:tabzHhttps?://nuum\.ru/channel/(?P<id>[^/#?]+)/(?P<type>streams|videos|clips)rl   Nr   r   r   r   r  r  !  s"        %GG\JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )NuvidIEzyt_dlp.extractor.nuvidNuvidz3https?://(?:www|m)\.nuvid\.com/video/(?P<id>[0-9]+)r   rk   Nr  r   r   r   r!  r!  !  s'        &GGHJILLLr   r!  c                       e Zd ZdZdZdZdZdS )OCWMITIEyt_dlp.extractor.mitzocw.mit.eduz5https?://ocw\.mit\.edu/courses/(?P<topic>[a-z0-9\-]+)rk   Nr   r   r   r   r$  r$  !  s"        $GGKJLLLr   r$  c                   "    e Zd ZdZdZdZdZdZdS )ORFFM4StoryIEyt_dlp.extractor.orfzorf:fm4:storyz)https?://fm4\.orf\.at/stories/(?P<id>\d+)zfm4.orf.at storiesrl   Nr   r   r   r   r'  r'  !  s'        $GG?J"GLLLr   r'  c                   "    e Zd ZdZdZdZdZdZdS )	ORFIPTVIEr(  zorf:iptvz1https?://iptv\.orf\.at/(?:#/)?stories/(?P<id>\d+)ziptv.ORF.atrk   Nr   r   r   r   r*  r*  !  s'        $GGGJGLLLr   r*  c                       e Zd ZdZdZdZdZdS )ORFONIEr(  zorf:onz<https?://on\.orf\.at/video/(?P<id>\d+)(?:/(?P<segment>\d+))?r   Nr   r   r   r   r,  r,  !  s"        $GGSJLLLr   r,  c                       e Zd ZdZdZdZdZdS )ORFPodcastIEr(  zorf:podcastzhttps?://sound\.orf\.at/podcast/(?P<station>bgl|fm4|ktn|noe|oe1|oe3|ooe|sbg|stm|tir|tv|vbg|wie)/(?P<show>[\w-]+)/(?P<id>[\w-]+)rk   Nr   r   r   r   r.  r.  !  s%        $GG WJLLLr   r.  c                       e Zd ZdZdZdZdZdS )
ORFRadioIEr(  z	orf:radioa=  (?x)
        https?://(?:
            (?P<station>fm4|noe|wien|burgenland|ooe|steiermark|kaernten|salzburg|tirol|vorarlberg|oe3|oe1)\.orf\.at/player|
            radiothek\.orf\.at/(?P<station2>fm4|noe|wien|burgenland|ooe|steiermark|kaernten|salzburg|tirol|vorarlberg|oe3|oe1)
        )/(?P<date>[0-9]+)/(?P<show>\w+)r   Nr   r   r   r   r0  r0  !  s%        $GG ZJLLLr   r0  c                       e Zd ZdZdZdZdZdS )OdnoklassnikiIEzyt_dlp.extractor.odnoklassnikiOdnoklassnikia  (?x)
                https?://
                    (?:(?:www|m|mobile)\.)?
                    (?:odnoklassniki|ok)\.ru/
                    (?:
                        video(?P<embed>embed)?/|
                        web-api/video/moviePlayer/|
                        live/|
                        dk\?.*?st\.mvId=
                    )
                    (?P<id>[\d-]+)
                rk   Nr   r   r   r   r2  r2  !  s%        .GG kJLLLr   r2  c                       e Zd ZdZdZdZdZdS )OfTVIEyt_dlp.extractor.oftvOfTVz+https?://(?:www\.)?of\.tv/video/(?P<id>\w+)rk   Nr   r   r   r   r5  r5  "  s"        %GGAJLLLr   r5  c                       e Zd ZdZdZdZdZdS )OfTVPlaylistIEr6  OfTVPlaylistzDhttps?://(?:www\.)?of\.tv/creators/(?P<id>[a-zA-Z0-9-]+)/?(?:$|[?#])rl   Nr   r   r   r   r9  r9  
"  s"        %GGYJLLLr   r9  c                       e Zd ZdZdZdZdZdS )OktoberfestTVIEzyt_dlp.extractor.oktoberfesttvOktoberfestTVzGhttps?://(?:www\.)?oktoberfest-tv\.de/[^/]+/[^/]+/video/(?P<id>[^/?#]+)rk   Nr   r   r   r   r<  r<  "  "        .GG\JLLLr   r<  c                       e Zd ZdZdZdZdZdS )OlympicsReplayIEzyt_dlp.extractor.olympicsOlympicsReplayzshttps?://(?:www\.)?olympics\.com/[a-z]{2}/(?:paris-2024/)?(?:replay|videos?|original-series/episode)/(?P<id>[\w-]+)rk   Nr   r   r   r   r@  r@  "  s%        )GG JJLLLr   r@  c                   &    e Zd ZdZdZg dZdZdZdS )On24IEzyt_dlp.extractor.on24on24)zChttps?://event\.on24\.com/wcc/r/(?P<id>\d{7})/(?P<key>[0-9A-F]{32})zhttps?://event\.on24\.com/eventRegistration/console/(?:EventConsoleApollo\.jsp|apollox/mainEvent/?)\?(?:[^#]*&)?eventid=(?P<id>\d{7})&(?:[^#]+&)?key=(?P<key>[0-9A-F]{32})zhttps?://event\.on24\.com/eventRegistration/EventLobbyServlet/?\?(?:[^#]*&)?eventid=(?P<id>\d{7})&(?:[^#]+&)?key=(?P<key>[0-9A-F]{32})ON24rk   Nr   r   r   r   rC  rC  "  s6        %GG ]  ]  ]JGLLLr   rC  c                       e Zd ZdZdZdZdZdS )OnDemandChinaEpisodeIEzyt_dlp.extractor.odkmediaOnDemandChinaEpisodezThttps?://www\.ondemandchina\.com/\w+/watch/(?P<series>[\w-]+)/(?P<id>ep-(?P<ep>\d+))rk   Nr   r   r   r   rG  rG  '"  s"        )G$GlJLLLr   rG  c                   "    e Zd ZdZdZdZdZdZdS )OnDemandKoreaIEyt_dlp.extractor.ondemandkoreaOnDemandKoreazehttps?://(?:www\.)?ondemandkorea\.com/(?:en/)?player/vod/[a-z0-9-]+\?(?:[^#]+&)?contentId=(?P<id>\d+)r   rk   Nr  r   r   r   rJ  rJ  ."  s'        .GG|JILLLr   rJ  c                       e Zd ZdZdZdZdZdS )OnDemandKoreaProgramIErK  OnDemandKoreaProgramzRhttps?://(?:www\.)?ondemandkorea\.com/(?:en/)?player/vod/(?P<id>[a-z0-9-]+)(?:$|#)rl   Nr   r   r   r   rN  rN  6"  s"        .G$GgJLLLr   rN  c                       e Zd ZdZdZdZdZdS )OneFootballIEzyt_dlp.extractor.onefootballOneFootballzGhttps?://(?:www\.)?onefootball\.com/[a-z]{2}/video/[^/&?#]+-(?P<id>\d+)rk   Nr   r   r   r   rQ  rQ  ="  r  r   rQ  c                   "    e Zd ZdZdZdZdZdZdS )OneNewsNZIEzyt_dlp.extractor.onenewsnz1NewszEhttps?://(?:www\.)?(?:1|one)news\.co\.nz/\d+/\d+/\d+/(?P<id>[^/?#&]+)z1news.co.nz article videosrl   Nr   r   r   r   rT  rT  D"  s'        *GG^J*GLLLr   rT  c                       e Zd ZdZdZdZdZdS )OnePlacePodcastIEzyt_dlp.extractor.oneplaceOnePlacePodcastzAhttps?://www\.oneplace\.com/[\w]+/[^/]+/listen/[\w-]+-(?P<id>\d+)rk   Nr   r   r   r   rW  rW  L"  s"        )GGYJLLLr   rW  c                       e Zd ZdZdZdZdZdS )OnetChannelIEr  zonet.tv:channelzOhttps?://(?:(?:www\.)?onet\.tv|onet100\.vod\.pl)/[a-z]/(?P<id>[a-z]+)(?:[?#]|$)rl   Nr   r   r   r   rZ  rZ  S"  s"        %GGfJLLLr   rZ  c                       e Zd ZdZdZdZdZdS )OnetIEr  zonet.tvzjhttps?://(?:(?:www\.)?onet\.tv|onet100\.vod\.pl)/[a-z]/[a-z]+/(?P<display_id>[0-9a-z-]+)/(?P<id>[0-9a-z]+)rk   Nr   r   r   r   r\  r\  Z"  s%        %GG BJLLLr   r\  c                       e Zd ZdZdZdZdS )	OnetMVPIEr  OnetMVPzonetmvp:(?P<id>\d+\.\d+)Nr  r   r   r   r^  r^  a"  s        %GG.JJJr   r^  c                       e Zd ZdZdZdZdZdS )OnetPlIEr  zonet.plz[https?://(?:[^/]+\.)?(?:onet|businessinsider\.com|plejada)\.pl/(?:[^/]+/)+(?P<id>[0-9a-z]+)rk   Nr   r   r   r   ra  ra  g"  s"        %GGqJLLLr   ra  c                       e Zd ZdZdZdZdZdS )OnionStudiosIEzyt_dlp.extractor.onionstudiosOnionStudiosz[https?://(?:www\.)?onionstudios\.com/(?:video(?:s/[^/]+-|/)|embed\?.*\bid=)(?P<id>\d+)(?!-)rk   Nr   r   r   r   rc  rc  n"  s"        -GGsJLLLr   rc  c                   &    e Zd ZdZdZdZdZdZdZdS )OnsenIEzyt_dlp.extractor.onsenonsenz=https?://(?:(?:share|www)\.)onsen\.ag/program/(?P<id>[^/?#]+)u<   インターネットラジオステーション＜音泉＞r   Nr   r   r   r   rf  rf  u"  s,        &GGRJLGNLLLr   rf  c                       e Zd ZdZdZdS )OpenRecBaseIEyt_dlp.extractor.openrecOpenRecBaseNr   r   r   r   ri  ri  ~"  r   r   ri  c                       e Zd ZdZdZdZdZdS )OpenRecCaptureIErj  zopenrec:capturez6https?://(?:www\.)?openrec\.tv/capture/(?P<id>[^/?#]+)rk   Nr   r   r   r   rm  rm  "  s"        (GGKJLLLr   rm  c                       e Zd ZdZdZdZdS )	OpenRecIErj  openrecz3https?://(?:www\.)?openrec\.tv/live/(?P<id>[^/?#]+)Nr  r   r   r   ro  ro  "  s        (GGHJJJr   ro  c                       e Zd ZdZdZdZdZdS )OpenRecMovieIErj  zopenrec:moviez4https?://(?:www\.)?openrec\.tv/movie/(?P<id>[^/?#]+)rk   Nr   r   r   r   rr  rr  "  s"        (GGIJLLLr   rr  c                       e Zd ZdZdZdS )OpencastBaseIEyt_dlp.extractor.opencastOpencastBaseNr   r   r   r   rt  rt  "  r  r   rt  c                       e Zd ZdZdZdZdZdS )
OpencastIEru  Opencasta  (?x)
        https?://(?P<host>(?:
                            opencast\.informatik\.kit\.edu|
                            electures\.uni-muenster\.de|
                            oc-presentation\.ltcc\.tuwien\.ac\.at|
                            medien\.ph-noe\.ac\.at|
                            oc-video\.ruhr-uni-bochum\.de|
                            oc-video1\.ruhr-uni-bochum\.de|
                            opencast\.informatik\.uni-goettingen\.de|
                            heicast\.uni-heidelberg\.de|
                            opencast\.hawk\.de:8080|
                            opencast\.hs-osnabrueck\.de|
                            video[0-9]+\.virtuos\.uni-osnabrueck\.de|
                            opencast\.uni-koeln\.de|
                            media\.opencast\.hochschule-rhein-waal\.de|
                            matterhorn\.dce\.harvard\.edu|
                            hs-harz\.opencast\.uni-halle\.de|
                            videocampus\.urz\.uni-leipzig\.de|
                            media\.uct\.ac\.za|
                            vid\.igb\.illinois\.edu|
                            cursosabertos\.c3sl\.ufpr\.br|
                            mcmedia\.missioncollege\.org|
                            clases\.odon\.edu\.uy
                        ))/paella/ui/watch\.html\?
        (?:[^#]+&)?id=(?P<id>[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12})rk   Nr   r   r   r   rx  rx  "  s%        )GG |JLLLr   rx  c                       e Zd ZdZdZdZdZdS )OpencastPlaylistIEru  OpencastPlaylista  (?x)
        https?://(?P<host>(?:
                            opencast\.informatik\.kit\.edu|
                            electures\.uni-muenster\.de|
                            oc-presentation\.ltcc\.tuwien\.ac\.at|
                            medien\.ph-noe\.ac\.at|
                            oc-video\.ruhr-uni-bochum\.de|
                            oc-video1\.ruhr-uni-bochum\.de|
                            opencast\.informatik\.uni-goettingen\.de|
                            heicast\.uni-heidelberg\.de|
                            opencast\.hawk\.de:8080|
                            opencast\.hs-osnabrueck\.de|
                            video[0-9]+\.virtuos\.uni-osnabrueck\.de|
                            opencast\.uni-koeln\.de|
                            media\.opencast\.hochschule-rhein-waal\.de|
                            matterhorn\.dce\.harvard\.edu|
                            hs-harz\.opencast\.uni-halle\.de|
                            videocampus\.urz\.uni-leipzig\.de|
                            media\.uct\.ac\.za|
                            vid\.igb\.illinois\.edu|
                            cursosabertos\.c3sl\.ufpr\.br|
                            mcmedia\.missioncollege\.org|
                            clases\.odon\.edu\.uy
                        ))(?:
            /engage/ui/index\.html\?(?:[^#]+&)?epFrom=|
            /ltitools/index\.html\?(?:[^#]+&)?series=
        )(?P<id>[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12})rl   Nr   r   r   r   r{  r{  "  s%        )G G LJLLLr   r{  c                       e Zd ZdZdZdZdZdS )OraTVIEzyt_dlp.extractor.oraOraTVzJhttps?://(?:www\.)?(?:ora\.tv|unsafespeech\.com)/([^/]+/)*(?P<id>[^/\?#]+)rk   Nr   r   r   r   r~  r~  "  s"        $GGaJLLLr   r~  c                       e Zd ZdZdZdZdS )OsnatelTVBaseIErt  OsnatelTVBase	osnateltvNrz   r   r   r   r  r  "          'GG NNNr   r  c                       e Zd ZdZdZdZdZdS )OsnatelTVIErt  	OsnatelTVz(?x)https?://(?:www\.)?tvonline\.osnatel\.de/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r  Nr  r   r   r   r  r  "  s%        'GG sJ NNNr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )OsnatelTVLiveIErt  OsnatelTVLivez(?x)https?://(?:www\.)?tvonline\.osnatel\.de/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r  c                 ~    t                               |          rdn t                                          |          S r   )r  r4   r   r   s     r   r4   zOsnatelTVLiveIE.suitable"  rU  r   r  r   s   @r   r  r  "  sb        'GG hJ NM M M M [M M M M Mr   r  c                       e Zd ZdZdZdZdZdS )OsnatelTVRecordingsIErt  OsnatelTVRecordingsz|(?x)https?://(?:www\.)?tvonline\.osnatel\.de/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r  Nr  r   r   r   r  r  "  s%        'G#G XJ NNNr   r  c                       e Zd ZdZdZdZdZdS )OutsideTVIEzyt_dlp.extractor.outsidetv	OutsideTVz`https?://(?:www\.)?outsidetv\.com/(?:[^/]+/)*?play/[a-zA-Z0-9]{8}/\d+/\d+/(?P<id>[a-zA-Z0-9]{8})rk   Nr   r   r   r   r  r  "  s"        *GGwJLLLr   r  c                       e Zd ZdZdZdZdZdS )
OwnCloudIEzyt_dlp.extractor.owncloudOwnCloudzThttps?://(?:(?:[^\.]+\.)?sciebo\.de|cloud\.uni-koblenz-landau\.de)/s/(?P<id>[\w.-]+)rk   Nr   r   r   r   r  r  "  s"        )GGmJLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )PBSIEyt_dlp.extractor.pbspbsa  (?x)https?://
        (?:
            # Player
            (?:video|player)\.pbs\.org/(?:widget/)?partnerplayer/(?P<player_id>[^/?#]+) |
            # Direct video URL, or article with embedded player
            (?:(?:video|www|player)\.pbs\.org|video\.aptv\.org|video\.gpb\.org|video\.mpbonline\.org|video\.wnpt\.org|video\.wfsu\.org|video\.wsre\.org|video\.wtcitv\.org|video\.pba\.org|video\.alaskapublic\.org|video\.azpbs\.org|portal\.knme\.org|video\.vegaspbs\.org|watch\.aetn\.org|video\.ket\.org|video\.wkno\.org|video\.lpb\.org|videos\.oeta\.tv|video\.optv\.org|watch\.wsiu\.org|video\.keet\.org|pbs\.kixe\.org|video\.kpbs\.org|video\.kqed\.org|vids\.kvie\.org|(?:video\.|www\.)pbssocal\.org|video\.valleypbs\.org|video\.cptv\.org|watch\.knpb\.org|video\.soptv\.org|video\.rmpbs\.org|video\.kenw\.org|video\.kued\.org|video\.wyomingpbs\.org|video\.cpt12\.org|video\.kbyueleven\.org|(?:video\.|www\.)thirteen\.org|video\.wgbh\.org|video\.wgby\.org|watch\.njtvonline\.org|watch\.wliw\.org|video\.mpt\.tv|watch\.weta\.org|video\.whyy\.org|video\.wlvt\.org|video\.wvpt\.net|video\.whut\.org|video\.wedu\.org|video\.wgcu\.org|video\.wpbt2\.org|video\.wucftv\.org|video\.wuft\.org|watch\.wxel\.org|video\.wlrn\.org|video\.wusf\.usf\.edu|video\.scetv\.org|video\.unctv\.org|video\.pbshawaii\.org|video\.idahoptv\.org|video\.ksps\.org|watch\.opb\.org|watch\.nwptv\.org|video\.will\.illinois\.edu|video\.networkknowledge\.tv|video\.wttw\.com|video\.iptv\.org|video\.ninenet\.org|video\.wfwa\.org|video\.wfyi\.org|video\.mptv\.org|video\.wnin\.org|video\.wnit\.org|video\.wpt\.org|video\.wvut\.org|video\.weiu\.net|video\.wqpt\.org|video\.wycc\.org|video\.wipb\.org|video\.indianapublicmedia\.org|watch\.cetconnect\.org|video\.thinktv\.org|video\.wbgu\.org|video\.wgvu\.org|video\.netnebraska\.org|video\.pioneer\.org|watch\.sdpb\.org|video\.tpt\.org|watch\.ksmq\.org|watch\.kpts\.org|watch\.ktwu\.org|watch\.easttennesseepbs\.org|video\.wcte\.tv|video\.wljt\.org|video\.wosu\.org|video\.woub\.org|video\.wvpublic\.org|video\.wkyupbs\.org|video\.kera\.org|video\.mpbn\.net|video\.mountainlake\.org|video\.nhptv\.org|video\.vpt\.org|video\.witf\.org|watch\.wqed\.org|video\.wmht\.org|video\.deltabroadcasting\.org|video\.dptv\.org|video\.wcmu\.org|video\.wkar\.org|wnmuvideo\.nmu\.edu|video\.wdse\.org|video\.wgte\.org|video\.lptv\.org|video\.kmos\.org|watch\.montanapbs\.org|video\.krwg\.org|video\.kacvtv\.org|video\.kcostv\.org|video\.wcny\.org|video\.wned\.org|watch\.wpbstv\.org|video\.wskg\.org|video\.wxxi\.org|video\.wpsu\.org|on-demand\.wvia\.org|video\.wtvi\.org|video\.westernreservepublicmedia\.org|video\.ideastream\.org|video\.kcts9\.org|video\.basinpbs\.org|video\.houstonpbs\.org|video\.klrn\.org|video\.klru\.tv|video\.wtjx\.org|video\.ideastations\.org|video\.kbtc\.org)/(?:
              (?:(?:vir|port)alplayer|video)/(?P<id>[0-9]+)(?:[?/#]|$) |
              (?:[^/?#]+/){1,5}(?P<presumptive_id>[^/?#]+?)(?:\.html)?/?(?:$|[?#])
            )
        )
    ap  Public Broadcasting Service (PBS) and member stations: PBS: Public Broadcasting Service, APT - Alabama Public Television (WBIQ), GPB/Georgia Public Broadcasting (WGTV), Mississippi Public Broadcasting (WMPN), Nashville Public Television (WNPT), WFSU-TV (WFSU), WSRE (WSRE), WTCI (WTCI), WPBA/Channel 30 (WPBA), Alaska Public Media (KAKM), Arizona PBS (KAET), KNME-TV/Channel 5 (KNME), Vegas PBS (KLVX), AETN/ARKANSAS ETV NETWORK (KETS), KET (WKLE), WKNO/Channel 10 (WKNO), LPB/LOUISIANA PUBLIC BROADCASTING (WLPB), OETA (KETA), Ozarks Public Television (KOZK), WSIU Public Broadcasting (WSIU), KEET TV (KEET), KIXE/Channel 9 (KIXE), KPBS San Diego (KPBS), KQED (KQED), KVIE Public Television (KVIE), PBS SoCal/KOCE (KOCE), ValleyPBS (KVPT), CONNECTICUT PUBLIC TELEVISION (WEDH), KNPB Channel 5 (KNPB), SOPTV (KSYS), Rocky Mountain PBS (KRMA), KENW-TV3 (KENW), KUED Channel 7 (KUED), Wyoming PBS (KCWC), Colorado Public Television / KBDI 12 (KBDI), KBYU-TV (KBYU), Thirteen/WNET New York (WNET), WGBH/Channel 2 (WGBH), WGBY (WGBY), NJTV Public Media NJ (WNJT), WLIW21 (WLIW), mpt/Maryland Public Television (WMPB), WETA Television and Radio (WETA), WHYY (WHYY), PBS 39 (WLVT), WVPT - Your Source for PBS and More! (WVPT), Howard University Television (WHUT), WEDU PBS (WEDU), WGCU Public Media (WGCU), WPBT2 (WPBT), WUCF TV (WUCF), WUFT/Channel 5 (WUFT), WXEL/Channel 42 (WXEL), WLRN/Channel 17 (WLRN), WUSF Public Broadcasting (WUSF), ETV (WRLK), UNC-TV (WUNC), PBS Hawaii - Oceanic Cable Channel 10 (KHET), Idaho Public Television (KAID), KSPS (KSPS), OPB (KOPB), KWSU/Channel 10 & KTNW/Channel 31 (KWSU), WILL-TV (WILL), Network Knowledge - WSEC/Springfield (WSEC), WTTW11 (WTTW), Iowa Public Television/IPTV (KDIN), Nine Network (KETC), PBS39 Fort Wayne (WFWA), WFYI Indianapolis (WFYI), Milwaukee Public Television (WMVS), WNIN (WNIN), WNIT Public Television (WNIT), WPT (WPNE), WVUT/Channel 22 (WVUT), WEIU/Channel 51 (WEIU), WQPT-TV (WQPT), WYCC PBS Chicago (WYCC), WIPB-TV (WIPB), WTIU (WTIU), CET  (WCET), ThinkTVNetwork (WPTD), WBGU-TV (WBGU), WGVU TV (WGVU), NET1 (KUON), Pioneer Public Television (KWCM), SDPB Television (KUSD), TPT (KTCA), KSMQ (KSMQ), KPTS/Channel 8 (KPTS), KTWU/Channel 11 (KTWU), East Tennessee PBS (WSJK), WCTE-TV (WCTE), WLJT, Channel 11 (WLJT), WOSU TV (WOSU), WOUB/WOUC (WOUB), WVPB (WVPB), WKYU-PBS (WKYU), KERA 13 (KERA), MPBN (WCBB), Mountain Lake PBS (WCFE), NHPTV (WENH), Vermont PBS (WETK), witf (WITF), WQED Multimedia (WQED), WMHT Educational Telecommunications (WMHT), Q-TV (WDCQ), WTVS Detroit Public TV (WTVS), CMU Public Television (WCMU), WKAR-TV (WKAR), WNMU-TV Public TV 13 (WNMU), WDSE - WRPT (WDSE), WGTE TV (WGTE), Lakeland Public Television (KAWE), KMOS-TV - Channels 6.1, 6.2 and 6.3 (KMOS), MontanaPBS (KUSM), KRWG/Channel 22 (KRWG), KACV (KACV), KCOS/Channel 13 (KCOS), WCNY/Channel 24 (WCNY), WNED (WNED), WPBS (WPBS), WSKG Public TV (WSKG), WXXI (WXXI), WPSU (WPSU), WVIA Public Media Studios (WVIA), WTVI (WTVI), Western Reserve PBS (WNEO), WVIZ/PBS ideastream (WVIZ), KCTS 9 (KCTS), Basin PBS (KPBT), KUHT / Channel 8 (KUHT), KLRN (KLRN), KLRU (KLRU), WTJX Channel 12 (WTJX), WCVE PBS (WCVE), KBTC Public Television (KBTC)
   r   Nr3  r   r   r   r  r  "  s2        $GG S3J A2GILLLr   r  c                       e Zd ZdZdZdZdZdS )	PBSKidsIEr  PBSKidsz8https?://(?:www\.)?pbskids\.org/video/[\w-]+/(?P<id>\d+)rk   Nr   r   r   r   r  r  "  s"        $GGOJLLLr   r  c                       e Zd ZdZdZdZdZdS )	PGATourIEzyt_dlp.extractor.pgatourPGATourzBhttps?://(?:www\.)?pgatour\.com/video/[\w-]+/(?P<tc>T)?(?P<id>\d+)rk   Nr   r   r   r   r  r  "  r  r   r  c                       e Zd ZdZdZdS )	PRXBaseIEyt_dlp.extractor.prxPRXBaseNr   r   r   r   r  r  "  r  r   r  c                       e Zd ZdZdZdZdZdS )PRXAccountIEr  
PRXAccountz;https?://(?:(?:beta|listen)\.)?prx.org/accounts/(?P<id>\d+)rl   Nr   r   r   r   r  r  "  s"        $GGPJLLLr   r  c                       e Zd ZdZdZdZdZdS )PRXSeriesIEr  	PRXSeriesz9https?://(?:(?:beta|listen)\.)?prx.org/series/(?P<id>\d+)rl   Nr   r   r   r   r  r  #  s"        $GGNJLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )PRXSeriesSearchIEr  zprxseries:searchz8prxseries(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zPRX Series Search	prxseriesrl   Nr  r   r   r   r  r  #  s,        $G GMJ!GJLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )PRXStoriesSearchIEr  zprxstories:searchz9prxstories(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zPRX Stories Search
prxstoriesrl   Nr  r   r   r   r  r  #  s,        $G!GNJ"GJLLLr   r  c                       e Zd ZdZdZdZdZdS )
PRXStoryIEr  PRXStoryz:https?://(?:(?:beta|listen)\.)?prx.org/stories/(?P<id>\d+)r   Nr   r   r   r   r  r  #  s"        $GGOJLLLr   r  c                       e Zd ZdZdZdS )PacktPubBaseIEyt_dlp.extractor.packtpubPacktPubBaseNr   r   r   r   r  r  !#  r  r   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )PacktPubCourseIEr  PacktPubCoursezf(?P<url>https?://(?:(?:www\.)?packtpub\.com/mapt|subscription\.packtpub\.com)/video/[^/]+/(?P<id>\d+))rl   c                 ~    t                               |          rdn t                                          |          S r   )
PacktPubIEr4   r   r   s     r   r4   zPacktPubCourseIE.suitable,#  r  r   r   r   s   @r   r  r  &#  s_        )GG~JLL L L L [L L L L Lr   r  c                   "    e Zd ZdZdZdZdZdZdS )r  r  PacktPubzhttps?://(?:(?:www\.)?packtpub\.com/mapt|subscription\.packtpub\.com)/video/[^/]+/(?P<course_id>\d+)/(?P<chapter_id>[^/]+)/(?P<id>[^/]+)(?:/(?P<display_id>[^/?&#]+))?packtpubrk   Nr   r   r   r   r  r  1#  s*        )GG JNLLLr   r  c                       e Zd ZdZdZdS )PalcoMP3BaseIEyt_dlp.extractor.palcomp3PalcoMP3BaseNr   r   r   r   r  r  9#  r  r   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )PalcoMP3ArtistIEr  zPalcoMP3:artistz:https?://(?:www\.)?palcomp3\.com(?:\.br)?/(?P<id>[^/?&#]+)rl   c                 ~    t                               |          rdn t                                          |          S r   )
PalcoMP3IEr1   r   r4   r   s     r   r4   zPalcoMP3ArtistIE.suitableD#  s2    "33C88Suuegg>N>Ns>S>SSr   r   r   s   @r   r  r  >#  s_        )GGPJLT T T T [T T T T Tr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )r  r  zPalcoMP3:songzLhttps?://(?:www\.)?palcomp3\.com(?:\.br)?/(?P<artist>[^/]+)/(?P<id>[^/?&#]+)rk   c                 ~    t                               |          rdn t                                          |          S r   )PalcoMP3VideoIEr4   r   r   s     r   r4   zPalcoMP3IE.suitableO#  r  r   r   r   s   @r   r  r  I#  s_        )GGbJLQ Q Q Q [Q Q Q Q Qr   r  c                       e Zd ZdZdZdZdZdS )r  r  zPalcoMP3:videozThttps?://(?:www\.)?palcomp3\.com(?:\.br)?/(?P<artist>[^/]+)/(?P<id>[^/?&#]+)/?#cliperk   Nr   r   r   r   r  r  T#  s"        )GGjJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	PandaTvIEzyt_dlp.extractor.pandatvPandaTvz9https?://(?:www\.|m\.)?pandalive\.co\.kr/play/(?P<id>\w+)u   pandalive.co.kr (팬더티비)rk   Nr   r   r   r   r  r  [#  s'        (GGQJ.GLLLr   r  c                       e Zd ZdZdZdS )PanoptoBaseIEyt_dlp.extractor.panoptoPanoptoBaseNr   r   r   r   r  r  c#  r   r   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )	PanoptoIEr  Panoptozt(?P<base_url>https?://[\w.-]+\.panopto.(?:com|eu)/Panopto)/Pages/(Viewer|Embed)\.aspx.*(?:\?|&)id=(?P<id>[a-f0-9-]+)rk   c                 ~    t                               |          rdn t                                          |          S r   )PanoptoPlaylistIEr4   r   r   s     r   r4   zPanoptoIE.suitablen#  s2    )22377RuuUWW=M=Mc=R=RRr   r   r   s   @r   r  r  h#  sb        (GG LJLS S S S [S S S S Sr   r  c                       e Zd ZdZdZdZdZdS )PanoptoListIEr  PanoptoListzT(?P<base_url>https?://[\w.-]+\.panopto.(?:com|eu)/Panopto)/Pages/Sessions/List\.aspxrl   Nr   r   r   r   r  r  s#  s"        (GGjJLLLr   r  c                       e Zd ZdZdZdZdZdS )r  r  PanoptoPlaylistzu(?P<base_url>https?://[\w.-]+\.panopto.(?:com|eu)/Panopto)/Pages/(Viewer|Embed)\.aspx.*(?:\?|&)pid=(?P<id>[a-f0-9-]+)rl   Nr   r   r   r   r  r  z#  s%        (GG MJLLLr   r  c                       e Zd ZdZdZdZdZdS )ParamountPressExpressIEyt_dlp.extractor.cbsParamountPressExpresszchttps?://(?:www\.)?paramountpressexpress\.com(?:/[\w-]+)+/(?P<yt>yt-)?video/?\?watch=(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  #  s"        $G%G{JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )ParlerIEzyt_dlp.extractor.parlerParlerzMhttps?://parler\.com/feed/(?P<id>[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12})zPosts on parler.comrk   Nr   r   r   r   r  r  #  s'        'GGaJ#GLLLr   r  c                       e Zd ZdZdZdS )RedBeeBaseIEyt_dlp.extractor.redbee
RedBeeBaseNr   r   r   r   r  r  #  rW  r   r  c                   "    e Zd ZdZdZdZdZdZdS )ParliamentLiveUKIEr  zparliamentlive.tvzu(?i)https?://(?:www\.)?parliamentlive\.tv/Event/Index/(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})zUK parliament videosrk   Nr   r   r   r   r  r  #  s*        'G!G PJ$GLLLr   r  c                       e Zd ZdZdZdZdZdS )
ParlviewIEzyt_dlp.extractor.parlviewParlviewz`https?://(?:www\.)?aph\.gov\.au/News_and_Events/Watch_Read_Listen/ParlView/video/(?P<id>[^/?#]+)rk   Nr   r   r   r   r  r  #  s"        )GGvJLLLr   r  c                       e Zd ZdZdZdS )PartiBaseIEyt_dlp.extractor.parti	PartiBaseNr   r   r   r   r  r  #  r   r   r  c                       e Zd ZdZdZdZdZdS )PartiLivestreamIEr  zparti:livestreamz7https?://(?:www\.)?parti\.com/(?!video/)(?P<id>[\w/-]+)rk   Nr   r   r   r   r  r  #  s"        &G GMJLLLr   r  c                       e Zd ZdZdZdZdZdS )PartiVideoIEr  zparti:videoz/https?://(?:www\.)?parti\.com/video/(?P<id>\d+)rk   Nr   r   r   r   r  r  #  s"        &GGEJLLLr   r  c                       e Zd ZdZdZdS )PatreonBaseIEyt_dlp.extractor.patreonPatreonBaseNr   r   r   r   r  r  #  r   r   r  c                       e Zd ZdZdZdZdZdS )PatreonCampaignIEr  zpatreon:campaignz(?x)
        https?://(?:www\.)?patreon\.com/(?:
            (?:m|api/campaigns)/(?P<campaign_id>\d+)|
            (?:cw?/)?(?P<vanity>(?!creation[?/]|posts/|rss[?/])[\w-]+)
        )(?:/posts)?/?(?:$|[?#])rl   Nr   r   r   r   r  r  #  s%        (G G jJLLLr   r  c                       e Zd ZdZdZdZdZdS )	PatreonIEr  patreonzPhttps?://(?:www\.)?patreon\.com/(?:creation\?hid=|posts/(?:[\w-]+-)?)(?P<id>\d+)rk   Nr   r   r   r   r  r  #  "        (GGhJLLLr   r  c                       e Zd ZdZdZdZdZdS )PearVideoIEzyt_dlp.extractor.pearvideo	PearVideoz3https?://(?:www\.)?pearvideo\.com/video_(?P<id>\d+)rk   Nr   r   r   r   r  r  #  s"        *GGIJLLLr   r  c                       e Zd ZdZdZdS )PeekVidsBaseIEyt_dlp.extractor.peekvidsPeekVidsBaseNr   r   r   r   r  r  #  r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )
PeekVidsIEr  PeekVidsz(?x)
        https?://(?:www\.)?(?P<domain>peekvids\.com)/
        (?:(?:[^/?#]+/){2}|embed/?\?(?:[^#]*&)?v=)
        (?P<id>[^/?&#]*)
    r   rk   Nr  r   r   r   r  r  #  s*        )GG fJILLLr   r  c                       e Zd ZdZdZdZdZdS )PeerTVIEzyt_dlp.extractor.peertvzpeer.tvz4https?://(?:www\.)?peer\.tv/(?:de|it|en)/(?P<id>\d+)rk   Nr   r   r   r   r	  r	  #  s"        'GGJJLLLr   r	  c                       e Zd ZdZdZdZdZdS )
PeerTubeIEyt_dlp.extractor.peertubePeerTubea  (?x)
                    (?:
                        peertube:(?P<host>[^:]+):|
                        https?://(?P<host_2>(?:
                            # Taken from https://instances.joinpeertube.org/instances
                            0ch\.tv|
                            3dctube\.3dcandy\.social|
                            all\.electric\.kitchen|
                            alterscope\.fr|
                            anarchy\.tube|
                            apathy\.tv|
                            apertatube\.net|
                            archive\.nocopyrightintended\.tv|
                            archive\.reclaim\.tv|
                            area51\.media|
                            astrotube-ufe\.obspm\.fr|
                            astrotube\.obspm\.fr|
                            audio\.freediverse\.com|
                            azxtube\.youssefc\.tn|
                            bark\.video|
                            battlepenguin\.video|
                            bava\.tv|
                            bee-tube\.fr|
                            beetoons\.tv|
                            biblion\.refchat\.net|
                            biblioteca\.theowlclub\.net|
                            bideoak\.argia\.eus|
                            bideoteka\.eus|
                            birdtu\.be|
                            bitcointv\.com|
                            bonn\.video|
                            breeze\.tube|
                            brioco\.live|
                            brocosoup\.fr|
                            canal\.facil\.services|
                            canard\.tube|
                            cdn01\.tilvids\.com|
                            celluloid-media\.huma-num\.fr|
                            chicago1\.peertube\.support|
                            cliptube\.org|
                            cloudtube\.ise\.fraunhofer\.de|
                            comf\.tube|
                            comics\.peertube\.biz|
                            commons\.tube|
                            communitymedia\.video|
                            conspiracydistillery\.com|
                            crank\.recoil\.org|
                            dalek\.zone|
                            dalliance\.network|
                            dangly\.parts|
                            darkvapor\.nohost\.me|
                            daschauher\.aksel\.rocks|
                            digitalcourage\.video|
                            displayeurope\.video|
                            ds106\.tv|
                            dud-video\.inf\.tu-dresden\.de|
                            dud175\.inf\.tu-dresden\.de|
                            dytube\.com|
                            ebildungslabor\.video|
                            evangelisch\.video|
                            fair\.tube|
                            fedi\.video|
                            fedimovie\.com|
                            fediverse\.tv|
                            film\.k-prod\.fr|
                            flipboard\.video|
                            foss\.video|
                            fossfarmers\.company|
                            fotogramas\.politicaconciencia\.org|
                            freediverse\.com|
                            freesoto-u2151\.vm\.elestio\.app|
                            freesoto\.tv|
                            garr\.tv|
                            greatview\.video|
                            grypstube\.uni-greifswald\.de|
                            habratube\.site|
                            ilbjach\.ru|
                            infothema\.net|
                            itvplus\.iiens\.net|
                            johnydeep\.net|
                            juggling\.digital|
                            jupiter\.tube|
                            kadras\.live|
                            kino\.kompot\.si|
                            kino\.schuerz\.at|
                            kinowolnosc\.pl|
                            kirche\.peertube-host\.de|
                            kiwi\.froggirl\.club|
                            kodcast\.com|
                            kolektiva\.media|
                            kpop\.22x22\.ru|
                            kumi\.tube|
                            la2\.peertube\.support|
                            la3\.peertube\.support|
                            la4\.peertube\.support|
                            lastbreach\.tv|
                            lawsplaining\.peertube\.biz|
                            leopard\.tube|
                            live\.codinglab\.ch|
                            live\.libratoi\.org|
                            live\.oldskool\.fi|
                            live\.solari\.com|
                            lucarne\.balsamine\.be|
                            luxtube\.lu|
                            makertube\.net|
                            media\.econoalchemist\.com|
                            media\.exo\.cat|
                            media\.fsfe\.org|
                            media\.gzevd\.de|
                            media\.interior\.edu\.uy|
                            media\.krashboyz\.org|
                            media\.mzhd\.de|
                            media\.smz-ma\.de|
                            media\.theplattform\.net|
                            media\.undeadnetwork\.de|
                            medias\.debrouillonet\.org|
                            medias\.pingbase\.net|
                            mediatube\.fermalo\.fr|
                            melsungen\.peertube-host\.de|
                            merci-la-police\.fr|
                            mindlyvideos\.com|
                            mirror\.peertube\.metalbanana\.net|
                            mirrored\.rocks|
                            mix\.video|
                            mountaintown\.video|
                            movies\.metricsmaster\.eu|
                            mtube\.mooo\.com|
                            mytube\.kn-cloud\.de|
                            mytube\.le5emeaxe\.fr|
                            mytube\.madzel\.de|
                            nadajemy\.com|
                            nanawel-peertube\.dyndns\.org|
                            neat\.tube|
                            nethack\.tv|
                            nicecrew\.tv|
                            nightshift\.minnix\.dev|
                            nolog\.media|
                            nyltube\.nylarea\.com|
                            ocfedtest\.hosted\.spacebear\.ee|
                            openmedia\.edunova\.it|
                            p2ptv\.ru|
                            p\.eertu\.be|
                            p\.lu|
                            pastafriday\.club|
                            patriottube\.sonsofliberty\.red|
                            pcbu\.nl|
                            peer\.azurs\.fr|
                            peer\.d0g4\.me|
                            peer\.lukeog\.com|
                            peer\.madiator\.cloud|
                            peer\.raise-uav\.com|
                            peershare\.togart\.de|
                            peertube-blablalinux\.be|
                            peertube-demo\.learning-hub\.fr|
                            peertube-docker\.cpy\.re|
                            peertube-eu\.howlround\.com|
                            peertube-u5014\.vm\.elestio\.app|
                            peertube-us\.howlround\.com|
                            peertube\.020\.pl|
                            peertube\.0x5e\.eu|
                            peertube\.1984\.cz|
                            peertube\.2i2l\.net|
                            peertube\.adjutor\.xyz|
                            peertube\.adresse\.data\.gouv\.fr|
                            peertube\.alpharius\.io|
                            peertube\.am-networks\.fr|
                            peertube\.anduin\.net|
                            peertube\.anti-logic\.com|
                            peertube\.arch-linux\.cz|
                            peertube\.art3mis\.de|
                            peertube\.artsrn\.ualberta\.ca|
                            peertube\.askan\.info|
                            peertube\.astral0pitek\.synology\.me|
                            peertube\.atsuchan\.page|
                            peertube\.automat\.click|
                            peertube\.b38\.rural-it\.org|
                            peertube\.be|
                            peertube\.beeldengeluid\.nl|
                            peertube\.bgzashtita\.es|
                            peertube\.bike|
                            peertube\.bildung-ekhn\.de|
                            peertube\.biz|
                            peertube\.br0\.fr|
                            peertube\.bridaahost\.ynh\.fr|
                            peertube\.bubbletea\.dev|
                            peertube\.bubuit\.net|
                            peertube\.cabaal\.net|
                            peertube\.chatinbit\.com|
                            peertube\.chaunchy\.com|
                            peertube\.chir\.rs|
                            peertube\.christianpacaud\.com|
                            peertube\.chtisurel\.net|
                            peertube\.chuggybumba\.com|
                            peertube\.cipherbliss\.com|
                            peertube\.cirkau\.art|
                            peertube\.cloud\.nerdraum\.de|
                            peertube\.cloud\.sans\.pub|
                            peertube\.coko\.foundation|
                            peertube\.communecter\.org|
                            peertube\.concordia\.social|
                            peertube\.corrigan\.xyz|
                            peertube\.cpge-brizeux\.fr|
                            peertube\.ctseuro\.com|
                            peertube\.cuatrolibertades\.org|
                            peertube\.cube4fun\.net|
                            peertube\.dair-institute\.org|
                            peertube\.davigge\.com|
                            peertube\.dc\.pini\.fr|
                            peertube\.deadtom\.me|
                            peertube\.debian\.social|
                            peertube\.delta0189\.xyz|
                            peertube\.demonix\.fr|
                            peertube\.designersethiques\.org|
                            peertube\.desmu\.fr|
                            peertube\.devol\.it|
                            peertube\.dk|
                            peertube\.doesstuff\.social|
                            peertube\.eb8\.org|
                            peertube\.education-forum\.com|
                            peertube\.elforcer\.ru|
                            peertube\.em\.id\.lv|
                            peertube\.ethibox\.fr|
                            peertube\.eu\.org|
                            peertube\.european-pirates\.eu|
                            peertube\.eus|
                            peertube\.euskarabildua\.eus|
                            peertube\.expi\.studio|
                            peertube\.familie-berner\.de|
                            peertube\.familleboisteau\.fr|
                            peertube\.fedihost\.website|
                            peertube\.fenarinarsa\.com|
                            peertube\.festnoz\.de|
                            peertube\.forteza\.fr|
                            peertube\.freestorm\.online|
                            peertube\.functional\.cafe|
                            peertube\.gaminglinux\.fr|
                            peertube\.gargantia\.fr|
                            peertube\.geekgalaxy\.fr|
                            peertube\.gemlog\.ca|
                            peertube\.genma\.fr|
                            peertube\.get-racing\.de|
                            peertube\.ghis94\.ovh|
                            peertube\.gidikroon\.eu|
                            peertube\.giftedmc\.com|
                            peertube\.grosist\.fr|
                            peertube\.gruntwerk\.org|
                            peertube\.gsugambit\.com|
                            peertube\.hackerfoo\.com|
                            peertube\.hellsite\.net|
                            peertube\.helvetet\.eu|
                            peertube\.histoirescrepues\.fr|
                            peertube\.home\.x0r\.fr|
                            peertube\.hyperfreedom\.org|
                            peertube\.ichigo\.everydayimshuflin\.com|
                            peertube\.ifwo\.eu|
                            peertube\.in\.ua|
                            peertube\.inapurna\.org|
                            peertube\.informaction\.info|
                            peertube\.interhop\.org|
                            peertube\.it|
                            peertube\.it-arts\.net|
                            peertube\.jensdiemer\.de|
                            peertube\.johntheserg\.al|
                            peertube\.kaleidos\.net|
                            peertube\.kalua\.im|
                            peertube\.kcore\.org|
                            peertube\.keazilla\.net|
                            peertube\.klaewyss\.fr|
                            peertube\.kleph\.eu|
                            peertube\.kodein\.be|
                            peertube\.kooperatywa\.tech|
                            peertube\.kriom\.net|
                            peertube\.kx\.studio|
                            peertube\.kyriog\.eu|
                            peertube\.la-famille-muller\.fr|
                            peertube\.labeuropereunion\.eu|
                            peertube\.lagvoid\.com|
                            peertube\.lhc\.net\.br|
                            peertube\.libresolutions\.network|
                            peertube\.libretic\.fr|
                            peertube\.librosphere\.fr|
                            peertube\.logilab\.fr|
                            peertube\.lon\.tv|
                            peertube\.louisematic\.site|
                            peertube\.luckow\.org|
                            peertube\.luga\.at|
                            peertube\.lyceeconnecte\.fr|
                            peertube\.madixam\.xyz|
                            peertube\.magicstone\.dev|
                            peertube\.marienschule\.de|
                            peertube\.marud\.fr|
                            peertube\.maxweiss\.io|
                            peertube\.miguelcr\.me|
                            peertube\.mikemestnik\.net|
                            peertube\.mobilsicher\.de|
                            peertube\.monlycee\.net|
                            peertube\.mxinfo\.fr|
                            peertube\.naln1\.ca|
                            peertube\.netzbegruenung\.de|
                            peertube\.nicolastissot\.fr|
                            peertube\.nogafam\.fr|
                            peertube\.normalgamingcommunity\.cz|
                            peertube\.nz|
                            peertube\.offerman\.com|
                            peertube\.ohioskates\.com|
                            peertube\.onionstorm\.net|
                            peertube\.opencloud\.lu|
                            peertube\.otakufarms\.com|
                            peertube\.paladyn\.org|
                            peertube\.pix-n-chill\.fr|
                            peertube\.r2\.enst\.fr|
                            peertube\.r5c3\.fr|
                            peertube\.redpill-insight\.com|
                            peertube\.researchinstitute\.at|
                            peertube\.revelin\.fr|
                            peertube\.rlp\.schule|
                            peertube\.rokugan\.fr|
                            peertube\.rougevertbleu\.tv|
                            peertube\.roundpond\.net|
                            peertube\.rural-it\.org|
                            peertube\.satoshishop\.de|
                            peertube\.scyldings\.com|
                            peertube\.securitymadein\.lu|
                            peertube\.semperpax\.com|
                            peertube\.semweb\.pro|
                            peertube\.sensin\.eu|
                            peertube\.sidh\.bzh|
                            peertube\.skorpil\.cz|
                            peertube\.smertrios\.com|
                            peertube\.sqweeb\.net|
                            peertube\.stattzeitung\.org|
                            peertube\.stream|
                            peertube\.su|
                            peertube\.swrs\.net|
                            peertube\.takeko\.cyou|
                            peertube\.taxinachtegel\.de|
                            peertube\.teftera\.com|
                            peertube\.teutronic-services\.de|
                            peertube\.ti-fr\.com|
                            peertube\.tiennot\.net|
                            peertube\.tmp\.rcp\.tf|
                            peertube\.tspu\.edu\.ru|
                            peertube\.tv|
                            peertube\.tweb\.tv|
                            peertube\.underworld\.fr|
                            peertube\.vapronva\.pw|
                            peertube\.veen\.world|
                            peertube\.vesdia\.eu|
                            peertube\.virtual-assembly\.org|
                            peertube\.viviers-fibre\.net|
                            peertube\.vlaki\.cz|
                            peertube\.wiesbaden\.social|
                            peertube\.wivodaim\.net|
                            peertube\.wtf|
                            peertube\.wtfayla\.net|
                            peertube\.xrcb\.cat|
                            peertube\.xwiki\.com|
                            peertube\.zd\.do|
                            peertube\.zetamc\.net|
                            peertube\.zmuuf\.org|
                            peertube\.zoz-serv\.org|
                            peertube\.zwindler\.fr|
                            peervideo\.ru|
                            periscope\.numenaute\.org|
                            pete\.warpnine\.de|
                            petitlutinartube\.fr|
                            phijkchu\.com|
                            phoenixproject\.group|
                            piraten\.space|
                            pirtube\.calut\.fr|
                            pityu\.flaki\.hu|
                            play\.mittdata\.se|
                            player\.ojamajo\.moe|
                            podlibre\.video|
                            portal\.digilab\.nfa\.cz|
                            private\.fedimovie\.com|
                            pt01\.lehrerfortbildung-bw\.de|
                            pt\.diaspodon\.fr|
                            pt\.freedomwolf\.cc|
                            pt\.gordons\.gen\.nz|
                            pt\.ilyamikcoder\.com|
                            pt\.irnok\.net|
                            pt\.mezzo\.moe|
                            pt\.na4\.eu|
                            pt\.netcraft\.ch|
                            pt\.rwx\.ch|
                            pt\.sfunk1x\.com|
                            pt\.thishorsie\.rocks|
                            pt\.vern\.cc|
                            ptb\.lunarviews\.net|
                            ptube\.de|
                            ptube\.ranranhome\.info|
                            puffy\.tube|
                            puppet\.zone|
                            qtube\.qlyoung\.net|
                            quantube\.win|
                            rankett\.net|
                            replay\.jres\.org|
                            review\.peertube\.biz|
                            sdmtube\.fr|
                            secure\.direct-live\.net|
                            secure\.scanovid\.com|
                            seka\.pona\.la|
                            serv3\.wiki-tube\.de|
                            skeptube\.fr|
                            social\.fedimovie\.com|
                            socpeertube\.ru|
                            sovran\.video|
                            special\.videovortex\.tv|
                            spectra\.video|
                            stl1988\.peertube-host\.de|
                            stream\.biovisata\.lt|
                            stream\.conesphere\.cloud|
                            stream\.elven\.pw|
                            stream\.jurnalfm\.md|
                            stream\.k-prod\.fr|
                            stream\.litera\.tools|
                            stream\.nuemedia\.se|
                            stream\.rlp-media\.de|
                            stream\.vrse\.be|
                            studios\.racer159\.com|
                            styxhexenhammer666\.com|
                            syrteplay\.obspm\.fr|
                            t\.0x0\.st|
                            tbh\.co-shaoghal\.net|
                            test-fab\.ynh\.fr|
                            testube\.distrilab\.fr|
                            tgi\.hosted\.spacebear\.ee|
                            theater\.ethernia\.net|
                            thecool\.tube|
                            thevideoverse\.com|
                            tilvids\.com|
                            tinkerbetter\.tube|
                            tinsley\.video|
                            trailers\.ddigest\.com|
                            tube-action-educative\.apps\.education\.fr|
                            tube-arts-lettres-sciences-humaines\.apps\.education\.fr|
                            tube-cycle-2\.apps\.education\.fr|
                            tube-cycle-3\.apps\.education\.fr|
                            tube-education-physique-et-sportive\.apps\.education\.fr|
                            tube-enseignement-professionnel\.apps\.education\.fr|
                            tube-institutionnel\.apps\.education\.fr|
                            tube-langues-vivantes\.apps\.education\.fr|
                            tube-maternelle\.apps\.education\.fr|
                            tube-numerique-educatif\.apps\.education\.fr|
                            tube-sciences-technologies\.apps\.education\.fr|
                            tube-test\.apps\.education\.fr|
                            tube1\.perron-service\.de|
                            tube\.9minuti\.it|
                            tube\.abolivier\.bzh|
                            tube\.alado\.space|
                            tube\.amic37\.fr|
                            tube\.area404\.cloud|
                            tube\.arthack\.nz|
                            tube\.asulia\.fr|
                            tube\.awkward\.company|
                            tube\.azbyka\.ru|
                            tube\.azkware\.net|
                            tube\.bartrip\.me\.uk|
                            tube\.belowtoxic\.media|
                            tube\.bingle\.plus|
                            tube\.bit-friends\.de|
                            tube\.bstly\.de|
                            tube\.chosto\.me|
                            tube\.cms\.garden|
                            tube\.communia\.org|
                            tube\.cyberia\.club|
                            tube\.cybershock\.life|
                            tube\.dembased\.xyz|
                            tube\.dev\.displ\.eu|
                            tube\.digitalesozialearbeit\.de|
                            tube\.distrilab\.fr|
                            tube\.doortofreedom\.org|
                            tube\.dsocialize\.net|
                            tube\.e-jeremy\.com|
                            tube\.ebin\.club|
                            tube\.elemac\.fr|
                            tube\.erzbistum-hamburg\.de|
                            tube\.exozy\.me|
                            tube\.fdn\.fr|
                            tube\.fedi\.quebec|
                            tube\.fediverse\.at|
                            tube\.felinn\.org|
                            tube\.flokinet\.is|
                            tube\.foad\.me\.uk|
                            tube\.freepeople\.fr|
                            tube\.friloux\.me|
                            tube\.froth\.zone|
                            tube\.fulda\.social|
                            tube\.futuretic\.fr|
                            tube\.g1zm0\.de|
                            tube\.g4rf\.net|
                            tube\.gaiac\.io|
                            tube\.geekyboo\.net|
                            tube\.genb\.de|
                            tube\.ghk-academy\.info|
                            tube\.gi-it\.de|
                            tube\.grap\.coop|
                            tube\.graz\.social|
                            tube\.grin\.hu|
                            tube\.hokai\.lol|
                            tube\.int5\.net|
                            tube\.interhacker\.space|
                            tube\.invisible\.ch|
                            tube\.io18\.top|
                            tube\.itsg\.host|
                            tube\.jeena\.net|
                            tube\.kh-berlin\.de|
                            tube\.kockatoo\.org|
                            tube\.kotur\.org|
                            tube\.koweb\.fr|
                            tube\.la-dina\.net|
                            tube\.lab\.nrw|
                            tube\.lacaveatonton\.ovh|
                            tube\.laurent-malys\.fr|
                            tube\.leetdreams\.ch|
                            tube\.linkse\.media|
                            tube\.lokad\.com|
                            tube\.lucie-philou\.com|
                            tube\.media-techport\.de|
                            tube\.morozoff\.pro|
                            tube\.neshweb\.net|
                            tube\.nestor\.coop|
                            tube\.network\.europa\.eu|
                            tube\.nicfab\.eu|
                            tube\.nieuwwestbrabant\.nl|
                            tube\.nogafa\.org|
                            tube\.novg\.net|
                            tube\.nox-rhea\.org|
                            tube\.nuagelibre\.fr|
                            tube\.numerique\.gouv\.fr|
                            tube\.nuxnik\.com|
                            tube\.nx12\.net|
                            tube\.octaplex\.net|
                            tube\.oisux\.org|
                            tube\.okcinfo\.news|
                            tube\.onlinekirche\.net|
                            tube\.opportunis\.me|
                            tube\.oraclefilms\.com|
                            tube\.org\.il|
                            tube\.pacapime\.ovh|
                            tube\.parinux\.org|
                            tube\.pastwind\.top|
                            tube\.picasoft\.net|
                            tube\.pilgerweg-21\.de|
                            tube\.pmj\.rocks|
                            tube\.pol\.social|
                            tube\.ponsonaille\.fr|
                            tube\.portes-imaginaire\.org|
                            tube\.public\.apolut\.net|
                            tube\.pustule\.org|
                            tube\.pyngu\.com|
                            tube\.querdenken-711\.de|
                            tube\.rebellion\.global|
                            tube\.reseau-canope\.fr|
                            tube\.rhythms-of-resistance\.org|
                            tube\.risedsky\.ovh|
                            tube\.rooty\.fr|
                            tube\.rsi\.cnr\.it|
                            tube\.ryne\.moe|
                            tube\.schleuss\.online|
                            tube\.schule\.social|
                            tube\.sekretaerbaer\.net|
                            tube\.shanti\.cafe|
                            tube\.shela\.nu|
                            tube\.skrep\.in|
                            tube\.sleeping\.town|
                            tube\.sp-codes\.de|
                            tube\.spdns\.org|
                            tube\.systerserver\.net|
                            tube\.systest\.eu|
                            tube\.tappret\.fr|
                            tube\.techeasy\.org|
                            tube\.thierrytalbert\.fr|
                            tube\.tinfoil-hat\.net|
                            tube\.toldi\.eu|
                            tube\.tpshd\.de|
                            tube\.trax\.im|
                            tube\.troopers\.agency|
                            tube\.ttk\.is|
                            tube\.tuxfriend\.fr|
                            tube\.tylerdavis\.xyz|
                            tube\.ullihome\.de|
                            tube\.ulne\.be|
                            tube\.undernet\.uy|
                            tube\.vrpnet\.org|
                            tube\.wolfe\.casa|
                            tube\.xd0\.de|
                            tube\.xn--baw-joa\.social|
                            tube\.xy-space\.de|
                            tube\.yapbreak\.fr|
                            tubedu\.org|
                            tubulus\.openlatin\.org|
                            turtleisland\.video|
                            tututu\.tube|
                            tv\.adast\.dk|
                            tv\.adn\.life|
                            tv\.arns\.lt|
                            tv\.atmx\.ca|
                            tv\.based\.quest|
                            tv\.farewellutopia\.com|
                            tv\.filmfreedom\.net|
                            tv\.gravitons\.org|
                            tv\.io\.seg\.br|
                            tv\.lumbung\.space|
                            tv\.pirateradio\.social|
                            tv\.pirati\.cz|
                            tv\.santic-zombie\.ru|
                            tv\.undersco\.re|
                            tv\.zonepl\.net|
                            tvox\.ru|
                            twctube\.twc-zone\.eu|
                            twobeek\.com|
                            urbanists\.video|
                            v\.9tail\.net|
                            v\.basspistol\.org|
                            v\.j4\.lc|
                            v\.kisombrella\.top|
                            v\.koa\.im|
                            v\.kyaru\.xyz|
                            v\.lor\.sh|
                            v\.mkp\.ca|
                            v\.posm\.gay|
                            v\.slaycer\.top|
                            veedeo\.org|
                            vhs\.absturztau\.be|
                            vid\.cthos\.dev|
                            vid\.kinuseka\.us|
                            vid\.mkp\.ca|
                            vid\.nocogabriel\.fr|
                            vid\.norbipeti\.eu|
                            vid\.northbound\.online|
                            vid\.ohboii\.de|
                            vid\.plantplotting\.co\.uk|
                            vid\.pretok\.tv|
                            vid\.prometheus\.systems|
                            vid\.soafen\.love|
                            vid\.twhtv\.club|
                            vid\.wildeboer\.net|
                            video-cave-v2\.de|
                            video-liberty\.com|
                            video\.076\.ne\.jp|
                            video\.1146\.nohost\.me|
                            video\.9wd\.eu|
                            video\.abraum\.de|
                            video\.ados\.accoord\.fr|
                            video\.amiga-ng\.org|
                            video\.anartist\.org|
                            video\.asgardius\.company|
                            video\.audiovisuel-participatif\.org|
                            video\.bards\.online|
                            video\.barkoczy\.social|
                            video\.benetou\.fr|
                            video\.beyondwatts\.social|
                            video\.bgeneric\.net|
                            video\.bilecik\.edu\.tr|
                            video\.blast-info\.fr|
                            video\.bmu\.cloud|
                            video\.catgirl\.biz|
                            video\.causa-arcana\.com|
                            video\.chasmcity\.net|
                            video\.chbmeyer\.de|
                            video\.cigliola\.com|
                            video\.citizen4\.eu|
                            video\.clumsy\.computer|
                            video\.cnnumerique\.fr|
                            video\.cnr\.it|
                            video\.cnt\.social|
                            video\.coales\.co|
                            video\.comune\.trento\.it|
                            video\.coyp\.us|
                            video\.csc49\.fr|
                            video\.davduf\.net|
                            video\.davejansen\.com|
                            video\.dlearning\.nl|
                            video\.dnfi\.no|
                            video\.dresden\.network|
                            video\.drgnz\.club|
                            video\.dudenas\.lt|
                            video\.eientei\.org|
                            video\.ellijaymakerspace\.org|
                            video\.emergeheart\.info|
                            video\.eradicatinglove\.xyz|
                            video\.everythingbagel\.me|
                            video\.extremelycorporate\.ca|
                            video\.fabiomanganiello\.com|
                            video\.fedi\.bzh|
                            video\.fhtagn\.org|
                            video\.firehawk-systems\.com|
                            video\.fox-romka\.ru|
                            video\.fuss\.bz\.it|
                            video\.glassbeadcollective\.org|
                            video\.graine-pdl\.org|
                            video\.gyt\.is|
                            video\.hainry\.fr|
                            video\.hardlimit\.com|
                            video\.hostux\.net|
                            video\.igem\.org|
                            video\.infojournal\.fr|
                            video\.internet-czas-dzialac\.pl|
                            video\.interru\.io|
                            video\.ipng\.ch|
                            video\.ironsysadmin\.com|
                            video\.islameye\.com|
                            video\.jacen\.moe|
                            video\.jadin\.me|
                            video\.jeffmcbride\.net|
                            video\.jigmedatse\.com|
                            video\.kuba-orlik\.name|
                            video\.lacalligramme\.fr|
                            video\.lanceurs-alerte\.fr|
                            video\.laotra\.red|
                            video\.lapineige\.fr|
                            video\.laraffinerie\.re|
                            video\.lavolte\.net|
                            video\.liberta\.vip|
                            video\.libreti\.net|
                            video\.licentia\.net|
                            video\.linc\.systems|
                            video\.linux\.it|
                            video\.linuxtrent\.it|
                            video\.liveitlive\.show|
                            video\.lono\.space|
                            video\.lrose\.de|
                            video\.lunago\.net|
                            video\.lundi\.am|
                            video\.lycee-experimental\.org|
                            video\.maechler\.cloud|
                            video\.marcorennmaus\.de|
                            video\.mass-trespass\.uk|
                            video\.matomocamp\.org|
                            video\.medienzentrum-harburg\.de|
                            video\.mentality\.rip|
                            video\.metaversum\.wtf|
                            video\.midreality\.com|
                            video\.mttv\.it|
                            video\.mugoreve\.fr|
                            video\.mxtthxw\.art|
                            video\.mycrowd\.ca|
                            video\.niboe\.info|
                            video\.nogafam\.es|
                            video\.nstr\.no|
                            video\.occm\.cc|
                            video\.off-investigation\.fr|
                            video\.olos311\.org|
                            video\.ordinobsolete\.fr|
                            video\.osvoj\.ru|
                            video\.ourcommon\.cloud|
                            video\.ozgurkon\.org|
                            video\.pcf\.fr|
                            video\.pcgaldo\.com|
                            video\.phyrone\.de|
                            video\.poul\.org|
                            video\.publicspaces\.net|
                            video\.pullopen\.xyz|
                            video\.r3s\.nrw|
                            video\.rainevixen\.com|
                            video\.resolutions\.it|
                            video\.retroedge\.tech|
                            video\.rhizome\.org|
                            video\.rlp-media\.de|
                            video\.rs-einrich\.de|
                            video\.rubdos\.be|
                            video\.sadmin\.io|
                            video\.sftblw\.moe|
                            video\.shitposter\.club|
                            video\.simplex-software\.ru|
                            video\.slipfox\.xyz|
                            video\.snug\.moe|
                            video\.software-fuer-engagierte\.de|
                            video\.soi\.ch|
                            video\.sonet\.ws|
                            video\.surazal\.net|
                            video\.taskcards\.eu|
                            video\.team-lcbs\.eu|
                            video\.techforgood\.social|
                            video\.telemillevaches\.net|
                            video\.thepolarbear\.co\.uk|
                            video\.thinkof\.name|
                            video\.tii\.space|
                            video\.tkz\.es|
                            video\.trankil\.info|
                            video\.triplea\.fr|
                            video\.tum\.social|
                            video\.turbo\.chat|
                            video\.uriopss-pdl\.fr|
                            video\.ustim\.ru|
                            video\.ut0pia\.org|
                            video\.vaku\.org\.ua|
                            video\.vegafjord\.me|
                            video\.veloma\.org|
                            video\.violoncello\.ch|
                            video\.voidconspiracy\.band|
                            video\.wakkeren\.nl|
                            video\.windfluechter\.org|
                            video\.ziez\.eu|
                            videos-passages\.huma-num\.fr|
                            videos\.aadtp\.be|
                            videos\.ahp-numerique\.fr|
                            videos\.alamaisondulibre\.org|
                            videos\.archigny\.net|
                            videos\.aroaduntraveled\.com|
                            videos\.b4tech\.org|
                            videos\.benjaminbrady\.ie|
                            videos\.bik\.opencloud\.lu|
                            videos\.cloudron\.io|
                            videos\.codingotaku\.com|
                            videos\.coletivos\.org|
                            videos\.collate\.social|
                            videos\.danksquad\.org|
                            videos\.digitaldragons\.eu|
                            videos\.dromeadhere\.fr|
                            videos\.explain-it\.org|
                            videos\.factsonthegroundshow\.com|
                            videos\.foilen\.com|
                            videos\.fsci\.in|
                            videos\.gamercast\.net|
                            videos\.gianmarco\.gg|
                            videos\.globenet\.org|
                            videos\.grafo\.zone|
                            videos\.hauspie\.fr|
                            videos\.hush\.is|
                            videos\.hyphalfusion\.network|
                            videos\.icum\.to|
                            videos\.im\.allmendenetz\.de|
                            videos\.jacksonchen666\.com|
                            videos\.john-livingston\.fr|
                            videos\.knazarov\.com|
                            videos\.kuoushi\.com|
                            videos\.laliguepaysdelaloire\.org|
                            videos\.lemouvementassociatif-pdl\.org|
                            videos\.leslionsfloorball\.fr|
                            videos\.librescrum\.org|
                            videos\.mastodont\.cat|
                            videos\.metus\.ca|
                            videos\.miolo\.org|
                            videos\.offroad\.town|
                            videos\.openmandriva\.org|
                            videos\.parleur\.net|
                            videos\.pcorp\.us|
                            videos\.pop\.eu\.com|
                            videos\.rampin\.org|
                            videos\.rauten\.co\.za|
                            videos\.ritimo\.org|
                            videos\.sarcasmstardust\.com|
                            videos\.scanlines\.xyz|
                            videos\.shmalls\.pw|
                            videos\.stadtfabrikanten\.org|
                            videos\.supertuxkart\.net|
                            videos\.testimonia\.org|
                            videos\.thinkerview\.com|
                            videos\.torrenezzi10\.xyz|
                            videos\.trom\.tf|
                            videos\.utsukta\.org|
                            videos\.viorsan\.com|
                            videos\.wherelinux\.xyz|
                            videos\.wikilibriste\.fr|
                            videos\.yesil\.club|
                            videos\.yeswiki\.net|
                            videotube\.duckdns\.org|
                            vids\.capypara\.de|
                            vids\.roshless\.me|
                            vids\.stary\.pc\.pl|
                            vids\.tekdmn\.me|
                            vidz\.julien\.ovh|
                            views\.southfox\.me|
                            virtual-girls-are\.definitely-for\.me|
                            viste\.pt|
                            vnchich\.com|
                            vnop\.org|
                            vod\.newellijay\.tv|
                            voluntarytube\.com|
                            vtr\.chikichiki\.tube|
                            vulgarisation-informatique\.fr|
                            watch\.easya\.solutions|
                            watch\.goodluckgabe\.life|
                            watch\.ignorance\.eu|
                            watch\.jimmydore\.com|
                            watch\.libertaria\.space|
                            watch\.nuked\.social|
                            watch\.ocaml\.org|
                            watch\.thelema\.social|
                            watch\.tubelab\.video|
                            web-fellow\.de|
                            webtv\.vandoeuvre\.net|
                            wetubevid\.online|
                            wikileaks\.video|
                            wiwi\.video|
                            wow\.such\.disappointment\.fail|
                            www\.jvideos\.net|
                            www\.kotikoff\.net|
                            www\.makertube\.net|
                            www\.mypeer\.tube|
                            www\.nadajemy\.com|
                            www\.neptube\.io|
                            www\.rocaguinarda\.tv|
                            www\.vnshow\.net|
                            xxivproduction\.video|
                            yt\.orokoro\.ru|
                            ytube\.retronerd\.at|
                            zumvideo\.de|

                            # from youtube-dl
                            peertube\.rainbowswingers\.net|
                            tube\.stanisic\.nl|
                            peer\.suiri\.us|
                            medias\.libox\.fr|
                            videomensoif\.ynh\.fr|
                            peertube\.travelpandas\.eu|
                            peertube\.rachetjay\.fr|
                            peertube\.montecsys\.fr|
                            tube\.eskuero\.me|
                            peer\.tube|
                            peertube\.umeahackerspace\.se|
                            tube\.nx-pod\.de|
                            video\.monsieurbidouille\.fr|
                            tube\.openalgeria\.org|
                            vid\.lelux\.fi|
                            video\.anormallostpod\.ovh|
                            tube\.crapaud-fou\.org|
                            peertube\.stemy\.me|
                            lostpod\.space|
                            exode\.me|
                            peertube\.snargol\.com|
                            vis\.ion\.ovh|
                            videosdulib\.re|
                            v\.mbius\.io|
                            videos\.judrey\.eu|
                            peertube\.osureplayviewer\.xyz|
                            peertube\.mathieufamily\.ovh|
                            www\.videos-libr\.es|
                            fightforinfo\.com|
                            peertube\.fediverse\.ru|
                            peertube\.oiseauroch\.fr|
                            video\.nesven\.eu|
                            v\.bearvideo\.win|
                            video\.qoto\.org|
                            justporn\.cc|
                            video\.vny\.fr|
                            peervideo\.club|
                            tube\.taker\.fr|
                            peertube\.chantierlibre\.org|
                            tube\.ipfixe\.info|
                            tube\.kicou\.info|
                            tube\.dodsorf\.as|
                            videobit\.cc|
                            video\.yukari\.moe|
                            videos\.elbinario\.net|
                            hkvideo\.live|
                            pt\.tux\.tf|
                            www\.hkvideo\.live|
                            FIGHTFORINFO\.com|
                            pt\.765racing\.com|
                            peertube\.gnumeria\.eu\.org|
                            nordenmedia\.com|
                            peertube\.co\.uk|
                            tube\.darfweb\.eu|
                            tube\.kalah-france\.org|
                            0ch\.in|
                            vod\.mochi\.academy|
                            film\.node9\.org|
                            peertube\.hatthieves\.es|
                            video\.fitchfamily\.org|
                            peertube\.ddns\.net|
                            video\.ifuncle\.kr|
                            video\.fdlibre\.eu|
                            tube\.22decembre\.eu|
                            peertube\.harmoniescreatives\.com|
                            tube\.fabrigli\.fr|
                            video\.thedwyers\.co|
                            video\.bruitbruit\.com|
                            peertube\.foxfam\.club|
                            peer\.philoxweb\.be|
                            videos\.bugs\.social|
                            peertube\.malbert\.xyz|
                            peertube\.bilange\.ca|
                            libretube\.net|
                            diytelevision\.com|
                            peertube\.fedilab\.app|
                            libre\.video|
                            video\.mstddntfdn\.online|
                            us\.tv|
                            peertube\.sl-network\.fr|
                            peertube\.dynlinux\.io|
                            peertube\.david\.durieux\.family|
                            peertube\.linuxrocks\.online|
                            peerwatch\.xyz|
                            v\.kretschmann\.social|
                            tube\.otter\.sh|
                            yt\.is\.nota\.live|
                            tube\.dragonpsi\.xyz|
                            peertube\.boneheadmedia\.com|
                            videos\.funkwhale\.audio|
                            watch\.44con\.com|
                            peertube\.gcaillaut\.fr|
                            peertube\.icu|
                            pony\.tube|
                            spacepub\.space|
                            tube\.stbr\.io|
                            v\.mom-gay\.faith|
                            tube\.port0\.xyz|
                            peertube\.simounet\.net|
                            play\.jergefelt\.se|
                            peertube\.zeteo\.me|
                            tube\.danq\.me|
                            peertube\.kerenon\.com|
                            tube\.fab-l3\.org|
                            tube\.calculate\.social|
                            peertube\.mckillop\.org|
                            tube\.netzspielplatz\.de|
                            vod\.ksite\.de|
                            peertube\.laas\.fr|
                            tube\.govital\.net|
                            peertube\.stephenson\.cc|
                            bistule\.nohost\.me|
                            peertube\.kajalinifi\.de|
                            video\.ploud\.jp|
                            video\.omniatv\.com|
                            peertube\.ffs2play\.fr|
                            peertube\.leboulaire\.ovh|
                            peertube\.tronic-studio\.com|
                            peertube\.public\.cat|
                            peertube\.metalbanana\.net|
                            video\.1000i100\.fr|
                            peertube\.alter-nativ-voll\.de|
                            tube\.pasa\.tf|
                            tube\.worldofhauru\.xyz|
                            pt\.kamp\.site|
                            peertube\.teleassist\.fr|
                            videos\.mleduc\.xyz|
                            conf\.tube|
                            media\.privacyinternational\.org|
                            pt\.forty-two\.nl|
                            video\.halle-leaks\.de|
                            video\.grosskopfgames\.de|
                            peertube\.schaeferit\.de|
                            peertube\.jackbot\.fr|
                            tube\.extinctionrebellion\.fr|
                            peertube\.f-si\.org|
                            video\.subak\.ovh|
                            videos\.koweb\.fr|
                            peertube\.zergy\.net|
                            peertube\.roflcopter\.fr|
                            peertube\.floss-marketing-school\.com|
                            vloggers\.social|
                            peertube\.iriseden\.eu|
                            videos\.ubuntu-paris\.org|
                            peertube\.mastodon\.host|
                            armstube\.com|
                            peertube\.s2s\.video|
                            peertube\.lol|
                            tube\.open-plug\.eu|
                            open\.tube|
                            peertube\.ch|
                            peertube\.normandie-libre\.fr|
                            peertube\.slat\.org|
                            video\.lacaveatonton\.ovh|
                            peertube\.uno|
                            peertube\.servebeer\.com|
                            peertube\.fedi\.quebec|
                            tube\.h3z\.jp|
                            tube\.plus200\.com|
                            peertube\.eric\.ovh|
                            tube\.metadocs\.cc|
                            tube\.unmondemeilleur\.eu|
                            gouttedeau\.space|
                            video\.antirep\.net|
                            nrop\.cant\.at|
                            tube\.ksl-bmx\.de|
                            tube\.plaf\.fr|
                            tube\.tchncs\.de|
                            video\.devinberg\.com|
                            hitchtube\.fr|
                            peertube\.kosebamse\.com|
                            yunopeertube\.myddns\.me|
                            peertube\.varney\.fr|
                            peertube\.anon-kenkai\.com|
                            tube\.maiti\.info|
                            tubee\.fr|
                            videos\.dinofly\.com|
                            toobnix\.org|
                            videotape\.me|
                            voca\.tube|
                            video\.heromuster\.com|
                            video\.lemediatv\.fr|
                            video\.up\.edu\.ph|
                            balafon\.video|
                            video\.ivel\.fr|
                            thickrips\.cloud|
                            pt\.laurentkruger\.fr|
                            video\.monarch-pass\.net|
                            peertube\.artica\.center|
                            video\.alternanet\.fr|
                            indymotion\.fr|
                            fanvid\.stopthatimp\.net|
                            video\.farci\.org|
                            v\.lesterpig\.com|
                            video\.okaris\.de|
                            tube\.pawelko\.net|
                            peertube\.mablr\.org|
                            tube\.fede\.re|
                            pytu\.be|
                            evertron\.tv|
                            devtube\.dev-wiki\.de|
                            raptube\.antipub\.org|
                            video\.selea\.se|
                            peertube\.mygaia\.org|
                            video\.oh14\.de|
                            peertube\.livingutopia\.org|
                            peertube\.the-penguin\.de|
                            tube\.thechangebook\.org|
                            tube\.anjara\.eu|
                            pt\.pube\.tk|
                            video\.samedi\.pm|
                            mplayer\.demouliere\.eu|
                            widemus\.de|
                            peertube\.me|
                            peertube\.zapashcanon\.fr|
                            video\.latavernedejohnjohn\.fr|
                            peertube\.pcservice46\.fr|
                            peertube\.mazzonetto\.eu|
                            video\.irem\.univ-paris-diderot\.fr|
                            video\.livecchi\.cloud|
                            alttube\.fr|
                            video\.coop\.tools|
                            video\.cabane-libre\.org|
                            peertube\.openstreetmap\.fr|
                            videos\.alolise\.org|
                            irrsinn\.video|
                            video\.antopie\.org|
                            scitech\.video|
                            tube2\.nemsia\.org|
                            video\.amic37\.fr|
                            peertube\.freeforge\.eu|
                            video\.arbitrarion\.com|
                            video\.datsemultimedia\.com|
                            stoptrackingus\.tv|
                            peertube\.ricostrongxxx\.com|
                            docker\.videos\.lecygnenoir\.info|
                            peertube\.togart\.de|
                            tube\.postblue\.info|
                            videos\.domainepublic\.net|
                            peertube\.cyber-tribal\.com|
                            video\.gresille\.org|
                            peertube\.dsmouse\.net|
                            cinema\.yunohost\.support|
                            tube\.theocevaer\.fr|
                            repro\.video|
                            tube\.4aem\.com|
                            quaziinc\.com|
                            peertube\.metawurst\.space|
                            videos\.wakapo\.com|
                            video\.ploud\.fr|
                            video\.freeradical\.zone|
                            tube\.valinor\.fr|
                            refuznik\.video|
                            pt\.kircheneuenburg\.de|
                            peertube\.asrun\.eu|
                            peertube\.lagob\.fr|
                            videos\.side-ways\.net|
                            91video\.online|
                            video\.valme\.io|
                            video\.taboulisme\.com|
                            videos-libr\.es|
                            tv\.mooh\.fr|
                            nuage\.acostey\.fr|
                            video\.monsieur-a\.fr|
                            peertube\.librelois\.fr|
                            videos\.pair2jeux\.tube|
                            videos\.pueseso\.club|
                            peer\.mathdacloud\.ovh|
                            media\.assassinate-you\.net|
                            vidcommons\.org|
                            ptube\.rousset\.nom\.fr|
                            tube\.cyano\.at|
                            videos\.squat\.net|
                            video\.iphodase\.fr|
                            peertube\.makotoworkshop\.org|
                            peertube\.serveur\.slv-valbonne\.fr|
                            vault\.mle\.party|
                            hostyour\.tv|
                            videos\.hack2g2\.fr|
                            libre\.tube|
                            pire\.artisanlogiciel\.net|
                            videos\.numerique-en-commun\.fr|
                            video\.netsyms\.com|
                            video\.die-partei\.social|
                            video\.writeas\.org|
                            peertube\.swarm\.solvingmaz\.es|
                            tube\.pericoloso\.ovh|
                            watching\.cypherpunk\.observer|
                            videos\.adhocmusic\.com|
                            tube\.rfc1149\.net|
                            peertube\.librelabucm\.org|
                            videos\.numericoop\.fr|
                            peertube\.koehn\.com|
                            peertube\.anarchmusicall\.net|
                            tube\.kampftoast\.de|
                            vid\.y-y\.li|
                            peertube\.xtenz\.xyz|
                            diode\.zone|
                            tube\.egf\.mn|
                            peertube\.nomagic\.uk|
                            visionon\.tv|
                            videos\.koumoul\.com|
                            video\.rastapuls\.com|
                            video\.mantlepro\.com|
                            video\.deadsuperhero\.com|
                            peertube\.musicstudio\.pro|
                            peertube\.we-keys\.fr|
                            artitube\.artifaille\.fr|
                            peertube\.ethernia\.net|
                            tube\.midov\.pl|
                            peertube\.fr|
                            watch\.snoot\.tube|
                            peertube\.donnadieu\.fr|
                            argos\.aquilenet\.fr|
                            tube\.nemsia\.org|
                            tube\.bruniau\.net|
                            videos\.darckoune\.moe|
                            tube\.traydent\.info|
                            dev\.videos\.lecygnenoir\.info|
                            peertube\.nayya\.org|
                            peertube\.live|
                            peertube\.mofgao\.space|
                            video\.lequerrec\.eu|
                            peertube\.amicale\.net|
                            aperi\.tube|
                            tube\.ac-lyon\.fr|
                            video\.lw1\.at|
                            www\.yiny\.org|
                            videos\.pofilo\.fr|
                            tube\.lou\.lt|
                            choob\.h\.etbus\.ch|
                            tube\.hoga\.fr|
                            peertube\.heberge\.fr|
                            video\.obermui\.de|
                            videos\.cloudfrancois\.fr|
                            betamax\.video|
                            video\.typica\.us|
                            tube\.piweb\.be|
                            video\.blender\.org|
                            peertube\.cat|
                            tube\.kdy\.ch|
                            pe\.ertu\.be|
                            peertube\.social|
                            videos\.lescommuns\.org|
                            tv\.datamol\.org|
                            videonaute\.fr|
                            dialup\.express|
                            peertube\.nogafa\.org|
                            megatube\.lilomoino\.fr|
                            peertube\.tamanoir\.foucry\.net|
                            peertube\.devosi\.org|
                            peertube\.1312\.media|
                            tube\.bootlicker\.party|
                            skeptikon\.fr|
                            video\.blueline\.mg|
                            tube\.homecomputing\.fr|
                            tube\.ouahpiti\.info|
                            video\.tedomum\.net|
                            video\.g3l\.org|
                            fontube\.fr|
                            peertube\.gaialabs\.ch|
                            tube\.kher\.nl|
                            peertube\.qtg\.fr|
                            video\.migennes\.net|
                            tube\.p2p\.legal|
                            troll\.tv|
                            videos\.iut-orsay\.fr|
                            peertube\.solidev\.net|
                            videos\.cemea\.org|
                            video\.passageenseine\.fr|
                            videos\.festivalparminous\.org|
                            peertube\.touhoppai\.moe|
                            sikke\.fi|
                            peer\.hostux\.social|
                            share\.tube|
                            peertube\.walkingmountains\.fr|
                            videos\.benpro\.fr|
                            peertube\.parleur\.net|
                            peertube\.heraut\.eu|
                            tube\.aquilenet\.fr|
                            peertube\.gegeweb\.eu|
                            framatube\.org|
                            thinkerview\.video|
                            tube\.conferences-gesticulees\.net|
                            peertube\.datagueule\.tv|
                            video\.lqdn\.fr|
                            tube\.mochi\.academy|
                            media\.zat\.im|
                            video\.colibris-outilslibres\.org|
                            tube\.svnet\.fr|
                            peertube\.video|
                            peertube2\.cpy\.re|
                            peertube3\.cpy\.re|
                            videos\.tcit\.fr|
                            peertube\.cpy\.re|
                            canard\.tube
                        ))/(?:videos/(?:watch|embed)|api/v\d/videos|w)/
                    )
                    (?P<id>[\da-zA-Z]{22}|[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12})
                    rk   Nr   r   r   r   r  r  #  s&        )GG {uJLLLr   r  c                       e Zd ZdZdZdZdZdS )PeerTubePlaylistIEr  zPeerTube:Playlista  (?x)
                        https?://(?P<host>(?:
                            # Taken from https://instances.joinpeertube.org/instances
                            0ch\.tv|
                            3dctube\.3dcandy\.social|
                            all\.electric\.kitchen|
                            alterscope\.fr|
                            anarchy\.tube|
                            apathy\.tv|
                            apertatube\.net|
                            archive\.nocopyrightintended\.tv|
                            archive\.reclaim\.tv|
                            area51\.media|
                            astrotube-ufe\.obspm\.fr|
                            astrotube\.obspm\.fr|
                            audio\.freediverse\.com|
                            azxtube\.youssefc\.tn|
                            bark\.video|
                            battlepenguin\.video|
                            bava\.tv|
                            bee-tube\.fr|
                            beetoons\.tv|
                            biblion\.refchat\.net|
                            biblioteca\.theowlclub\.net|
                            bideoak\.argia\.eus|
                            bideoteka\.eus|
                            birdtu\.be|
                            bitcointv\.com|
                            bonn\.video|
                            breeze\.tube|
                            brioco\.live|
                            brocosoup\.fr|
                            canal\.facil\.services|
                            canard\.tube|
                            cdn01\.tilvids\.com|
                            celluloid-media\.huma-num\.fr|
                            chicago1\.peertube\.support|
                            cliptube\.org|
                            cloudtube\.ise\.fraunhofer\.de|
                            comf\.tube|
                            comics\.peertube\.biz|
                            commons\.tube|
                            communitymedia\.video|
                            conspiracydistillery\.com|
                            crank\.recoil\.org|
                            dalek\.zone|
                            dalliance\.network|
                            dangly\.parts|
                            darkvapor\.nohost\.me|
                            daschauher\.aksel\.rocks|
                            digitalcourage\.video|
                            displayeurope\.video|
                            ds106\.tv|
                            dud-video\.inf\.tu-dresden\.de|
                            dud175\.inf\.tu-dresden\.de|
                            dytube\.com|
                            ebildungslabor\.video|
                            evangelisch\.video|
                            fair\.tube|
                            fedi\.video|
                            fedimovie\.com|
                            fediverse\.tv|
                            film\.k-prod\.fr|
                            flipboard\.video|
                            foss\.video|
                            fossfarmers\.company|
                            fotogramas\.politicaconciencia\.org|
                            freediverse\.com|
                            freesoto-u2151\.vm\.elestio\.app|
                            freesoto\.tv|
                            garr\.tv|
                            greatview\.video|
                            grypstube\.uni-greifswald\.de|
                            habratube\.site|
                            ilbjach\.ru|
                            infothema\.net|
                            itvplus\.iiens\.net|
                            johnydeep\.net|
                            juggling\.digital|
                            jupiter\.tube|
                            kadras\.live|
                            kino\.kompot\.si|
                            kino\.schuerz\.at|
                            kinowolnosc\.pl|
                            kirche\.peertube-host\.de|
                            kiwi\.froggirl\.club|
                            kodcast\.com|
                            kolektiva\.media|
                            kpop\.22x22\.ru|
                            kumi\.tube|
                            la2\.peertube\.support|
                            la3\.peertube\.support|
                            la4\.peertube\.support|
                            lastbreach\.tv|
                            lawsplaining\.peertube\.biz|
                            leopard\.tube|
                            live\.codinglab\.ch|
                            live\.libratoi\.org|
                            live\.oldskool\.fi|
                            live\.solari\.com|
                            lucarne\.balsamine\.be|
                            luxtube\.lu|
                            makertube\.net|
                            media\.econoalchemist\.com|
                            media\.exo\.cat|
                            media\.fsfe\.org|
                            media\.gzevd\.de|
                            media\.interior\.edu\.uy|
                            media\.krashboyz\.org|
                            media\.mzhd\.de|
                            media\.smz-ma\.de|
                            media\.theplattform\.net|
                            media\.undeadnetwork\.de|
                            medias\.debrouillonet\.org|
                            medias\.pingbase\.net|
                            mediatube\.fermalo\.fr|
                            melsungen\.peertube-host\.de|
                            merci-la-police\.fr|
                            mindlyvideos\.com|
                            mirror\.peertube\.metalbanana\.net|
                            mirrored\.rocks|
                            mix\.video|
                            mountaintown\.video|
                            movies\.metricsmaster\.eu|
                            mtube\.mooo\.com|
                            mytube\.kn-cloud\.de|
                            mytube\.le5emeaxe\.fr|
                            mytube\.madzel\.de|
                            nadajemy\.com|
                            nanawel-peertube\.dyndns\.org|
                            neat\.tube|
                            nethack\.tv|
                            nicecrew\.tv|
                            nightshift\.minnix\.dev|
                            nolog\.media|
                            nyltube\.nylarea\.com|
                            ocfedtest\.hosted\.spacebear\.ee|
                            openmedia\.edunova\.it|
                            p2ptv\.ru|
                            p\.eertu\.be|
                            p\.lu|
                            pastafriday\.club|
                            patriottube\.sonsofliberty\.red|
                            pcbu\.nl|
                            peer\.azurs\.fr|
                            peer\.d0g4\.me|
                            peer\.lukeog\.com|
                            peer\.madiator\.cloud|
                            peer\.raise-uav\.com|
                            peershare\.togart\.de|
                            peertube-blablalinux\.be|
                            peertube-demo\.learning-hub\.fr|
                            peertube-docker\.cpy\.re|
                            peertube-eu\.howlround\.com|
                            peertube-u5014\.vm\.elestio\.app|
                            peertube-us\.howlround\.com|
                            peertube\.020\.pl|
                            peertube\.0x5e\.eu|
                            peertube\.1984\.cz|
                            peertube\.2i2l\.net|
                            peertube\.adjutor\.xyz|
                            peertube\.adresse\.data\.gouv\.fr|
                            peertube\.alpharius\.io|
                            peertube\.am-networks\.fr|
                            peertube\.anduin\.net|
                            peertube\.anti-logic\.com|
                            peertube\.arch-linux\.cz|
                            peertube\.art3mis\.de|
                            peertube\.artsrn\.ualberta\.ca|
                            peertube\.askan\.info|
                            peertube\.astral0pitek\.synology\.me|
                            peertube\.atsuchan\.page|
                            peertube\.automat\.click|
                            peertube\.b38\.rural-it\.org|
                            peertube\.be|
                            peertube\.beeldengeluid\.nl|
                            peertube\.bgzashtita\.es|
                            peertube\.bike|
                            peertube\.bildung-ekhn\.de|
                            peertube\.biz|
                            peertube\.br0\.fr|
                            peertube\.bridaahost\.ynh\.fr|
                            peertube\.bubbletea\.dev|
                            peertube\.bubuit\.net|
                            peertube\.cabaal\.net|
                            peertube\.chatinbit\.com|
                            peertube\.chaunchy\.com|
                            peertube\.chir\.rs|
                            peertube\.christianpacaud\.com|
                            peertube\.chtisurel\.net|
                            peertube\.chuggybumba\.com|
                            peertube\.cipherbliss\.com|
                            peertube\.cirkau\.art|
                            peertube\.cloud\.nerdraum\.de|
                            peertube\.cloud\.sans\.pub|
                            peertube\.coko\.foundation|
                            peertube\.communecter\.org|
                            peertube\.concordia\.social|
                            peertube\.corrigan\.xyz|
                            peertube\.cpge-brizeux\.fr|
                            peertube\.ctseuro\.com|
                            peertube\.cuatrolibertades\.org|
                            peertube\.cube4fun\.net|
                            peertube\.dair-institute\.org|
                            peertube\.davigge\.com|
                            peertube\.dc\.pini\.fr|
                            peertube\.deadtom\.me|
                            peertube\.debian\.social|
                            peertube\.delta0189\.xyz|
                            peertube\.demonix\.fr|
                            peertube\.designersethiques\.org|
                            peertube\.desmu\.fr|
                            peertube\.devol\.it|
                            peertube\.dk|
                            peertube\.doesstuff\.social|
                            peertube\.eb8\.org|
                            peertube\.education-forum\.com|
                            peertube\.elforcer\.ru|
                            peertube\.em\.id\.lv|
                            peertube\.ethibox\.fr|
                            peertube\.eu\.org|
                            peertube\.european-pirates\.eu|
                            peertube\.eus|
                            peertube\.euskarabildua\.eus|
                            peertube\.expi\.studio|
                            peertube\.familie-berner\.de|
                            peertube\.familleboisteau\.fr|
                            peertube\.fedihost\.website|
                            peertube\.fenarinarsa\.com|
                            peertube\.festnoz\.de|
                            peertube\.forteza\.fr|
                            peertube\.freestorm\.online|
                            peertube\.functional\.cafe|
                            peertube\.gaminglinux\.fr|
                            peertube\.gargantia\.fr|
                            peertube\.geekgalaxy\.fr|
                            peertube\.gemlog\.ca|
                            peertube\.genma\.fr|
                            peertube\.get-racing\.de|
                            peertube\.ghis94\.ovh|
                            peertube\.gidikroon\.eu|
                            peertube\.giftedmc\.com|
                            peertube\.grosist\.fr|
                            peertube\.gruntwerk\.org|
                            peertube\.gsugambit\.com|
                            peertube\.hackerfoo\.com|
                            peertube\.hellsite\.net|
                            peertube\.helvetet\.eu|
                            peertube\.histoirescrepues\.fr|
                            peertube\.home\.x0r\.fr|
                            peertube\.hyperfreedom\.org|
                            peertube\.ichigo\.everydayimshuflin\.com|
                            peertube\.ifwo\.eu|
                            peertube\.in\.ua|
                            peertube\.inapurna\.org|
                            peertube\.informaction\.info|
                            peertube\.interhop\.org|
                            peertube\.it|
                            peertube\.it-arts\.net|
                            peertube\.jensdiemer\.de|
                            peertube\.johntheserg\.al|
                            peertube\.kaleidos\.net|
                            peertube\.kalua\.im|
                            peertube\.kcore\.org|
                            peertube\.keazilla\.net|
                            peertube\.klaewyss\.fr|
                            peertube\.kleph\.eu|
                            peertube\.kodein\.be|
                            peertube\.kooperatywa\.tech|
                            peertube\.kriom\.net|
                            peertube\.kx\.studio|
                            peertube\.kyriog\.eu|
                            peertube\.la-famille-muller\.fr|
                            peertube\.labeuropereunion\.eu|
                            peertube\.lagvoid\.com|
                            peertube\.lhc\.net\.br|
                            peertube\.libresolutions\.network|
                            peertube\.libretic\.fr|
                            peertube\.librosphere\.fr|
                            peertube\.logilab\.fr|
                            peertube\.lon\.tv|
                            peertube\.louisematic\.site|
                            peertube\.luckow\.org|
                            peertube\.luga\.at|
                            peertube\.lyceeconnecte\.fr|
                            peertube\.madixam\.xyz|
                            peertube\.magicstone\.dev|
                            peertube\.marienschule\.de|
                            peertube\.marud\.fr|
                            peertube\.maxweiss\.io|
                            peertube\.miguelcr\.me|
                            peertube\.mikemestnik\.net|
                            peertube\.mobilsicher\.de|
                            peertube\.monlycee\.net|
                            peertube\.mxinfo\.fr|
                            peertube\.naln1\.ca|
                            peertube\.netzbegruenung\.de|
                            peertube\.nicolastissot\.fr|
                            peertube\.nogafam\.fr|
                            peertube\.normalgamingcommunity\.cz|
                            peertube\.nz|
                            peertube\.offerman\.com|
                            peertube\.ohioskates\.com|
                            peertube\.onionstorm\.net|
                            peertube\.opencloud\.lu|
                            peertube\.otakufarms\.com|
                            peertube\.paladyn\.org|
                            peertube\.pix-n-chill\.fr|
                            peertube\.r2\.enst\.fr|
                            peertube\.r5c3\.fr|
                            peertube\.redpill-insight\.com|
                            peertube\.researchinstitute\.at|
                            peertube\.revelin\.fr|
                            peertube\.rlp\.schule|
                            peertube\.rokugan\.fr|
                            peertube\.rougevertbleu\.tv|
                            peertube\.roundpond\.net|
                            peertube\.rural-it\.org|
                            peertube\.satoshishop\.de|
                            peertube\.scyldings\.com|
                            peertube\.securitymadein\.lu|
                            peertube\.semperpax\.com|
                            peertube\.semweb\.pro|
                            peertube\.sensin\.eu|
                            peertube\.sidh\.bzh|
                            peertube\.skorpil\.cz|
                            peertube\.smertrios\.com|
                            peertube\.sqweeb\.net|
                            peertube\.stattzeitung\.org|
                            peertube\.stream|
                            peertube\.su|
                            peertube\.swrs\.net|
                            peertube\.takeko\.cyou|
                            peertube\.taxinachtegel\.de|
                            peertube\.teftera\.com|
                            peertube\.teutronic-services\.de|
                            peertube\.ti-fr\.com|
                            peertube\.tiennot\.net|
                            peertube\.tmp\.rcp\.tf|
                            peertube\.tspu\.edu\.ru|
                            peertube\.tv|
                            peertube\.tweb\.tv|
                            peertube\.underworld\.fr|
                            peertube\.vapronva\.pw|
                            peertube\.veen\.world|
                            peertube\.vesdia\.eu|
                            peertube\.virtual-assembly\.org|
                            peertube\.viviers-fibre\.net|
                            peertube\.vlaki\.cz|
                            peertube\.wiesbaden\.social|
                            peertube\.wivodaim\.net|
                            peertube\.wtf|
                            peertube\.wtfayla\.net|
                            peertube\.xrcb\.cat|
                            peertube\.xwiki\.com|
                            peertube\.zd\.do|
                            peertube\.zetamc\.net|
                            peertube\.zmuuf\.org|
                            peertube\.zoz-serv\.org|
                            peertube\.zwindler\.fr|
                            peervideo\.ru|
                            periscope\.numenaute\.org|
                            pete\.warpnine\.de|
                            petitlutinartube\.fr|
                            phijkchu\.com|
                            phoenixproject\.group|
                            piraten\.space|
                            pirtube\.calut\.fr|
                            pityu\.flaki\.hu|
                            play\.mittdata\.se|
                            player\.ojamajo\.moe|
                            podlibre\.video|
                            portal\.digilab\.nfa\.cz|
                            private\.fedimovie\.com|
                            pt01\.lehrerfortbildung-bw\.de|
                            pt\.diaspodon\.fr|
                            pt\.freedomwolf\.cc|
                            pt\.gordons\.gen\.nz|
                            pt\.ilyamikcoder\.com|
                            pt\.irnok\.net|
                            pt\.mezzo\.moe|
                            pt\.na4\.eu|
                            pt\.netcraft\.ch|
                            pt\.rwx\.ch|
                            pt\.sfunk1x\.com|
                            pt\.thishorsie\.rocks|
                            pt\.vern\.cc|
                            ptb\.lunarviews\.net|
                            ptube\.de|
                            ptube\.ranranhome\.info|
                            puffy\.tube|
                            puppet\.zone|
                            qtube\.qlyoung\.net|
                            quantube\.win|
                            rankett\.net|
                            replay\.jres\.org|
                            review\.peertube\.biz|
                            sdmtube\.fr|
                            secure\.direct-live\.net|
                            secure\.scanovid\.com|
                            seka\.pona\.la|
                            serv3\.wiki-tube\.de|
                            skeptube\.fr|
                            social\.fedimovie\.com|
                            socpeertube\.ru|
                            sovran\.video|
                            special\.videovortex\.tv|
                            spectra\.video|
                            stl1988\.peertube-host\.de|
                            stream\.biovisata\.lt|
                            stream\.conesphere\.cloud|
                            stream\.elven\.pw|
                            stream\.jurnalfm\.md|
                            stream\.k-prod\.fr|
                            stream\.litera\.tools|
                            stream\.nuemedia\.se|
                            stream\.rlp-media\.de|
                            stream\.vrse\.be|
                            studios\.racer159\.com|
                            styxhexenhammer666\.com|
                            syrteplay\.obspm\.fr|
                            t\.0x0\.st|
                            tbh\.co-shaoghal\.net|
                            test-fab\.ynh\.fr|
                            testube\.distrilab\.fr|
                            tgi\.hosted\.spacebear\.ee|
                            theater\.ethernia\.net|
                            thecool\.tube|
                            thevideoverse\.com|
                            tilvids\.com|
                            tinkerbetter\.tube|
                            tinsley\.video|
                            trailers\.ddigest\.com|
                            tube-action-educative\.apps\.education\.fr|
                            tube-arts-lettres-sciences-humaines\.apps\.education\.fr|
                            tube-cycle-2\.apps\.education\.fr|
                            tube-cycle-3\.apps\.education\.fr|
                            tube-education-physique-et-sportive\.apps\.education\.fr|
                            tube-enseignement-professionnel\.apps\.education\.fr|
                            tube-institutionnel\.apps\.education\.fr|
                            tube-langues-vivantes\.apps\.education\.fr|
                            tube-maternelle\.apps\.education\.fr|
                            tube-numerique-educatif\.apps\.education\.fr|
                            tube-sciences-technologies\.apps\.education\.fr|
                            tube-test\.apps\.education\.fr|
                            tube1\.perron-service\.de|
                            tube\.9minuti\.it|
                            tube\.abolivier\.bzh|
                            tube\.alado\.space|
                            tube\.amic37\.fr|
                            tube\.area404\.cloud|
                            tube\.arthack\.nz|
                            tube\.asulia\.fr|
                            tube\.awkward\.company|
                            tube\.azbyka\.ru|
                            tube\.azkware\.net|
                            tube\.bartrip\.me\.uk|
                            tube\.belowtoxic\.media|
                            tube\.bingle\.plus|
                            tube\.bit-friends\.de|
                            tube\.bstly\.de|
                            tube\.chosto\.me|
                            tube\.cms\.garden|
                            tube\.communia\.org|
                            tube\.cyberia\.club|
                            tube\.cybershock\.life|
                            tube\.dembased\.xyz|
                            tube\.dev\.displ\.eu|
                            tube\.digitalesozialearbeit\.de|
                            tube\.distrilab\.fr|
                            tube\.doortofreedom\.org|
                            tube\.dsocialize\.net|
                            tube\.e-jeremy\.com|
                            tube\.ebin\.club|
                            tube\.elemac\.fr|
                            tube\.erzbistum-hamburg\.de|
                            tube\.exozy\.me|
                            tube\.fdn\.fr|
                            tube\.fedi\.quebec|
                            tube\.fediverse\.at|
                            tube\.felinn\.org|
                            tube\.flokinet\.is|
                            tube\.foad\.me\.uk|
                            tube\.freepeople\.fr|
                            tube\.friloux\.me|
                            tube\.froth\.zone|
                            tube\.fulda\.social|
                            tube\.futuretic\.fr|
                            tube\.g1zm0\.de|
                            tube\.g4rf\.net|
                            tube\.gaiac\.io|
                            tube\.geekyboo\.net|
                            tube\.genb\.de|
                            tube\.ghk-academy\.info|
                            tube\.gi-it\.de|
                            tube\.grap\.coop|
                            tube\.graz\.social|
                            tube\.grin\.hu|
                            tube\.hokai\.lol|
                            tube\.int5\.net|
                            tube\.interhacker\.space|
                            tube\.invisible\.ch|
                            tube\.io18\.top|
                            tube\.itsg\.host|
                            tube\.jeena\.net|
                            tube\.kh-berlin\.de|
                            tube\.kockatoo\.org|
                            tube\.kotur\.org|
                            tube\.koweb\.fr|
                            tube\.la-dina\.net|
                            tube\.lab\.nrw|
                            tube\.lacaveatonton\.ovh|
                            tube\.laurent-malys\.fr|
                            tube\.leetdreams\.ch|
                            tube\.linkse\.media|
                            tube\.lokad\.com|
                            tube\.lucie-philou\.com|
                            tube\.media-techport\.de|
                            tube\.morozoff\.pro|
                            tube\.neshweb\.net|
                            tube\.nestor\.coop|
                            tube\.network\.europa\.eu|
                            tube\.nicfab\.eu|
                            tube\.nieuwwestbrabant\.nl|
                            tube\.nogafa\.org|
                            tube\.novg\.net|
                            tube\.nox-rhea\.org|
                            tube\.nuagelibre\.fr|
                            tube\.numerique\.gouv\.fr|
                            tube\.nuxnik\.com|
                            tube\.nx12\.net|
                            tube\.octaplex\.net|
                            tube\.oisux\.org|
                            tube\.okcinfo\.news|
                            tube\.onlinekirche\.net|
                            tube\.opportunis\.me|
                            tube\.oraclefilms\.com|
                            tube\.org\.il|
                            tube\.pacapime\.ovh|
                            tube\.parinux\.org|
                            tube\.pastwind\.top|
                            tube\.picasoft\.net|
                            tube\.pilgerweg-21\.de|
                            tube\.pmj\.rocks|
                            tube\.pol\.social|
                            tube\.ponsonaille\.fr|
                            tube\.portes-imaginaire\.org|
                            tube\.public\.apolut\.net|
                            tube\.pustule\.org|
                            tube\.pyngu\.com|
                            tube\.querdenken-711\.de|
                            tube\.rebellion\.global|
                            tube\.reseau-canope\.fr|
                            tube\.rhythms-of-resistance\.org|
                            tube\.risedsky\.ovh|
                            tube\.rooty\.fr|
                            tube\.rsi\.cnr\.it|
                            tube\.ryne\.moe|
                            tube\.schleuss\.online|
                            tube\.schule\.social|
                            tube\.sekretaerbaer\.net|
                            tube\.shanti\.cafe|
                            tube\.shela\.nu|
                            tube\.skrep\.in|
                            tube\.sleeping\.town|
                            tube\.sp-codes\.de|
                            tube\.spdns\.org|
                            tube\.systerserver\.net|
                            tube\.systest\.eu|
                            tube\.tappret\.fr|
                            tube\.techeasy\.org|
                            tube\.thierrytalbert\.fr|
                            tube\.tinfoil-hat\.net|
                            tube\.toldi\.eu|
                            tube\.tpshd\.de|
                            tube\.trax\.im|
                            tube\.troopers\.agency|
                            tube\.ttk\.is|
                            tube\.tuxfriend\.fr|
                            tube\.tylerdavis\.xyz|
                            tube\.ullihome\.de|
                            tube\.ulne\.be|
                            tube\.undernet\.uy|
                            tube\.vrpnet\.org|
                            tube\.wolfe\.casa|
                            tube\.xd0\.de|
                            tube\.xn--baw-joa\.social|
                            tube\.xy-space\.de|
                            tube\.yapbreak\.fr|
                            tubedu\.org|
                            tubulus\.openlatin\.org|
                            turtleisland\.video|
                            tututu\.tube|
                            tv\.adast\.dk|
                            tv\.adn\.life|
                            tv\.arns\.lt|
                            tv\.atmx\.ca|
                            tv\.based\.quest|
                            tv\.farewellutopia\.com|
                            tv\.filmfreedom\.net|
                            tv\.gravitons\.org|
                            tv\.io\.seg\.br|
                            tv\.lumbung\.space|
                            tv\.pirateradio\.social|
                            tv\.pirati\.cz|
                            tv\.santic-zombie\.ru|
                            tv\.undersco\.re|
                            tv\.zonepl\.net|
                            tvox\.ru|
                            twctube\.twc-zone\.eu|
                            twobeek\.com|
                            urbanists\.video|
                            v\.9tail\.net|
                            v\.basspistol\.org|
                            v\.j4\.lc|
                            v\.kisombrella\.top|
                            v\.koa\.im|
                            v\.kyaru\.xyz|
                            v\.lor\.sh|
                            v\.mkp\.ca|
                            v\.posm\.gay|
                            v\.slaycer\.top|
                            veedeo\.org|
                            vhs\.absturztau\.be|
                            vid\.cthos\.dev|
                            vid\.kinuseka\.us|
                            vid\.mkp\.ca|
                            vid\.nocogabriel\.fr|
                            vid\.norbipeti\.eu|
                            vid\.northbound\.online|
                            vid\.ohboii\.de|
                            vid\.plantplotting\.co\.uk|
                            vid\.pretok\.tv|
                            vid\.prometheus\.systems|
                            vid\.soafen\.love|
                            vid\.twhtv\.club|
                            vid\.wildeboer\.net|
                            video-cave-v2\.de|
                            video-liberty\.com|
                            video\.076\.ne\.jp|
                            video\.1146\.nohost\.me|
                            video\.9wd\.eu|
                            video\.abraum\.de|
                            video\.ados\.accoord\.fr|
                            video\.amiga-ng\.org|
                            video\.anartist\.org|
                            video\.asgardius\.company|
                            video\.audiovisuel-participatif\.org|
                            video\.bards\.online|
                            video\.barkoczy\.social|
                            video\.benetou\.fr|
                            video\.beyondwatts\.social|
                            video\.bgeneric\.net|
                            video\.bilecik\.edu\.tr|
                            video\.blast-info\.fr|
                            video\.bmu\.cloud|
                            video\.catgirl\.biz|
                            video\.causa-arcana\.com|
                            video\.chasmcity\.net|
                            video\.chbmeyer\.de|
                            video\.cigliola\.com|
                            video\.citizen4\.eu|
                            video\.clumsy\.computer|
                            video\.cnnumerique\.fr|
                            video\.cnr\.it|
                            video\.cnt\.social|
                            video\.coales\.co|
                            video\.comune\.trento\.it|
                            video\.coyp\.us|
                            video\.csc49\.fr|
                            video\.davduf\.net|
                            video\.davejansen\.com|
                            video\.dlearning\.nl|
                            video\.dnfi\.no|
                            video\.dresden\.network|
                            video\.drgnz\.club|
                            video\.dudenas\.lt|
                            video\.eientei\.org|
                            video\.ellijaymakerspace\.org|
                            video\.emergeheart\.info|
                            video\.eradicatinglove\.xyz|
                            video\.everythingbagel\.me|
                            video\.extremelycorporate\.ca|
                            video\.fabiomanganiello\.com|
                            video\.fedi\.bzh|
                            video\.fhtagn\.org|
                            video\.firehawk-systems\.com|
                            video\.fox-romka\.ru|
                            video\.fuss\.bz\.it|
                            video\.glassbeadcollective\.org|
                            video\.graine-pdl\.org|
                            video\.gyt\.is|
                            video\.hainry\.fr|
                            video\.hardlimit\.com|
                            video\.hostux\.net|
                            video\.igem\.org|
                            video\.infojournal\.fr|
                            video\.internet-czas-dzialac\.pl|
                            video\.interru\.io|
                            video\.ipng\.ch|
                            video\.ironsysadmin\.com|
                            video\.islameye\.com|
                            video\.jacen\.moe|
                            video\.jadin\.me|
                            video\.jeffmcbride\.net|
                            video\.jigmedatse\.com|
                            video\.kuba-orlik\.name|
                            video\.lacalligramme\.fr|
                            video\.lanceurs-alerte\.fr|
                            video\.laotra\.red|
                            video\.lapineige\.fr|
                            video\.laraffinerie\.re|
                            video\.lavolte\.net|
                            video\.liberta\.vip|
                            video\.libreti\.net|
                            video\.licentia\.net|
                            video\.linc\.systems|
                            video\.linux\.it|
                            video\.linuxtrent\.it|
                            video\.liveitlive\.show|
                            video\.lono\.space|
                            video\.lrose\.de|
                            video\.lunago\.net|
                            video\.lundi\.am|
                            video\.lycee-experimental\.org|
                            video\.maechler\.cloud|
                            video\.marcorennmaus\.de|
                            video\.mass-trespass\.uk|
                            video\.matomocamp\.org|
                            video\.medienzentrum-harburg\.de|
                            video\.mentality\.rip|
                            video\.metaversum\.wtf|
                            video\.midreality\.com|
                            video\.mttv\.it|
                            video\.mugoreve\.fr|
                            video\.mxtthxw\.art|
                            video\.mycrowd\.ca|
                            video\.niboe\.info|
                            video\.nogafam\.es|
                            video\.nstr\.no|
                            video\.occm\.cc|
                            video\.off-investigation\.fr|
                            video\.olos311\.org|
                            video\.ordinobsolete\.fr|
                            video\.osvoj\.ru|
                            video\.ourcommon\.cloud|
                            video\.ozgurkon\.org|
                            video\.pcf\.fr|
                            video\.pcgaldo\.com|
                            video\.phyrone\.de|
                            video\.poul\.org|
                            video\.publicspaces\.net|
                            video\.pullopen\.xyz|
                            video\.r3s\.nrw|
                            video\.rainevixen\.com|
                            video\.resolutions\.it|
                            video\.retroedge\.tech|
                            video\.rhizome\.org|
                            video\.rlp-media\.de|
                            video\.rs-einrich\.de|
                            video\.rubdos\.be|
                            video\.sadmin\.io|
                            video\.sftblw\.moe|
                            video\.shitposter\.club|
                            video\.simplex-software\.ru|
                            video\.slipfox\.xyz|
                            video\.snug\.moe|
                            video\.software-fuer-engagierte\.de|
                            video\.soi\.ch|
                            video\.sonet\.ws|
                            video\.surazal\.net|
                            video\.taskcards\.eu|
                            video\.team-lcbs\.eu|
                            video\.techforgood\.social|
                            video\.telemillevaches\.net|
                            video\.thepolarbear\.co\.uk|
                            video\.thinkof\.name|
                            video\.tii\.space|
                            video\.tkz\.es|
                            video\.trankil\.info|
                            video\.triplea\.fr|
                            video\.tum\.social|
                            video\.turbo\.chat|
                            video\.uriopss-pdl\.fr|
                            video\.ustim\.ru|
                            video\.ut0pia\.org|
                            video\.vaku\.org\.ua|
                            video\.vegafjord\.me|
                            video\.veloma\.org|
                            video\.violoncello\.ch|
                            video\.voidconspiracy\.band|
                            video\.wakkeren\.nl|
                            video\.windfluechter\.org|
                            video\.ziez\.eu|
                            videos-passages\.huma-num\.fr|
                            videos\.aadtp\.be|
                            videos\.ahp-numerique\.fr|
                            videos\.alamaisondulibre\.org|
                            videos\.archigny\.net|
                            videos\.aroaduntraveled\.com|
                            videos\.b4tech\.org|
                            videos\.benjaminbrady\.ie|
                            videos\.bik\.opencloud\.lu|
                            videos\.cloudron\.io|
                            videos\.codingotaku\.com|
                            videos\.coletivos\.org|
                            videos\.collate\.social|
                            videos\.danksquad\.org|
                            videos\.digitaldragons\.eu|
                            videos\.dromeadhere\.fr|
                            videos\.explain-it\.org|
                            videos\.factsonthegroundshow\.com|
                            videos\.foilen\.com|
                            videos\.fsci\.in|
                            videos\.gamercast\.net|
                            videos\.gianmarco\.gg|
                            videos\.globenet\.org|
                            videos\.grafo\.zone|
                            videos\.hauspie\.fr|
                            videos\.hush\.is|
                            videos\.hyphalfusion\.network|
                            videos\.icum\.to|
                            videos\.im\.allmendenetz\.de|
                            videos\.jacksonchen666\.com|
                            videos\.john-livingston\.fr|
                            videos\.knazarov\.com|
                            videos\.kuoushi\.com|
                            videos\.laliguepaysdelaloire\.org|
                            videos\.lemouvementassociatif-pdl\.org|
                            videos\.leslionsfloorball\.fr|
                            videos\.librescrum\.org|
                            videos\.mastodont\.cat|
                            videos\.metus\.ca|
                            videos\.miolo\.org|
                            videos\.offroad\.town|
                            videos\.openmandriva\.org|
                            videos\.parleur\.net|
                            videos\.pcorp\.us|
                            videos\.pop\.eu\.com|
                            videos\.rampin\.org|
                            videos\.rauten\.co\.za|
                            videos\.ritimo\.org|
                            videos\.sarcasmstardust\.com|
                            videos\.scanlines\.xyz|
                            videos\.shmalls\.pw|
                            videos\.stadtfabrikanten\.org|
                            videos\.supertuxkart\.net|
                            videos\.testimonia\.org|
                            videos\.thinkerview\.com|
                            videos\.torrenezzi10\.xyz|
                            videos\.trom\.tf|
                            videos\.utsukta\.org|
                            videos\.viorsan\.com|
                            videos\.wherelinux\.xyz|
                            videos\.wikilibriste\.fr|
                            videos\.yesil\.club|
                            videos\.yeswiki\.net|
                            videotube\.duckdns\.org|
                            vids\.capypara\.de|
                            vids\.roshless\.me|
                            vids\.stary\.pc\.pl|
                            vids\.tekdmn\.me|
                            vidz\.julien\.ovh|
                            views\.southfox\.me|
                            virtual-girls-are\.definitely-for\.me|
                            viste\.pt|
                            vnchich\.com|
                            vnop\.org|
                            vod\.newellijay\.tv|
                            voluntarytube\.com|
                            vtr\.chikichiki\.tube|
                            vulgarisation-informatique\.fr|
                            watch\.easya\.solutions|
                            watch\.goodluckgabe\.life|
                            watch\.ignorance\.eu|
                            watch\.jimmydore\.com|
                            watch\.libertaria\.space|
                            watch\.nuked\.social|
                            watch\.ocaml\.org|
                            watch\.thelema\.social|
                            watch\.tubelab\.video|
                            web-fellow\.de|
                            webtv\.vandoeuvre\.net|
                            wetubevid\.online|
                            wikileaks\.video|
                            wiwi\.video|
                            wow\.such\.disappointment\.fail|
                            www\.jvideos\.net|
                            www\.kotikoff\.net|
                            www\.makertube\.net|
                            www\.mypeer\.tube|
                            www\.nadajemy\.com|
                            www\.neptube\.io|
                            www\.rocaguinarda\.tv|
                            www\.vnshow\.net|
                            xxivproduction\.video|
                            yt\.orokoro\.ru|
                            ytube\.retronerd\.at|
                            zumvideo\.de|

                            # from youtube-dl
                            peertube\.rainbowswingers\.net|
                            tube\.stanisic\.nl|
                            peer\.suiri\.us|
                            medias\.libox\.fr|
                            videomensoif\.ynh\.fr|
                            peertube\.travelpandas\.eu|
                            peertube\.rachetjay\.fr|
                            peertube\.montecsys\.fr|
                            tube\.eskuero\.me|
                            peer\.tube|
                            peertube\.umeahackerspace\.se|
                            tube\.nx-pod\.de|
                            video\.monsieurbidouille\.fr|
                            tube\.openalgeria\.org|
                            vid\.lelux\.fi|
                            video\.anormallostpod\.ovh|
                            tube\.crapaud-fou\.org|
                            peertube\.stemy\.me|
                            lostpod\.space|
                            exode\.me|
                            peertube\.snargol\.com|
                            vis\.ion\.ovh|
                            videosdulib\.re|
                            v\.mbius\.io|
                            videos\.judrey\.eu|
                            peertube\.osureplayviewer\.xyz|
                            peertube\.mathieufamily\.ovh|
                            www\.videos-libr\.es|
                            fightforinfo\.com|
                            peertube\.fediverse\.ru|
                            peertube\.oiseauroch\.fr|
                            video\.nesven\.eu|
                            v\.bearvideo\.win|
                            video\.qoto\.org|
                            justporn\.cc|
                            video\.vny\.fr|
                            peervideo\.club|
                            tube\.taker\.fr|
                            peertube\.chantierlibre\.org|
                            tube\.ipfixe\.info|
                            tube\.kicou\.info|
                            tube\.dodsorf\.as|
                            videobit\.cc|
                            video\.yukari\.moe|
                            videos\.elbinario\.net|
                            hkvideo\.live|
                            pt\.tux\.tf|
                            www\.hkvideo\.live|
                            FIGHTFORINFO\.com|
                            pt\.765racing\.com|
                            peertube\.gnumeria\.eu\.org|
                            nordenmedia\.com|
                            peertube\.co\.uk|
                            tube\.darfweb\.eu|
                            tube\.kalah-france\.org|
                            0ch\.in|
                            vod\.mochi\.academy|
                            film\.node9\.org|
                            peertube\.hatthieves\.es|
                            video\.fitchfamily\.org|
                            peertube\.ddns\.net|
                            video\.ifuncle\.kr|
                            video\.fdlibre\.eu|
                            tube\.22decembre\.eu|
                            peertube\.harmoniescreatives\.com|
                            tube\.fabrigli\.fr|
                            video\.thedwyers\.co|
                            video\.bruitbruit\.com|
                            peertube\.foxfam\.club|
                            peer\.philoxweb\.be|
                            videos\.bugs\.social|
                            peertube\.malbert\.xyz|
                            peertube\.bilange\.ca|
                            libretube\.net|
                            diytelevision\.com|
                            peertube\.fedilab\.app|
                            libre\.video|
                            video\.mstddntfdn\.online|
                            us\.tv|
                            peertube\.sl-network\.fr|
                            peertube\.dynlinux\.io|
                            peertube\.david\.durieux\.family|
                            peertube\.linuxrocks\.online|
                            peerwatch\.xyz|
                            v\.kretschmann\.social|
                            tube\.otter\.sh|
                            yt\.is\.nota\.live|
                            tube\.dragonpsi\.xyz|
                            peertube\.boneheadmedia\.com|
                            videos\.funkwhale\.audio|
                            watch\.44con\.com|
                            peertube\.gcaillaut\.fr|
                            peertube\.icu|
                            pony\.tube|
                            spacepub\.space|
                            tube\.stbr\.io|
                            v\.mom-gay\.faith|
                            tube\.port0\.xyz|
                            peertube\.simounet\.net|
                            play\.jergefelt\.se|
                            peertube\.zeteo\.me|
                            tube\.danq\.me|
                            peertube\.kerenon\.com|
                            tube\.fab-l3\.org|
                            tube\.calculate\.social|
                            peertube\.mckillop\.org|
                            tube\.netzspielplatz\.de|
                            vod\.ksite\.de|
                            peertube\.laas\.fr|
                            tube\.govital\.net|
                            peertube\.stephenson\.cc|
                            bistule\.nohost\.me|
                            peertube\.kajalinifi\.de|
                            video\.ploud\.jp|
                            video\.omniatv\.com|
                            peertube\.ffs2play\.fr|
                            peertube\.leboulaire\.ovh|
                            peertube\.tronic-studio\.com|
                            peertube\.public\.cat|
                            peertube\.metalbanana\.net|
                            video\.1000i100\.fr|
                            peertube\.alter-nativ-voll\.de|
                            tube\.pasa\.tf|
                            tube\.worldofhauru\.xyz|
                            pt\.kamp\.site|
                            peertube\.teleassist\.fr|
                            videos\.mleduc\.xyz|
                            conf\.tube|
                            media\.privacyinternational\.org|
                            pt\.forty-two\.nl|
                            video\.halle-leaks\.de|
                            video\.grosskopfgames\.de|
                            peertube\.schaeferit\.de|
                            peertube\.jackbot\.fr|
                            tube\.extinctionrebellion\.fr|
                            peertube\.f-si\.org|
                            video\.subak\.ovh|
                            videos\.koweb\.fr|
                            peertube\.zergy\.net|
                            peertube\.roflcopter\.fr|
                            peertube\.floss-marketing-school\.com|
                            vloggers\.social|
                            peertube\.iriseden\.eu|
                            videos\.ubuntu-paris\.org|
                            peertube\.mastodon\.host|
                            armstube\.com|
                            peertube\.s2s\.video|
                            peertube\.lol|
                            tube\.open-plug\.eu|
                            open\.tube|
                            peertube\.ch|
                            peertube\.normandie-libre\.fr|
                            peertube\.slat\.org|
                            video\.lacaveatonton\.ovh|
                            peertube\.uno|
                            peertube\.servebeer\.com|
                            peertube\.fedi\.quebec|
                            tube\.h3z\.jp|
                            tube\.plus200\.com|
                            peertube\.eric\.ovh|
                            tube\.metadocs\.cc|
                            tube\.unmondemeilleur\.eu|
                            gouttedeau\.space|
                            video\.antirep\.net|
                            nrop\.cant\.at|
                            tube\.ksl-bmx\.de|
                            tube\.plaf\.fr|
                            tube\.tchncs\.de|
                            video\.devinberg\.com|
                            hitchtube\.fr|
                            peertube\.kosebamse\.com|
                            yunopeertube\.myddns\.me|
                            peertube\.varney\.fr|
                            peertube\.anon-kenkai\.com|
                            tube\.maiti\.info|
                            tubee\.fr|
                            videos\.dinofly\.com|
                            toobnix\.org|
                            videotape\.me|
                            voca\.tube|
                            video\.heromuster\.com|
                            video\.lemediatv\.fr|
                            video\.up\.edu\.ph|
                            balafon\.video|
                            video\.ivel\.fr|
                            thickrips\.cloud|
                            pt\.laurentkruger\.fr|
                            video\.monarch-pass\.net|
                            peertube\.artica\.center|
                            video\.alternanet\.fr|
                            indymotion\.fr|
                            fanvid\.stopthatimp\.net|
                            video\.farci\.org|
                            v\.lesterpig\.com|
                            video\.okaris\.de|
                            tube\.pawelko\.net|
                            peertube\.mablr\.org|
                            tube\.fede\.re|
                            pytu\.be|
                            evertron\.tv|
                            devtube\.dev-wiki\.de|
                            raptube\.antipub\.org|
                            video\.selea\.se|
                            peertube\.mygaia\.org|
                            video\.oh14\.de|
                            peertube\.livingutopia\.org|
                            peertube\.the-penguin\.de|
                            tube\.thechangebook\.org|
                            tube\.anjara\.eu|
                            pt\.pube\.tk|
                            video\.samedi\.pm|
                            mplayer\.demouliere\.eu|
                            widemus\.de|
                            peertube\.me|
                            peertube\.zapashcanon\.fr|
                            video\.latavernedejohnjohn\.fr|
                            peertube\.pcservice46\.fr|
                            peertube\.mazzonetto\.eu|
                            video\.irem\.univ-paris-diderot\.fr|
                            video\.livecchi\.cloud|
                            alttube\.fr|
                            video\.coop\.tools|
                            video\.cabane-libre\.org|
                            peertube\.openstreetmap\.fr|
                            videos\.alolise\.org|
                            irrsinn\.video|
                            video\.antopie\.org|
                            scitech\.video|
                            tube2\.nemsia\.org|
                            video\.amic37\.fr|
                            peertube\.freeforge\.eu|
                            video\.arbitrarion\.com|
                            video\.datsemultimedia\.com|
                            stoptrackingus\.tv|
                            peertube\.ricostrongxxx\.com|
                            docker\.videos\.lecygnenoir\.info|
                            peertube\.togart\.de|
                            tube\.postblue\.info|
                            videos\.domainepublic\.net|
                            peertube\.cyber-tribal\.com|
                            video\.gresille\.org|
                            peertube\.dsmouse\.net|
                            cinema\.yunohost\.support|
                            tube\.theocevaer\.fr|
                            repro\.video|
                            tube\.4aem\.com|
                            quaziinc\.com|
                            peertube\.metawurst\.space|
                            videos\.wakapo\.com|
                            video\.ploud\.fr|
                            video\.freeradical\.zone|
                            tube\.valinor\.fr|
                            refuznik\.video|
                            pt\.kircheneuenburg\.de|
                            peertube\.asrun\.eu|
                            peertube\.lagob\.fr|
                            videos\.side-ways\.net|
                            91video\.online|
                            video\.valme\.io|
                            video\.taboulisme\.com|
                            videos-libr\.es|
                            tv\.mooh\.fr|
                            nuage\.acostey\.fr|
                            video\.monsieur-a\.fr|
                            peertube\.librelois\.fr|
                            videos\.pair2jeux\.tube|
                            videos\.pueseso\.club|
                            peer\.mathdacloud\.ovh|
                            media\.assassinate-you\.net|
                            vidcommons\.org|
                            ptube\.rousset\.nom\.fr|
                            tube\.cyano\.at|
                            videos\.squat\.net|
                            video\.iphodase\.fr|
                            peertube\.makotoworkshop\.org|
                            peertube\.serveur\.slv-valbonne\.fr|
                            vault\.mle\.party|
                            hostyour\.tv|
                            videos\.hack2g2\.fr|
                            libre\.tube|
                            pire\.artisanlogiciel\.net|
                            videos\.numerique-en-commun\.fr|
                            video\.netsyms\.com|
                            video\.die-partei\.social|
                            video\.writeas\.org|
                            peertube\.swarm\.solvingmaz\.es|
                            tube\.pericoloso\.ovh|
                            watching\.cypherpunk\.observer|
                            videos\.adhocmusic\.com|
                            tube\.rfc1149\.net|
                            peertube\.librelabucm\.org|
                            videos\.numericoop\.fr|
                            peertube\.koehn\.com|
                            peertube\.anarchmusicall\.net|
                            tube\.kampftoast\.de|
                            vid\.y-y\.li|
                            peertube\.xtenz\.xyz|
                            diode\.zone|
                            tube\.egf\.mn|
                            peertube\.nomagic\.uk|
                            visionon\.tv|
                            videos\.koumoul\.com|
                            video\.rastapuls\.com|
                            video\.mantlepro\.com|
                            video\.deadsuperhero\.com|
                            peertube\.musicstudio\.pro|
                            peertube\.we-keys\.fr|
                            artitube\.artifaille\.fr|
                            peertube\.ethernia\.net|
                            tube\.midov\.pl|
                            peertube\.fr|
                            watch\.snoot\.tube|
                            peertube\.donnadieu\.fr|
                            argos\.aquilenet\.fr|
                            tube\.nemsia\.org|
                            tube\.bruniau\.net|
                            videos\.darckoune\.moe|
                            tube\.traydent\.info|
                            dev\.videos\.lecygnenoir\.info|
                            peertube\.nayya\.org|
                            peertube\.live|
                            peertube\.mofgao\.space|
                            video\.lequerrec\.eu|
                            peertube\.amicale\.net|
                            aperi\.tube|
                            tube\.ac-lyon\.fr|
                            video\.lw1\.at|
                            www\.yiny\.org|
                            videos\.pofilo\.fr|
                            tube\.lou\.lt|
                            choob\.h\.etbus\.ch|
                            tube\.hoga\.fr|
                            peertube\.heberge\.fr|
                            video\.obermui\.de|
                            videos\.cloudfrancois\.fr|
                            betamax\.video|
                            video\.typica\.us|
                            tube\.piweb\.be|
                            video\.blender\.org|
                            peertube\.cat|
                            tube\.kdy\.ch|
                            pe\.ertu\.be|
                            peertube\.social|
                            videos\.lescommuns\.org|
                            tv\.datamol\.org|
                            videonaute\.fr|
                            dialup\.express|
                            peertube\.nogafa\.org|
                            megatube\.lilomoino\.fr|
                            peertube\.tamanoir\.foucry\.net|
                            peertube\.devosi\.org|
                            peertube\.1312\.media|
                            tube\.bootlicker\.party|
                            skeptikon\.fr|
                            video\.blueline\.mg|
                            tube\.homecomputing\.fr|
                            tube\.ouahpiti\.info|
                            video\.tedomum\.net|
                            video\.g3l\.org|
                            fontube\.fr|
                            peertube\.gaialabs\.ch|
                            tube\.kher\.nl|
                            peertube\.qtg\.fr|
                            video\.migennes\.net|
                            tube\.p2p\.legal|
                            troll\.tv|
                            videos\.iut-orsay\.fr|
                            peertube\.solidev\.net|
                            videos\.cemea\.org|
                            video\.passageenseine\.fr|
                            videos\.festivalparminous\.org|
                            peertube\.touhoppai\.moe|
                            sikke\.fi|
                            peer\.hostux\.social|
                            share\.tube|
                            peertube\.walkingmountains\.fr|
                            videos\.benpro\.fr|
                            peertube\.parleur\.net|
                            peertube\.heraut\.eu|
                            tube\.aquilenet\.fr|
                            peertube\.gegeweb\.eu|
                            framatube\.org|
                            thinkerview\.video|
                            tube\.conferences-gesticulees\.net|
                            peertube\.datagueule\.tv|
                            video\.lqdn\.fr|
                            tube\.mochi\.academy|
                            media\.zat\.im|
                            video\.colibris-outilslibres\.org|
                            tube\.svnet\.fr|
                            peertube\.video|
                            peertube2\.cpy\.re|
                            peertube3\.cpy\.re|
                            videos\.tcit\.fr|
                            peertube\.cpy\.re|
                            canard\.tube
                        ))/(?P<type>(?:a|c|w/p))/
                    (?P<id>[^/]+)
                    rl   Nr   r   r   r   r  r  #  s&        )G!G hrJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	PelotonIEyt_dlp.extractor.pelotonpelotonzBhttps?://members\.onepeloton\.com/classes/player/(?P<id>[a-f0-9]+)rk   Nr   r   r   r   r  r  #  s'        (GGWJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )PelotonLiveIEr  zpeloton:livez?https?://members\.onepeloton\.com/player/live/(?P<id>[a-f0-9]+)zPeloton Liverk   Nr   r   r   r   r  r  #  s'        (GGTJGLLLr   r  c                       e Zd ZdZdZdZdZdS )PerformGroupIEzyt_dlp.extractor.performgroupPerformGroupzvhttps?://player\.performgroup\.com/eplayer(?:/eplayer\.html|\.js)#/?(?P<id>[0-9a-f]{26})\.(?P<auth_token>[0-9a-z]{26})rk   Nr   r   r   r   r  r  $  s%        -GG OJLLLr   r  c                       e Zd ZdZdZdS )PeriscopeBaseIEyt_dlp.extractor.periscopePeriscopeBaseNr   r   r   r   r  r  
$  r&  r   r  c                   "    e Zd ZdZdZdZdZdZdS )PeriscopeIEr  	periscopez?https?://(?:www\.)?(?:periscope|pscp)\.tv/[^/]+/(?P<id>[^/?#]+)	Periscoperk   Nr   r   r   r   r  r  $  s'        *GGTJGLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )PeriscopeUserIEr  zperiscope:userz:https?://(?:www\.)?(?:periscope|pscp)\.tv/(?P<id>[^/]+)/?$zPeriscope user videosrl   Nr   r   r   r   r"  r"  $  s'        *GGOJ%GLLLr   r"  c                   "    e Zd ZdZdZdZdZdZdS )PhilharmonieDeParisIEz$yt_dlp.extractor.philharmoniedeparisPhilharmonieDeParisa  (?x)
                    https?://
                        (?:
                            live\.philharmoniedeparis\.fr/(?:[Cc]oncert/|embed(?:app)?/|misc/Playlist\.ashx\?id=)|
                            pad\.philharmoniedeparis\.fr/(?:doc/CIMU/|player\.aspx\?id=)|
                            philharmoniedeparis\.fr/fr/live/concert/|
                            otoplayer\.philharmoniedeparis\.fr/fr/embed/
                        )
                        (?P<id>\d+)
                    zPhilharmonie de Parisr   Nr   r   r   r   r$  r$  $  s*        4G#G VJ%GLLLr   r$  c                       e Zd ZdZdZdZdZdS )	PhoenixIEzyt_dlp.extractor.phoenixz
phoenix.dezHhttps?://(?:www\.)?phoenix\.de/(?:[^/?#]+/)*[^/?#&]*-a-(?P<id>\d+)\.htmlrk   Nr   r   r   r   r'  r'  '$  s"        (GG_JLLLr   r'  c                       e Zd ZdZdZdZdZdS )PhotobucketIEzyt_dlp.extractor.photobucketPhotobucketz`https?://(?:[a-z0-9]+\.)?photobucket\.com/.*(([\?\&]current=)|_)(?P<id>.*)\.(?P<ext>(flv)|(mp4))rk   Nr   r   r   r   r)  r)  .$  s"        ,GGxJLLLr   r)  c                       e Zd ZdZdZdZdZdS )	PiaLiveIEzyt_dlp.extractor.pialivePiaLivez3https?://player\.pia-live\.jp/stream/(?P<id>[\w-]+)rk   Nr   r   r   r   r,  r,  5$  r,  r   r,  c                   "    e Zd ZdZdZdZdZdZdS )PiaproIEzyt_dlp.extractor.piaproPiaproz2https?://piapro\.jp/(?:t|content)/(?P<id>[\w-]+)/?piaprork   Nr   r   r   r   r/  r/  <$  s'        'GGGJNLLLr   r/  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )	PicartoIEyt_dlp.extractor.picartopicartoz9https?://(?:www.)?picarto\.tv/(?P<id>[^/#?]+)/?(?:$|[?#])rk   c                 ~    t                               |          rdn t                                          |          S r   )PicartoVodIEr4   r   r   s     r   r4   zPicartoIE.suitableJ$  s2    $--c22Muu8H8H8M8MMr   r   r   s   @r   r3  r3  D$  s_        (GGMJLN N N N [N N N N Nr   r3  c                   "    e Zd ZdZdZdZdZdZdS )r7  r4  zpicarto:vodzWhttps?://(?:www\.)?picarto\.tv/(?:videopopout|\w+(?:/profile)?/videos)/(?P<id>[^/?#&]+)r   rk   Nr  r   r   r   r7  r7  O$  s'        (GGmJILLLr   r7  c                       e Zd ZdZdZdZdZdS )PikselIEzyt_dlp.extractor.pikselPiksela  (?x)https?://
        (?:
            (?:
                player\.
                    (?:
                        olympusattelecom|
                        vibebyvista
                    )|
                (?:api|player)\.multicastmedia|
                (?:api-ovp|player)\.piksel
            )\.(?:com|tech)|
            (?:
                mz-edge\.stream\.co|
                movie-s\.nhk\.or
            )\.jp|
            vidego\.baltimorecity\.gov
        )/v/(?:refid/(?P<refid>[^/]+)/prefid/)?(?P<id>[\w-]+)rk   Nr   r   r   r   r:  r:  W$  s%        'GG uJLLLr   r:  c                       e Zd ZdZdZdZdZdS )
PinkbikeIEzyt_dlp.extractor.pinkbikePinkbikezdhttps?://(?:(?:www\.)?pinkbike\.com/video/|es\.pinkbike\.org/i/kvid/kvid-y5\.swf\?id=)(?P<id>[0-9]+)rk   Nr   r   r   r   r=  r=  ^$  s"        )GG}JLLLr   r=  c                       e Zd ZdZdZdS )PinterestBaseIEyt_dlp.extractor.pinterestPinterestBaseNr   r   r   r   r@  r@  e$  r&  r   r@  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )PinterestCollectionIErA  PinterestCollectiona?  (?x)
        https?://(?:[^/]+\.)?pinterest\.(?:
            com|fr|de|ch|jp|cl|ca|it|co\.uk|nz|ru|com\.au|at|pt|co\.kr|es|com\.mx|
            dk|ph|th|com\.uy|co|nl|info|kr|ie|vn|com\.vn|ec|mx|in|pe|co\.at|hu|
            co\.in|co\.nz|id|com\.ec|com\.py|tw|be|uk|com\.bo|com\.pe)/(?P<username>[^/]+)/(?P<id>[^/?#&]+)rl   c                 ~    t                               |          rdn t                                          |          S r   )PinterestIEr4   r   r   s     r   r4   zPinterestCollectionIE.suitablep$  rU  r   r   r   s   @r   rD  rD  j$  sb        *G#G fJLM M M M [M M M M Mr   rD  c                       e Zd ZdZdZdZdZdS )rG  rA  	Pinteresta7  (?x)
        https?://(?:[^/]+\.)?pinterest\.(?:
            com|fr|de|ch|jp|cl|ca|it|co\.uk|nz|ru|com\.au|at|pt|co\.kr|es|com\.mx|
            dk|ph|th|com\.uy|co|nl|info|kr|ie|vn|com\.vn|ec|mx|in|pe|co\.at|hu|
            co\.in|co\.nz|id|com\.ec|com\.py|tw|be|uk|com\.bo|com\.pe)/pin/(?:[\w-]+--)?(?P<id>\d+)rk   Nr   r   r   r   rG  rG  u$  s%        *GG `JLLLr   rG  c                       e Zd ZdZdZdZdZdS )PiramideTVChannelIEyt_dlp.extractor.piramidetvPiramideTVChannelz,https?://piramide\.tv/channel/(?P<id>[\w-]+)rl   Nr   r   r   r   rK  rK  |$  s"        +G!GAJLLLr   rK  c                       e Zd ZdZdZdZdZdS )PiramideTVIErL  
PiramideTVz*https?://piramide\.tv/video/(?P<id>[\w-]+)rk   Nr   r   r   r   rO  rO  $  s"        +GG?JLLLr   rO  c                   "    e Zd ZdZdZdZdZdZdS )	PlVideoIEzyt_dlp.extractor.plvideoPlVideozMhttps?://(?:www\.)?plvideo\.ru/(?:watch\?(?:[^#]+&)?v=|shorts/)(?P<id>[\w-]+)u   Платформаrk   Nr   r   r   r   rR  rR  $  s'        (GGdJ"GLLLr   rR  c                       e Zd ZdZdZdZdZdS )PlanetMarathiIEzyt_dlp.extractor.planetmarathiPlanetMarathiz>https?://(?:www\.)?planetmarathi\.com/titles/(?P<id>[^/#&?$]+)rl   Nr   r   r   r   rU  rU  $  s"        .GGSJLLLr   rU  c                       e Zd ZdZdZdZdS )PlatziBaseIEyt_dlp.extractor.platzi
PlatziBaseplatziNrz   r   r   r   rX  rX  $  r  r   rX  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )PlatziCourseIErY  PlatziCoursea  (?x)
                    https?://
                        (?:
                            platzi\.com/clases|           # es version
                            courses\.platzi\.com/classes  # en version
                        )/(?P<id>[^/?\#&]+)
                    r[  rl   c                 ~    t                               |          rdn t                                          |          S r   )PlatziIEr4   r   r   s     r   r4   zPlatziCourseIE.suitable$  r  r   r  r   s   @r   r]  r]  $  sg        'GG kJNLJ J J J [J J J J Jr   r]  c                   "    e Zd ZdZdZdZdZdZdS )r`  rY  Platzia  (?x)
                    https?://
                        (?:
                            platzi\.com/clases|           # es version
                            courses\.platzi\.com/classes  # en version
                        )/[^/]+/(?P<id>\d+)-[^/?\#&]+
                    r[  rk   Nr   r   r   r   r`  r`  $  s*        'GG vJNLLLr   r`  c                   "    e Zd ZdZdZdZdZdZdS )PlayPlusTVIEzyt_dlp.extractor.playplustv
PlayPlusTVzWhttps?://(?:www\.)?playplus\.(?:com|tv)/VOD/(?P<project_id>[0-9]+)/(?P<id>[0-9a-f]{32})
playplustvrk   Nr   r   r   r   rd  rd  $  s'        +GGlJ!NLLLr   rd  c                   "    e Zd ZdZdZdZdZdZdS )PlaySuisseIEzyt_dlp.extractor.playsuisse
PlaySuissezYhttps?://(?:www\.)?playsuisse\.ch/(?:watch|detail)/(?:[^#]*[?&]episodeId=)?(?P<id>[0-9]+)
playsuisser   Nr   r   r   r   rh  rh  $  s'        +GGnJ!NLLLr   rh  c                   "    e Zd ZdZdZdZdZdZdS )
PlayVidsIEr  PlayVidszNhttps?://(?:www\.)?(?P<domain>playvids\.com)/(?:embed/|\w\w?/)?(?P<id>[^/?#]*)r   rk   Nr  r   r   r   rl  rl  $  s'        )GGeJILLLr   rl  c                       e Zd ZdZdZdZdZdS )
PlayerFmIEzyt_dlp.extractor.playerfmPlayerFmzH(?P<url>https?://(?:www\.)?player\.fm/(?:series/)?[\w-]+/(?P<id>[\w-]+))rk   Nr   r   r   r   ro  ro  $  s"        )GG_JLLLr   ro  c                   "    e Zd ZdZdZdZdZdZdS )
PlaytvakIEzyt_dlp.extractor.playtvakPlaytvakzWhttps?://(?:.+?\.)?(?:playtvak|idnes|lidovky|metro)\.cz/.*\?(?:c|idvideo)=(?P<id>[^&]+)z$Playtvak.cz, iDNES.cz and Lidovky.czrk   Nr   r   r   r   rr  rr  $  s'        )GGmJ4GLLLr   rr  c                       e Zd ZdZdZdZdZdS )
PlaywireIEzyt_dlp.extractor.playwirePlaywirezkhttps?://(?:config|cdn)\.playwire\.com(?:/v2)?/(?P<publisher_id>\d+)/(?:videos/v2|embed|config)/(?P<id>\d+)rk   Nr   r   r   r   ru  ru  $  s%        )GG CJLLLr   ru  c                       e Zd ZdZdZdS )PluralsightBaseIEyt_dlp.extractor.pluralsightPluralsightBaseNr   r   r   r   rx  rx  $  r  r   rx  c                       e Zd ZdZdZdZdZdS )PluralsightCourseIEry  zpluralsight:coursezNhttps?://(?:(?:www|app)\.)?pluralsight\.com/(?:library/)?courses/(?P<id>[^/]+)rl   Nr   r   r   r   r|  r|  $  s"        ,G"GcJLLLr   r|  c                   "    e Zd ZdZdZdZdZdZdS )PluralsightIEry  pluralsightzBhttps?://(?:(?:www|app)\.)?pluralsight\.com/(?:training/)?player\?rk   Nr   r   r   r   r~  r~  $  s'        ,GGXJ"NLLLr   r~  c                   "    e Zd ZdZdZdZdZdZdS )	PlutoTVIEzyt_dlp.extractor.plutotvPlutoTVa  (?x)
        https?://(?:www\.)?pluto\.tv(?:/[^/]+)?/on-demand
        /(?P<video_type>movies|series)
        /(?P<series_or_movie_slug>[^/]+)
        (?:
            (?:/seasons?/(?P<season_no>\d+))?
            (?:/episode/(?P<episode_slug>[^/]+))?
        )?
        /?(?:$|[#?])Fr   Nr  r   r   r   r  r  $  s*        (GG yJHLLLr   r  c                       e Zd ZdZdZdZdS )PlyrEmbedIEzyt_dlp.extractor.plyr	PlyrEmbedFNr  r   r   r   r  r  $  s        %GGJJJr   r  c                       e Zd ZdZdZdZdZdS )PodbayFMChannelIEyt_dlp.extractor.podbayfmPodbayFMChannelz1https?://podbay\.fm/p/(?P<id>[^/?#]+)/?(?:$|[?#])rl   Nr   r   r   r   r  r  %  s"        )GGEJLLLr   r  c                       e Zd ZdZdZdZdZdS )
PodbayFMIEr  PodbayFMz+https?://podbay\.fm/p/[^/?#]+/e/(?P<id>\d+)rk   Nr   r   r   r   r  r  
%  s"        )GG@JLLLr   r  c                       e Zd ZdZdZdZdZdS )PodchaserIEzyt_dlp.extractor.podchaser	Podchaserzfhttps?://(?:www\.)?podchaser\.com/podcasts/[\w-]+-(?P<podcast_id>\d+)(?:/episodes/[\w-]+-(?P<id>\d+))?r   Nr   r   r   r   r  r  %  s"        *GGJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )PodomaticIEzyt_dlp.extractor.podomatic	podomatica@  (?x)
                    (?P<proto>https?)://
                        (?:
                            (?P<channel>[^.]+)\.podomatic\.com/entry|
                            (?:www\.)?podomatic\.com/podcasts/(?P<channel_2>[^/]+)/episodes
                        )/
                        (?P<id>[^/?#&]+)
                Frk   Nr  r   r   r   r  r  %  s*        *GG _JHLLLr   r  c                       e Zd ZdZdZdZdS )PokerGoBaseIEyt_dlp.extractor.pokergoPokerGoBasepokergoNrz   r   r   r   r  r   %  r6  r   r  c                   "    e Zd ZdZdZdZdZdZdS )PokerGoCollectionIEr  PokerGoCollectionz=https?://(?:www\.)?pokergo\.com/collections/(?P<id>[^&$#/?]+)r  rl   Nr   r   r   r   r  r  &%  s'        (G!GRJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	PokerGoIEr  PokerGoz8https?://(?:www\.)?pokergo\.com/videos/(?P<id>[^&$#/?]+)r  rk   Nr   r   r   r   r  r  .%  s'        (GGMJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
PolsatGoIEzyt_dlp.extractor.polsatgoPolsatGozJhttps?://(?:www\.)?polsat(?:box)?go\.pl/.+/(?P<id>[0-9a-fA-F]+)(?:[/#?]|$)r  rk   Nr  r   r   r   r  r  6%  s'        )GG_JILLLr   r  c                       e Zd ZdZdZdZdZdS )PolskieRadioAuditionIEyt_dlp.extractor.polskieradiozpolskieradio:auditionz<https?://(?:[^/]+\.)?polskieradio\.pl/audycj[ae]/(?P<id>\d+)rl   Nr   r   r   r   r  r  >%  s"        -G%GRJLLLr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )PolskieRadioCategoryIEr  zpolskieradio:categoryzLhttps?://(?:www\.)?polskieradio\.pl/(?:\d+(?:,[^/]+)?/|[^/]+/Tag)(?P<id>\d+)rl   c                 ~    t                               |          rdn t                                          |          S r   )PolskieRadioLegacyIEr4   r   r   s     r   r4   zPolskieRadioCategoryIE.suitableK%  rI  r   r   r   s   @r   r  r  E%  s_        -G%GcJLV V V V [V V V V Vr   r  c                       e Zd ZdZdZdS )PolskieRadioBaseIEr  PolskieRadioBaseNr   r   r   r   r  r  P%  r  r   r  c                       e Zd ZdZdZdZdZdS )PolskieRadioIEr  PolskieRadiozShttps?://(?:[^/]+\.)?(?:polskieradio(?:24)?|radiokierowcow)\.pl/artykul/(?P<id>\d+)rl   Nr   r   r   r   r  r  U%  s"        -GGiJLLLr   r  c                       e Zd ZdZdZdZdZdS )r  r  zpolskieradio:legacyzIhttps?://(?:www\.)?polskieradio(?:24)?\.pl/\d+/\d+/[Aa]rtykul/(?P<id>\d+)r   Nr   r   r   r   r  r  \%  s"        -G#GaJLLLr   r  c                       e Zd ZdZdZdZdZdS )PolskieRadioPlayerIEr  zpolskieradio:playerz6https?://player\.polskieradio\.pl/anteny/(?P<id>[^/]+)rk   Nr   r   r   r   r  r  c%  s"        -G#GKJLLLr   r  c                       e Zd ZdZdZdS )PolskieRadioPodcastBaseIEr  PolskieRadioPodcastBaseNr   r   r   r   r  r  j%  s        -G'GGGr   r  c                       e Zd ZdZdZdZdZdS )PolskieRadioPodcastIEr  zpolskieradio:podcastzXhttps?://podcasty\.polskieradio\.pl/track/(?P<id>[a-f\d]{8}(?:-[a-f\d]{4}){4}[a-f\d]{8})rk   Nr   r   r   r   r  r  o%  s"        -G$GpJLLLr   r  c                       e Zd ZdZdZdZdZdS )PolskieRadioPodcastListIEr  zpolskieradio:podcast:listz7https?://podcasty\.polskieradio\.pl/podcast/(?P<id>\d+)rl   Nr   r   r   r   r  r  v%  s"        -G)GMJLLLr   r  c                       e Zd ZdZdZdZdZdS )PopcornTVIEzyt_dlp.extractor.popcorntv	PopcornTVzFhttps?://[^/]+\.popcorntv\.it/guarda/(?P<display_id>[^/]+)/(?P<id>\d+)rk   Nr   r   r   r   r  r  }%  s"        *GG\JLLLr   r  c                       e Zd ZdZdZdZdZdS )PopcorntimesIEzyt_dlp.extractor.popcorntimesPopcorntimeszHhttps?://popcorntimes\.tv/[^/]+/m/(?P<id>[^/]+)/(?P<display_id>[^/?#&]+)rk   Nr   r   r   r   r  r  %  "        -GG\JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
PornFlipIEzyt_dlp.extractor.pornflipPornFlipz@https?://(?:www\.)?pornflip\.com/(?:(embed|sv|v)/)?(?P<id>[^/]+)r   rk   Nr  r   r   r   r  r  %  s'        )GGUJILLLr   r  c                       e Zd ZdZdZdZdS )PornHubBaseIEyt_dlp.extractor.pornhubPornHubBasepornhubNrz   r   r   r   r  r  %  r6  r   r  c                   *    e Zd ZdZdZdZdZdZdZdZ	dS )		PornHubIEr  PornHuba  (?x)
                    https?://
                        (?:
                            (?:[^/]+\.)?
                            (?:(?P<host>pornhub(?:premium)?\.(?:com|net|org))|pornhubvybmsymdol4iibwgwtkpwmeyd6luq2gxajgjzfjvotyt5zhyd\.onion)
                            /(?:(?:view_video\.php|video/show)\?viewkey=|embed/)|
                            (?:www\.)?thumbzilla\.com/video/
                        )
                        (?P<id>[\da-z]+)
                    zPornHub and Thumbzillar  r   rk   Nr  r   r   r   r  r  %  s4        (GG BJ&GNILLLr   r  c                       e Zd ZdZdZdZdS )PornHubPlaylistBaseIEr  PornHubPlaylistBaser  Nrz   r   r   r   r  r  %  s        (G#GNNNr   r  c                       e Zd ZdZdZdZdS )PornHubPagedPlaylistBaseIEr  PornHubPagedPlaylistBaser  Nrz   r   r   r   r  r  %  s        (G(GNNNr   r  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )PornHubPagedVideoListIEr  PornHubPagedVideoListzhttps?://(?:[^/]+\.)?(?:(?P<host>pornhub(?:premium)?\.(?:com|net|org))|pornhubvybmsymdol4iibwgwtkpwmeyd6luq2gxajgjzfjvotyt5zhyd\.onion)/(?!playlist/)(?P<id>(?:[^/]+/)*[^/?#&]+)r  rl   c                     t                               |          s4t                              |          st                              |          rdn t	                                          |          S r   )r  r4   PornHubUserIEPornHubUserVideosUploadIEr   r   s     r   r4   z PornHubPagedVideoListIE.suitable%  sf     %%c**+.;.D.DS.I.I+MfMoMopsMtMt+WW%%c**	,r   r  r   s   @r   r  r  %  s^        (G%G GJNL, , , , [, , , , ,r   r  c                   "    e Zd ZdZdZdZdZdZdS )PornHubPlaylistIEr  PornHubPlaylistz(?P<url>https?://(?:[^/]+\.)?(?:(?P<host>pornhub(?:premium)?\.(?:com|net|org))|pornhubvybmsymdol4iibwgwtkpwmeyd6luq2gxajgjzfjvotyt5zhyd\.onion)/playlist/(?P<id>[^/?#&]+))r  rl   Nr   r   r   r   r  r  %  s*        (GG AJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )r  r  PornHubUserz(?P<url>https?://(?:[^/]+\.)?(?:(?P<host>pornhub(?:premium)?\.(?:com|net|org))|pornhubvybmsymdol4iibwgwtkpwmeyd6luq2gxajgjzfjvotyt5zhyd\.onion)/(?:(?:user|channel)s|model|pornstar)/(?P<id>[^/?#&]+))(?:[?#&]|/(?!videos)|$)r  rl   Nr   r   r   r   r  r  %  s*        (GG tJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )r  r  PornHubUserVideosUploadz(?P<url>https?://(?:[^/]+\.)?(?:(?P<host>pornhub(?:premium)?\.(?:com|net|org))|pornhubvybmsymdol4iibwgwtkpwmeyd6luq2gxajgjzfjvotyt5zhyd\.onion)/(?:(?:user|channel)s|model|pornstar)/(?P<id>[^/]+)/videos/upload)r  rl   Nr   r   r   r   r  r  %  s*        (G'G hJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	PornTopIEyt_dlp.extractor.txxxPornTopzWhttps?://(?P<host>(?:www\.)?porntop\.com)/video/(?P<id>\d+)(?:/(?P<display_id>[^/?]+))?r   rk   Nr  r   r   r   r  r  %  s'        %GGmJILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
PornTubeIEri  PornTubez`https?://(?:(?P<kind>www|m)\.)?porntube\.com/(?:videos/(?P<display_id>[^/]+)_|embed/)(?P<id>\d+)r   rk   Nr  r   r   r   r  r  %  s'        )GGvJILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	PornboxIEzyt_dlp.extractor.pornboxPornboxzEhttps?://(?:www\.)?pornbox\.com/application/watch-page/(?P<id>[0-9]+)r   rk   Nr  r   r   r   r  r  %  s'        (GGZJILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )PornerBrosIEri  
PornerBroszbhttps?://(?:(?P<kind>www|m)\.)?pornerbros\.com/(?:videos/(?P<display_id>[^/]+)_|embed/)(?P<id>\d+)r   rk   Nr  r   r   r   r  r  %  s'        )GGxJILLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )PornoVoisinesIEzyt_dlp.extractor.pornovoisinesPornoVoisineszThttps?://(?:www\.)?pornovoisines\.com/videos/show/(?P<id>\d+)/(?P<display_id>[^/.]+)Fr   rk   Nr  r   r   r   r  r  %  s,        .GGjJHILLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )	PornoXOIEzyt_dlp.extractor.pornoxoPornoXOzNhttps?://(?:www\.)?pornoxo\.com/videos/(?P<id>\d+)/(?P<display_id>[^/]+)\.htmlFr   rk   Nr  r   r   r   r  r  %  s,        (GGeJHILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )PornotubeIEzyt_dlp.extractor.pornotube	PornotubezBhttps?://(?:\w+\.)?pornotube\.com/(?:[^?#]*?)/video/(?P<id>[0-9]+)r   rk   Nr  r   r   r   r  r  &  s'        *GGXJILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
Pr0grammIEzyt_dlp.extractor.pr0grammPr0grammz>https?://pr0gramm\.com\/(?:[^/?#]+/)+(?P<id>[\d]+)(?:[/?#:]|$)r   rk   Nr  r   r   r   r  r  &  s'        )GGTJILLLr   r  c                       e Zd ZdZdZdZdZdS )PrankCastIEyt_dlp.extractor.prankcast	PrankCastzVhttps?://(?:www\.)?prankcast\.com/[^/?#]+/showreel/(?P<id>\d+)-(?P<display_id>[^/?#]+)rk   Nr   r   r   r   r  r  &  r  r   r  c                       e Zd ZdZdZdZdZdS )PrankCastPostIEr  PrankCastPostzShttps?://(?:www\.)?prankcast\.com/[^/?#]+/posts/(?P<id>\d+)-(?P<display_id>[^/?#]+)rk   Nr   r   r   r   r  r  &  s"        *GGiJLLLr   r  c                       e Zd ZdZdZdZdZdS )PremiershipRugbyIEz!yt_dlp.extractor.premiershiprugbyPremiershipRugbyz@https?://(?:\w+\.)premiershiprugby\.(?:com)/watch/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  %&  s"        1G GWJLLLr   r  c                       e Zd ZdZdZdZdZdS )	PressTVIEzyt_dlp.extractor.presstvPressTVzhhttps?://(?:www\.)?presstv\.ir/[^/]+/(?P<y>\d+)/(?P<m>\d+)/(?P<d>\d+)/(?P<id>\d+)/(?P<display_id>[^/]+)?rk   Nr   r   r   r   r  r  ,&  s%        (GG BJLLLr   r  c                       e Zd ZdZdZdS )ProSiebenSat1BaseIEyt_dlp.extractor.prosiebensat1ProSiebenSat1BaseNr   r   r   r   r  r  3&          .G!GGGr   r  c                   "    e Zd ZdZdZdZdZdZdS )ProSiebenSat1IEr  prosiebensat1a  (?x)
                    https?://
                        (?:www\.)?
                        (?:
                            (?:beta\.)?
                            (?:
                                prosieben(?:maxx)?|sixx|sat1(?:gold)?|kabeleins(?:doku)?|the-voice-of-germany|advopedia
                            )\.(?:de|at|ch)|
                            ran\.de|fem\.com|advopedia\.de|galileo\.tv/video
                        )
                        /(?P<id>.+)
                    zProSiebenSat.1 Digitalr   Nr   r   r   r   r	  r	  8&  s*        .GG TJ&GLLLr   r	  c                   "    e Zd ZdZdZdZdZdZdS )ProjectVeritasIEzyt_dlp.extractor.projectveritasProjectVeritaszKhttps?://(?:www\.)?projectveritas\.com/(?P<type>news|video)/(?P<id>[^/?#]+)Frk   Nr  r   r   r   r  r  @&  s'        /GG`JHLLLr   r  c                       e Zd ZdZdZdZdZdS )PuhuTVIEyt_dlp.extractor.puhutvpuhutvz4https?://(?:www\.)?puhutv\.com/(?P<id>[^/?#&]+)-izlerk   Nr   r   r   r   r  r  H&  r  r   r  c                       e Zd ZdZdZdZdZdS )PuhuTVSerieIEr  zpuhutv:seriez5https?://(?:www\.)?puhutv\.com/(?P<id>[^/?#&]+)-detayrl   Nr   r   r   r   r  r  O&  s"        'GGJJLLLr   r  c                       e Zd ZdZdZdZdZdS )Puls4IEzyt_dlp.extractor.puls4Puls4z-https?://(?:www\.)?puls4\.com/(?P<id>[^?#&]+)rk   Nr   r   r   r   r  r  V&  s"        &GGBJLLLr   r  c                       e Zd ZdZdZdZdZdS )	PyvideoIEzyt_dlp.extractor.pyvideoPyvideozEhttps?://(?:www\.)?pyvideo\.org/(?P<category>[^/]+)/(?P<id>[^/?#&.]+)r   Nr   r   r   r   r  r  ]&  s"        (GGZJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )QDanceIEzyt_dlp.extractor.qdanceQDancezGhttps?://(?:www\.)?q-dance\.com/network/(?:library|live)/(?P<id>[\w-]+)qdancerk   Nr   r   r   r   r  r  d&  s'        'GG]JNLLLr   r  c                       e Zd ZdZdZdS )QQPlaylistBaseIEyt_dlp.extractor.qqmusicQQPlaylistBaseNr   r   r   r   r  r  l&  rN  r   r  c                   "    e Zd ZdZdZdZdZdZdS )QQMusicAlbumIEr   zqqmusic:albumz;https?://y\.qq\.com/n/ryqq/albumDetail/(?P<id>[0-9A-Za-z]+)u   QQ音乐 - 专辑rl   Nr   r   r   r   r#  r#  q&  s'        (GGPJ!GLLLr   r#  c                       e Zd ZdZdZdS )QQMusicBaseIEr   QQMusicBaseNr   r   r   r   r%  r%  y&  r   r   r%  c                   "    e Zd ZdZdZdZdZdZdS )	QQMusicIEr   qqmusicz:https?://y\.qq\.com/n/ryqq/songDetail/(?P<id>[0-9A-Za-z]+)u   QQ音乐rk   Nr   r   r   r   r(  r(  ~&  s'        (GGOJGLLLr   r(  c                   "    e Zd ZdZdZdZdZdZdS )QQMusicPlaylistIEr   zqqmusic:playlistz2https?://y\.qq\.com/n/ryqq/playlist/(?P<id>[0-9]+)u   QQ音乐 - 歌单rl   Nr   r   r   r   r+  r+  &  s'        (G GGJ!GLLLr   r+  c                   "    e Zd ZdZdZdZdZdZdS )QQMusicSingerIEr   zqqmusic:singerz6https?://y\.qq\.com/n/ryqq/singer/(?P<id>[0-9A-Za-z]+)u   QQ音乐 - 歌手rl   Nr   r   r   r   r-  r-  &  s'        (GGKJ!GLLLr   r-  c                   "    e Zd ZdZdZdZdZdZdS )QQMusicToplistIEr   zqqmusic:toplistz1https?://y\.qq\.com/n/ryqq/toplist/(?P<id>[0-9]+)u   QQ音乐 - 排行榜rl   Nr   r   r   r   r/  r/  &  s'        (GGFJ$GLLLr   r/  c                   "    e Zd ZdZdZdZdZdZdS )QQMusicVideoIEr   z
qqmusic:mvz2https?://y\.qq\.com/n/ryqq/mv/(?P<id>[0-9A-Za-z]+)u   QQ音乐 - MVrk   Nr   r   r   r   r1  r1  &  s'        (GGGJGLLLr   r1  c                       e Zd ZdZdZdZdZdS )
QingTingIEzyt_dlp.extractor.qingtingQingTingzahttps?://(?:www\.|m\.)?(?:qingting\.fm|qtfm\.cn)/v?channels/(?P<channel>\d+)/programs/(?P<id>\d+)rk   Nr   r   r   r   r3  r3  &  s"        )GGzJLLLr   r3  c                       e Zd ZdZdZdZdS )QuantumTVBaseIErt  QuantumTVBase	quantumtvNrz   r   r   r   r6  r6  &  r  r   r6  c                       e Zd ZdZdZdZdZdS )QuantumTVIErt  	QuantumTVz(?x)https?://(?:www\.)?quantum\-tv\.com/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r8  Nr  r   r   r   r:  r:  &  s%        'GG nJ NNNr   r:  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )QuantumTVLiveIErt  QuantumTVLivez(?x)https?://(?:www\.)?quantum\-tv\.com/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r8  c                 ~    t                               |          rdn t                                          |          S r   )r:  r4   r   r   s     r   r4   zQuantumTVLiveIE.suitable&  rU  r   r  r   s   @r   r=  r=  &  sb        'GG cJ NM M M M [M M M M Mr   r=  c                       e Zd ZdZdZdZdZdS )QuantumTVRecordingsIErt  QuantumTVRecordingszw(?x)https?://(?:www\.)?quantum\-tv\.com/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r8  Nr  r   r   r   rA  rA  &  s%        'G#G SJ NNNr   rA  c                       e Zd ZdZdZdZdZdS )QuotedHTMLIEr  zgeneric:quoted-htmlFNrV  r   r   r   rD  rD  &  s"        .G#GJGGGr   rD  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )R7ArticleIEyt_dlp.extractor.r7	R7ArticleNz?https?://(?:[a-zA-Z]+)\.r7\.com/(?:[^/]+/)+[^/?#&]+-(?P<id>\d+)Fc                 ~    t                               |          rdn t                                          |          S r   )R7IEr4   r   r   s     r   r4   zR7ArticleIE.suitable&  r  r   )r   r   r   r$   r`   rp   r<   rD   rq   r4   r   r   s   @r   rF  rF  &  sd        #GGHUJHF F F F [F F F F Fr   rF  c                   &    e Zd ZdZdZdZdZdZdZdS )rJ  rG  R7Na[  (?x)
                        https?://
                        (?:
                            (?:[a-zA-Z]+)\.r7\.com(?:/[^/]+)+/idmedia/|
                            noticias\.r7\.com(?:/[^/]+)+/[^/]+-|
                            player\.r7\.com/video/i/
                        )
                        (?P<id>[\da-f]{24})
                    Frk   rv  r   r   r   rJ  rJ  &  s/        #GGH ~JHLLLr   rJ  c                       e Zd ZdZdZdS )	RCSBaseIEyt_dlp.extractor.rcsRCSBaseNr   r   r   r   rN  rN  &  r  r   rN  c                       e Zd ZdZdZdZdZdS )RCSEmbedsIErO  	RCSEmbedsa?  (?x)
                    https?://(?P<vid>video)\.
                    (?P<cdn>
                    (?:
                        rcs|
                        (?:corriere\w+\.)?corriere|
                        (?:gazzanet\.)?gazzetta
                    )\.it)
                    /video-embed/(?P<id>[^/=&\?]+?)(?:$|\?)rk   Nr   r   r   r   rR  rR  &  s%        $GG bJLLLr   rR  c                       e Zd ZdZdZdZdZdS )RCSIErO  RCSa  (?x)https?://(?P<vid>video|viaggi)\.
                    (?P<cdn>
                    (?:
                        corrieredelmezzogiorno\.
                        |corrieredelveneto\.
                        |corrieredibologna\.
                        |corrierefiorentino\.
                    )?corriere\.it
                    |(?:gazzanet\.)?gazzetta\.it)
                    /(?!video-embed/)[^?#]+?/(?P<id>[^/\?]+)(?=\?|/$|$)rk   Nr   r   r   r   rU  rU  &  s%        $GG VJLLLr   rU  c                       e Zd ZdZdZdZdZdS )RCSVariousIErO  
RCSVariousz(?x)https?://www\.
                    (?P<cdn>
                        leitv\.it|
                        youreporter\.it|
                        amica\.it
                    )/(?:[^/]+/)?(?P<id>[^/]+?)(?:$|\?|/)rk   Nr   r   r   r   rX  rX  &  s%        $GG uJLLLr   rX  c                       e Zd ZdZdZdS )RCTIPlusBaseIEyt_dlp.extractor.rctiRCTIPlusBaseNr   r   r   r   r[  r[  '  s        %GGGGr   r[  c                       e Zd ZdZdZdZdZdS )
RCTIPlusIEr\  RCTIPluszhttps?://www\.rctiplus\.com/(?:programs/\d+?/.*?/)?(?P<type>episode|clip|extra|live-event|missed-event)/(?P<id>\d+)/(?P<display_id>[^/?#&]+)rk   Nr   r   r   r   r_  r_  '  s%        %GG dJLLLr   r_  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )RCTIPlusSeriesIEr\  RCTIPlusSeriesznhttps?://www\.rctiplus\.com/programs/(?P<id>\d+)/(?P<display_id>[^/?#&]+)(?:/(?P<type>episodes|extras|clips))?r   rl   c                 ~    t                               |          rdn t                                          |          S r   r_  r4   r   r   s     r   r4   zRCTIPlusSeriesIE.suitable'  r  r   re
  r   s   @r   rb  rb  '  sg        %GG EJILL L L L [L L L L Lr   rb  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )RCTIPlusTVIEr\  
RCTIPlusTVzYhttps?://www\.rctiplus\.com/((tv/(?P<tvname>\w+))|(?P<eventname>live-event|missed-event))rk   c                 ~    t                               |          rdn t                                          |          S r   re  r   s     r   r4   zRCTIPlusTVIE.suitable '  r  r   r   r   s   @r   rg  rg  '  s_        %GGoJLL L L L [L L L L Lr   rg  c                   &    e Zd ZdZdZdZdZdZdZdS )RDSIEzyt_dlp.extractor.rdsRDSuR   https?://(?:www\.)?rds\.ca/vid(?:[eé]|%C3%A9)os/(?:[^/]+/)*(?P<id>[^/]+)-\d+\.\d+FzRDS.cark   Nr  r   r   r   rk  rk  %'  s,        $GGjJHGLLLr   rk  c                   "    e Zd ZdZdZdZdZdZdS )RENTVArticleIEyt_dlp.extractor.rentvRENTVArticlezDhttps?://(?:www\.)?ren\.tv/novosti/\d{4}-\d{2}-\d{2}/(?P<id>[^/?#]+)Frk   Nr  r   r   r   rn  rn  .'  s'        &GG\JHLLLr   rn  c                   "    e Zd ZdZdZdZdZdZdS )RENTVIEro  RENTVzI(?:rentv:|https?://(?:www\.)?ren\.tv/(?:player|video/epizod)/)(?P<id>\d+)Frk   Nr  r   r   r   rr  rr  6'  s'        &GG_JHLLLr   rr  c                       e Zd ZdZdZdZdZdS )RMCDecouverteIEzyt_dlp.extractor.rmcdecouverteRMCDecouvertezXhttps?://rmcdecouverte\.bfmtv\.com/(?:[^?#]*_(?P<id>\d+)|mediaplayer-direct)/?(?:[#?]|$)rk   Nr   r   r   r   ru  ru  >'  s"        .GGnJLLLr   ru  c                   &    e Zd ZdZdZdZdZdZdZdS )RTBFIEr  RTBFz(?x)
        https?://(?:www\.)?rtbf\.be/
        (?:
            video/[^?]+\?.*\bid=|
            ouftivi/(?:[^/]+/)*[^?]+\?.*\bvideoId=|
            auvio/[^/]+\?.*\b(?P<live>l)?id=
        )(?P<id>\d+)Frtbfrk   Nr  r   r   r   rx  rx  E'  s/        'GG pJHNLLLr   rx  c                       e Zd ZdZdZdZdZdS )RTDocumentryIEyt_dlp.extractor.rtnewsRTDocumentryzHhttps?://rtd\.rt\.com/(?:(?:series|shows)/[^/]+|films)/(?P<id>[^/?$&#]+)rk   Nr   r   r   r   r|  r|  N'  s"        'GG]JLLLr   r|  c                       e Zd ZdZdZdZdZdS )RTDocumentryPlaylistIEr}  RTDocumentryPlaylistz6https?://rtd\.rt\.com/(?:series|shows)/(?P<id>[^/]+)/$rl   Nr   r   r   r   r  r  U'  s"        'G$GKJLLLr   r  c                       e Zd ZdZdZdZdZdS )RTL2IEzyt_dlp.extractor.rtl2rtl2zqhttps?://(?:www\.)?rtl2\.de/sendung/[^/]+/(?:video/(?P<vico_id>\d+)[^/]+/(?P<vivi_id>\d+)-|folge/)(?P<id>[^/?#]+)rk   Nr   r   r   r   r  r  \'  s%        %GG IJLLLr   r  c                       e Zd ZdZdZdS )RTLLuBaseIEyt_dlp.extractor.rtlnl	RTLLuBaseNr   r   r   r   r  r  c'  r   r   r  c                       e Zd ZdZdZdZdZdS )RTLLuArticleIEr  zrtl.lu:articlezThttps?://(?:(www|5minutes|today)\.)rtl\.lu/(?:[\w-]+)/(?:[\w-]+)/a/(?P<id>\d+)\.htmlrk   Nr   r   r   r   r  r  h'  s"        &GGmJLLLr   r  c                       e Zd ZdZdZdZdZdS )RTLLuLiveIEr  	RTLLuLivezFhttps?://www\.rtl\.lu/(?:tele|radio)/(?P<id>live(?:-\d+)?|lauschteren)rk   Nr   r   r   r   r  r  o'  s"        &GG\JLLLr   r  c                       e Zd ZdZdZdZdZdS )RTLLuRadioIEr  
RTLLuRadioz=https?://www\.rtl\.lu/radio/(?:[\w-]+)/s/(?P<id>\d+)(\.html)?rk   Nr   r   r   r   r  r  v'  s"        &GGUJLLLr   r  c                       e Zd ZdZdZdZdZdS )RTLLuTeleVODIEr  zrtl.lu:tele-vodzPhttps?://(?:www\.)?rtl\.lu/(tele/(?P<slug>[\w-]+)/v/|video/)(?P<id>\d+)(\.html)?rk   Nr   r   r   r   r  r  }'  s"        &GGhJLLLr   r  c                       e Zd ZdZdZdZdZdS )RTNewsIEr}  RTNewsz7https?://(?:www\.)?rt\.com/[^/]+/(?:[^/]+/)?(?P<id>\d+)rl   Nr   r   r   r   r  r  '  s"        'GGMJLLLr   r  c                       e Zd ZdZdZdZdZdS )RTPIEzyt_dlp.extractor.rtpRTPzNhttps?://(?:www\.)?rtp\.pt/play/(?:[^/#?]+/)?p(?P<program_id>\d+)/(?P<id>e\d+)rk   Nr   r   r   r   r  r  '  s"        $GGeJLLLr   r  c                       e Zd ZdZdZdZdZdS )RTRFMIEzyt_dlp.extractor.rtrfmRTRFMzJhttps?://(?:www\.)?rtrfm\.com\.au/(?:shows|show-episode)/(?P<id>[^/?\#&]+)rk   Nr   r   r   r   r  r  '  rd  r   r  c                       e Zd ZdZdZdS )RTVCPlayBaseIEyt_dlp.extractor.rtvcplayRTVCPlayBaseNr   r   r   r   r  r  '  r  r   r  c                       e Zd ZdZdZdZdZdS )RTVCKalturaIEr  RTVCKalturaz8https?://media\.rtvc\.gov\.co/kalturartvc/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  '  s"        )GGOJLLLr   r  c                       e Zd ZdZdZdZdZdS )RTVCPlayEmbedIEr  RTVCPlayEmbedz4https?://(?:www\.)?rtvcplay\.co/embed/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  '  r2  r   r  c                       e Zd ZdZdZdZdZdS )
RTVCPlayIEr  RTVCPlayzWhttps?://(?:www\.)?rtvcplay\.co/(?P<category>(?!embed)[^/]+)/(?:[^?#]+/)?(?P<id>[\w-]+)r   Nr   r   r   r   r  r  '  s"        )GGmJLLLr   r  c                       e Zd ZdZdZdS )
RTVEBaseIEyt_dlp.extractor.rtveRTVEBaseNr   r   r   r   r  r  '  r  r   r  c                   &    e Zd ZdZdZddgZdZdZdS )RTVEALaCartaIEr  zrtve.es:alacartazohttps?://(?:www\.)?rtve\.es/(?:m/)?(?:(?:alacarta|play)/videos|filmoteca)/(?!directo)(?:[^/?#]+/){2}(?P<id>\d+)zLhttps?://(?:www\.)?rtve\.es/infantil/serie/[^/?#]+/video/[^/?#]+/(?P<id>\d+)zRTVE a la carta and Playrk   Nr   r   r   r   r  r  '  s7        %G G G  IZ  [J(GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )RTVEAudioIEr  zrtve.es:audiozMhttps?://(?:www\.)?rtve\.es/(alacarta|play)/audios/(?:[^/?#]+/){2}(?P<id>\d+)z
RTVE audiork   Nr   r   r   r   r  r  '  s'        %GGcJGLLLr   r  c                   &    e Zd ZdZdZddgZdZdZdS )
RTVELiveIEr  zrtve.es:livez9https?://(?:www\.)?rtve\.es/directo/(?P<id>[a-zA-Z0-9-]+)zMhttps?://(?:www\.)?rtve\.es/play/videos/directo/[^/?#]+/(?P<id>[a-zA-Z0-9-]+)zRTVE.es live streamsrk   Nr   r   r   r   r  r  '  s4        %GGO  Rc  dJ$GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )RTVEProgramIEr  zrtve.es:programzBhttps?://(?:www\.)?rtve\.es/play/videos/(?P<id>[\w-]+)/?(?:[?#]|$)zRTVE.es programsrl   Nr   r   r   r   r  r  '  s'        %GGXJ GLLLr   r  c                       e Zd ZdZdZdZdZdS )RTVETelevisionIEr  zrtve.es:televisionzHhttps?://(?:www\.)?rtve\.es/television/[^/?#]+/[^/?#]+/(?P<id>\d+).shtmlrk   Nr   r   r   r   r  r  '  s"        %G"G^JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )RTVSIEzyt_dlp.extractor.rtvsstvrz`https?://(?:www\.)?(?:rtvs|stvr)\.sk/(?:radio|televizia)/archiv(?:/\d+)?/(?P<id>\d+)/?(?:[#?]|$)z+Slovak Television and Radio (formerly RTVS)rk   Nr   r   r   r   r  r  '  s'        %GGwJ;GLLLr   r  c                       e Zd ZdZdZdZdZdS )RTVSLOIEyt_dlp.extractor.rtvsloz	rtvslo.siz(?x)
        https?://(?:
            (?:365|4d)\.rtvslo.si/arhiv/[^/?#&;]+|
            (?:www\.)?rtvslo\.si/rtv365/arhiv
        )/(?P<id>\d+)rk   Nr   r   r   r   r  r  '  s%        'GG lJLLLr   r  c                       e Zd ZdZdZdZdZdS )RTVSLOShowIEr  zrtvslo.si:showz:https?://(?:365|4d)\.rtvslo.si/oddaja/[^/?#&]+/(?P<id>\d+)rl   Nr   r   r   r   r  r  '  s"        'GGOJLLLr   r  c                       e Zd ZdZdZdZdZdS )	RadLiveIEyt_dlp.extractor.radliveradlivezYhttps?://(?:www\.)?rad\.live/content/(?P<content_type>feature|episode)/(?P<id>[a-f0-9-]+)rk   Nr   r   r   r   r  r  '  s"        (GGnJLLLr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )RadLiveChannelIEr  zradlive:channelz?https?://(?:www\.)?rad\.live/content/channel/(?P<id>[a-f0-9-]+)rl   c                 ~    t                               |          rdn t                                          |          S r   r  r4   r   r   s     r   r4   zRadLiveChannelIE.suitable(  r   r   r   r   s   @r   r  r  '  s_        (GGTJLK K K K [K K K K Kr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )RadLiveSeasonIEr  zradlive:seasonz>https?://(?:www\.)?rad\.live/content/season/(?P<id>[a-f0-9-]+)rl   c                 ~    t                               |          rdn t                                          |          S r   r  r   s     r   r4   zRadLiveSeasonIE.suitable(  r   r   r   r   s   @r   r  r  (  s_        (GGSJLK K K K [K K K K Kr   r  c                       e Zd ZdZdZdS )RadikoBaseIEyt_dlp.extractor.radiko
RadikoBaseNr   r   r   r   r  r  (  rW  r   r  c                       e Zd ZdZdZdZdS )RadikoIEr  RadikozOhttps?://(?:www\.)?radiko\.jp/#!/ts/(?P<station>[A-Z0-9-]+)/(?P<timestring>\d+)Nr  r   r   r   r  r  (  s        'GGeJJJr   r  c                       e Zd ZdZdZdZdS )RadikoRadioIEr  RadikoRadioz8https?://(?:www\.)?radiko\.jp/#!/live/(?P<id>[A-Z0-9-]+)Nr  r   r   r   r  r  (  s        'GGMJJJr   r  c                       e Zd ZdZdZdZdZdS )
Radio1BeIEr  Radio1Bez;https?://radio1\.be/(?:lees|luister/select)/(?P<id>[\w/-]+)rl   Nr   r   r   r   r  r  #(  s"        $GGPJLLLr   r  c                       e Zd ZdZdZdZdZdS )RadioCanadaAudioVideoIEyt_dlp.extractor.radiocanadazradiocanada:audiovideoz<https?://ici\.radio-canada\.ca/([^/]+/)*media-(?P<id>[0-9]+)rk   Nr   r   r   r   r  r  *(  s"        ,G&GQJLLLr   r  c                       e Zd ZdZdZdZdZdS )RadioCanadaIEr  radiocanadazk(?:radiocanada:|https?://ici\.radio-canada\.ca/widgets/mediaconsole/)(?P<app_code>[^:/]+)[:/](?P<id>[0-9]+)rk   Nr   r   r   r   r  r  1(  s%        ,GG AJLLLr   r  c                       e Zd ZdZdZdZdZdS )RadioComercialIEyt_dlp.extractor.radiocomercialRadioComercialzWhttps?://(?:www\.)?radiocomercial\.pt/podcasts/[^/?#]+/t?(?P<season>\d+)/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  8(  s"        /GGnJLLLr   r  c                       e Zd ZdZdZdZdZdS )RadioComercialPlaylistIEr  RadioComercialPlaylistz`https?://(?:www\.)?radiocomercial\.pt/podcasts/(?P<id>[\w-]+)(?:/t?(?P<season>\d+))?/?(?:$|[?#])rl   Nr   r   r   r   r  r  ?(  s"        /G&GwJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	RadioDeIEzyt_dlp.extractor.radiodezradio.dezAhttps?://(?P<id>.+?)\.(?:radio\.(?:de|at|fr|pt|es|pl|it)|rad\.io)Frk   Nr  r   r   r   r  r  F(  s'        (GGWJHLLLr   r  c                       e Zd ZdZdZdZdZdS )RadioFranceIEr  radiofrancez<https?://maison\.radiofrance\.fr/radiovisions/(?P<id>[^?#]+)rk   Nr   r   r   r   r  r  N(  "        ,GGQJLLLr   r  c                       e Zd ZdZdZdZdZdS )RadioFranceLiveIEr  RadioFranceLivez(?x)
        https?://(?:www\.)?radiofrance\.fr
        /(?P<id>franceculture|franceinfo|franceinter|francemusique|fip|mouv)
        /?(?P<substation_id>radio-[\w-]+)?(?:[#?]|$)
    rk   Nr   r   r   r   r  r  U(  s%        ,GG QJLLLr   r  c                       e Zd ZdZdZdS )RadioFrancePlaylistBaseIEr  RadioFrancePlaylistBaseNr   r   r   r   r  r  \(          ,G'GGGr   r  c                       e Zd ZdZdZdZdZdS )RadioFrancePodcastIEr  RadioFrancePodcastz(?x)
        https?://(?:www\.)?radiofrance\.fr
        /(?:franceculture|franceinfo|franceinter|francemusique|fip|mouv)
        /podcasts/(?P<id>[\w-]+)/?(?:[?#]|$)
    rl   Nr   r   r   r   r  r  a(  s%        ,G"G EJLLLr   r  c                       e Zd ZdZdZdZdZdS )RadioFranceProfileIEr  RadioFranceProfilez;https?://(?:www\.)?radiofrance\.fr/personnes/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  h(  s"        ,G"GQJLLLr   r  c                       e Zd ZdZdZdZdZdS )RadioFranceProgramScheduleIEr  RadioFranceProgramSchedulez(?x)
        https?://(?:www\.)?radiofrance\.fr
        /(?P<station>franceculture|franceinfo|franceinter|francemusique|fip|mouv)
        /grille-programmes
    rl   Nr   r   r   r   r  r  o(  s%        ,G*G {JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )RadioJavanIEzyt_dlp.extractor.radiojavan
RadioJavanz?https?://(?:www\.)?radiojavan\.com/videos/video/(?P<id>[^/]+)/?Frk   Nr  r   r   r   r  r  v(  s'        +GGTJHLLLr   r  c                       e Zd ZdZdZdS )RadioKapitalBaseIEyt_dlp.extractor.radiokapitalRadioKapitalBaseNr   r   r   r   r  r  ~(  r  r   r  c                       e Zd ZdZdZdZdZdS )RadioKapitalIEr  radiokapitalzEhttps?://(?:www\.)?radiokapital\.pl/shows/[a-z\d-]+/(?P<id>[a-z\d-]+)rk   Nr   r   r   r   r  r  (  r  r   r  c                       e Zd ZdZdZdZdZdS )RadioKapitalShowIEr  zradiokapital:showzGhttps?://(?:www\.)?radiokapital\.pl/shows/(?P<id>[a-z\d-]+)/?(?:$|[?#])rl   Nr   r   r   r   r  r  (  s"        -G!G]JLLLr   r  c                       e Zd ZdZdZdZdZdS )RadioRadicaleIEzyt_dlp.extractor.radioradicaleRadioRadicalez:https?://(?:www\.)?radioradicale\.it/scheda/(?P<id>[0-9]+)r   Nr   r   r   r   r  r  (  s"        .GGOJLLLr   r  c                       e Zd ZdZdZdZdZdS )RadioZetPodcastIEzyt_dlp.extractor.radiozetRadioZetPodcastz6https?://player\.radiozet\.pl\/Podcasty/.*?/(?P<id>.+)rk   Nr   r   r   r   r
  r
  (  s"        )GGLJLLLr   r
  c                       e Zd ZdZdZdS )	RaiBaseIEyt_dlp.extractor.raiRaiBaseNr   r   r   r   r  r  (  r  r   r  c                       e Zd ZdZdZdZdZdS )RaiIEr  Raizuhttps?://[^/]+\.(?:rai\.(?:it|tv))/.+?-(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})(?:-.+?)?\.htmlrk   Nr   r   r   r   r  r  (  s%        $GG QJLLLr   r  c                       e Zd ZdZdZdZdZdS )	RaiNewsIEr  RaiNewszhttps?://(www\.)?rainews\.it/(?!articoli)[^?#]+-(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})(?:-[^/?#]+)?\.htmlrk   Nr   r   r   r   r  r  (  s%        $GG ^JLLLr   r  c                       e Zd ZdZdZdZdZdS )RaiCulturaIEr  
RaiCulturazhttps?://(www\.)?raicultura\.it/(?!articoli)[^?#]+-(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})(?:-[^/?#]+)?\.htmlrk   Nr   r   r   r   r  r  (  s%        $GG aJLLLr   r  c                       e Zd ZdZdZdZdZdS )	RaiPlayIEr  RaiPlayz{(?P<base>https?://(?:www\.)?raiplay\.it/.+?-(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}))\.(?:html|json)rk   Nr   r   r   r   r  r  (  s%        $GG WJLLLr   r  c                       e Zd ZdZdZdZdZdS )RaiPlayLiveIEr  RaiPlayLivezA(?P<base>https?://(?:www\.)?raiplay\.it/dirette/(?P<id>[^/?#&]+))rk   Nr   r   r   r   r  r  (  s"        $GGVJLLLr   r  c                       e Zd ZdZdZdZdZdS )RaiPlayPlaylistIEr  RaiPlayPlaylistz^(?P<base>https?://(?:www\.)?raiplay\.it/programmi/(?P<id>[^/?#&]+))(?:/(?P<extra_id>[^?#&]+))?rl   Nr   r   r   r   r   r   (  s"        $GGsJLLLr   r   c                       e Zd ZdZdZdZdZdS )RaiPlaySoundIEr  RaiPlaySoundz(?P<base>https?://(?:www\.)?raiplaysound\.it/.+?-(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}))\.(?:html|json)rk   Nr   r   r   r   r#  r#  (  s%        $GG \JLLLr   r#  c                       e Zd ZdZdZdZdZdS )RaiPlaySoundLiveIEr  RaiPlaySoundLivez?(?P<base>https?://(?:www\.)?raiplaysound\.it/(?P<id>[^/?#&]+)$)rk   Nr   r   r   r   r&  r&  (  s"        $G GTJLLLr   r&  c                       e Zd ZdZdZdZdZdS )RaiPlaySoundPlaylistIEr  RaiPlaySoundPlaylistz{(?P<base>https?://(?:www\.)?raiplaysound\.it/(?:programmi|playlist|audiolibri)/(?P<id>[^/?#&]+))(?:/(?P<extra_id>[^?#&]+))?rl   Nr   r   r   r   r)  r)  (  s%        $G$G QJLLLr   r)  c                       e Zd ZdZdZdZdZdS )RaiSudtirolIEr  RaiSudtirolz8https?://rai(?:bz|sudtirol)\.rai\.it/.+media=(?P<id>\w+)rk   Nr   r   r   r   r,  r,  (  r
  r   r,  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )RayWenderlichCourseIEyt_dlp.extractor.raywenderlichRayWenderlichCoursea  (?x)
                    https?://
                        (?:
                            videos\.raywenderlich\.com/courses|
                            (?:www\.)?raywenderlich\.com
                        )/
                        (?P<id>[^/]+)
                    rl   c                 ~    t                               |          rdn t                                          |          S r   )RayWenderlichIEr4   r   r   s     r   r4   zRayWenderlichCourseIE.suitable(  r  r   r   r   s   @r   r/  r/  (  sb        .G#G lJLQ Q Q Q [Q Q Q Q Qr   r/  c                       e Zd ZdZdZdZdZdS )r3  r0  RayWenderlicha(  (?x)
                    https?://
                        (?:
                            videos\.raywenderlich\.com/courses|
                            (?:www\.)?raywenderlich\.com
                        )/
                        (?P<course_id>[^/]+)/lessons/(?P<id>\d+)
                    rk   Nr   r   r   r   r3  r3  (  s%        .GG HJLLLr   r3  c                       e Zd ZdZdZdZdZdS )RbgTumCourseIEyt_dlp.extractor.rbgtumRbgTumCoursezxhttps?://(?P<hostname>(?:live\.rbg\.tum\.de|tum\.live))/old/course/(?P<id>(?P<year>\d+)/(?P<term>\w+)/(?P<slug>[^/?#]+))rl   Nr   r   r   r   r7  r7  (  s%        'GG RJLLLr   r7  c                       e Zd ZdZdZdZdZdS )RbgTumIEr8  RbgTumz:https?://(?:live\.rbg\.tum\.de|tum\.live)/w/(?P<id>[^?#]+)rk   Nr   r   r   r   r;  r;  )  r  r   r;  c                       e Zd ZdZdZdZdZdS )RbgTumNewCourseIEr8  RbgTumNewCoursez:https?://(?P<hostname>(?:live\.rbg\.tum\.de|tum\.live))/\?rl   Nr   r   r   r   r>  r>  
)  s"        'GGRJLLLr   r>  c                       e Zd ZdZdZdZdZdS )	RedBullIEyt_dlp.extractor.redbulltvRedBullzhttps?://(?:www\.)?redbull\.com/(?P<region>[a-z]{2,3})-(?P<lang>[a-z]{2})/(?P<type>(?:episode|film|(?:(?:recap|trailer)-)?video)s|live)/(?!AP-|rrn:content:)(?P<id>[^/?#&]+)rk   Nr   r   r   r   rA  rA  )  s%        *GG BJLLLr   rA  c                       e Zd ZdZdZdZdZdS )RedBullTVIErB  	RedBullTVzhttps?://(?:www\.)?redbull(?:\.tv|\.com(?:/[^/]+)?(?:/tv)?)(?:/events/[^/]+)?/(?:videos?|live|(?:film|episode)s)/(?P<id>AP-\w+)rk   Nr   r   r   r   rE  rE  )  s%        *GG WJLLLr   rE  c                       e Zd ZdZdZdZdS )RedBullEmbedIErB  RedBullEmbedzhttps?://(?:www\.)?redbull\.com/embed/(?P<id>rrn:content:[^:]+:[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}:[a-z]{2}-[A-Z]{2,3})Nr  r   r   r   rH  rH  )  s         *GG fJJJr   rH  c                       e Zd ZdZdZdZdS )RedBullTVRrnContentIErB  RedBullTVRrnContentzhttps?://(?:www\.)?redbull\.com/(?P<region>[a-z]{2,3})-(?P<lang>[a-z]{2})/tv/(?:video|live|film)/(?P<id>rrn:content:[^:]+:[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})Nr  r   r   r   rK  rK  %)  s         *G#G MJJJr   rK  c                       e Zd ZdZdZdZdZdS )RedCDNLivxIEzyt_dlp.extractor.redge
redcdnlivxzrhttps?://[^.]+\.(?:dcs\.redcdn|atmcdn)\.pl/(?:live(?:dash|hls|ss)|nvr)/o2/(?P<tenant>[^/?#]+)/(?P<id>[^?#]+)\.livxrk   Nr   r   r   r   rN  rN  +)  s%        &GG JJLLLr   rN  c                       e Zd ZdZdZdS )RedGifsBaseIEyt_dlp.extractor.redgifsRedGifsBaseNr   r   r   r   rQ  rQ  2)  r   r   rQ  c                   "    e Zd ZdZdZdZdZdZdS )	RedGifsIErR  RedGifsz[https?://(?:(?:www\.)?redgifs\.com/(?:watch|ifr)/|thumbs2\.redgifs\.com/)(?P<id>[^-/?#\.]+)r   rk   Nr  r   r   r   rU  rU  7)  s'        (GGsJILLLr   rU  c                   "    e Zd ZdZdZdZdZdZdS )RedGifsSearchIErR  RedGifsSearchz8https?://(?:www\.)?redgifs\.com/browse\?(?P<query>[^#]+)zRedgifs searchrl   Nr   r   r   r   rX  rX  ?)  s'        (GGNJGLLLr   rX  c                   "    e Zd ZdZdZdZdZdZdS )RedGifsUserIErR  RedGifsUserzRhttps?://(?:www\.)?redgifs\.com/users/(?P<username>[^/?#]+)(?:\?(?P<query>[^#]+))?zRedgifs userrl   Nr   r   r   r   r[  r[  G)  s'        (GGhJGLLLr   r[  c                   "    e Zd ZdZdZdZdZdZdS )	RedTubeIEzyt_dlp.extractor.redtubeRedTubezZhttps?://(?:(?:\w+\.)?redtube\.com(?:\.br)?/|embed\.redtube\.com/\?.*?\bid=)(?P<id>[0-9]+)r   rk   Nr  r   r   r   r^  r^  O)  '        (GGuJILLLr   r^  c                   &    e Zd ZdZdZdZdZdZdZdS )RedditIEzyt_dlp.extractor.redditRedditzbhttps?://(?:\w+\.)?reddit(?:media)?\.com/(?P<slug>(?:(?:r|user)/[^/]+/)?comments/(?P<id>[^/?#&]+))redditr   r   Nr  r   r   r   rb  rb  W)  s,        'GGxJNILLLr   rb  c                   "    e Zd ZdZdZdZdZdZdS )	RestudyIEzyt_dlp.extractor.restudyRestudyzGhttps?://(?:(?:www|portal)\.)?restudy\.dk/video/[^/]+/id/(?P<id>[0-9]+)Frk   Nr  r   r   r   rf  rf  `)  s'        (GG\JHLLLr   rf  c                   "    e Zd ZdZdZdZdZdZdS )	ReutersIEzyt_dlp.extractor.reutersReutersz>https?://(?:www\.)?reuters\.com/.*?\?.*?videoId=(?P<id>[0-9]+)Frk   Nr  r   r   r   ri  ri  h)  ry  r   ri  c                       e Zd ZdZdZdZdZdS )ReverbNationIEzyt_dlp.extractor.reverbnationReverbNationz=https?://(?:www\.)?reverbnation\.com/.*?/song/(?P<id>\d+).*?$rk   Nr   r   r   r   rl  rl  p)  s"        -GGSJLLLr   rl  c                       e Zd ZdZdZdZdZdS )RheinMainTVIEzyt_dlp.extractor.rheinmaintvRheinMainTVz~https?://(?:www\.)?rheinmaintv\.de/sendungen/(?:[\w-]+/)*(?P<video_id>(?P<display_id>[\w-]+)/vom-\d{2}\.\d{2}\.\d{4}(?:/\d+)?)rk   Nr   r   r   r   ro  ro  w)  s%        ,GG \JLLLr   ro  c                       e Zd ZdZdZdZdZdS )
RideHomeIEzyt_dlp.extractor.ridehomeRideHomezHhttps?://(?:www\.)?ridehome\.info/show/[\w-]+/(?P<id>[\w-]+)/?(?:$|[?#])rl   Nr   r   r   r   rr  rr  ~)  s"        )GG_JLLLr   rr  c                       e Zd ZdZdZdS )RinseFMBaseIEyt_dlp.extractor.rinsefmRinseFMBaseNr   r   r   r   ru  ru  )  r   r   ru  c                       e Zd ZdZdZdZdZdS )RinseFMArtistPlaylistIErv  RinseFMArtistPlaylistz2https?://(?:www\.)?rinse\.fm/shows/(?P<id>[^/?#]+)rl   Nr   r   r   r   ry  ry  )  s"        (G%GGJLLLr   ry  c                       e Zd ZdZdZdZdZdS )	RinseFMIErv  RinseFMz5https?://(?:www\.)?rinse\.fm/episodes/(?P<id>[^/?#]+)rk   Nr   r   r   r   r|  r|  )  s"        (GGJJLLLr   r|  c                   "    e Zd ZdZdZdZdZdZdS )RockstarGamesIEzyt_dlp.extractor.rockstargamesRockstarGameszShttps?://(?:www\.)?rockstargames\.com/videos(?:/video/|#?/?\?.*\bvideo=)(?P<id>\d+)Frk   Nr  r   r   r   r  r  )  s'        .GGkJHLLLr   r  c                       e Zd ZdZdZdS )RokfinPlaylistBaseIEyt_dlp.extractor.rokfinRokfinPlaylistBaseNr   r   r   r   r  r  )  rv  r   r  c                   "    e Zd ZdZdZdZdZdZdS )RokfinChannelIEr  zrokfin:channelzXhttps?://(?:www\.)?rokfin\.com/(?!((feed/?)|(discover/?)|(channels/?))$)(?P<id>[^/]+)/?$zRokfin Channelsrl   Nr   r   r   r   r  r  )  s'        'GGmJGLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )RokfinIEr  Rokfinz@https?://(?:www\.)?rokfin\.com/(?P<id>(?P<type>post|stream)/\d+)rokfinrk   Nr   r   r   r   r  r  )  rF	  r   r  c                   &    e Zd ZdZdZdZdZdZdZdS )RokfinSearchIEr  zrokfin:searchz9rkfnsearch(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zRokfin Search
rkfnsearchrl   Nr  r   r   r   r  r  )  s,        'GGNJGJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )RokfinStackIEr  zrokfin:stackz2https?://(?:www\.)?rokfin\.com/stack/(?P<id>[^/]+)zRokfin Stacksrl   Nr   r   r   r   r  r  )  s'        'GGGJGLLLr   r  c                       e Zd ZdZdZdZdS )RoosterTeethBaseIEyt_dlp.extractor.roosterteethRoosterTeethBaseroosterteethNrz   r   r   r   r  r  )  s        -G G#NNNr   r  c                   "    e Zd ZdZdZdZdZdZdS )RoosterTeethIEr  RoosterTeethzUhttps?://(?:.+?\.)?roosterteeth\.com/(?:bonus-feature|episode|watch)/(?P<id>[^/?#&]+)r  rk   Nr   r   r   r   r  r  )  s'        -GGjJ#NLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )RoosterTeethSeriesIEr  RoosterTeethSeriesz<https?://(?:.+?\.)?roosterteeth\.com/series/(?P<id>[^/?#&]+)r  rl   Nr   r   r   r   r  r  )  s'        -G"GQJ#NLLLr   r  c                       e Zd ZdZdZdZdZdS )RottenTomatoesIEzyt_dlp.extractor.rottentomatoesRottenTomatoeszchttps?://(?:www\.)?rottentomatoes\.com/m/(?P<playlist>[^/]+)(?:/(?P<tr>trailers)(?:/(?P<id>\w+))?)?r   Nr   r   r   r   r  r  )  s"        /GGyJLLLr   r  c                       e Zd ZdZdZdZdZdS )
RoyaLiveIEzyt_dlp.extractor.royaRoyaLivez2https?://(?:en\.)?roya\.tv/live-stream/(?P<id>\d+)rk   Nr   r   r   r   r  r  )  s"        %GGHJLLLr   r  c                       e Zd ZdZdZdZdZdS )	RozhlasIEr  Rozhlasz>https?://(?:www\.)?prehravac\.rozhlas\.cz/audio/(?P<id>[0-9]+)rk   Nr   r   r   r   r  r  )  s"        (GGTJLLLr   r  c                       e Zd ZdZdZdZdZdS )RozhlasVltavaIEr  RozhlasVltavaz?https?://(?:\w+\.rozhlas|english\.radio)\.cz/[\w-]+-(?P<id>\d+)rl   Nr   r   r   r   r  r  )  r  r   r  c                       e Zd ZdZdZdS )	RteBaseIEyt_dlp.extractor.rteRteBaseNr   r   r   r   r  r  )  r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )RteIEr  rtezEhttps?://(?:www\.)?rte\.ie/player/[^/]{2,3}/show/[^/]+/(?P<id>[0-9]+)u   Raidió Teilifís Éireann TVrk   Nr   r   r   r   r  r  )  s'        $GGZJ-GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
RteRadioIEr  z	rte:radiozshttps?://(?:www\.)?rte\.ie/radio/utils/radioplayer/rteradioweb\.html#!rii=(?:b?[0-9]*)(?:%3A|:|%5F|_)(?P<id>[0-9]+)u    Raidió Teilifís Éireann radiork   Nr   r   r   r   r  r  *  s*        $GG JJ0GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )RtlNlIEr  zrtl.nla   (?x)
        https?://(?:(?:www|static)\.)?
        (?:
            rtlxl\.nl/(?:[^\#]*\#!|programma)/[^/]+/|
            rtl\.nl/(?:(?:system/videoplayer/(?:[^/]+/)+(?:video_)?embed\.html|embed)\b.+?\buuid=|video/)|
            embed\.rtl\.nl/\#uuid=
        )
        (?P<id>[0-9a-f-]+)zrtl.nl and rtlxl.nlrk   Nr   r   r   r   r  r  *  s*        &GG FJ#GLLLr   r  c                       e Zd ZdZdZdZdZdS )RtmpIEr  Rtmpz(?i)rtmp[est]?://.+FNrV  r   r   r   r  r  *  s"        0GG&JGGGr   r  c                       e Zd ZdZdZdZdZdS )RudoVideoIEzyt_dlp.extractor.rudovideo	RudoVideoz@https?://rudo\.video/(?P<type>vod|podcast|live)/(?P<id>[^/?&#]+)rk   Nr   r   r   r   r  r  *  r:  r   r  c                   "    e Zd ZdZdZdZdZdZdS )Rule34VideoIEzyt_dlp.extractor.rule34videoRule34Videoz7https?://(?:www\.)?rule34video\.com/videos?/(?P<id>\d+)r   rk   Nr  r   r   r   r  r  #*  s'        ,GGMJILLLr   r  c                       e Zd ZdZdZdZdZdS )RumbleChannelIEyt_dlp.extractor.rumbleRumbleChannelzD(?P<url>https?://(?:www\.)?rumble\.com/(?:c|user)/(?P<id>[^&?#$/]+))rl   Nr   r   r   r   r  r  +*  s"        'GGYJLLLr   r  c                       e Zd ZdZdZdZdZdS )RumbleEmbedIEr  RumbleEmbedzFhttps?://(?:www\.)?rumble\.com/embed/(?:[0-9a-z]+\.)?(?P<id>[0-9a-z]+)rk   Nr   r   r   r   r  r  2*  s"        'GG\JLLLr   r  c                       e Zd ZdZdZdZdZdS )RumbleIEr  Rumblez>https?://(?:www\.)?rumble\.com/(?P<id>v(?!ideos)[\w.-]+)[^/]*$rk   Nr   r   r   r   r  r  9*  "        'GGTJLLLr   r  c                       e Zd ZdZdZdZdZdS )RuptlyIEr}  Ruptlyz=https?://(?:www\.)?ruptly\.tv/[a-z]{2}/videos/(?P<id>\d+-\d+)rk   Nr   r   r   r   r  r  @*  r  r   r  c                       e Zd ZdZdZdS )RutubeBaseIEyt_dlp.extractor.rutube
RutubeBaseNr   r   r   r   r  r  G*  rW  r   r  c                       e Zd ZdZdZdS )RutubePlaylistBaseIEr  RutubePlaylistBaseNr   r   r   r   r  r  L*  rv  r   r  c                   "    e Zd ZdZdZdZdZdZdS )RutubeChannelIEr  zrutube:channelzehttps?://rutube\.ru/(?:channel/(?P<id>\d+)|u/(?P<slug>\w+))(?:/(?P<section>videos|shorts|playlists))?zRutube channelrl   Nr   r   r   r   r  r  Q*  s'        'GG{JGLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )RutubeEmbedIEr  zrutube:embedzBhttps?://rutube\.ru/(?:video|play)/embed/(?P<id>[0-9]+)(?:[?#/]|$)zRutube embedded videosrk   Nr   r   r   r   r  r  Y*  s'        'GGVJ&GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )RutubeIEr  rutubezXhttps?://rutube\.ru/(?:(?:live/)?video(?:/private)?|(?:play/)?embed)/(?P<id>[\da-z]{32})zRutube videosrk   Nr   r   r   r   r  r  a*  s'        'GGmJGLLLr   r  c                       e Zd ZdZdZdZdZdS )RutubeMovieIEr  zrutube:moviez+https?://rutube\.ru/metainfo/tv/(?P<id>\d+)zRutube moviesNrV  r   r   r   r  r  i*  s"        'GG@JGGGr   r  c                   "    e Zd ZdZdZdZdZdZdS )RutubePersonIEr  zrutube:personz,https?://rutube\.ru/video/person/(?P<id>\d+)zRutube person videosrl   Nr   r   r   r   r  r  p*  s'        'GGAJ$GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )RutubePlaylistIEr  zrutube:playlistz$https?://rutube\.ru/plst/(?P<id>\d+)zRutube playlistsrl   Nr   r   r   r   r  r  x*  s'        'GG9J GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )RutubeTagsIEr  zrutube:tagsz*https?://rutube\.ru/tags/video/(?P<id>\d+)zRutube tagsrl   Nr   r   r   r   r  r  *  s'        'GG?JGLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )RuutuIEzyt_dlp.extractor.ruutuRuutuaB  (?x)
                    https?://
                        (?:
                            (?:www\.)?(?:ruutu|supla)\.fi/(?:video|supla|audio)/|
                            static\.nelonenmedia\.fi/player/misc/embed_player\.html\?.*?\bnid=
                        )
                        (?P<id>\d+)
                    Fr  rk   Nr  r   r   r   r  r  *  s/        &GG eJHILLLr   r  c                       e Zd ZdZdZdZdZdS )RuvIEyt_dlp.extractor.ruvRuvzJhttps?://(?:www\.)?ruv\.is/(?:sarpurinn/[^/]+|node)/(?P<id>[^/]+(?:/\d+)?)rk   Nr   r   r   r   r  r  *  s"        $GG`JLLLr   r  c                       e Zd ZdZdZdZdZdS )
RuvSpilaIEr  zruv.is:spilazqhttps?://(?:www\.)?ruv\.is/(?:(?:sjon|ut)varp|(?:krakka|ung)ruv)/spila/.+/(?P<series_id>[0-9]+)/(?P<id>[a-z0-9]+)rk   Nr   r   r   r   r  r  *  s%        $GG GJLLLr   r  c                       e Zd ZdZdZdZdZdS )S4CIEyt_dlp.extractor.s4cS4Cz8https?://(?:www\.)?s4c\.cymru/clic/programme/(?P<id>\d+)rk   Nr   r   r   r   r  r  *  r	  r   r  c                       e Zd ZdZdZdZdZdS )S4CSeriesIEr  	S4CSeriesz5https?://(?:www\.)?s4c\.cymru/clic/series/(?P<id>\d+)rl   Nr   r   r   r   r  r  *  s"        $GGKJLLLr   r  c                       e Zd ZdZdZdZdS )SAKTVBaseIErt  	SAKTVBasesaktvNrz   r   r   r   r  r  *  r{  r   r  c                       e Zd ZdZdZdZdZdS )SAKTVIErt  SAKTVz(?x)https?://(?:www\.)?saktv\.ch/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r  Nr  r   r   r   r  r  *  %        'GG fJNNNr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )SAKTVLiveIErt  	SAKTVLivez(?x)https?://(?:www\.)?saktv\.ch/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r  c                 ~    t                               |          rdn t                                          |          S r   )r  r4   r   r   s     r   r4   zSAKTVLiveIE.suitable*  r   r   r  r   s   @r   r  r  *  b        'GG [JNI I I I [I I I I Ir   r  c                       e Zd ZdZdZdZdZdS )SAKTVRecordingsIErt  SAKTVRecordingszp(?x)https?://(?:www\.)?saktv\.ch/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r  Nr  r   r   r   r  r  *  %        'GG KJNNNr   r  c                       e Zd ZdZdZdZdZdS )SBSCoKrAllvodProgramIEyt_dlp.extractor.sbscokrzsbs.co.kr:allvod_programzahttps?://allvod\.sbs\.co\.kr/allvod/vod(?:Free)?ProgramDetail\.do\?(?:[^#]+&)?pgmId=(?P<id>P?\d+)rl   Nr   r   r   r   r  r  *  s"        (G(GzJLLLr   r  c                   &    e Zd ZdZdZddgZdZdZdS )	SBSCoKrIEr  z	sbs.co.krz\https?://allvod\.sbs\.co\.kr/allvod/vod(?:Package)?EndPage\.do\?(?:[^#]+&)?mdaId=(?P<id>\d+)z~https?://programs\.sbs\.co\.kr/(?:enter|drama|culture|sports|plus|mtv|kth)/[a-z0-9]+/(?:vod|clip|movie)/\d+/(?P<id>(?:OC)?\d+)r
  rk   Nr  r   r   r   r  r  *  s4        (GGv  y~  JILLLr   r  c                       e Zd ZdZdZdZdZdS )SBSCoKrProgramsVodIEr  zsbs.co.kr:programs_vodz]https?://programs\.sbs\.co\.kr/(?:enter|drama|culture|sports|plus|mtv)/(?P<id>[a-z0-9]+)/vodsrl   Nr   r   r   r   r  r  *  s"        (G&GsJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )SBSIEzyt_dlp.extractor.sbsSBSa/  (?x)
        https?://(?:www\.)?sbs\.com\.au/(?:
            ondemand(?:
                /video/(?:single/)?|
                /(?:movie|tv-program)/[^/]+/|
                /(?:tv|news)-series/(?:[^/]+/){3}|
                .*?\bplay=|/watch/
            )|news/(?:embeds/)?video/
        )(?P<id>[0-9]+)z
sbs.com.aurk   Nr   r   r   r   r  r  *  s*        $GG OJGLLLr   r  c                       e Zd ZdZdZdZdS )SRGSSRIEyt_dlp.extractor.srgssrSRGSSRa  (?x)
                    (?:
                        https?://tp\.srgssr\.ch/p(?:/[^/]+)+\?urn=urn|
                        srgssr
                    ):
                    (?P<bu>
                        srf|rts|rsi|rtr|swi
                    ):(?:[^:]+:)?
                    (?P<type>
                        video|audio
                    ):
                    (?P<id>
                        [0-9a-f\-]{36}|\d+
                    )
                    Nr  r   r   r   r  r  *  s         'GG uJJJr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )RTSIEzyt_dlp.extractor.rtsRTSzerts:(?P<rts_id>\d+)|https?://(?:.+?\.)?rts\.ch/(?:[^/]+/){2,}(?P<id>[0-9]+)-(?P<display_id>.+?)\.htmlFzRTS.chr   Nr  r   r   r   r  r  *  s,        $GG|JHGLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )SRGSSRPlayIEr  
SRGSSRPlaya  (?x)
                    https?://
                        (?:(?:www|play)\.)?
                        (?P<bu>srf|rts|rsi|rtr|swissinfo)\.ch/play/(?:tv|radio)/
                        (?:
                            [^/]+/(?P<type>video|audio)/[^?]+|
                            popup(?P<type_2>video|audio)player
                        )
                        \?.*?\b(?:id=|urn=urn:[^:]+:video:)(?P<id>[0-9a-f\-]{36}|\d+)
                    z:srf.ch, rts.ch, rsi.ch, rtr.ch and swissinfo.ch play sitesrk   Nr   r   r   r   r  r  *  s*        'GG aJJGLLLr   r  c                       e Zd ZdZdZdS )ARDMediathekBaseIEr   ARDMediathekBaseNr   r   r   r   r  r  +  r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )SRMediathekIEzyt_dlp.extractor.srmediathekzsr:mediathekzBhttps?://(?:www\.)?sr-mediathek\.de/index\.php\?.*?&id=(?P<id>\d+)u   Saarländischer Rundfunkrk   Nr   r   r   r   r  r  +  s'        ,GGZJ(GLLLr   r  c                       e Zd ZdZdZdZdZdS )STVPlayerIEzyt_dlp.extractor.stvz
stv:playerzDhttps?://player\.stv\.tv/(?P<type>episode|video)/(?P<id>[a-z0-9]{4})rk   Nr   r   r   r   r  r  +  s"        $GGYJLLLr   r  c                       e Zd ZdZdZdS )	SVTBaseIEyt_dlp.extractor.svtSVTBaseNr   r   r   r   r  r  +  r  r   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )	SVTPageIEr  zsvt:pagez8https?://(?:www\.)?svt\.se/(?:[^/?#]+/)*(?P<id>[^/?&#]+)r   c                 ~    t                               |          rdn t                                          |          S r   	SVTPlayIEr4   r   r   s     r   r4   zSVTPageIE.suitable +  r   r   r   r   s   @r   r   r   +  s_        $GGMJLK K K K [K K K K Kr   r   c                   "    e Zd ZdZdZdZdZdZdS )r#  r  zsvt:playa  (?x)
                    (?:
                        (?:
                            svt:|
                            https?://(?:www\.)?svt\.se/barnkanalen/barnplay/[^/]+/
                        )
                        (?P<svt_id>[^/?#&]+)|
                        https?://(?:www\.)?(?:svtplay|oppetarkiv)\.se/(?:video|klipp|kanaler)/(?P<id>[^/?#&]+)
                        (?:.*?(?:modalId|id)=(?P<modal_id>[\da-zA-Z-]+))?
                    )
                    u   SVT Play and Öppet arkivrk   Nr   r   r   r   r#  r#  %+  s*        $GG |J)GLLLr   r#  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )SVTSeriesIEr  zsvt:play:serieszThttps?://(?:www\.)?svtplay\.se/(?P<id>[^/?&#]+)(?:.+?\btab=(?P<season_slug>[^&#]+))?rl   c                 ~    t                               |          rdn t                                          |          S r   r"  r   s     r   r4   zSVTSeriesIE.suitable3+  r   r   r   r   s   @r   r&  r&  -+  s_        $GGjJLK K K K [K K K K Kr   r&  c                       e Zd ZdZdZdZdZdS )SYVDKIEzyt_dlp.extractor.syvdkSYVDKz3https?://(?:www\.)?24syv\.dk/episode/(?P<id>[\w-]+)rk   Nr   r   r   r   r)  r)  8+  s"        &GGIJLLLr   r)  c                       e Zd ZdZdZdZdS )SafariBaseIEyt_dlp.extractor.safari
SafariBasesafariNrz   r   r   r   r,  r,  ?+  r  r   r,  c                       e Zd ZdZdZdZdZdS )SafariApiIEr-  z
safari:apizhttps?://(?:www\.)?(?:safaribooksonline|(?:learning\.)?oreilly)\.com/api/v1/book/(?P<course_id>[^/]+)/chapter(?:-content)?/(?P<part>[^/?#&]+)\.htmlr/  Nr  r   r   r   r1  r1  E+  s%        'GG kJNNNr   r1  c                   F     e Zd ZdZdZdZdZdZdZe	 fd            Z
 xZS )SafariCourseIEr-  zsafari:coursea  (?x)
                    https?://
                        (?:
                            (?:www\.)?(?:safaribooksonline|(?:learning\.)?oreilly)\.com/
                            (?:
                                library/view/[^/]+|
                                api/v1/book|
                                videos/[^/]+
                            )|
                            techbus\.safaribooksonline\.com
                        )
                        /(?P<id>[^/]+)
                    z$safaribooksonline.com online coursesr/  rl   c                     t                               |          st                              |          rdn t                                          |          S r   )SafariIEr4   r1  r   r   s     r   r4   zSafariCourseIE.suitableT+  sL    !**3// +;3G3G3L3L +WW%%c**	,r   r   r   s   @r   r3  r3  L+  sc        'GG [J4GNL, , , , [, , , , ,r   r3  c                   &    e Zd ZdZdZdZdZdZdZdS )r5  r-  r/  a  (?x)
                        https?://
                            (?:www\.)?(?:safaribooksonline|(?:learning\.)?oreilly)\.com/
                            (?:
                                library/view/[^/]+/(?P<course_id>[^/]+)/(?P<part>[^/?\#&]+)\.html|
                                videos/[^/]+/[^/]+/(?P<reference_id>[^-]+-[^/?\#&]+)
                            )
                    z"safaribooksonline.com online videork   Nr   r   r   r   r5  r5  Z+  s/        'GG kJ2GNLLLr   r5  c                   "    e Zd ZdZdZdZdZdZdS )
SaitosanIEzyt_dlp.extractor.saitosanSaitosanz>https?://(?:www\.)?saitosan\.net/bview.html\?id=(?P<id>[0-9]+)Frk   Nr  r   r   r   r8  r8  c+  s'        )GGTJHLLLr   r8  c                       e Zd ZdZdZdZdS )SaltTVBaseIErt  
SaltTVBasesalttvNrz   r   r   r   r;  r;  k+  r  r   r;  c                       e Zd ZdZdZdZdZdS )SaltTVIErt  SaltTVz(?x)https?://(?:www\.)?tv\.salt\.ch/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r=  Nr  r   r   r   r?  r?  q+  s%        'GG jJNNNr   r?  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )SaltTVLiveIErt  
SaltTVLivez(?x)https?://(?:www\.)?tv\.salt\.ch/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r=  c                 ~    t                               |          rdn t                                          |          S r   )r?  r4   r   r   s     r   r4   zSaltTVLiveIE.suitable~+  r  r   r  r   s   @r   rB  rB  x+  sb        'GG _JNJ J J J [J J J J Jr   rB  c                       e Zd ZdZdZdZdZdS )SaltTVRecordingsIErt  SaltTVRecordingszs(?x)https?://(?:www\.)?tv\.salt\.ch/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r=  Nr  r   r   r   rF  rF  +  s%        'G G OJNNNr   rF  c                       e Zd ZdZdZdZdZdS )SampleFocusIEzyt_dlp.extractor.samplefocusSampleFocusz<https?://(?:www\.)?samplefocus\.com/samples/(?P<id>[^/?&#]+)rk   Nr   r   r   r   rI  rI  +  r  r   rI  c                   "    e Zd ZdZdZdZdZdZdS )	SangiinIEyt_dlp.extractor.japandietSangiinzGhttps?://www\.webtv\.sangiin\.go\.jp/webtv/detail\.php\?sid=(?P<id>\d+)u4   参議院インターネット審議中継 (archive)rk   Nr   r   r   r   rL  rL  +  s'        *GGaJDGLLLr   rL  c                       e Zd ZdZdZdZdZdS )SangiinInstructionIErM  SangiinInstructionz5https?://www\.webtv\.sangiin\.go\.jp/webtv/index\.phpFNrV  r   r   r   rP  rP  +  s"        *G"GMJGGGr   rP  c                   "    e Zd ZdZdZdZdZdZdS )SapoIEzyt_dlp.extractor.sapoSapozQhttps?://(?:(?:v2|www)\.)?videos\.sapo\.(?:pt|cv|ao|mz|tl)/(?P<id>[\da-zA-Z]{20})u   SAPO Vídeosrk   Nr   r   r   r   rS  rS  +  s'        %GGhJGLLLr   rS  c                   "    e Zd ZdZdZdZdZdZdS )SaucePlusIEzyt_dlp.extractor.sauceplus	SaucePlusz;https?://(?:(?:www|beta)\.)?sauceplus\.com/post/(?P<id>\w+)zSauce+rk   Nr   r   r   r   rV  rV  +  s'        *GGQJGLLLr   rV  c                       e Zd ZdZdZdZdZdS )
SchoolTVIEr  schooltvz6https?://(?:www\.)?schooltv\.nl/video/(?P<id>[^/?#&]+)rk   Nr   r   r   r   rY  rY  +  s"        $GGKJLLLr   rY  c                       e Zd ZdZdZdZdZdS )ScienceChannelIEr  ScienceChannelzBhttps?://(?:www\.)?sciencechannel\.com/video/(?P<id>[^/]+/[^/?#]+)rk   Nr   r   r   r   r\  r\  +  s"        &GGWJLLLr   r\  c                       e Zd ZdZdZdZdZdS )	Screen9IEzyt_dlp.extractor.screen9Screen9zRhttps?://(?:\w+\.screen9\.(?:tv|com)|play\.su\.se)/(?:embed|media)/(?P<id>[^?#/]+)rk   Nr   r   r   r   r_  r_  +  s"        (GGjJLLLr   r_  c                       e Zd ZdZdZdZdZdS )ScreenRecIEzyt_dlp.extractor.screenrec	ScreenRecz6https?://(?:www\.)?screenrec\.com/share/(?P<id>\w{10})rk   Nr   r   r   r   rb  rb  +  r  r   rb  c                       e Zd ZdZdZdZdZdS )ScreencastIEzyt_dlp.extractor.screencast
Screencastz9https?://(?:www\.)?screencast\.com/t/(?P<id>[a-zA-Z0-9]+)rk   Nr   r   r   r   re  re  +  s"        +GGNJLLLr   re  c                       e Zd ZdZdZdZdZdS )ScreencastOMaticIEz!yt_dlp.extractor.screencastomaticScreencastOMaticzZhttps?://screencast-o-matic\.com/(?:(?:watch|player)/|embed\?.*?\bsc=)(?P<id>[0-9a-zA-Z]+)rk   Nr   r   r   r   rh  rh  +  s"        1G GpJLLLr   rh  c                   "    e Zd ZdZdZddgZdZdS )ScreencastifyIEzyt_dlp.extractor.screencastifyScreencastifyz4https?://watch\.screencastify\.com/v/(?P<id>[^/?#]+)z<https?://app\.screencastify\.com/v[23]/watch/(?P<id>[^/?#]+)rk   Nr   r   r   r   rk  rk  +  s/        .GGJ  MM  NJLLLr   rk  c                       e Zd ZdZdZdZdZdS )ScrippsNetworksIE yt_dlp.extractor.scrippsnetworksScrippsNetworkszhttps?://(?:www\.)?(?P<site>cookingchanneltv|discovery|(?:diy|food)network|hgtv|travelchannel)\.com/videos/[0-9a-z-]+-(?P<id>\d+)rk   Nr   r   r   r   rn  rn  +  s%        0GG XJLLLr   rn  c                       e Zd ZdZdZdS )AWSIEzyt_dlp.extractor.awsAWSNr   r   r   r   rr  rr  +  r.  r   rr  c                       e Zd ZdZdZdZdZdS )ScrippsNetworksWatchIEro  zscrippsnetworks:watchar  (?x)
                    https?://
                        watch\.
                        (?P<site>geniuskitchen)\.com/
                        (?:
                            player\.[A-Z0-9]+\.html\#|
                            show/(?:[^/]+/){2}|
                            player/
                        )
                        (?P<id>\d+)
                    rk   Nr   r   r   r   ru  ru  +  s%        0G%G VJLLLr   ru  c                   "    e Zd ZdZdZdZdZdZdS )ScrolllerIEzyt_dlp.extractor.scrolller	Scrolllerz0https?://(?:www\.)?scrolller\.com/(?P<id>[\w-]+)r   rk   Nr  r   r   r   rw  rw  +  s'        *GGFJILLLr   rw  c                       e Zd ZdZdZdZdZdS )SejmIEzyt_dlp.extractor.sejmplsejm)zqhttps?://(?:www\.)?sejm\.gov\.pl/[Ss]ejm(?P<term>\d+)\.nsf/transmisje(?:_arch)?\.xsp(?:\?[^#]*)?#(?P<id>[\dA-F]+)zvhttps?://(?:www\.)?sejm\.gov\.pl/[Ss]ejm(?P<term>\d+)\.nsf/transmisje(?:_arch)?\.xsp\?(?:[^#]+&)?unid=(?P<id>[\dA-F]+)zZhttps?://sejm-embed\.redcdn\.pl/[Ss]ejm(?P<term>\d+)\.nsf/VideoFrame\.xsp/(?P<id>[\dA-F]+)rl   Nr   r   r   r   rz  rz  +  s%        'GG uJLLLr   rz  c                       e Zd ZdZdZdZdZdS )SenIEzyt_dlp.extractor.senSenz4https?://(?:www\.)?sen\.com/video/(?P<id>[0-9a-f-]+)rk   Nr   r   r   r   r}  r}  ,  r  r   r}  c                   "    e Zd ZdZdZdZdZdZdS )SenalColombiaLiveIEzyt_dlp.extractor.senalcolombiaSenalColombiaLivez:https?://(?:www\.)?senalcolombia\.tv/(?P<id>senal-en-vivo)Frk   Nr  r   r   r   r  r  
,  s'        .G!GOJHLLLr   r  c                       e Zd ZdZdZdZdZdS )SenateGovIEyt_dlp.extractor.senategovz
senate.govzhttps?://(?:www\.)?(?:agriculture|aging|appropriations|armed\-services|banking|budget|commerce|energy|epw|finance|foreign|help|intelligence|inaugural|judiciary|rules|sbc|veterans)\.senate\.govrk   Nr   r   r   r   r  r  ,  s%        *GG XJLLLr   r  c                       e Zd ZdZdZdZdZdS )SenateISVPIEr  zsenate.gov:isvpz1https?://(?:www\.)?senate\.gov/isvp/?\?(?P<qs>.+)rk   Nr   r   r   r   r  r  ,  s"        *GGGJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )SendtoNewsIEzyt_dlp.extractor.sendtonews
SendtoNewszVhttps?://embed\.sendtonews\.com/player2/embedplayer\.php\?.*\bSC=(?P<id>[0-9A-Za-z-]+)Frl   Nr  r   r   r   r  r   ,  s'        +GGnJHLLLr   r  c                       e Zd ZdZdZdZdZdS )ServusIEzyt_dlp.extractor.servusServusa^  (?x)
                    https?://
                        (?:www\.)?
                        (?:
                            servus\.com/(?:(?:at|de)/p/[^/]+|tv/videos)|
                            (?:servustv|pm-wissen)\.com/(?:[^/]+/)?v(?:ideos)?
                        )
                        /(?P<id>[aA]{2}-?\w+|\d+-\d+)
                    rk   Nr   r   r   r   r  r  (,  s%        'GG @JLLLr   r  c                       e Zd ZdZdZdZdZdS )SevenPlusIEzyt_dlp.extractor.sevenplus7pluszQhttps?://(?:www\.)?7plus\.com\.au/(?P<path>[^?]+\?.*?\bepisode-id=(?P<id>[^&#]+))rk   Nr   r   r   r   r  r  /,  s"        *GGiJLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )SexuIEzyt_dlp.extractor.sexuSexuz(https?://(?:www\.)?sexu\.com/(?P<id>\d+)Fr   rk   Nr  r   r   r   r  r  6,  s,        %GG>JHILLLr   r  c                       e Zd ZdZdZdZdZdS )SeznamZpravyArticleIEyt_dlp.extractor.seznamzpravySeznamZpravyArticlezYhttps?://(?:www\.)?(?:seznam\.cz/zpravy|seznamzpravy\.cz)/clanek/(?:[^/?#&]+)-(?P<id>\d+)rl   Nr   r   r   r   r  r  ?,  s"        -G#GpJLLLr   r  c                       e Zd ZdZdZdZdZdS )SeznamZpravyIEr  SeznamZpravyz;https?://(?:www\.)?seznamzpravy\.cz/iframe/player\?.*\bsrc=rk   Nr   r   r   r   r  r  F,  s"        -GGRJLLLr   r  c                       e Zd ZdZdZdS )ShahidBaseIEyt_dlp.extractor.shahid
ShahidBaseNr   r   r   r   r  r  M,  rW  r   r  c                   "    e Zd ZdZdZdZdZdZdS )ShahidIEr  Shahidzghttps?://shahid\.mbc\.net/[a-z]{2}/(?:serie|show|movie)s/[^/]+/(?P<type>episode|clip|movie)-(?P<id>\d+)shahidrk   Nr   r   r   r   r  r  R,  s'        'GG}JNLLLr   r  c                       e Zd ZdZdZdZdZdS )ShahidShowIEr  
ShahidShowzThttps?://shahid\.mbc\.net/[a-z]{2}/(?:show|serie)s/[^/]+/(?:show|series)-(?P<id>\d+)rl   Nr   r   r   r   r  r  Z,  s"        'GGjJLLLr   r  c                   "    e Zd ZdZdZddgZdZdS )SharePointIEzyt_dlp.extractor.sharepoint
SharePointzVhttps?://[\w-]+\.sharepoint\.com/:v:/[a-z]/(?:[^/?#]+/)*(?P<id>[^/?#]{46})/?(?:$|[?#])z_https?://[\w-]+\.sharepoint\.com/(?!:v:)(?:[^/?#]+/)*stream\.aspx\?(?:[^#]+&)?id=(?P<id>[^&#]+)rk   Nr   r   r   r   r  r  a,  s/        +GGm  pV  WJLLLr   r  c                       e Zd ZdZdZdZdS )ShareVideosEmbedIEzyt_dlp.extractor.sharevideosShareVideosEmbedFNr  r   r   r   r  r  h,  s        ,G GJJJr   r  c                       e Zd ZdZdZdZdZdS )ShemarooMeIEzyt_dlp.extractor.shemaroome
ShemarooMezBhttps?://(?:www\.)?shemaroome\.com/(?:movies|shows)/(?P<id>[^?#]+)rk   Nr   r   r   r   r  r  n,  s"        +GGWJLLLr   r  c                       e Zd ZdZdZdZdZdS )ShieyIEzyt_dlp.extractor.shieyShieyz6https?://(?:www\.)?shiey\.com/videos/v/(?P<id>[^/?#]+)rk   Nr   r   r   r   r  r  u,  r	  r   r  c                       e Zd ZdZdZdZdS )ShowRoomLiveIEzyt_dlp.extractor.showroomliveShowRoomLivezkhttps?://(?:www\.)?showroom-live\.com/(?!onlive|timetable|event|campaign|news|ranking|room)(?P<id>[^/?#&]+)Nr  r   r   r   r  r  |,  s         -GG AJJJr   r  c                       e Zd ZdZdZdS )ShugiinItvBaseIErM  ShugiinItvBaseNr   r   r   r   r  r  ,  s        *GGGGr   r  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )ShugiinItvLiveIErM  ShugiinItvLivez?https?://(?:www\.)?shugiintv\.go\.jp/(?:jp|en)(?:/index\.php)?$u*   衆議院インターネット審議中継rl   c                     t                                                    o't          fdt          t          fD                        S )Nc              3   B   K   | ]}|                               V  d S r'   r  )r9   xr3   s     r   r;   z,ShugiinItvLiveIE.suitable.<locals>.<genexpr>,  s-      0r0rQC0r0r0r0r0r0rr   )r   r4   r   ShugiinItvLiveRoomIEShugiinItvVodIEr   s    `r   r4   zShugiinItvLiveIE.suitable,  sH    ww$$rS0r0r0r0rK_apJq0r0r0r-r-r)rrr   r  r   s   @r   r  r  ,  sd        *GGVJ:GLs s s s [s s s s sr   r  c                   "    e Zd ZdZdZdZdZdZdS )r  rM  ShugiinItvLiveRoomzRhttps?://(?:www\.)?shugiintv\.go\.jp/(?:jp|en)/index\.php\?room_id=(?P<id>room\d+)u3   衆議院インターネット審議中継 (中継)rk   Nr   r   r   r   r  r  ,  s'        *G"GkJCGLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )r  rM  ShugiinItvVodzghttps?://(?:www\.)?shugiintv\.go\.jp/(?:jp|en)/index\.php\?ex=VL(?:\&[^=]+=[^&]*)*\&deli_id=(?P<id>\d+)uE   衆議院インターネット審議中継 (ビデオライブラリ)rk   Nr   r   r   r   r  r  ,  s*        *GG CJUGLLLr   r  c                       e Zd ZdZdZdZdS )SibnetEmbedIEzyt_dlp.extractor.sibnetSibnetEmbedFNr  r   r   r   r  r  ,  s        'GGJJJr   r  c                       e Zd ZdZdZdS )SimplecastBaseIEyt_dlp.extractor.simplecastSimplecastBaseNr   r   r   r   r  r  ,  r  r   r  c                       e Zd ZdZdZdZdZdS )SimplecastEpisodeIEr  zsimplecast:episodezBhttps?://(?!api\.)[^/]+\.simplecast\.com/episodes/(?P<id>[^/?&#]+)rk   Nr   r   r   r   r  r  ,  s"        +G"GXJLLLr   r  c                       e Zd ZdZdZdZdZdS )SimplecastIEr  
simplecastzshttps?://(?:api\.simplecast\.com/episodes|player\.simplecast\.com)/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})rk   Nr   r   r   r   r  r  ,  s%        +GG NJLLLr   r  c                       e Zd ZdZdZdZdZdS )SimplecastPodcastIEr  zsimplecast:podcastzahttps?://(?!(?:api|cdn|embed|feeds|player)\.)(?P<id>[^/]+)\.simplecast\.com(?!/episodes/[^/?&#]+)rl   Nr   r   r   r   r  r  ,  s"        +G"GwJLLLr   r  c                       e Zd ZdZdZdZdZdS )SinaIEzyt_dlp.extractor.sinaSinaa  (?x)https?://(?:[^/?#]+\.)?video\.sina\.com\.cn/
                        (?:
                            (?:view/|.*\#)(?P<id>\d+)|
                            .+?/(?P<pseudo_id>[^/?#]+)(?:\.s?html)|
                            # This is used by external sites like Weibo
                            api/sinawebApi/outplay.php/(?P<token>.+?)\.swf
                        )
                  rk   Nr   r   r   r   r  r  ,  s%        %GG jJLLLr   r  c                       e Zd ZdZdZdZdZdS )SkebIEzyt_dlp.extractor.skebSkebz=https?://skeb\.jp/@(?P<uploader_id>[^/?#]+)/works/(?P<id>\d+)r   Nr   r   r   r   r  r  ,  s"        %GGRJLLLr   r  c                       e Zd ZdZdZdS )SkyItBaseIEyt_dlp.extractor.skyit	SkyItBaseNr   r   r   r   r  r  ,  r   r   r  c                       e Zd ZdZdZdZdZdS )SkyItIEr  zsky.itzNhttps?://(?:sport|tg24)\.sky\.it(?:/[^/]+)*/\d{4}/\d{2}/\d{2}/(?P<id>[^/?&#]+)rk   Nr   r   r   r   r  r  ,  s"        &GGfJLLLr   r  c                       e Zd ZdZdZdZdZdS )CieloTVItIEr  z
cielotv.itz8https?://(?:www\.)?cielotv\.it/video/(?P<id>[^.]+)\.htmlrk   Nr   r   r   r   r  r  ,  "        &GGNJLLLr   r  c                       e Zd ZdZdZdZdZdS )SkyItArteIEr  zarte.sky.itz-https?://arte\.sky\.it/video/(?P<id>[^/?&#]+)rk   Nr   r   r   r   r  r  ,  rG  r   r  c                       e Zd ZdZdZdZdS )SkyItPlayerIEr  zplayer.sky.itzNhttps?://player\.sky\.it/player/(?:external|social)\.html\?.*?\bid=(?P<id>\d+)Nr  r   r   r   r  r  ,  s        &GGgJJJr   r  c                       e Zd ZdZdZdZdZdS )SkyItVideoIEr  zvideo.sky.itzVhttps?://(?:masterchef|video|xfactor)\.sky\.it(?:/[^/]+)*/video/[0-9a-z-]+-(?P<id>\d+)rk   Nr   r   r   r   r  r  ,  s"        &GGlJLLLr   r  c                       e Zd ZdZdZdZdZdS )SkyItVideoLiveIEr  zvideo.sky.it:livez0https?://video\.sky\.it/diretta/(?P<id>[^/?&#]+)rk   Nr   r   r   r   r  r  ,  s"        &G!GEJLLLr   r  c                       e Zd ZdZdZdZdZdS )SkyNewsAUIEzyt_dlp.extractor.skynewsau	SkyNewsAUzMhttps?://(?:www\.)?skynews\.com\.au/[^/]+/[^/]+/[^/]+/video/(?P<id>[a-z0-9]+)rk   Nr   r   r   r   r  r  ,  s"        *GGcJLLLr   r  c                       e Zd ZdZdZdS )SkyNewsArabiaBaseIEyt_dlp.extractor.skynewsarabiaSkyNewsArabiaBaseNr   r   r   r   r  r  -  r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )SkyNewsArabiaArticleIEr  zskynewsarabia:articlez@https?://(?:www\.)?skynewsarabia\.com/web/article/(?P<id>[0-9]+)Fr   Nr  r   r   r   r  r  -  s'        .G%GUJHLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )SkyNewsArabiaIEr  zskynewsarabia:videoz>https?://(?:www\.)?skynewsarabia\.com/web/video/(?P<id>[0-9]+)Frk   Nr  r   r   r   r  r  -  s'        .G#GSJHLLLr   r  c                       e Zd ZdZdZdS )	SkyBaseIEyt_dlp.extractor.skySkyBaseNr   r   r   r   r  r  -  r  r   r  c                       e Zd ZdZdZdZdZdS )	SkyNewsIEr  zsky:newsz7https?://news\.sky\.com/video/[0-9a-z-]+-(?P<id>[0-9]+)rk   Nr   r   r   r   r  r   -  s"        $GGLJLLLr   r  c                       e Zd ZdZdZdZdZdS )SkyNewsStoryIEr  zsky:news:storyz7https?://news\.sky\.com/story/[0-9a-z-]+-(?P<id>[0-9]+)rk   Nr   r   r   r   r  r  '-  s"        $GGLJLLLr   r  c                       e Zd ZdZdZdZdZdS )SkySportsIEr  z
sky:sportszEhttps?://(?:www\.)?skysports\.com/watch/video/([^/]+/)*(?P<id>[0-9]+)rk   Nr   r   r   r   r  r  .-  "        $GGZJLLLr   r  c                       e Zd ZdZdZdZdZdS )SkySportsNewsIEr  zsky:sports:newsz?https?://(?:www\.)?skysports\.com/([^/]+/)*news/\d+/(?P<id>\d+)rl   Nr   r   r   r   r  r  5-  s"        $GGVJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )SkylineWebcamsIEzyt_dlp.extractor.skylinewebcamsSkylineWebcamszRhttps?://(?:www\.)?skylinewebcams\.com/[^/]+/webcam/(?:[^/]+/)+(?P<id>[^/]+)\.htmlFrk   Nr  r   r   r   r  r  <-  s'        /GGhJHLLLr   r  c                       e Zd ZdZdZdZdZdS )SlidesLiveIEzyt_dlp.extractor.slideslive
SlidesLivezDhttps?://slideslive\.com/(?:embed/(?:presentation/)?)?(?P<id>[0-9]+)r   Nr   r   r   r   r  r  D-  s"        +GGXJLLLr   r  c                       e Zd ZdZdZdZdZdS )SlideshareIEzyt_dlp.extractor.slideshare
Slidesharez>https?://(?:www\.)?slideshare\.net/[^/]+?/(?P<title>.+?)($|\?)rk   Nr   r   r   r   r  r  K-  r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )
SlutloadIEzyt_dlp.extractor.slutloadSlutloadzQhttps?://(?:\w+\.)?slutload\.com/(?:video/[^/]+|embed_player|watch)/(?P<id>[^/]+)r   rk   Nr  r   r   r   r
  r
  R-  s'        )GGgJILLLr   r
  c                       e Zd ZdZdZdS )SmotrimBaseIEyt_dlp.extractor.smotrimSmotrimBaseNr   r   r   r   r  r  Z-  r   r   r  c                       e Zd ZdZdZdZdZdS )SmotrimAudioIEr  zsmotrim:audiozOhttps?://(?:(?:player|www)\.)?smotrim\.ru(?:/iframe)?/audio(?:/id)?/(?P<id>\d+)rk   Nr   r   r   r   r  r  _-  s"        (GGeJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	SmotrimIEr  smotrimzT(?:https?:)?//(?:(?:player|www)\.)?smotrim\.ru(?:/iframe)?/video(?:/id)?/(?P<id>\d+)   rk   Nr  r   r   r   r  r  f-  s'        (GGjJILLLr   r  c                       e Zd ZdZdZdZdZdS )SmotrimLiveIEr  zsmotrim:liveaB  (?x:
        (?:https?:)?//
            (?:(?:(?:test)?player|www)\.)?
            (?:
                smotrim\.ru|
                vgtrk\.com
            )
            (?:/iframe)?/
            (?P<type>
                channel|
                (?:audio-)?live
            )
            (?:/u?id)?/(?P<id>[\da-f-]+)
    )rk   Nr   r   r   r   r  r  n-  s%        (GG gJLLLr   r  c                       e Zd ZdZdZdZdZdS )SmotrimPlaylistIEr  zsmotrim:playlistzMhttps?://smotrim\.ru/(?P<type>brand|podcast)/(?P<id>\d+)/?(?P<season>[\w-]+)?rl   Nr   r   r   r   r  r  u-  s"        (G GcJLLLr   r  c                       e Zd ZdZdZdZdZdS )SnapchatSpotlightIEzyt_dlp.extractor.snapchatSnapchatSpotlightz6https?://(?:www\.)?snapchat\.com/spotlight/(?P<id>\w+)rk   Nr   r   r   r   r  r  |-  s"        )G!GLJLLLr   r  c                       e Zd ZdZdZdZdZdS )SnotrIEzyt_dlp.extractor.snotrSnotrz6http?://(?:www\.)?snotr\.com/video/(?P<id>\d+)/([\w]+)rk   Nr   r   r   r   r  r  -  r&  r   r  c                   "    e Zd ZdZdZdZdZdZdS )SoftWhiteUnderbellyIEz$yt_dlp.extractor.softwhiteunderbellySoftWhiteUnderbellyzAhttps?://(?:www\.)?softwhiteunderbelly\.com/videos/(?P<id>[\w-]+)softwhiteunderbellyrk   Nr   r   r   r   r!  r!  -  s'        4G#GWJ*NLLLr   r!  c                       e Zd ZdZdZdZdZdS )SohuIEyt_dlp.extractor.sohuSohuzJhttps?://(?P<mytv>my\.)?tv\.sohu\.com/.+?/(?(mytv)|n)(?P<id>\d+)\.shtml.*?r   Nr   r   r   r   r%  r%  -  s"        %GGbJLLLr   r%  c                       e Zd ZdZdZdZdZdS )SohuVIEr&  SohuVz8https?://tv\.sohu\.com/v/(?P<id>[\w=-]+)\.html(?:$|[#?])r   Nr   r   r   r   r)  r)  -  s"        %GGOJLLLr   r)  c                   "    e Zd ZdZdZdZdZdZdS )	SonyLIVIEyt_dlp.extractor.sonylivSonyLIVa  (?x)
                     (?:
                        sonyliv:|
                        https?://(?:www\.)?sonyliv\.com/(?:s(?:how|port)s/[^/]+|movies|clip|trailer|music-videos)/[^/?#&]+-
                    )
                    (?P<id>\d+)
                  sonylivrk   Nr   r   r   r   r,  r,  -  s*        (GG aJNLLLr   r,  c                       e Zd ZdZdZdZdZdS )SonyLIVSeriesIEr-  SonyLIVSerieszIhttps?://(?:www\.)?sonyliv\.com/shows/[^/?#&]+-(?P<id>\d{10})/?(?:$|[?#])rl   Nr   r   r   r   r1  r1  -  s"        (GG_JLLLr   r1  c                       e Zd ZdZdZdZdS )SoundcloudEmbedIEyt_dlp.extractor.soundcloudSoundcloudEmbedzDhttps?://(?:w|player|p)\.soundcloud\.com/player/?.*?\burl=(?P<id>.+)Nr  r   r   r   r4  r4  -  s        +GGZJJJr   r4  c                       e Zd ZdZdZdZdS )SoundcloudBaseIEr5  SoundcloudBase
soundcloudNrz   r   r   r   r8  r8  -  r  r   r8  c                   "    e Zd ZdZdZdZdZdZdS )SoundcloudIEr5  r:  a  (?x)^(?:https?://)?
                    (?:(?:(?:www\.|m\.)?soundcloud\.com/
                            (?!stations/track)
                            (?P<uploader>[\w\d-]+)/
                            (?!(?:tracks|albums|sets(?:/.+?)?|reposts|likes|spotlight|comments)/?(?:$|[?#]))
                            (?P<title>[\w\d-]+)
                            (?:/(?P<token>(?!(?:albums|sets|recommended))[^?]+?))?
                            (?:[?].*)?$)
                       |(?:api(?:-v2)?\.soundcloud\.com/tracks/(?:soundcloud%3Atracks%3A)?(?P<track_id>\d+)
                          (?:/?\?secret_token=(?P<secret_token>[^&]+))?)
                    )
                    rk   Nr   r   r   r   r<  r<  -  s*        +GG RJ!NLLLr   r<  c                       e Zd ZdZdZdZdS )SoundcloudPlaylistBaseIEr5  SoundcloudPlaylistBaser:  Nrz   r   r   r   r>  r>  -  s        +G&G!NNNr   r>  c                   "    e Zd ZdZdZdZdZdZdS )SoundcloudPlaylistIEr5  zsoundcloud:playlistzhttps?://api(?:-v2)?\.soundcloud\.com/playlists/(?:soundcloud(?:%3A|:)playlists(?:%3A|:))?(?P<id>[0-9]+)(?:/?\?secret_token=(?P<token>[^&]+?))?$r:  rl   Nr   r   r   r   rA  rA  -  s*        +G#G gJ!NLLLr   rA  c                       e Zd ZdZdZdZdS )SoundcloudPagedPlaylistBaseIEr5  SoundcloudPagedPlaylistBaser:  Nrz   r   r   r   rC  rC  -  s        +G+G!NNNr   rC  c                   "    e Zd ZdZdZdZdZdZdS )SoundcloudRelatedIEr5  zsoundcloud:relatedzjhttps?://(?:(?:www|m)\.)?soundcloud\.com/(?P<slug>[\w\d-]+/[\w\d-]+)/(?P<relation>albums|sets|recommended)r:  rl   Nr   r   r   r   rF  rF  -  s*        +G"G DJ!NLLLr   rF  c                   *    e Zd ZdZdZdZdZdZdZdZ	dS )	SoundcloudSearchIEr5  zsoundcloud:searchz7scsearch(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)zSoundcloud searchr:  scsearchrl   Nr   r   r   r   rH  rH  -  s1        +G!GLJ!G!NJLLLr   rH  c                   "    e Zd ZdZdZdZdZdZdS )SoundcloudSetIEr5  zsoundcloud:setzuhttps?://(?:(?:www|m)\.)?soundcloud\.com/(?P<uploader>[\w\d-]+)/sets/(?P<slug_title>[:\w\d-]+)(?:/(?P<token>[^?/]+))?r:  rl   Nr   r   r   r   rK  rK  -  s*        +GG OJ!NLLLr   rK  c                   "    e Zd ZdZdZdZdZdZdS )SoundcloudTrackStationIEr5  zsoundcloud:trackstationzNhttps?://(?:(?:www|m)\.)?soundcloud\.com/stations/track/[^/]+/(?P<id>[^/?#&]+)r:  rl   Nr   r   r   r   rM  rM  -  s'        +G'GcJ!NLLLr   rM  c                   "    e Zd ZdZdZdZdZdZdS )SoundcloudUserIEr5  zsoundcloud:useram  (?x)
                        https?://
                            (?:(?:www|m)\.)?soundcloud\.com/
                            (?P<user>[^/]+)
                            (?:/
                                (?P<rsrc>tracks|albums|sets|reposts|likes|spotlight|comments)
                            )?
                            /?(?:[?#].*)?$
                    r:  rl   Nr   r   r   r   rO  rO  -  s*        +GG KJ!NLLLr   rO  c                   "    e Zd ZdZdZdZdZdZdS )SoundcloudUserPermalinkIEr5  zsoundcloud:user:permalinkz/https?://api\.soundcloud\.com/users/(?P<id>\d+)r:  rl   Nr   r   r   r   rQ  rQ  .  s'        +G)GEJ!NLLLr   rQ  c                       e Zd ZdZdZdZdZdS )SoundgasmIEyt_dlp.extractor.soundgasm	soundgasmz[https?://(?:www\.)?soundgasm\.net/u/(?P<user>[0-9a-zA-Z_-]+)/(?P<display_id>[0-9a-zA-Z_-]+)rk   Nr   r   r   r   rS  rS  	.  s"        *GGpJLLLr   rS  c                       e Zd ZdZdZdZdZdS )SoundgasmProfileIErT  zsoundgasm:profilez=https?://(?:www\.)?soundgasm\.net/u/(?P<id>[^/]+)/?(?:\#.*)?$rl   Nr   r   r   r   rW  rW  .  s"        *G!GSJLLLr   rW  c                       e Zd ZdZdZdZdZdS )SouthParkCoUkIEyt_dlp.extractor.southparkzsouthparkstudios.co.ukz_https?://(?:www\.)?southparkstudios\.co\.uk/(?:video-clips|collections|episodes)/(?P<id>[^?#]+)rk   Nr   r   r   r   rY  rY  .  s"        *G&GuJLLLr   rY  c                       e Zd ZdZdZdZdZdS )SouthParkComBrIErZ  zsouthparkstudios.com.brzrhttps?://(?:www\.)?southparkstudios\.com\.br/(?:en/)?(?:video-clips|episodios|collections|episodes)/(?P<id>[^?#]+)rk   Nr   r   r   r   r\  r\  .  s%        *G'G IJLLLr   r\  c                       e Zd ZdZdZdZdZdS )SouthParkDeIErZ  zsouthpark.dezmhttps?://(?:www\.)?southpark\.de/(?:en/)?(?:videoclip|collections|episodes|video-clips|folgen)/(?P<id>[^?#]+)rk   Nr   r   r   r   r^  r^  %.  s%        *GG CJLLLr   r^  c                       e Zd ZdZdZdZdZdS )SouthParkDkIErZ  zsouthparkstudios.nuz[https?://(?:www\.)?southparkstudios\.nu/(?:video-clips|episodes|collections)/(?P<id>[^?#]+)rk   Nr   r   r   r   r`  r`  ,.  s"        *G#GpJLLLr   r`  c                       e Zd ZdZdZdZdZdS )SouthParkEsIErZ  u   southpark.cc.com:españolzAhttps?://(?:www\.)?southpark\.cc\.com/es/episodios/(?P<id>[^?#]+)rk   Nr   r   r   r   rb  rb  3.  s"        *G)GWJLLLr   rb  c                       e Zd ZdZdZdZdZdS )SouthParkIErZ  zsouthpark.cc.comzehttps?://(?:www\.)?southpark(?:\.cc|studios)\.com/(?:video-clips|episodes|collections)/(?P<id>[^?#]+)rk   Nr   r   r   r   rd  rd  :.  s"        *G G{JLLLr   rd  c                       e Zd ZdZdZdZdZdS )SouthParkLatIErZ  zsouthpark.latzfhttps?://(?:www\.)?southpark\.lat/(?:en/)?(?:video-?clips?|collections|episod(?:e|io)s)/(?P<id>[^?#]+)rk   Nr   r   r   r   rf  rf  A.  s"        *GG{JLLLr   rf  c                       e Zd ZdZdZdS )SovietsClosetBaseIEyt_dlp.extractor.sovietsclosetSovietsClosetBaseNr   r   r   r   rh  rh  H.  r  r   rh  c                       e Zd ZdZdZdZdZdS )SovietsClosetIEri  SovietsClosetz<https?://(?:www\.)?sovietscloset\.com/video/(?P<id>[0-9]+)/?rk   Nr   r   r   r   rl  rl  M.  s"        .GGQJLLLr   rl  c                       e Zd ZdZdZdZdZdS )SovietsClosetPlaylistIEri  SovietsClosetPlaylistz=https?://(?:www\.)?sovietscloset\.com/(?!video)(?P<id>[^#?]+)rl   Nr   r   r   r   ro  ro  T.  s"        .G%GRJLLLr   ro  c                   "    e Zd ZdZdZdZdZdZdS )SpankBangIEyt_dlp.extractor.spankbang	SpankBanga0  (?x)
                    https?://
                        (?:[^/]+\.)?spankbang\.com/
                        (?:
                            (?P<id>[\da-z]+)/(?:video|play|embed)\b|
                            [\da-z]+-(?P<id_2>[\da-z]+)/playlist/[^/?#&]+
                        )
                    r   rk   Nr  r   r   r   rr  rr  [.  s*        *GG QJILLLr   rr  c                       e Zd ZdZdZdZdZdS )SpankBangPlaylistIErs  SpankBangPlaylistzShttps?://(?:[^/]+\.)?spankbang\.com/(?P<id>[\da-z]+)/playlist/(?P<display_id>[^/]+)rl   Nr   r   r   r   rv  rv  c.  s"        *G!GiJLLLr   rv  c                       e Zd ZdZdZdZdZdS )	SpiegelIEzyt_dlp.extractor.spiegelSpiegelzhttps?://(?:www\.)?(?:spiegel|manager-magazin)\.de(?:/[^/]+)+/[^/]*-(?P<id>[0-9]+|[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})(?:-embed|-iframe)?(?:\.html)?(?:$|[#?])rk   Nr   r   r   r   ry  ry  j.  s%        (GG NJLLLr   ry  c                       e Zd ZdZdZdZdZdS )Sport5IEzyt_dlp.extractor.sport5Sport5zBhttps?://(?:www|vod)?\.sport5\.co\.il/.*\b(?:Vi|docID)=(?P<id>\d+)rk   Nr   r   r   r   r|  r|  q.  s"        'GGZJLLLr   r|  c                   "    e Zd ZdZdZdZdZdZdS )
SportBoxIEzyt_dlp.extractor.sportboxSportBoxzUhttps?://(?:news\.sportbox|matchtv)\.ru/vdl/player(?:/[^/]+/|\?.*?\bn?id=)(?P<id>\d+)Frk   Nr  r   r   r   r  r  x.  s'        )GGmJHLLLr   r  c                       e Zd ZdZdZdZdZdS )SportDeutschlandIEz!yt_dlp.extractor.sportdeutschlandsporteuropezChttps?://(?:player\.)?sporteurope\.tv/(?P<id>(?:[^/?#]+/)?[^?#/&]+)r   Nr   r   r   r   r  r  .  s"        1GGXJLLLr   r  c                   "    e Zd ZdZdZddgZdZdS )
SpreakerIEyt_dlp.extractor.spreakerSpreakerzMhttps?://api\.spreaker\.com/(?:(?:download/)?episode|v2/episodes)/(?P<id>\d+)zHhttps?://(?:www\.)?spreaker\.com/episode/[^#?/]*?(?P<id>\d+)/?(?:[?#]|$)rk   Nr   r   r   r   r  r  .  s/        )GGd  gt  uJLLLr   r  c                   "    e Zd ZdZdZg dZdZdS )SpreakerShowIEr  SpreakerShow)z,https?://api\.spreaker\.com/show/(?P<id>\d+)z>https?://(?:www\.)?spreaker\.com/podcast/[\w-]+--(?P<id>[\d]+)z?https?://(?:www\.)?spreaker\.com/show/(?P<id>\d+)/episodes/feedrl   Nr   r   r   r   r  r  .  s1        )GG Q  Q  QJLLLr   r  c                       e Zd ZdZdZdZdZdS )SpringboardPlatformIEz$yt_dlp.extractor.springboardplatformSpringboardPlatformaU  (?x)
                    https?://
                        cms\.springboardplatform\.com/
                        (?:
                            (?:previews|embed_iframe)/(?P<index>\d+)/video/(?P<id>\d+)|
                            xml_feeds_advanced/index/(?P<index_2>\d+)/rss3/(?P<id_2>\d+)
                        )
                    rk   Nr   r   r   r   r  r  .  s%        4G#G vJLLLr   r  c                       e Zd ZdZdZdZdZdS )SproutVideoIEyt_dlp.extractor.sproutvideoSproutVideozAhttps?://videos\.sproutvideo\.com/embed/(?P<id>[\da-f]+)/[\da-f]+rk   Nr   r   r   r   r  r  .  rX
  r   r  c                       e Zd ZdZdZdZdS )WrestleUniverseBaseIE yt_dlp.extractor.wrestleuniverseWrestleUniverseBasewrestleuniverseNrz   r   r   r   r  r  .  r2  r   r  c                       e Zd ZdZdZdZdS )StacommuBaseIEyt_dlp.extractor.stacommuStacommuBasestacommuNrz   r   r   r   r  r  .  r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )StacommuLiveIEr  StacommuLivez;https?://www\.stacommu\.jp/(?:en/)?live/(?P<id>[\da-zA-Z]+)r  rk   Nr   r   r   r   r  r  .  s'        )GGQJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )StacommuVODIEr  StacommuVODzFhttps?://www\.stacommu\.jp/(?:en/)?videos/episodes/(?P<id>[\da-zA-Z]+)r  rk   Nr   r   r   r   r  r  .  s'        )GG\JNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )StagePlusVODConcertIEzyt_dlp.extractor.stageplusStagePlusVODConcertz@https?://(?:www\.)?stage-plus\.com/video/(?P<id>vod_concert_\w+)	stageplusrl   Nr   r   r   r   r  r  .  s'        *G#GVJ NLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )StanfordOpenClassroomIEzyt_dlp.extractor.stanfordoc
stanfordoczhttps?://openclassroom\.stanford\.edu(?P<path>/?|(/MainFolder/(?:HomePage|CoursePage|VideoPage)\.php([?]course=(?P<course>[^&]+)(&video=(?P<video>[^&]+))?(&.*)?)?))$zStanford Open ClassRoomrk   Nr   r   r   r   r  r  .  s*        +GG |J'GLLLr   r  c                       e Zd ZdZdZdZdZdS )StarTVIEzyt_dlp.extractor.startvstartvz(?x)
        https?://(?:www\.)?startv\.com\.tr/
        (?:
            (?:dizi|program)/(?:[^/?#&]+)/(?:bolumler|fragmanlar|ekstralar)|
            video/arsiv/(?:dizi|program)/(?:[^/?#&]+)
        )/
        (?P<id>[^/?#&]+)
    rk   Nr   r   r   r   r  r  .  s%        'GG FJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
StarTrekIEzyt_dlp.extractor.startrekstartrekzIhttps?://(?:www\.)?startrek\.com(?:/en-(?:ca|un))?/videos/(?P<id>[^/?#]+)z	STAR TREKrk   Nr   r   r   r   r  r  .  s'        )GG^JGLLLr   r  c                       e Zd ZdZdZdZdZdS )SteamCommunityBroadcastIEyt_dlp.extractor.steamSteamCommunityBroadcastzBhttps?://(?:www\.)?steamcommunity\.com/broadcast/watch/(?P<id>\d+)rk   Nr   r   r   r   r  r  .  s"        &G'GXJLLLr   r  c                       e Zd ZdZdZdZdZdS )SteamCommunityIEr  SteamCommunityzahttps?://(?:www\.)?steamcommunity\.com/sharedfiles/filedetails(?:/?\?(?:[^#]+&)?id=|/)(?P<id>\d+)rk   Nr   r   r   r   r  r  .  s"        &GGxJLLLr   r  c                       e Zd ZdZdZdZdZdS )SteamIEr  SteamzYhttps?://store\.steampowered\.com(?:/agecheck)?/app/(?P<id>\d+)/?(?:[^?/#]+/?)?(?:[?#]|$)rl   Nr   r   r   r   r  r  .  s"        &GGoJLLLr   r  c                       e Zd ZdZdZdS )StitcherBaseIEyt_dlp.extractor.stitcherStitcherBaseNr   r   r   r   r  r  .  r  r   r  c                       e Zd ZdZdZdZdZdS )
StitcherIEr  Stitcherzchttps?://(?:www\.)?stitcher\.com/(?:podcast|show)/(?:[^/]+/)+e(?:pisode)?/(?:[^/#?&]+-)?(?P<id>\d+)rk   Nr   r   r   r   r  r  .  s"        )GGyJLLLr   r  c                       e Zd ZdZdZdZdZdS )StitcherShowIEr  StitcherShowzOhttps?://(?:www\.)?stitcher\.com/(?:podcast|show)/(?P<id>[^/#?&]+)/?(?:[?#&]|$)rl   Nr   r   r   r   r  r  .  s"        )GGdJLLLr   r  c                       e Zd ZdZdZdS )StoryFireBaseIEyt_dlp.extractor.storyfireStoryFireBaseNr   r   r   r   r  r  /  r&  r   r  c                       e Zd ZdZdZdZdZdS )StoryFireIEr  	StoryFirezDhttps?://(?:www\.)?storyfire\.com/video-details/(?P<id>[0-9a-f]{24})rk   Nr   r   r   r   r  r  /  "        *GGYJLLLr   r  c                       e Zd ZdZdZdZdZdS )StoryFireSeriesIEr  StoryFireSerieszGhttps?://(?:www\.)?storyfire\.com/write/series/stories/(?P<id>[^/?&#]+)rl   Nr   r   r   r   r  r  /  s"        *GG\JLLLr   r  c                       e Zd ZdZdZdZdZdS )StoryFireUserIEr  StoryFireUserz:https?://(?:www\.)?storyfire\.com/user/(?P<id>[^/]+)/videorl   Nr   r   r   r   r  r  /  s"        *GGOJLLLr   r  c                   "    e Zd ZdZdZddgZdZdS )	StreaksIEr  Streakszohttps?://players\.streaks\.jp/(?P<project_id>[\w-]+)/[\da-f]+/index\.html\?(?:[^#]+&)?m=(?P<id>(?:ref:)?[\w-]+)zehttps?://playback\.api\.streaks\.jp/v1/projects/(?P<project_id>[\w-]+)/medias/(?P<id>(?:ref:)?[\w-]+)rk   Nr   r   r   r   r  r   /  s2        (GG K  My  zJLLLr   r  c                       e Zd ZdZdZdZdZdS )
StreamCZIEzyt_dlp.extractor.streamczStreamCZz]https?://(?:www\.)?(?:stream|televizeseznam)\.cz/[^?#]+/(?P<display_id>[^?#]+)-(?P<id>[0-9]+)rk   Nr   r   r   r   r  r  '/  r  r   r  c                       e Zd ZdZdZdZdZdS )StreamableIEzyt_dlp.extractor.streamable
Streamablez.https?://streamable\.com/(?:[es]/)?(?P<id>\w+)rk   Nr   r   r   r   r  r  ./  s"        +GGCJLLLr   r  c                       e Zd ZdZdZdZdZdS )StreetVoiceIEzyt_dlp.extractor.streetvoiceStreetVoicez>https?://(?:.+?\.)?streetvoice\.com/[^/]+/songs/(?P<id>[0-9]+)rk   Nr   r   r   r   r  r  5/  "        ,GGSJLLLr   r  c                       e Zd ZdZdZdZdZdS )StretchInternetIEz yt_dlp.extractor.stretchinternetStretchInternetzZhttps?://portal\.stretchinternet\.com/[^/]+/(?:portal|full)\.htm\?.*?\beventId=(?P<id>\d+)rk   Nr   r   r   r   r  r  </  s"        0GGsJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )StripchatIEzyt_dlp.extractor.stripchat	Stripchatz'https?://stripchat\.com/(?P<id>[^/?#]+)r   rk   Nr  r   r   r   r  r  C/  s'        *GG;JILLLr   r  c                       e Zd ZdZdZdS )SubsplashBaseIEyt_dlp.extractor.subsplashSubsplashBaseNr   r   r   r   r  r  K/  r&  r   r  c                   "    e Zd ZdZdZddgZdZdS )SubsplashIEr  	SubsplashzPhttps?://(?:www\.)?subsplash\.com/(?:u/)?[^/?#]+/[^/?#]+/(?:d/|mi/\+)(?P<id>\w+)z*https?://(?:\w+\.)?subspla\.sh/(?P<id>\w+)rk   Nr   r   r   r   r  r  P/  s/        *GGh  k[  \JLLLr   r  c                       e Zd ZdZdZdZdZdS )SubsplashPlaylistIEr  zsubsplash:playlistzOhttps?://(?:www\.)?subsplash\.com/[^/?#]+/(?:our-videos|media)/ms/\+(?P<id>\w+)rl   Nr   r   r   r   r  r  W/  s"        *G"GfJLLLr   r  c                       e Zd ZdZdZdZdZdS )
SubstackIEzyt_dlp.extractor.substackSubstackz/https?://[\w-]+\.substack\.com/p/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  ^/  r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )
SunPornoIEzyt_dlp.extractor.sunpornoSunPornozShttps?://(?:(?:www\.)?sunporno\.com/videos|embeds\.sunporno\.com/embed)/(?P<id>\d+)r   rk   Nr  r   r   r   r  r  e/  s'        )GGkJILLLr   r  c                       e Zd ZdZdZdS )SverigesRadioBaseIEyt_dlp.extractor.sverigesradioSverigesRadioBaseNr   r   r   r   r  r  m/  r  r   r  c                       e Zd ZdZdZdZdZdS )SverigesRadioEpisodeIEr  zsverigesradio:episodezahttps?://(?:www\.)?sverigesradio\.se/(?:sida/)?avsnitt/(?:(?P<id>\d+)|(?P<slug>[\w-]+))(?:$|[#?])rk   Nr   r   r   r   r  r  r/  s"        .G%GxJLLLr   r  c                       e Zd ZdZdZdZdZdS )SverigesRadioPublicationIEr  zsverigesradio:publicationz}https?://(?:www\.)?sverigesradio\.se/(?:sida/)?(?:artikel|gruppsida)(?:\.aspx\?.*?\bartikel=(?P<id>[0-9]+)|/(?P<slug>[\w-]+))rk   Nr   r   r   r   r  r  y/  s%        .G)G WJLLLr   r  c                       e Zd ZdZdZdZdZdS )SwearnetEpisodeIEzyt_dlp.extractor.swearnetSwearnetEpisodezjhttps?://www\.swearnet\.com/shows/(?P<id>[\w-]+)/seasons/(?P<season_num>\d+)/episodes/(?P<episode_num>\d+)rk   Nr   r   r   r   r  r  /  s%        )GG CJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )SyfyIEr  Syfyzchttps?://(?:www\.)?syfy\.com/[^/?#]+/(?:season-\d+/episode-\d+/(?:videos/)?|videos/)(?P<id>[^/?#]+)r  rk   Nr  r   r   r   r  r  /  s'        $GGzJILLLr   r  c                       e Zd ZdZdZdZdZdS )SztvHuIEzyt_dlp.extractor.sztvhuSztvHuzRhttps?://(?:(?:www\.)?sztv\.hu|www\.tvszombathely\.hu)/(?:[^/]+)/.+-(?P<id>[0-9]+)rk   Nr   r   r   r   r  r  /  s"        'GGiJLLLr   r  c                       e Zd ZdZdZdZdZdS )TBSIEzyt_dlp.extractor.tbsTBSz(?x)
        https?://(?:www\.)?(?P<site>tbs|tntdrama|trutv)\.com
        (?P<path>/(?:
            (?P<watch>watch(?:tnt|tbs|trutv))|
            movies|shows/[^/?#]+/(?:clips|season-\d+/episode-\d+)
        )/(?P<id>[^/?#]+))
    rk   Nr   r   r   r   r  r  /  s%        $GG FJLLLr   r  c                       e Zd ZdZdZdS )TBSJPBaseIEyt_dlp.extractor.tbsjp	TBSJPBaseNr   r   r   r   r  r  /  r   r   r  c                       e Zd ZdZdZdZdZdS )TBSJPEpisodeIEr	  TBSJPEpisodez/https?://cu\.tbs\.co\.jp/episode/(?P<id>[\d_]+)rk   Nr   r   r   r   r  r  /  rD  r   r  c                       e Zd ZdZdZdZdZdS )TBSJPPlaylistIEr	  TBSJPPlaylistz2https?://cu\.tbs\.co\.jp/playlist/(?P<id>[\da-f]+)rl   Nr   r   r   r   r  r  /  s"        &GGIJLLLr   r  c                       e Zd ZdZdZdZdZdS )TBSJPProgramIEr	  TBSJPProgramz,https?://cu\.tbs\.co\.jp/program/(?P<id>\d+)rl   Nr   r   r   r   r  r  /  s"        &GGCJLLLr   r  c                       e Zd ZdZdZdZdZdS )TF1IEzyt_dlp.extractor.tf1TF1zVhttps?://(?:www\.)?tf1\.fr/[^/]+/(?P<program_slug>[^/]+)/videos/(?P<id>[^/?&#]+)\.htmlrk   Nr   r   r   r   r  r  /  "        $GGlJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TFOIEzyt_dlp.extractor.tfoTFOz>https?://(?:www\.)?tfo\.org/(?:en|fr)/(?:[^/]+/){2}(?P<id>\d+)Frk   Nr  r   r   r   r  r  /  s'        $GGTJHLLLr   r  c                       e Zd ZdZdZdZdZdS )TLCIEr  TLCz6https?://(?:go\.)?tlc\.com/video/(?P<id>[^/]+/[^/?#]+)rk   Nr   r   r   r   r  r  /  s"        &GGKJLLLr   r  c                       e Zd ZdZdZdZdZdS )TMZIEzyt_dlp.extractor.tmzTMZzhttps?://(?:www\.)?tmz\.com/.*rk   Nr   r   r   r   r  r  /  s"        $GG3JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	TNAFlixIErI  TNAFlixzVhttps?://(?:www\.)?(?P<host>tnaflix)\.com/[^/]+/(?P<display_id>[^/]+)/video(?P<id>\d+)r   rk   Nr  r   r   r   r"  r"  /  s'        (GGlJILLLr   r"  c                   "    e Zd ZdZdZdZdZdZdS )TNAFlixNetworkEmbedIErI  TNAFlixNetworkEmbedzAhttps?://player\.(?P<host>tnaflix|empflix)\.com/video/(?P<id>\d+)r   rk   Nr  r   r   r   r%  r%  /  s'        (G#GWJILLLr   r%  c                   &    e Zd ZdZdZdZdZdZdZdS )	TOnlineIEzyt_dlp.extractor.tonlinezt-online.deNz<https?://(?:www\.)?t-online\.de/tv/(?:[^/]+/)*id_(?P<id>\d+)Frk   rv  r   r   r   r(  r(  /  s,        (GGHRJHLLLr   r(  c                       e Zd ZdZdZdZdZdS )TV24UAVideoIEzyt_dlp.extractor.tv24uaz24tv.uazDhttps?://24tv\.ua/news/showPlayer\.do.*?(?:\?|&)objectId=(?P<id>\d+)rk   Nr   r   r   r   r*  r*  /  s"        'GG[JLLLr   r*  c                       e Zd ZdZdZdZdZdS )TV2ArticleIErE
  
TV2Articlez?https?://(?:www\.)?tv2\.no/(?!v(?:ideo)?\d*/)[^?#]+/(?P<id>\d+)rl   Nr   r   r   r   r,  r,  /  s"        $GGVJLLLr   r,  c                       e Zd ZdZdZdZdZdS )TV2DKBornholmPlayIEyt_dlp.extractor.tv2dkTV2DKBornholmPlayz4https?://play\.tv2bornholm\.dk/\?.*?\bid=(?P<id>\d+)rk   Nr   r   r   r   r/  r/  /  s"        &G!GLJLLLr   r/  c                       e Zd ZdZdZdZdZdS )TV2DKIEr0  TV2DKa  (?x)
                    https?://
                        (?:www\.)?
                        (?:
                            tvsyd|
                            tv2ostjylland|
                            tvmidtvest|
                            tv2fyn|
                            tv2east|
                            tv2lorry|
                            tv2nord|
                            tv2kosmopol
                        )\.dk/
                        (?:[^/?#]+/)*
                        (?P<id>[^/?\#&]+)
                    r   Nr   r   r   r   r3  r3  0  s%        &GG }JLLLr   r3  c                       e Zd ZdZdZdZdZdS )TV2HuIEyt_dlp.extractor.tv2huz
tv2play.huz9https?://(?:www\.)?tv2play\.hu/(?!szalag/)(?P<id>[^#&?]+)rk   Nr   r   r   r   r6  r6  	0  r  r   r6  c                       e Zd ZdZdZdZdZdS )TV2HuSeriesIEr7  ztv2playseries.huz5https?://(?:www\.)?tv2play\.hu/szalag/(?P<id>[^#&?]+)rl   Nr   r   r   r   r9  r9  0  s"        &G GJJLLLr   r9  c                       e Zd ZdZdZdZdZdS )TV2IErE
  TV2z@https?://(?:www\.)?tv2\.no/v(?:ideo)?\d*/(?:[^?#]+/)*(?P<id>\d+)rk   Nr   r   r   r   r;  r;  0  r  r   r;  c                   "    e Zd ZdZdZdZdZdZdS )TV4IEzyt_dlp.extractor.tv4TV4a9  (?x)https?://(?:www\.)?
        (?:
            tv4\.se/(?:[^/]+)/klipp/(?:.*)-|
            tv4play\.se/
            (?:
                (?:program|barn)/(?:(?:[^/]+/){1,2}|(?:[^\?]+)\?video_id=)|
                iframe/video/|
                film/|
                sport/|
            )
        )(?P<id>[0-9]+)ztv4.se and tv4play.serk   Nr   r   r   r   r>  r>  0  s*        $GG \J%GLLLr   r>  c                       e Zd ZdZdZdZdZdS )TV5MondePlusIEzyt_dlp.extractor.tv5mondeplusTV5MONDEz9https?://(?:www\.)?tv5monde\.com/tv/video/(?P<id>[^/?#]+)rk   Nr   r   r   r   rA  rA  &0  s"        -GGNJLLLr   rA  c                       e Zd ZdZdZdS )TV5UnisBaseIEyt_dlp.extractor.tv5unisTV5UnisBaseNr   r   r   r   rD  rD  -0  r   r   rD  c                   "    e Zd ZdZdZdZdZdZdS )	TV5UnisIErE  tv5uniszhttps?://(?:www\.)?tv5unis\.ca/videos/(?P<id>[^/?#]+)(?:/saisons/(?P<season_number>\d+)/episodes/(?P<episode_number>\d+))?/?(?:[?#&]|$)rb  rk   Nr  r   r   r   rH  rH  20  s*        (GG _JILLLr   rH  c                       e Zd ZdZdZdZdZdS )TV5UnisVideoIErE  ztv5unis:videoz9https?://(?:www\.)?tv5unis\.ca/videos/[^/?#]+/(?P<id>\d+)rk   Nr   r   r   r   rK  rK  :0  r   r   rK  c                       e Zd ZdZdZdZdZdS )TV8ItIEr  ztv8.itzEhttps?://(?:www\.)?tv8\.it/(?:show)?video/(?:[0-9a-z-]+-)?(?P<id>\d+)rk   Nr   r   r   r   rM  rM  A0  s"        &GG[JLLLr   rM  c                   "    e Zd ZdZdZdZdZdZdS )TV8ItLiveIEr  ztv8.it:livez$https?://(?:www\.)?tv8\.it/streamingzTV8 Liverk   Nr   r   r   r   rO  rO  H0  s'        &GG9JGLLLr   rO  c                   "    e Zd ZdZdZdZdZdZdS )TV8ItPlaylistIEr  ztv8.it:playlistz;https?://(?:www\.)?tv8\.it/(?!video)[^/#?]+/(?P<id>[^/#?]+)zTV8 Playlistrl   Nr   r   r   r   rQ  rQ  P0  s'        &GGPJGLLLr   rQ  c                   "    e Zd ZdZdZdZdZdZdS )TVAIEzyt_dlp.extractor.tvatvapluszHhttps?://(?:www\.)?tvaplus\.ca/(?:[^/?#]+/)*[\w-]+-(?P<id>\d+)(?:$|[#?])zTVA+rk   Nr   r   r   r   rS  rS  X0  s'        $GG_JGLLLr   rS  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )TVANouvellesArticleIEyt_dlp.extractor.tvanouvellesTVANouvellesArticlez?https?://(?:www\.)?tvanouvelles\.ca/(?:[^/]+/)+(?P<id>[^/?#&]+)rl   c                 ~    t                               |          rdn t                                          |          S r   )TVANouvellesIEr4   r   r   s     r   r4   zTVANouvellesArticleIE.suitablef0  s2    &//44Ouu%'':J:J3:O:OOr   r   r   s   @r   rV  rV  `0  s_        -G#GTJLP P P P [P P P P Pr   rV  c                       e Zd ZdZdZdZdZdS )rZ  rW  TVANouvellesz6https?://(?:www\.)?tvanouvelles\.ca/videos/(?P<id>\d+)rk   Nr   r   r   r   rZ  rZ  k0  "        -GGLJLLLr   rZ  c                       e Zd ZdZdZdZdZdS )TVCArticleIEyt_dlp.extractor.tvc
TVCArticlez=https?://(?:www\.)?tvc\.ru/(?!video/iframe/id/)(?P<id>[^?#]+)rk   Nr   r   r   r   r_  r_  r0  s"        $GGRJLLLr   r_  c                       e Zd ZdZdZdZdZdS )TVCIEr`  TVCz6https?://(?:www\.)?tvc\.ru/video/iframe/id/(?P<id>\d+)rk   Nr   r   r   r   rc  rc  y0  s"        $GGLJLLLr   rc  c                       e Zd ZdZdZdZdZdS )TVIPlayerIEzyt_dlp.extractor.tviplayer	TVIPlayerzHhttps?://tviplayer\.iol\.pt(/programa/[\w-]+/[a-f0-9]+)?/\w+/(?P<id>\w+)rk   Nr   r   r   r   rf  rf  0  s"        *GG`JLLLr   rf  c                   "    e Zd ZdZdZdZdZdZdS )TVN24IEzyt_dlp.extractor.tvn24TVN24zPhttps?://(?:(?!eurosport)[^/]+\.)?tvn24(?:bis)?\.pl/(?:[^/?#]+/)*(?P<id>[^/?#]+)Frk   Nr  r   r   r   ri  ri  0  s'        &GGeJHLLLr   ri  c                   "    e Zd ZdZdZdZdZdZdS )TVNoeIEzyt_dlp.extractor.tvnoetvnoez1https?://(?:www\.)?tvnoe\.cz/porad/(?P<id>[\w-]+)zTelevize Noerk   Nr   r   r   r   rl  rl  0  s'        &GGGJGLLLr   rl  c                       e Zd ZdZdZdS )TVOpenGrBaseIEyt_dlp.extractor.tvopengrTVOpenGrBaseNr   r   r   r   ro  ro  0  r  r   ro  c                   "    e Zd ZdZdZdZdZdZdS )TVOpenGrEmbedIErp  ztvopengr:embedzD(?:https?:)?//(?:www\.|cdn\.|)(?:tvopen|ethnos).gr/embed/(?P<id>\d+)ztvopen.gr embedded videosrk   Nr   r   r   r   rs  rs  0  s'        )GGZJ)GLLLr   rs  c                   "    e Zd ZdZdZdZdZdZdS )TVOpenGrWatchIErp  ztvopengr:watchzVhttps?://(?P<netloc>(?:www\.)?(?:tvopen|ethnos)\.gr)/watch/(?P<id>\d+)/(?P<slug>[^/]+)z tvopen.gr (and ethnos.gr) videosrk   Nr   r   r   r   ru  ru  0  s'        )GGlJ0GLLLr   ru  c                   &    e Zd ZdZdZdZdZdZdZdS )
TVPEmbedIEyt_dlp.extractor.tvpz	tvp:embeda  (?x)
        (?:
            tvp:
            |https?://
                (?:[^/]+\.)?
                (?:tvp(?:parlament)?\.pl|tvp\.info|tvpworld\.com|swipeto\.pl)/
                (?:sess/
                        (?:tvplayer\.php\?.*?object_id
                        |TVPlayer2/(?:embed|api)\.php\?.*[Ii][Dd])
                    |shared/details\.php\?.*?object_id)
                =)
        (?P<id>\d+)
    Telewizja Polskar  rk   Nr3  r   r   r   rw  rw  0  s/        $GG GJ GILLLr   rw  c                   &    e Zd ZdZdZdZdZdZdZdS )TVPIErx  tvpz{https?://(?:[^/]+\.)?(?:tvp(?:parlament)?\.(?:pl|info)|tvpworld\.com|swipeto\.pl)/(?:(?!\d+/)[^/]+/)*(?P<id>\d+)(?:[/?#]|$)ry  r  r   Nr3  r   r   r   r{  r{  0  s/        $GG UJ GILLLr   r{  c                       e Zd ZdZdZdZdS )TVPStreamIErx  z
tvp:streamzf(?:tvpstream:|https?://(?:tvpstream\.vod|stream)\.tvp\.pl/(?:\?(?:[^&]+[&;])*channel_id=)?)(?P<id>\d*)Nr  r   r   r   r~  r~  0  s        $GG~JJJr   r~  c                       e Zd ZdZdZdS )TVPVODBaseIErx  
TVPVODBaseNr   r   r   r   r  r  0  r*  r   r  c                   "    e Zd ZdZdZdZdZdZdS )TVPVODSeriesIErx  ztvp:vod:serieszVhttps?://vod\.tvp\.pl/[a-z\d-]+,\d+/[a-z\d-]+-odcinki,(?P<id>\d+)(?:\?[^#]+)?(?:#.+)?$r  rl   Nr  r   r   r   r  r  0  s'        $GGpJILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TVPVODVideoIErx  ztvp:vodzhttps?://vod\.tvp\.pl/(?P<category>[a-z\d-]+,\d+)/[a-z\d-]+(?<!-odcinki)(?:-odcinki,\d+/odcinek--?\d+,S-?\d+E-?\d+)?,(?P<id>\d+)/?(?:[?#]|$)r  rk   Nr  r   r   r   r  r  0  s*        $GG jJILLLr   r  c                       e Zd ZdZdZdZdZdS )TVPlayHomeIEyt_dlp.extractor.tvplay
TVPlayHomez(?x)
            https?://
            (?:tv3?)?
            play\.(?:tv3|skaties)\.(?P<country>lv|lt|ee)/
            (?P<live>lives/)?
            [^?#&]+(?:episode|programme|clip)-(?P<id>\d+)
    rk   Nr   r   r   r   r  r  0  s%        'GG dJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TVPlayIEr  mtga  (?x)
                    (?:
                        mtg:|
                        https?://
                            (?:www\.)?
                            (?:
                                tvplay(?:\.skaties)?\.lv(?:/parraides)?|
                                (?:tv3play|play\.tv3)\.lt(?:/programos)?|
                                tv3play(?:\.tv3)?\.ee/sisu
                            )
                            /(?:[^/]+/)+
                        )
                        (?P<id>\d+)
                    zMTG servicesrk   Nr   r   r   r   r  r  0  s*        'GG tJGLLLr   r  c                       e Zd ZdZdZdZdZdS )
TVPlayerIEzyt_dlp.extractor.tvplayerTVPlayerz6https?://(?:www\.)?tvplayer\.com/watch/(?P<id>[^/?#]+)rk   Nr   r   r   r   r  r  0  rq  r   r  c                       e Zd ZdZdZdZdZdS )TVerIEzyt_dlp.extractor.tverTVerzbhttps?://(?:www\.)?tver\.jp/(?:(?P<type>lp|corner|series|episodes?|feature)/)+(?P<id>[a-zA-Z0-9]+)r   Nr   r   r   r   r  r  0  s"        %GGwJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TagesschauIEzyt_dlp.extractor.tagesschau
Tagesschauzqhttps?://(?:www\.)?tagesschau\.de/(?P<path>[^/]+/(?:[^/]+/)*?(?P<id>[^/#?]+?(?:-?[0-9]+)?))(?:~_?[^/#?]+?)?\.htmlFr   Nr  r   r   r   r  r  0  s*        +GG HJHLLLr   r  c                       e Zd ZdZdZdS )TapTapBaseIEyt_dlp.extractor.taptap
TapTapBaseNr   r   r   r   r  r  0  rW  r   r  c                       e Zd ZdZdZdZdZdS )TapTapAppIEr  	TapTapAppz(https?://www\.taptap\.cn/app/(?P<id>\d+)rl   Nr   r   r   r   r  r  1  s"        'GG>JLLLr   r  c                       e Zd ZdZdZdS )TapTapIntlBaseIEr  TapTapIntlBaseNr   r   r   r   r  r  
1          'GGGGr   r  c                       e Zd ZdZdZdZdZdS )TapTapAppIntlIEr  TapTapAppIntlz(https?://www\.taptap\.io/app/(?P<id>\d+)rl   Nr   r   r   r   r  r  1  s"        'GG>JLLLr   r  c                       e Zd ZdZdZdZdZdS )TapTapMomentIEr  TapTapMomentz+https?://www\.taptap\.cn/moment/(?P<id>\d+)rl   Nr   r   r   r   r  r  1  s"        'GGAJLLLr   r  c                       e Zd ZdZdZdZdZdS )TapTapPostIntlIEr  TapTapPostIntlz)https?://www\.taptap\.io/post/(?P<id>\d+)rl   Nr   r   r   r   r  r  1  s"        'GG?JLLLr   r  c                       e Zd ZdZdZdS )TarangPlusBaseIEyt_dlp.extractor.tarangplusTarangPlusBaseNr   r   r   r   r  r  $1  r  r   r  c                       e Zd ZdZdZdZdZdS )TarangPlusEpisodesIEr  ztarangplus:episodeszXhttps?://(?:www\.)?tarangplus\.in/(?P<type>[^#?/]+)/(?P<id>[^#?/]+)/episodes/?(?:$|[?#])rl   Nr   r   r   r   r  r  )1  s"        +G#GmJLLLr   r  c                       e Zd ZdZdZdZdZdS )TarangPlusPlaylistIEr  ztarangplus:playlistzAhttps?://(?:www\.)?tarangplus\.in/(?P<id>[^#?/]+)/all/?(?:$|[?#])rl   Nr   r   r   r   r  r  01  s"        +G#GVJLLLr   r  c                       e Zd ZdZdZdZdZdS )TarangPlusVideoIEr  ztarangplus:videozXhttps?://(?:www\.)?tarangplus\.in/(?:movies|[^#?/]+/[^#?/]+)/(?!episodes)(?P<id>[^#?/]+)rk   Nr   r   r   r   r  r  71  s"        +G GmJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TassIEzyt_dlp.extractor.tassTassz6https?://(?:tass\.ru|itar-tass\.com)/[^/]+/(?P<id>\d+)Frk   Nr  r   r   r   r  r  >1  s'        %GGLJHLLLr   r  c                       e Zd ZdZdZdZdS )TeachableBaseIEyt_dlp.extractor.teachableTeachableBase	teachableNrz   r   r   r   r  r  F1  rc  r   r  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )TeachableCourseIEr  TeachableCoursea  (?x)
                        (?:
                            teachable:https?://(?P<site_t>[^/]+)|
                            https?://(?:www\.)?(?P<site>v1\.upskillcourses\.com|gns3\.teachable\.com|academyhacker\.com|stackskills\.com|market\.saleshacker\.com|learnability\.org|edurila\.com|courses\.workitdaily\.com)
                        )
                        /(?:courses|p)/(?:enrolled/)?(?P<id>[^/?#&]+)
                    r  rl   c                 ~    t                               |          rdn t                                          |          S r   )TeachableIEr4   r   r   s     r   r4   zTeachableCourseIE.suitableS1  rU  r   r  r   s   @r   r  r  L1  sg        *GG ZJ NLM M M M [M M M M Mr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )r  r  	Teachablea  (?x)
                    (?:
                        teachable:https?://(?P<site_t>[^/]+)|
                        https?://(?:www\.)?(?P<site>v1\.upskillcourses\.com|gns3\.teachable\.com|academyhacker\.com|stackskills\.com|market\.saleshacker\.com|learnability\.org|edurila\.com|courses\.workitdaily\.com)
                    )
                    /courses/[^/]+/lectures/(?P<id>\d+)
                    Fr  rk   Nr  r   r   r   r  r  X1  s/        *GG }JH NLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )TeacherTubeIEyt_dlp.extractor.teachertubeteachertubez}https?://(?:www\.)?teachertube\.com/(viewVideo\.php\?video_id=|music\.php\?music_id=|video/(?:[\da-z-]+-)?|audio/)(?P<id>\d+)Fzteachertube.com videosrk   Nr  r   r   r   r  r  a1  s/        ,GG YJH&GLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )TeacherTubeUserIEr  zteachertube:user:collectionzVhttps?://(?:www\.)?teachertube\.com/(user/profile|collection)/(?P<user>[0-9a-zA-Z]+)/?Fz*teachertube.com user and collection videosrl   Nr  r   r   r   r  r  j1  s,        ,G+GkJH:GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TeachingChannelIEz yt_dlp.extractor.teachingchannelTeachingChannelz@https?://(?:www\.)?teachingchannel\.org/videos?/(?P<id>[^/?&#]+)Frk   Nr  r   r   r   r  r  s1  s'        0GGUJHLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TeamTreeHouseIEzyt_dlp.extractor.teamtreehouseTeamTreeHousez;https?://(?:www\.)?teamtreehouse\.com/library/(?P<id>[^/]+)teamtreehouser   Nr   r   r   r   r  r  {1  s'        .GGPJ$NLLLr   r  c                       e Zd ZdZdZdZdZdS )
TeamcocoIEr  Teamcocoz9https?://(?:www\.)?teamcoco\.com/(?P<id>([^/]+/)*[^/?#]+)rk   Nr   r   r   r   r  r  1  s"        )GGNJLLLr   r  c                       e Zd ZdZdZdZdZdS )TechTVMITIEr%  ztechtv.mit.eduz7https?://techtv\.mit\.edu/(?:videos|embeds)/(?P<id>\d+)rk   Nr   r   r   r   r  r  1  s"        $GGMJLLLr   r  c                       e Zd ZdZdZdZdZdS )
TedEmbedIEyt_dlp.extractor.tedTedEmbedz"https?://embed(?:-ssl)?\.ted\.com/rk   Nr   r   r   r   r  r  1  s"        $GG7JLLLr   r  c                       e Zd ZdZdZdS )	TedBaseIEr  TedBaseNr   r   r   r   r  r  1  r  r   r  c                       e Zd ZdZdZdZdZdS )TedPlaylistIEr  TedPlaylistzNhttps?://www\.ted\.com/(?:playlists(?:/\d+)?)(?:/lang/[^/#?]+)?/(?P<id>[\w-]+)rl   Nr   r   r   r   r  r  1  s"        $GGeJLLLr   r  c                       e Zd ZdZdZdZdZdS )TedSeriesIEr  	TedSeriesz^https?://www\.ted\.com/(?:series)(?:/lang/[^/#?]+)?/(?P<id>[\w-]+)(?:#season_(?P<season>\d+))?rl   Nr   r   r   r   r  r  1  s"        $GGuJLLLr   r  c                       e Zd ZdZdZdZdZdS )	TedTalkIEr  TedTalkzAhttps?://www\.ted\.com/(?:talks)(?:/lang/[^/#?]+)?/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  1  s"        $GGWJLLLr   r  c                       e Zd ZdZdZdZdZdS )Tele13IEzyt_dlp.extractor.tele13Tele13z;https?://(?:www\.)?t13\.cl/videos(?:/[^/]+)+/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  1  r  r   r  c                       e Zd ZdZdZdZdZdS )Tele5IEzyt_dlp.extractor.tele5Tele5z_https?://(?:www\.)?tele5\.de/(?P<parent_slug>[\w-]+)/(?P<slug_a>[\w-]+)(?:/(?P<slug_b>[\w-]+))?r   Nr   r   r   r   r  r  1  s"        &GGwJLLLr   r  c                       e Zd ZdZdZdZdZdS )TeleBruxellesIEzyt_dlp.extractor.telebruxellesTeleBruxelleszGhttps?://(?:www\.)?(?:telebruxelles|bx1)\.be/(?:[^/]+/)*(?P<id>[^/#?]+)rk   Nr   r   r   r   r  r  1  r>  r   r  c                   "    e Zd ZdZdZdZdZdZdS )TeleMBIEzyt_dlp.extractor.telembTeleMBzEhttps?://(?:www\.)?telemb\.be/(?P<display_id>.+?)_d_(?P<id>\d+)\.htmlFrk   Nr  r   r   r   r  r  1  s'        'GG\JHLLLr   r  c                       e Zd ZdZdZdZdZdS )TeleQuebecEmissionIEyt_dlp.extractor.telequebecTeleQuebecEmissiona	  (?x)
                    https?://
                        (?:
                            [^/]+\.telequebec\.tv/emissions/|
                            (?:www\.)?telequebec\.tv/
                        )
                        (?P<id>[^?#&]+)
                    rk   Nr   r   r   r   r  r  1  s%        +G"G hJLLLr   r  c                       e Zd ZdZdZdS )TeleQuebecBaseIEr  TeleQuebecBaseNr   r   r   r   r  r  1  r  r   r  c                       e Zd ZdZdZdZdZdS )TeleQuebecIEr  
TeleQuebecz(?x)
                    https?://
                        (?:
                            zonevideo\.telequebec\.tv/media|
                            coucou\.telequebec\.tv/videos
                        )/(?P<id>\d+)
                    rk   Nr   r   r   r   r  r  1  s%        +GG OJLLLr   r  c                       e Zd ZdZdZdZdZdS )TeleQuebecLiveIEr  TeleQuebecLivez3https?://zonevideo\.telequebec\.tv/(?P<id>endirect)rk   Nr   r   r   r   r  r  1  s"        +GGHJLLLr   r  c                       e Zd ZdZdZdZdZdS )TeleQuebecSquatIEr  TeleQuebecSquatz1https?://squat\.telequebec\.tv/videos/(?P<id>\d+)rk   Nr   r   r   r   r  r  1  r  r   r  c                       e Zd ZdZdZdZdZdS )TeleQuebecVideoIEr  TeleQuebecVideoz;https?://video\.telequebec\.tv/player(?:-live)?/(?P<id>\d+)rk   Nr   r   r   r   r  r  1  s"        +GGQJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
TeleTaskIEzyt_dlp.extractor.teletaskTeleTaskzChttps?://(?:www\.)?tele-task\.de/archive/video/html5/(?P<id>[0-9]+)Frl   Nr  r   r   r   r  r  1  s'        )GGXJHLLLr   r  c                       e Zd ZdZdZdZdZdS )TelecaribePlayIEzyt_dlp.extractor.telecaribeTelecaribePlayz6https?://(?:www\.)?play\.telecaribe\.co/(?P<id>[\w-]+)r   Nr   r   r   r   r  r  1  s"        +GGMJLLLr   r  c                       e Zd ZdZdZdS )TelecincoBaseIEyt_dlp.extractor.telecincoTelecincoBaseNr   r   r   r   r  r  2  r&  r   r  c                   "    e Zd ZdZdZdZdZdZdS )TelecincoIEr  	TelecincozZhttps?://(?:www\.)?(?:telecinco\.es|cuatro\.com|mediaset\.es)/(?:[^/]+/)+(?P<id>.+?)\.htmlz(telecinco.es, cuatro.com and mediaset.esr   Nr   r   r   r   r  r  2  s'        *GGrJ8GLLLr   r  c                       e Zd ZdZdZdZdZdS )TelegraafIEzyt_dlp.extractor.telegraaf	Telegraafz2https?://(?:www\.)?telegraaf\.nl/video/(?P<id>\d+)rk   Nr   r   r   r   r  r  2  rw  r   r  c                       e Zd ZdZdZdZdZdS )TelegramEmbedIEzyt_dlp.extractor.telegramztelegram:embedz0https?://t\.me/(?P<channel_id>[^/]+)/(?P<id>\d+)r   Nr   r   r   r   r  r  2  s"        )GGEJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TelemundoIEzyt_dlp.extractor.telemundo	TelemundozFhttps?:\/\/(?:www\.)?telemundo\.com\/.+?video\/[^\/]+(?P<id>tmvo\d{7})Frk   Nr  r   r   r   r  r  !2  s'        *GGaJHLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TelewebionIEzyt_dlp.extractor.telewebion
TelewebionzHhttps?://(?:www\.)?telewebion\.com/episode/(?P<id>(?:0x[a-fA-F\d]+|\d+))Frk   Nr  r   r   r   r  r  )2  s'        +GG_JHLLLr   r  c                       e Zd ZdZdZdZdZdS )TempoIEr[	  Tempoz0https?://video\.tempo\.co/\w+/\d+/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  12  "        &GGHJLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )	TenPlayIEyt_dlp.extractor.tenplay10playzMhttps?://(?:www\.)?10(?:play)?\.com\.au/(?:[^/?#]+/)+(?P<id>tpv\d{6}[a-z]{5})r
  rk   Nr  r   r   r   r!  r!  82  s,        (GGdJNILLLr   r!  c                       e Zd ZdZdZdZdZdS )TenPlaySeasonIEr"  z10play:seasonzbhttps?://(?:www\.)?10(?:play)?\.com\.au/(?P<show>[^/?#]+)/episodes/(?P<season>[^/?#]+)/?(?:$|[?#])rl   Nr   r   r   r   r%  r%  A2  "        (GGxJLLLr   r%  c                   "    e Zd ZdZdZdZdZdZdS )
TennisTVIEzyt_dlp.extractor.tennistvTennisTVz:https?://(?:www\.)?tennistv\.com/videos/(?P<id>[-a-z0-9]+)tennistvrk   Nr   r   r   r   r(  r(  H2  s'        )GGOJNLLLr   r(  c                       e Zd ZdZdZdZdZdS )	TestURLIEzyt_dlp.extractor.testurlTestURLz6test(?:url)?:(?P<extractor>.*?)(?:_(?P<num>\d+|all))?$FNrV  r   r   r   r,  r,  P2  s"        (GGJJGGGr   r,  c                       e Zd ZdZdZdS )FrontoBaseIEyt_dlp.extractor.frontro
FrontoBaseNr   r   r   r   r/  r/  W2  s        (GGGGr   r/  c                       e Zd ZdZdZdS )FrontroGroupBaseIEr0  FrontroGroupBaseNr   r   r   r   r3  r3  \2          (G GGGr   r3  c                       e Zd ZdZdZdZdZdS )TheChosenGroupIEr0  TheChosenGroupz<https?://(?:www\.)?watch\.thechosen\.tv/group/(?P<id>[0-9]+)rl   Nr   r   r   r   r7  r7  a2  s"        (GGRJLLLr   r7  c                       e Zd ZdZdZdS )FrontroVideoBaseIEr0  FrontroVideoBaseNr   r   r   r   r:  r:  h2  r5  r   r:  c                       e Zd ZdZdZdZdZdS )TheChosenIEr0  	TheChosenz<https?://(?:www\.)?watch\.thechosen\.tv/watch/(?P<id>[0-9]+)rk   Nr   r   r   r   r=  r=  m2  s"        (GGRJLLLr   r=  c                       e Zd ZdZdZdZdZdS )TheGuardianPodcastIEyt_dlp.extractor.theguardianTheGuardianPodcastzPhttps?://(?:www\.)?theguardian\.com/\w+/audio/\d{4}/\w{3}/\d{1,2}/(?P<id>[\w-]+)rk   Nr   r   r   r   r@  r@  t2  s"        ,G"GjJLLLr   r@  c                       e Zd ZdZdZdZdZdS )TheGuardianPodcastPlaylistIErA  TheGuardianPodcastPlaylistzLhttps?://(?:www\.)?theguardian\.com/\w+/series/(?P<id>[\w-]+)(?:\?page=\d+)?rl   Nr   r   r   r   rD  rD  {2  s"        ,G*GeJLLLr   rD  c                       e Zd ZdZdZdZdZdS )TheHighWireIEzyt_dlp.extractor.thehighwireTheHighWirez>https?://(?:www\.)?thehighwire\.com/ark-videos/(?P<id>[^/?#]+)rk   Nr   r   r   r   rG  rG  2  r  r   rG  c                       e Zd ZdZdZdZdZdS )TheHoleTvIEzyt_dlp.extractor.theholetv	TheHoleTvz7https?://(?:www\.)?the-hole\.tv/episodes/(?P<id>[\w-]+)rk   Nr   r   r   r   rJ  rJ  2  r  r   rJ  c                       e Zd ZdZdZdZdZdS )TheInterceptIEzyt_dlp.extractor.theinterceptTheInterceptz8https?://theintercept\.com/fieldofvision/(?P<id>[^/?#]+)rk   Nr   r   r   r   rM  rM  2  r]  r   rM  c                       e Zd ZdZdZdZdZdS )ThePlatformFeedIEr  ThePlatformFeedhttps?://feed\.theplatform\.com/f/(?P<provider_id>[^/]+)/(?P<feed_id>[^?/]+)\?(?:[^&]+&)*(?P<filter>by(?:Gui|I)d=(?P<id>[^&]+))rk   Nr   r   r   r   rP  rP  2  s%        ,GG VJLLLr   rP  c                       e Zd ZdZdZdZdS )	CBSBaseIEr  CBSBaserR  Nr  r   r   r   rT  rT  2  s         $GG VJJJr   rT  c                   "    e Zd ZdZdZdZdZdZdS )CBSIEr  CBSz(?x)
        (?:
            cbs:|
            https?://(?:www\.)?(?:
                cbs\.com/(?:shows|movies)/(?:video|[^/]+/video|[^/]+)/|
                colbertlateshow\.com/(?:video|podcasts)/)
        )(?P<id>[\w-]+)Frk   Nr  r   r   r   rW  rW  2  s*        $GG }JHLLLr   rW  c                       e Zd ZdZdZdZdZdS )CorusIEzyt_dlp.extractor.corusCorusa  (?x)
                    https?://
                        (?:www\.)?
                        (?P<domain>
                            (?:
                                globaltv|
                                etcanada|
                                seriesplus|
                                wnetwork|
                                ytv
                            )\.com|
                            (?:
                                hgtv|
                                foodnetwork|
                                slice|
                                history|
                                showcase|
                                bigbrothercanada|
                                abcspark|
                                disney(?:channel|lachaine)
                            )\.ca
                        )
                        /(?:[^/]+/)*
                        (?:
                            video\.html\?.*?\bv=|
                            videos?/(?:[^/]+/)*(?:[a-z0-9-]+-)?
                        )
                        (?P<id>
                            [\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}|
                            (?:[A-Z]{4})?\d{12,20}
                        )
                    rk   Nr   r   r   r   rZ  rZ  2  s%        &GG ^JLLLr   rZ  c                       e Zd ZdZdZdZdZdS )ThePlatformIEr  ThePlatform(?x)
        (?:https?://(?:link|player)\.theplatform\.com/[sp]/(?P<provider_id>[^/]+)/
           (?:(?:(?:[^/]+/)+select/)?(?P<media>media/(?:guid/\d+/)?)?|(?P<config>(?:[^/\?]+/(?:swf|config)|onsite)/select/))?
         |theplatform:)(?P<id>[^/\?&]+)rk   Nr   r   r   r   r]  r]  2  s%        ,GG YJLLLr   r]  c                       e Zd ZdZdZdZdS )AENetworksBaseIEyt_dlp.extractor.aenetworksAENetworksBaser_  Nr  r   r   r   ra  ra  2  s         +GG YJJJr   ra  c                       e Zd ZdZdZdZdS )AENetworksListBaseIErb  AENetworksListBaser_  Nr  r   r   r   re  re  2  s         +G"G YJJJr   re  c                       e Zd ZdZdZdZdZdS )AENetworksCollectionIErb  zaenetworks:collectionz(?x)https?://
        (?:(?:www|play|watch)\.)?
        (?P<domain>
            (?:history(?:vault)?|aetv|mylifetime|lifetimemovieclub)\.com|
            fyi\.tv
        )/(?:[^/]+/)*(?:list|collections)/(?P<id>[^/?#&]+)/?(?:[?#&]|$)rl   Nr   r   r   r   rh  rh  2  s%        +G%G EJLLLr   rh  c                   &    e Zd ZdZdZdZdZdZdZdS )AENetworksIErb  
aenetworksaO  (?x)https?://
        (?:(?:www|play|watch)\.)?
        (?P<domain>
            (?:history(?:vault)?|aetv|mylifetime|lifetimemovieclub)\.com|
            fyi\.tv
        )/(?P<id>
        shows/[^/?#]+/season-\d+/episode-\d+|
        (?P<type>movie|special)s/[^/?#]+(?P<extra>/[^/?#]+)?|
        (?:shows/[^/?#]+/)?videos/[^/?#]+
    )zGA+E Networks: A&E, Lifetime, History.com, FYI Network and History Vaultr  rk   Nr3  r   r   r   rj  rj  2  s/        +GG qJWGILLLr   rj  c                       e Zd ZdZdZdZdZdS )AENetworksShowIErb  zaenetworks:showz(?x)https?://
        (?:(?:www|play|watch)\.)?
        (?P<domain>
            (?:history(?:vault)?|aetv|mylifetime|lifetimemovieclub)\.com|
            fyi\.tv
        )/shows/(?P<id>[^/?#&]+)/?(?:[?#&]|$)rl   Nr   r   r   r   rm  rm  2  s%        +GG kJLLLr   rm  c                       e Zd ZdZdZdZdZdS )BiographyIErb  	Biographyz8https?://(?:www\.)?biography\.com/video/(?P<id>[^/?#&]+)rk   Nr   r   r   r   ro  ro  2  s"        +GGMJLLLr   ro  c                       e Zd ZdZdZdZdS )HistoryPlayerIErb  zhistory:playerzLhttps?://(?:www\.)?(?P<domain>(?:history|biography)\.com)/player/(?P<id>\d+)Nr  r   r   r   rr  rr  2  s        +GGbJJJr   rr  c                   "    e Zd ZdZdZdZdZdZdS )HistoryTopicIErb  zhistory:topiczChttps?://(?:www\.)?history\.com/topics/[^/]+/(?P<id>[\w+-]+?)-videozHistory.com Topicrk   Nr   r   r   r   rt  rt  2  s'        +GGYJ!GLLLr   rt  c                       e Zd ZdZdZdZdZdS )	NBCNewsIEr  NBCNewszS(?x)https?://(?:www\.)?(?:nbcnews|today|msnbc)\.com/([^/]+/)*(?:.*-)?(?P<id>[^/?]+)rk   Nr   r   r   r   rv  rv  2  s"        $GGhJLLLr   rv  c                       e Zd ZdZdZdZdZdS )	TheStarIEzyt_dlp.extractor.thestarTheStarz;https?://(?:www\.)?thestar\.com/(?:[^/]+/)*(?P<id>.+)\.htmlrk   Nr   r   r   r   ry  ry  2  s"        (GGQJLLLr   ry  c                       e Zd ZdZdZdZdZdS )TheSunIEzyt_dlp.extractor.thesunTheSunz=https?://(?:www\.)?the-?sun(\.co\.uk|\.com)/[^/]+/(?P<id>\d+)rl   Nr   r   r   r   r|  r|   3  r'	  r   r|  c                       e Zd ZdZdZdZdZdS )TheWeatherChannelIEz"yt_dlp.extractor.theweatherchannelTheWeatherChannelzshttps?://(?:www\.)?weather\.com(?P<asset_name>(?:/(?P<locale>[a-z]{2}-[A-Z]{2}))?/(?:[^/]+/)*video/(?P<id>[^/?#]+))rk   Nr   r   r   r   r  r  3  s%        2G!G IJLLLr   r  c                       e Zd ZdZdZdZdS )TheaterComplexTownBaseIEr  TheaterComplexTownBasetheatercomplextownNrz   r   r   r   r  r  3  s        )G&G)NNNr   r  c                   "    e Zd ZdZdZdZdZdZdS )TheaterComplexTownPPVIEr  ztheatercomplextown:ppvzPhttps?://(?:www\.)?theater-complex\.town/(?:(?:en|ja)/)?(?:ppv|live)/(?P<id>\w+)r  rk   Nr   r   r   r   r  r  3  s'        )G&GfJ)NLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TheaterComplexTownVODIEr  ztheatercomplextown:vodzShttps?://(?:www\.)?theater-complex\.town/(?:(?:en|ja)/)?videos/episodes/(?P<id>\w+)r  rk   Nr   r   r   r   r  r  3  s'        )G&GiJ)NLLLr   r  c                       e Zd ZdZdZdZdZdS )ThisAmericanLifeIEz!yt_dlp.extractor.thisamericanlifeThisAmericanLifezehttps?://(?:www\.)?thisamericanlife\.org/(?:radio-archives/episode/|play_full\.php\?play=)(?P<id>\d+)rk   Nr   r   r   r   r  r  $3  s"        1G G}JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )ThisOldHouseIEzyt_dlp.extractor.thisoldhouseThisOldHousezahttps?://(?:www\.)?thisoldhouse\.com/(?:watch|how-to|tv-episode|(?:[^/?#]+/)?\d+)/(?P<id>[^/?#]+)thisoldhouserk   Nr   r   r   r   r  r  +3  s'        -GGwJ#NLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	ThisVidIEyt_dlp.extractor.thisvidThisVidzLhttps?://(?:www\.)?thisvid\.com/(?P<type>videos|embed)/(?P<id>[A-Za-z0-9-]+)r   rk   Nr  r   r   r   r  r  33  s'        (GGaJILLLr   r  c                       e Zd ZdZdZdS )ThisVidPlaylistBaseIEr  ThisVidPlaylistBaseNr   r   r   r   r  r  ;3          (G#GGGr   r  c                       e Zd ZdZdZdZdZdS )ThisVidMemberIEr  ThisVidMemberz)https?://thisvid\.com/members/(?P<id>\d+)rl   Nr   r   r   r   r  r  @3  s"        (GG>JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )ThisVidPlaylistIEr  ThisVidPlaylistzLhttps?://thisvid\.com/playlist/(?P<id>\d+)/video/(?P<video_id>[A-Za-z0-9-]+)r   r   Nr  r   r   r   r  r  G3  s'        (GGaJILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )ThreeQSDNIEzyt_dlp.extractor.threeqsdn3qsdnz\https?://playout\.3qsdn\.com/(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})z3Q SDNrk   Nr   r   r   r   r  r  O3  s'        *GGvJGLLLr   r  c                       e Zd ZdZdZdZdZdS )ThreeSpeakIEyt_dlp.extractor.threespeak
ThreeSpeakz?https?://(?:www\.)?3speak\.tv/watch\?v\=[^/]+/(?P<id>[^/$&#?]+)rk   Nr   r   r   r   r  r  W3  s"        +GGVJLLLr   r  c                       e Zd ZdZdZdZdZdS )ThreeSpeakUserIEr  ThreeSpeakUserz4https?://(?:www\.)?3speak\.tv/user/(?P<id>[^/$&?#]+)rl   Nr   r   r   r   r  r  ^3  s"        +GGIJLLLr   r  c                       e Zd ZdZdZdZdZdS )TikTokCollectionIEr  ztiktok:collectionzehttps?://www\.tiktok\.com/@(?P<user_id>[\w.-]+)/collection/(?P<title>[^/?#]+)-(?P<id>\d+)/?(?:[?#]|$)rl   Nr   r   r   r   r  r  e3  s"        'G!G|JLLLr   r  c                       e Zd ZdZdZdS )TikTokBaseListIEr  TikTokBaseListNr   r   r   r   r  r  l3  r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )TikTokEffectIEr  ztiktok:effectzDhttps?://(?:www\.)?tiktok\.com/sticker/[\w\.-]+-(?P<id>[\d]+)[/?#&]?Frl   Nr  r   r   r   r  r  q3  s'        'GG\JHLLLr   r  c                       e Zd ZdZdZdZdZdS )TikTokIEr  TikTokzMhttps?://www\.tiktok\.com/(?:embed|@(?P<user_id>[\w\.-]+)?/video)/(?P<id>\d+)rk   Nr   r   r   r   r  r  y3  s"        'GGeJLLLr   r  c                       e Zd ZdZdZdZdZdS )TikTokLiveIEr  ztiktok:livez(?x)https?://(?:
        (?:www\.)?tiktok\.com/@(?P<uploader>[\w.-]+)/live|
        m\.tiktok\.com/share/live/(?P<id>\d+)
    )rk   Nr   r   r   r   r  r  3  s%        'GG \JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TikTokSoundIEr  ztiktok:soundzBhttps?://(?:www\.)?tiktok\.com/music/[\w\.-]+-(?P<id>[\d]+)[/?#&]?Frl   Nr  r   r   r   r  r  3  s'        'GGZJHLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TikTokTagIEr  z
tiktok:tagz3https?://(?:www\.)?tiktok\.com/tag/(?P<id>[^/?#&]+)Frl   Nr  r   r   r   r  r  3  s'        'GGHJHLLLr   r  c                       e Zd ZdZdZdZdZdS )TikTokUserIEr  ztiktok:userzK(?:tiktokuser:|https?://(?:www\.)?tiktok\.com/@)(?P<id>[\w.-]+)/?(?:$|[#?])rl   Nr   r   r   r   r  r  3  s"        'GGaJLLLr   r  c                       e Zd ZdZdZdZdZdS )
TikTokVMIEr  z	vm.tiktokzFhttps?://(?:(?:vm|vt)\.tiktok\.com|(?:www\.)tiktok\.com/t)/(?P<id>\w+)rk   Nr   r   r   r   r  r  3  s"        'GG^JLLLr   r  c                       e Zd ZdZdZdZdZdS )ToggleIEr  togglezc(?:https?://(?:(?:www\.)?mewatch|video\.toggle)\.sg/(?:en|zh)/(?:[^/]+/){2,}|toggle:)(?P<id>[0-9]+)rk   Nr   r   r   r   r  r  3  s"        'GGyJLLLr   r  c                       e Zd ZdZdZdZdZdS )ToggoIEzyt_dlp.extractor.toggotoggozShttps?://(?:www\.)?toggo\.de/(?:toggolino/)?[^/?#]+/(?:folge|video)/(?P<id>[^/?#]+)rk   Nr   r   r   r   r  r  3  r8  r   r  c                       e Zd ZdZdZdZdZdS )TokFMAuditionIEyt_dlp.extractor.agoraztokfm:auditionzE(?:https?://audycje\.tokfm\.pl/audycja/|tokfm:audition:)(?P<id>\d+),?rl   Nr   r   r   r   r  r  3  s"        &GG[JLLLr   r  c                       e Zd ZdZdZdZdZdS )TokFMPodcastIEr  ztokfm:podcastzD(?:https?://audycje\.tokfm\.pl/podcast/|tokfm:podcast:)(?P<id>\d+),?rk   Nr   r   r   r   r  r  3  s"        &GGZJLLLr   r  c                       e Zd ZdZdZdZdZdS )ToonGogglesIEzyt_dlp.extractor.toongogglesToonGoggleszbhttps?://(?:www\.)?toongoggles\.com/shows/(?P<show_id>\d+)(?:/[^/]+/episodes/(?P<episode_id>\d+))?r   Nr   r   r   r   r  r  3  s"        ,GGyJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TouTvIEzyt_dlp.extractor.toutvztou.tvzChttps?://ici\.tou\.tv/(?P<id>[a-zA-Z0-9_-]+(?:/S[0-9]+[EC][0-9]+)?)toutvrk   Nr   r   r   r   r  r  3  s'        &GGXJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	ToutiaoIEzyt_dlp.extractor.toutiaotoutiaoz8https?://www\.toutiao\.com/video/(?P<id>\d+)/?(?:[?#]|$)u   今日头条rk   Nr   r   r   r   r  r  3  s'        (GGNJGLLLr   r  c                   *    e Zd ZdZdZdZdZdZdZdZ	dS )		ToypicsIEyt_dlp.extractor.toypicsToypicsz1https?://videos\.toypics\.net/view/(?P<id>[0-9]+)FzToypics videor   rk   N)
r   r   r   r$   r`   r<   rD   rZ   re   rn   r   r   r   r  r  3  s1        (GGFJHGILLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )ToypicsUserIEr  ToypicsUserz6https?://videos\.toypics\.net/(?!view)(?P<id>[^/?#&]+)FzToypics user profilerl   Nr  r   r   r   r  r  3  s,        (GGKJH$GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TrailerAddictIEzyt_dlp.extractor.traileraddictTrailerAddictz_(?:https?://)?(?:www\.)?traileraddict\.com/(?:trailer|clip)/(?P<movie>.+?)/(?P<trailer_name>.+)Frk   Nr  r   r   r   r  r  3  s'        .GGtJHLLLr   r  c                       e Zd ZdZdZdZdZdS )TravelChannelIEr  TravelChannelzChttps?://(?:watch\.)?travelchannel\.com/video/(?P<id>[^/]+/[^/?#]+)rk   Nr   r   r   r   r  r  3  s"        &GGXJLLLr   r  c                       e Zd ZdZdZdZdS )TrillerBaseIEyt_dlp.extractor.trillerTrillerBasetrillerNrz   r   r   r   r  r  3  r6  r   r  c                   "    e Zd ZdZdZdZdZdZdS )	TrillerIEr  Trillerz(?x)
            https?://(?:www\.)?triller\.co/
            @(?P<username>[\w.]+)/video/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})
        r  rk   Nr   r   r   r   r  r   4  s*        (GG oJNLLLr   r  c                       e Zd ZdZdZdZdZdS )TrillerShortIEr  TrillerShortz#https?://v\.triller\.co/(?P<id>\w+)rk   Nr   r   r   r   r  r  4  s"        (GG9JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TrillerUserIEr  TrillerUserz:https?://(?:www\.)?triller\.co/@(?P<id>[\w.]+)/?(?:$|[#?])r  rl   Nr   r   r   r   r  r  4  s'        (GGPJNLLLr   r  c                       e Zd ZdZdZdS )TrovoBaseIEyt_dlp.extractor.trovo	TrovoBaseNr   r   r   r   r  r  4  r   r   r  c                       e Zd ZdZdZdS )TrovoChannelBaseIEr  TrovoChannelBaseNr   r   r   r   r  r  4  r	  r   r  c                   "    e Zd ZdZdZdZdZdZdS )TrovoChannelClipIEr  TrovoChannelClipztrovoclip:(?P<id>[^\s]+)z6All Clips of a trovo.live channel; "trovoclip:" prefixrl   Nr   r   r   r   r  r  !4  s'        &G G,JFGLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TrovoChannelVodIEr  TrovoChannelVodztrovovod:(?P<id>[^\s]+)z4All VODs of a trovo.live channel; "trovovod:" prefixrl   Nr   r   r   r   r  r  )4  s'        &GG+JDGLLLr   r  c                       e Zd ZdZdZdZdZdS )TrovoIEr  Trovoz`https?://(?:www\.)?trovo\.live/(?:s/)?(?!(?:clip|video)/)(?P<id>(?!s/)[^/?&#]+(?![^#]+[?&]vid=))rk   Nr   r   r   r   r  r  14  r9
  r   r  c                       e Zd ZdZdZdZdZdS )
TrovoVodIEr  TrovoVodzchttps?://(?:www\.)?trovo\.live/(?:clip|video|s)/(?:[^/]+/\d+[^#]*[?&]vid=)?(?P<id>(?<!/s/)[^/?&#]+)rk   Nr   r   r   r   r  r  84  s"        &GGyJLLLr   r  c                       e Zd ZdZdZdZdZdS )TrtCocukVideoIEzyt_dlp.extractor.trtcocukTrtCocukVideoz4https?://www\.trtcocuk\.net\.tr/video/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  ?4  r  r   r  c                       e Zd ZdZdZdZdZdS )
TrtWorldIEzyt_dlp.extractor.trtworldTrtWorldz;https?://www\.trtworld\.com/video/[\w-]+/[\w-]+-(?P<id>\d+)rk   Nr   r   r   r   r  r  F4  s"        )GGSJLLLr   r  c                       e Zd ZdZdZdZdZdS )	TruNewsIEzyt_dlp.extractor.trunewsTruNewsz7https?://(?:www\.)?trunews\.com/stream/(?P<id>[^/?#&]+)rk   Nr   r   r   r   r  r  M4  s"        (GGLJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TrueIDIEzyt_dlp.extractor.trueidTrueIDz^https?://(?P<domain>vn\.trueid\.net|trueid\.(?:id|ph))/(?:movie|series/[^/]+)/(?P<id>[^/?#&]+)r2  rk   Nr  r   r   r   r  r  T4  s'        'GGtJILLLr   r  c                       e Zd ZdZdZdZdZdS )TruthIEzyt_dlp.extractor.truthTruthz2https?://truthsocial\.com/@[^/]+/posts/(?P<id>\d+)rk   Nr   r   r   r   r  r  \4  r'  r   r  c                   &    e Zd ZdZdZdZdZdZdZdS )Tube8IEzyt_dlp.extractor.tube8Tube8zJhttps?://(?:www\.)?tube8\.com/(?:[^/]+/)+(?P<display_id>[^/]+)/(?P<id>\d+)Fr   rk   Nr  r   r   r   r  r  c4  s,        &GG`JHILLLr   r  c                       e Zd ZdZdZdZdS )TubeTuGrazBaseIEyt_dlp.extractor.tubetugrazTubeTuGrazBase
tubetugrazNrz   r   r   r   r  r  l4  r  r   r  c                   &    e Zd ZdZdZdZdZdZdZdS )TubeTuGrazIEr  
TubeTuGrazz(?x)
        https?://tube\.tugraz\.at/(?:
            paella/ui/watch\.html\?(?:[^#]*&)?id=|
            portal/watch/
        )(?P<id>[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12})
    ztube.tugraz.atr  rk   Nr   r   r   r   r  r  r4  s/        +GG _JG!NLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TubeTuGrazSeriesIEr  TubeTuGrazSeriesz(?x)
        https?://tube\.tugraz\.at/paella/ui/browse\.html\?series=
        (?P<id>[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12})
    r  rl   Nr   r   r   r   r  r  {4  s*        +G G kJ!NLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TubiTvIEyt_dlp.extractor.tubitvtubitvzahttps?://(?:www\.)?tubitv\.com/(?:[a-z]{2}-[a-z]{2}/)?(?P<type>video|movies|tv-shows)/(?P<id>\d+)rk   Nr   r   r   r   r  r  4  s'        'GGwJNLLLr   r  c                       e Zd ZdZdZdZdZdS )TubiTvShowIEr  ztubitv:seriesz\https?://(?:www\.)?tubitv\.com/series/\d+/(?P<show_name>[^/?#]+)(?:/season-(?P<season>\d+))?rl   Nr   r   r   r   r   r   4  s"        'GGsJLLLr   r   c                   "    e Zd ZdZdZdZdZdZdS )TumblrIEzyt_dlp.extractor.tumblrTumblrzvhttps?://(?P<blog_name_1>[^/?#&]+)\.tumblr\.com/(?:post|video|(?P<blog_name_2>[a-zA-Z\d-]+))/(?P<id>[0-9]+)(?:$|[/?#])tumblrr   Nr   r   r   r   r"  r"  4  s*        'GG MJNLLLr   r"  c                       e Zd ZdZdZdS )TuneInBaseIEyt_dlp.extractor.tunein
TuneInBaseNr   r   r   r   r&  r&  4  rW  r   r&  c                       e Zd ZdZdZdZdZdS )TuneInEmbedIEr'  ztunein:embedz1https?://tunein\.com/embed/player/(?P<id>[^/?#]+)r   Nr   r   r   r   r*  r*  4  s"        'GGEJLLLr   r*  c                       e Zd ZdZdZdZdZdS )TuneInPodcastEpisodeIEr'  ztunein:podcastzhhttps?://tunein\.com/podcasts(?:/[^/?#]+){1,2}(?P<series_id>p\d+)/?\?(?:[^#]+&)?(?i:topicid)=(?P<id>\d+)rk   Nr   r   r   r   r,  r,  4  s"        'GGJLLLr   r,  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )TuneInPodcastIEr'  ztunein:podcast:programz:https?://tunein\.com/podcasts(?:/[^/?#]+){1,2}(?P<id>p\d+)rl   c                 ~    t                               |          rdn t                                          |          S r   )r,  r4   r   r   s     r   r4   zTuneInPodcastIE.suitable4  s3    .77<<Wuu%''BRBRSVBWBWWr   r   r   s   @r   r.  r.  4  s_        'G&GOJLX X X X [X X X X Xr   r.  c                   "    e Zd ZdZdZdZdZdZdS )TuneInShortenerIEr'  ztunein:shortenerz https?://tun\.in/(?P<id>[^/?#]+)Fr   Nr   r   r   r   r1  r1  4  s'        'G G4JGLLLr   r1  c                       e Zd ZdZdZdZdZdS )TuneInStationIEr'  ztunein:stationz.https?://tunein\.com/radio/[^/?#]+(?P<id>s\d+)rk   Nr   r   r   r   r3  r3  4  s"        'GGCJLLLr   r3  c                   &    e Zd ZdZdZdZdZdZdZdS )TvigleIEzyt_dlp.extractor.tvigletviglezhhttps?://(?:www\.)?(?:tvigle\.ru/(?:[^/]+/)+(?P<display_id>[^/]+)/$|cloud\.tvigle\.ru/video/(?P<id>\d+))u1   Интернет-телевидение Tvigle.rur  rk   Nr3  r   r   r   r5  r5  4  s/        'GG AJAGILLLr   r5  c                   "    e Zd ZdZdZddgZdZdS )TvwIEyt_dlp.extractor.tvwtvwz1https?://(?:www\.)?tvw\.org/video/(?P<id>[^/?#]+)zChttps?://(?:www\.)?tvw\.org/watch/?\?(?:[^#]+&)?eventID=(?P<id>\d+)rk   Nr   r   r   r   r8  r8  4  s/        $GGG  JS  TJLLLr   r8  c                       e Zd ZdZdZdZdZdS )	TvwNewsIEr9  ztvw:newsz7https?://(?:www\.)?tvw\.org/\d{4}/\d{2}/(?P<id>[^/?#]+)rl   Nr   r   r   r   r<  r<  4  s"        $GGNJLLLr   r<  c                       e Zd ZdZdZdZdZdS )TvwTvChannelsIEr9  ztvw:tvchannelsz6https?://(?:www\.)?tvw\.org/tvchannels/(?P<id>[^/?#]+)rk   Nr   r   r   r   r>  r>  4  s"        $GGKJLLLr   r>  c                       e Zd ZdZdZdZdZdS )
TweakersIEzyt_dlp.extractor.tweakersTweakersz(https?://tweakers\.net/video/(?P<id>\d+)rk   Nr   r   r   r   r@  r@  4  s"        )GG=JLLLr   r@  c                   "    e Zd ZdZdZdZdZdZdS )TwentyFourSevenSportsIEr!  	247sportszAhttps?://(?:www\.)?247sports\.com/Video/(?:[^/?#&]+-)?(?P<id>\d+)Frk   Nr  r   r   r   rC  rC  4  s'        *GGWJHLLLr   rC  c                   "    e Zd ZdZdZdZdZdZdS )TwentyMinutenIEzyt_dlp.extractor.twentymin20mina9  (?x)
                    https?://
                        (?:www\.)?20min\.ch/
                        (?:
                            videotv/*\?.*?\bvid=|
                            videoplayer/videoplayer\.html\?.*?\bvideoId@
                        )
                        (?P<id>\d+)
                    Frk   Nr  r   r   r   rF  rF  4  s*        *GG ]JHLLLr   rF  c                       e Zd ZdZdZdZdZdS )TwentyThreeVideoIEz!yt_dlp.extractor.twentythreevideo23videozhttps?://(?P<domain>[^.]+\.(?:twentythree\.net|23video\.com|filmweb\.no))/v\.ihtml/player\.html\?(?P<query>.*?\bphoto(?:_|%5f)id=(?P<id>\d+).*)rk   Nr   r   r   r   rI  rI  4  s%        1GG lJLLLr   rI  c                       e Zd ZdZdZdZdZdS )TwitCastingIEyt_dlp.extractor.twitcastingTwitCastingz^https?://(?:[^/?#]+\.)?twitcasting\.tv/(?P<uploader_id>[^/?#]+)/(?:movie|twplayer)/(?P<id>\d+)rk   Nr   r   r   r   rL  rL  5  s"        ,GGtJLLLr   rL  c                       e Zd ZdZdZdZdZdS )TwitCastingLiveIErM  TwitCastingLivezBhttps?://(?:[^/?#]+\.)?twitcasting\.tv/(?P<id>[^/?#]+)/?(?:[#?]|$)rk   Nr   r   r   r   rP  rP  
5  s"        ,GGWJLLLr   rP  c                       e Zd ZdZdZdZdZdS )TwitCastingUserIErM  TwitCastingUserzShttps?://(?:[^/?#]+\.)?twitcasting\.tv/(?P<id>[^/?#]+)/(?:show|archive)/?(?:[#?]|$)rl   Nr   r   r   r   rS  rS  5  s"        ,GGhJLLLr   rS  c                       e Zd ZdZdZdZdS )TwitchBaseIEyt_dlp.extractor.twitch
TwitchBasetwitchNrz   r   r   r   rV  rV  5  r  r   rV  c                   "    e Zd ZdZdZdZdZdZdS )TwitchClipsIErW  ztwitch:clipsa2  (?x)
                    https?://
                        (?:
                            clips\.twitch\.tv/(?:embed\?.*?\bclip=|(?:[^/]+/)*)|
                            (?:(?:www|go|m)\.)?twitch\.tv/(?:[^/]+/)?clip/
                        )
                        (?P<id>[^/?#&]+)
                    rY  rk   Nr   r   r   r   r[  r[  5  s*        'GG SJNLLLr   r[  c                   "    e Zd ZdZdZdZdZdZdS )TwitchCollectionIErW  ztwitch:collectionz@https?://(?:(?:www|go|m)\.)?twitch\.tv/collections/(?P<id>[^/]+)rY  rl   Nr   r   r   r   r]  r]  &5  s'        'G!GUJNLLLr   r]  c                       e Zd ZdZdZdZdS )TwitchPlaylistBaseIErW  TwitchPlaylistBaserY  Nrz   r   r   r   r_  r_  .5  s        'G"GNNNr   r_  c                       e Zd ZdZdZdZdS )TwitchVideosBaseIErW  TwitchVideosBaserY  Nrz   r   r   r   rb  rb  45  s        'G GNNNr   rb  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )TwitchStreamIErW  ztwitch:streama  (?x)
                    https?://
                        (?:
                            (?:(?:www|go|m)\.)?twitch\.tv/|
                            player\.twitch\.tv/\?.*?\bchannel=
                        )
                        (?P<id>[^/#?]+)
                    rY  rk   c           	          t          fdt          t          t          t          t
          t          fD                       rdn t                                                    S )Nc              3   B   K   | ]}|                               V  d S r'   r  r  s     r   r;   z*TwitchStreamIE.suitable.<locals>.<genexpr>D5  s?       $ $Br{{3'' $ $ $ $ $ $r   F)	r   TwitchVodIEr]  TwitchVideosIETwitchVideosClipsIETwitchVideosCollectionsIEr[  r   r4   r   s    `r   r4   zTwitchStreamIE.suitableA5  sr      $ $ $ $&"'-!3# $ $ $ $ $+ WW%%c**	,r   r  r   s   @r   re  re  :5  s^        'GG qJNL	, 	, 	, 	, [	, 	, 	, 	, 	,r   re  c                   "    e Zd ZdZdZdZdZdZdS )rj  rW  ztwitch:videos:clipsz[https?://(?:(?:www|go|m)\.)?twitch\.tv/(?P<id>[^/]+)/(?:clips|videos/*?\?.*?\bfilter=clips)rY  rl   Nr   r   r   r   rj  rj  N5  s'        'G#GrJNLLLr   rj  c                   "    e Zd ZdZdZdZdZdZdS )rk  rW  ztwitch:videos:collectionszWhttps?://(?:(?:www|go|m)\.)?twitch\.tv/(?P<id>[^/]+)/videos/*?\?.*?\bfilter=collectionsrY  rl   Nr   r   r   r   rk  rk  V5  s'        'G)GnJNLLLr   rk  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )ri  rW  ztwitch:videoszGhttps?://(?:(?:www|go|m)\.)?twitch\.tv/(?P<id>[^/]+)/(?:videos|profile)rY  rl   c                     t          fdt          t          fD                       rdn t                                                    S )Nc              3   B   K   | ]}|                               V  d S r'   r  r  s     r   r;   z*TwitchVideosIE.suitable.<locals>.<genexpr>h5  s?       0 0Br{{3'' 0 0 0 0 0 0r   F)r   rj  rk  r   r4   r   s    `r   r4   zTwitchVideosIE.suitablee5  sf      0 0 0 0'-3/ 0 0 0 0 0+ WW%%c**		,r   r  r   s   @r   ri  ri  ^5  s[        'GG\JNL, , , , [, , , , ,r   ri  c                   "    e Zd ZdZdZdZdZdZdS )rh  rW  z
twitch:vodal  (?x)
                    https?://
                        (?:
                            (?:(?:www|go|m)\.)?twitch\.tv/(?:[^/]+/v(?:ideo)?|videos)/|
                            player\.twitch\.tv/\?.*?\bvideo=v?|
                            www\.twitch\.tv/[^/]+/schedule\?vodID=
                        )
                        (?P<id>\d+)
                    rY  rk   Nr   r   r   r   rh  rh  n5  s*        'GG RJNLLLr   rh  c                       e Zd ZdZdZdS )TwitterBaseIEyt_dlp.extractor.twitterTwitterBaseNr   r   r   r   rs  rs  v5  r   r   rs  c                       e Zd ZdZdZdZdZdS )TwitterAmplifyIErt  ztwitter:amplifyz1https?://amp\.twimg\.com/v/(?P<id>[0-9a-f\-]{36})rk   Nr   r   r   r   rw  rw  {5  s"        (GGGJLLLr   rw  c                       e Zd ZdZdZdZdZdS )TwitterBroadcastIErt  ztwitter:broadcastzhttps?://(?:(?:www|m(?:obile)?)\.)?(?:(?:twitter|x)\.com|twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid\.onion)/i/(?P<type>broadcasts|events)/(?P<id>\w+)rk   Nr   r   r   r   ry  ry  5  s%        (G!G {JLLLr   ry  c                       e Zd ZdZdZdZdZdS )TwitterCardIErt  ztwitter:cardzhttps?://(?:(?:www|m(?:obile)?)\.)?(?:(?:twitter|x)\.com|twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid\.onion)/i/(?:cards/tfw/v1|videos(?:/tweet)?)/(?P<id>\d+)rk   Nr   r   r   r   r{  r{  5  s%        (GG BJLLLr   r{  c                   "    e Zd ZdZdZdZdZdZdS )	TwitterIErt  twitterzhttps?://(?:(?:www|m(?:obile)?)\.)?(?:(?:twitter|x)\.com|twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid\.onion)/(?:(?:i/web|[^/]+)/status|statuses)/(?P<id>\d+)(?:/(?:video|photo)/(?P<index>\d+))?r   r   Nr  r   r   r   r}  r}  5  s*        (GG fJILLLr   r}  c                       e Zd ZdZdZdZdS )TwitterShortenerIErt  ztwitter:shortenerz1https?://t\.co/(?P<id>[^?#]+)|tco:(?P<eid>[^?#]+)Nr  r   r   r   r  r  5  s        (G!GEJJJr   r  c                       e Zd ZdZdZdZdZdS )TwitterSpacesIErt  ztwitter:spaceszhttps?://(?:(?:www|m(?:obile)?)\.)?(?:(?:twitter|x)\.com|twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid\.onion)/i/spaces/(?P<id>[0-9a-zA-Z]{13})rk   Nr   r   r   r   r  r  5  s%        (GG qJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )TxxxIEr  TxxxaY  (?x)
        https?://(?:www\.)?(?P<host>hclips\.com|hdzog\.com|hdzog\.tube|hotmovs\.com|hotmovs\.tube|inporn\.com|privatehomeclips\.com|tubepornclassic\.com|txxx\.com|txxx\.tube|upornia\.com|upornia\.tube|vjav\.com|vjav\.tube|vxxx\.com|voyeurhit\.com|voyeurhit\.tube)/
        (?:videos?[/-]|embed/)(?P<id>\d+)(?:/(?P<display_id>[^/?#]+))?
    r   rk   Nr  r   r   r   r  r  5  s*        %GG CJILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
UDNEmbedIEzyt_dlp.extractor.udnUDNEmbedz8https?://video\.udn\.com/(?:embed|play)/news/(?P<id>\d+)u   聯合影音rk   Nr   r   r   r   r  r  5  s'        $GGNJGLLLr   r  c                       e Zd ZdZdZdS )ImgGamingBaseIEzyt_dlp.extractor.imggamingImgGamingBaseNr   r   r   r   r  r  5  r&  r   r  c                       e Zd ZdZdZdZdZdS )UFCArabiaIEyt_dlp.extractor.ufctv	UFCArabiazhttps?://(?P<domain>(?:(?:app|www)\.)?ufcarabia\.(?:ae|com))/(?P<type>live|playlist|video)/(?P<id>\d+)(?:\?.*?\bplaylistId=(?P<playlist_id>\d+))?	ufcarabiaNr  r   r   r   r  r  5  s%        &GG kJ NNNr   r  c                       e Zd ZdZdZdZdZdS )UFCTVIEr  UFCTVzhttps?://(?P<domain>(?:(?:app|www)\.)?(?:ufc\.tv|(?:ufc)?fightpass\.com)|ufcfightpass\.img(?:dge|gaming)\.com)/(?P<type>live|playlist|video)/(?P<id>\d+)(?:\?.*?\bplaylistId=(?P<playlist_id>\d+))?ufctvNr  r   r   r   r  r  5  s%        &GG `JNNNr   r  c                       e Zd ZdZdZdZdZdS )
UKTVPlayIEzyt_dlp.extractor.uktvplayUKTVPlayzNhttps?://uktvplay\.(?:uktv\.)?co\.uk/(?:.+?\?.*?\bvideo=|([^/]+/)*)(?P<id>\d+)rk   Nr   r   r   r   r  r  5  r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )UMGDeIEzyt_dlp.extractor.umgzumg:dezShttps?://(?:www\.)?universal-music\.de/[^/?#]+/videos/(?P<slug>[^/?#]+-(?P<id>\d+))zUniversal Music Deutschlandrk   Nr   r   r   r   r  r  5  s'        $GGiJ+GLLLr   r  c                       e Zd ZdZdZdZdZdS )UOLIEzyt_dlp.extractor.uolz
uol.com.brzhttps?://(?:.+?\.)?uol\.com\.br/.*?(?:(?:mediaId|v)=|view/(?:[a-z0-9]+/)?|video(?:=|/(?:\d{4}/\d{2}/\d{2}/)?))(?P<id>\d+|[\w-]+-[A-Z0-9]+)rk   Nr   r   r   r   r  r  5  s%        $GG fJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )URPlayIEzyt_dlp.extractor.urplayURPlayzLhttps?://(?:www\.)?ur(?:play|skola)\.se/(?:program|Produkter)/(?P<id>[0-9]+)r
  rk   Nr  r   r   r   r  r  5  s'        'GGaJILLLr   r  c                       e Zd ZdZdZdZdZdS )USANetworkIEzyt_dlp.extractor.usanetwork
USANetworkzbhttps?(?P<permalink>://(?:www\.)?usanetwork\.com/(?:[^/]+/videos?|movies?)/(?:[^/]+/)?(?P<id>\d+))rk   Nr   r   r   r   r  r  5  s"        +GGxJLLLr   r  c                       e Zd ZdZdZdZdZdS )
USATodayIEzyt_dlp.extractor.usatodayUSATodayz;https?://(?:www\.)?usatoday\.com/(?:[^/]+/)*(?P<id>[^?/#]+)rk   Nr   r   r   r   r  r  5  s"        )GGPJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )UdemyIEyt_dlp.extractor.udemyudemya]  (?x)
                    https?://
                        (?:[^/]+\.)?udemy\.com/
                        (?:
                            [^#]+\#/lecture/|
                            lecture/view/?\?lectureId=|
                            [^/]+/learn/v4/t/lecture/
                        )
                        (?P<id>\d+)
                    rk   Nr   r   r   r   r  r  5  s*        &GG JNLLLr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )UdemyCourseIEr  zudemy:coursez0https?://(?:[^/]+\.)?udemy\.com/(?P<id>[^/?#&]+)r  c                 ~    t                               |          rdn t                                          |          S r   )r  r4   r   r   s     r   r4   zUdemyCourseIE.suitable6  r   r   r  r   s   @r   r  r  5  s_        &GGEJNI I I I [I I I I Ir   r  c                   "    e Zd ZdZdZdZdZdZdS )
UkColumnIEzyt_dlp.extractor.ukcolumnukcolumnz](?i)https?://(?:www\.)?ukcolumn\.org(/index\.php)?/(?:video|ukcolumn-news)/(?P<id>[-a-z0-9]+)Frk   Nr  r   r   r   r  r  6  s'        )GGsJHLLLr   r  c                       e Zd ZdZdZdZdZdS )UlizaPlayerIEyt_dlp.extractor.ulizaUlizaPlayerzRhttps://player-api\.p\.uliza\.jp/v1/players/[^?#]+\?(?:[^#]*&)?name=(?P<id>[^#&]+)rk   Nr   r   r   r   r  r  6  s"        &GGiJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )UlizaPortalIEr  UlizaPortalzYhttps?://(?:www\.)?ulizaportal\.jp/pages/(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})zulizaportal.jprk   Nr   r   r   r   r  r  6  s'        &GGqJGLLLr   r  c                       e Zd ZdZdZdZdZdS )UnicodeBOMIEr{  
UnicodeBOMz(?P<bom>\ufeff)(?P<id>.*)$FNrV  r   r   r   r  r  6  s"        /GG.JGGGr   r  c                       e Zd ZdZdZdZdZdS )	UnistraIEzyt_dlp.extractor.unistraUnistrazEhttps?://utv\.unistra\.fr/(?:index|video)\.php\?id_video\=(?P<id>\d+)rk   Nr   r   r   r   r  r  %6  r  r   r  c                       e Zd ZdZdZdZdZdS )UnitedNationsWebTvIEzyt_dlp.extractor.unitednationsUnitedNationsWebTvzChttps?://webtv\.un\.org/(?:ar|zh|en|fr|ru|es)/asset/\w+/(?P<id>\w+)rk   Nr   r   r   r   r  r  ,6  s"        .G"GZJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )UnityIEzyt_dlp.extractor.unityUnityzKhttps?://(?:www\.)?unity3d\.com/learn/tutorials/(?:[^/]+/)*(?P<id>[^/?#&]+)Frk   Nr  r   r   r   r  r  36  s'        &GG`JHLLLr   r  c                       e Zd ZdZdZdS )UplynkBaseIEyt_dlp.extractor.uplynk
UplynkBaseNr   r   r   r   r  r  ;6  rW  r   r  c                       e Zd ZdZdZdZdZdS )UplynkIEr  uplynkz(?x)
        https?://[\w-]+\.uplynk\.com/(?P<path>
            ext/[0-9a-f]{32}/(?P<external_id>[^/?&]+)|
            (?P<id>[0-9a-f]{32})
        )\.(?:m3u8|json)
        (?:.*?\bpbs=(?P<session_id>[^&]+))?rk   Nr   r   r   r   r  r  @6  s%        'GG nJLLLr   r  c                       e Zd ZdZdZdZdS )UplynkPreplayIEr  zuplynk:preplayzuhttps?://[\w-]+\.uplynk\.com/preplay2?/(?P<path>ext/[0-9a-f]{32}/(?P<external_id>[^/?&]+)|(?P<id>[0-9a-f]{32}))\.jsonNr  r   r   r   r  r  G6  s         'GG MJJJr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )UrortIEzyt_dlp.extractor.urortUrortz7https?://(?:www\.)?urort\.p3\.no/#!/Band/(?P<id>[^/]+)$Fu   NRK P3 Urørtrk   Nr  r   r   r   r  r  M6  s,        &GGMJHGLLLr   r  c                       e Zd ZdZdZdZdZdS )UstreamChannelIEyt_dlp.extractor.ustreamzustream:channelz3https?://(?:www\.)?ustream\.tv/channel/(?P<slug>.+)rl   Nr   r   r   r   r  r  V6  s"        (GGHJLLLr   r  c                       e Zd ZdZdZdZdZdS )	UstreamIEr  ustreamzfhttps?://(?:www\.)?(?:ustream\.tv|video\.ibm\.com)/(?P<type>recorded|embed|embed/recorded)/(?P<id>\d+)r   Nr   r   r   r   r  r  ]6  s"        (GG~JLLLr   r  c                       e Zd ZdZdZdZdZdS )UstudioEmbedIEyt_dlp.extractor.ustudiozustudio:embedzLhttps?://(?:(?:app|embed)\.)?ustudio\.com/embed/(?P<uid>[^/]+)/(?P<id>[^/]+)rk   Nr   r   r   r   r  r  d6  s"        (GGaJLLLr   r  c                       e Zd ZdZdZdZdZdS )	UstudioIEr  ustudiozShttps?://(?:(?:www|v1)\.)?ustudio\.com/video/(?P<id>[^/]+)/(?P<display_id>[^/?#&]+)rk   Nr   r   r   r   r  r  k6  r  r   r  c                       e Zd ZdZdZdZdZdS )UtreonIEzyt_dlp.extractor.utreonplayeurz;https?://(?:www\.)?(?:utreon|playeur)\.com/v/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  r6  s"        'GGQJLLLr   r  c                       e Zd ZdZdZdZdZdS )VH1IEzyt_dlp.extractor.vh1zvh1.comzGhttps?://(?:www\.)?vh1\.com/(?:video-clips|episodes)/(?P<id>[\da-z]{6})rk   Nr   r   r   r   r  r  y6  s"        $GG]JLLLr   r  c                       e Zd ZdZdZdZdS )VimeoBaseInfoExtractoryt_dlp.extractor.vimeoVimeoBaseInfoExtractvimeoNrz   r   r   r   r  r  6  s        &G$GNNNr   r  c                       e Zd ZdZdZdZdZdS )
VHXEmbedIEr  z	vhx:embedz*https?://embed\.vhx\.tv/videos/(?P<id>\d+)r  Nr  r   r   r   r  r  6  s"        &GG@JNNNr   r  c                       e Zd ZdZdZdZdS )VKBaseIEyt_dlp.extractor.vkVKBasevkNrz   r   r   r   r  r  6  s        #GGNNNr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )VKIEr  r  a  (?x)
                    https?://
                        (?:
                            (?:
                                (?:(?:m|new|vksport)\.)?vk(?:(?:video)?\.ru|\.com)/video_|
                                (?:www\.)?daxab\.com/
                            )
                            ext\.php\?(?P<embed_query>.*?\boid=(?P<oid>-?\d+).*?\bid=(?P<id>\d+).*)|
                            (?:
                                (?:(?:m|new|vksport)\.)?vk(?:(?:video)?\.ru|\.com)/(?:.+?\?.*?z=)?(?:video|clip)|
                                (?:www\.)?daxab\.com/embed/
                            )
                            (?P<videoid>-?\d+_\d+)(?:.*\blist=(?P<list_id>([\da-f]+)|(ln-[\da-zA-Z]+)))?
                        )
                    VKrk   Nr   r   r   r   r  r  6  s/        #GG nJGNLLLr   r  c                       e Zd ZdZdZdS )VKPlayBaseIEr  
VKPlayBaseNr   r   r   r   r  r  6  s        #GGGGr   r  c                       e Zd ZdZdZdZdZdS )VKPlayIEr  VKPlayzchttps?://(?:vkplay\.live|live\.vk(?:play|video)\.ru)/(?P<username>[^/#?]+)/record/(?P<id>[\da-f-]+)rk   Nr   r   r   r   r  r  6  s"        #GGzJLLLr   r  c                       e Zd ZdZdZdZdZdS )VKPlayLiveIEr  
VKPlayLivezPhttps?://(?:vkplay\.live|live\.vk(?:play|video)\.ru)/(?P<id>[^/#?]+)/?(?:[#?]|$)rk   Nr   r   r   r   r  r  6  s"        #GGfJLLLr   r  c                   *    e Zd ZdZdZddgZdZdZdZdS )	VKUserVideosIEr  zvk:uservideoszQhttps?://(?:(?:m|new)\.)?vk(?:video\.ru|\.com/video)/playlist/(?P<id>-?\d+_-?\d+)zkhttps?://(?:(?:m|new)\.)?vk(?:video\.ru|\.com/video)/(?P<id>@[^/?#]+)(?:/all)?/?(?!\?.*\bz=video)(?:[?#]|$)zVK - User's Videosr  rl   Nr   r   r   r   r  r  6  s9        #GGj  m_  `J"GNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )VKWallPostIEr  zvk:wallpostzPhttps?://(?:(?:(?:(?:m|new)\.)?vk\.com/(?:[^?]+\?.*\bw=)?wall(?P<id>-?\d+_\d+)))r  rl   Nr   r   r   r   r  r  6  s'        #GGiJNLLLr   r  c                       e Zd ZdZdZdZdZdS )VODPlIEzyt_dlp.extractor.vodplVODPlz0https?://vod\.pl/(?:[^/]+/)+(?P<id>[0-9a-zA-Z]+)rk   Nr   r   r   r   r  r  6  s"        &GGDJLLLr   r  c                       e Zd ZdZdZdZdZdS )VODPlatformIEzyt_dlp.extractor.vodplatformVODPlatformzXhttps?://(?:(?:www\.)?vod-platform\.net|embed\.kwikmotion\.com)/[eE]mbed/(?P<id>[^/?#]+)rk   Nr   r   r   r   r  r  6  s"        ,GGoJLLLr   r  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )VPROIEr  vprozThttps?://(?:www\.)?(?:(?:tegenlicht\.)?vpro|2doc)\.nl/(?:[^/]+/)*(?P<id>[^/]+)\.htmlr  r   c                     t          fdt          t          t          fD                       rdn t	                                                    S )Nc              3   B   K   | ]}|                               V  d S r'   r  r  s     r   r;   z"VPROIE.suitable.<locals>.<genexpr>6  r  r   Fr  r   s    `r   r4   zVPROIE.suitable6  r  r   r  r   s   @r   r  r  6  s[        $GGkJAGL, , , , [, , , , ,r   r  c                       e Zd ZdZdZdS )	VQQBaseIEr	  VQQBaseNr   r   r   r   r  r  6  s        (GGGGr   r  c                       e Zd ZdZdZdZdZdS )VQQSeriesIEr	  z
vqq:seriesz9https?://v\.qq\.com/x/cover/(?P<id>\w+)\.html/?(?:[?#]|$)rl   Nr   r   r   r   r
  r
  6  s"        (GGPJLLLr   r
  c                       e Zd ZdZdZdZdZdS )
VQQVideoIEr	  z	vqq:videozChttps?://v\.qq\.com/x/(?:page|cover/(?P<series_id>\w+))/(?P<id>\w+)rk   Nr   r   r   r   r  r  6  s"        (GGZJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )VRTIEr  VRTzbhttps?://(?:www\.)?(?P<site>vrt\.be/vrtnws|sporza\.be)/[a-z]{2}/\d{4}/\d{2}/\d{2}/(?P<id>[^/?&#]+)z0VRT NWS, Flanders News, Flandern Info and Sporzark   Nr   r   r   r   r  r  6  s'        $GG{J@GLLLr   r  c                       e Zd ZdZdZdZdZdS )VTMIEzyt_dlp.extractor.vtmVTMzThttps?://(?:www\.)?vtm\.be/[^/?#]+~v(?P<id>[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12})rk   Nr   r   r   r   r  r  6  r  r   r  c                   "    e Zd ZdZdZddgZdZdS )VTVGoIEyt_dlp.extractor.vtvVTVGoz]https?://(?:www\.)?vtvgo\.vn/(kho-video|tin-tuc)/[\w.-]*?(?P<id>\d+)(?:\.[a-z]+|/)?(?:$|[?#])zShttps?://(?:www\.)?vtvgo\.vn/digital/detail\.php\?(?:[^#]+&)?content_id=(?P<id>\d+)rk   Nr   r   r   r   r  r  6  s/        $GGv  yS  TJLLLr   r  c                       e Zd ZdZdZdZdZdS )VTVIEr  VTVz8https?://(?:www\.)?vtv\.vn/video/[\w-]*?(?P<id>\d+)\.htmrk   Nr   r   r   r   r  r  7  r	  r   r  c                       e Zd ZdZdZdZdS )VTXTVBaseIErt  	VTXTVBasevtxtvNrz   r   r   r   r  r  7  r{  r   r  c                       e Zd ZdZdZdZdZdS )VTXTVIErt  VTXTVz(?x)https?://(?:www\.)?vtxtv\.ch/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r  Nr  r   r   r   r  r  7  r  r   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )VTXTVLiveIErt  	VTXTVLivez(?x)https?://(?:www\.)?vtxtv\.ch/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r  c                 ~    t                               |          rdn t                                          |          S r   )r  r4   r   r   s     r   r4   zVTXTVLiveIE.suitable7  r   r   r  r   s   @r   r"  r"  7  r  r   r"  c                       e Zd ZdZdZdZdZdS )VTXTVRecordingsIErt  VTXTVRecordingszp(?x)https?://(?:www\.)?vtxtv\.ch/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r  Nr  r   r   r   r&  r&  $7  r  r   r&  c                       e Zd ZdZdZdZdZdS )VVVVIDIEyt_dlp.extractor.vvvvidVVVVIDzxhttps?://(?:www\.)?vvvvid\.it/(?:#!)?(?:show|anime|film|series)/(?P<show_id>\d+)/[^/]+/(?P<season_id>\d+)/(?P<id>[0-9]+)rk   Nr   r   r   r   r)  r)  +7  s%        'GG PJLLLr   r)  c                       e Zd ZdZdZdZdZdS )VVVVIDShowIEr*  
VVVVIDShowz(?P<base_url>https?://(?:www\.)?vvvvid\.it/(?:#!)?(?:show|anime|film|series)/(?P<id>\d+)(?:/(?P<show_title>[^/?&#]+))?)/?(?:[?#&]|$)rl   Nr   r   r   r   r-  r-  27  s%        'GG [JLLLr   r-  c                   "    e Zd ZdZdZdZdZdZdS )
Varzesh3IEzyt_dlp.extractor.varzesh3Varzesh3zBhttps?://(?:www\.)?video\.varzesh3\.com/(?:[^/]+/)+(?P<id>[^/]+)/?Frk   Nr  r   r   r   r0  r0  97  s'        )GGXJHLLLr   r0  c                       e Zd ZdZdZdZdZdS )Vbox7IEzyt_dlp.extractor.vbox7Vbox7a  (?x)
                    https?://
                        (?:[^/]+\.)?vbox7\.com/
                        (?:
                            play:|
                            (?:
                                emb/external\.php|
                                player/ext\.swf
                            )\?.*?\bvid=
                        )
                        (?P<id>[\da-fA-F]+)
                    rk   Nr   r   r   r   r3  r3  A7  s%        &GG ~JLLLr   r3  c                       e Zd ZdZdZdZdZdS )VeoIEzyt_dlp.extractor.veoVeoz4https?://app\.veo\.co/matches/(?P<id>[0-9A-Za-z-_]+)rk   Nr   r   r   r   r6  r6  H7  r  r   r6  c                       e Zd ZdZdZdS )
VevoBaseIEyt_dlp.extractor.vevoVevoBaseNr   r   r   r   r9  r9  O7  r  r   r9  c                   "    e Zd ZdZdZdZdZdZdS )VevoIEr:  Vevoaz  (?x)
        (?:https?://(?:www\.)?vevo\.com/watch/(?!playlist|genre)(?:[^/]+/(?:[^/]+/)?)?|
           https?://cache\.vevo\.com/m/html/embed\.html\?video=|
           https?://videoplayer\.vevo\.com/embed/embedded\?videoId=|
           https?://embed\.vevo\.com/.*?[?&]isrc=|
           https?://tv\.vevo\.com/watch/artist/(?:[^/]+)/|
           vevo:)
        (?P<id>[^&?#]+)r   rk   Nr  r   r   r   r=  r=  T7  s*        %GG bJILLLr   r=  c                       e Zd ZdZdZdZdZdS )VevoPlaylistIEr:  VevoPlaylistzLhttps?://(?:www\.)?vevo\.com/watch/(?P<kind>playlist|genre)/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r@  r@  \7  s"        %GGaJLLLr   r@  c                       e Zd ZdZdZdZdZdS )ViMPPlaylistIE$yt_dlp.extractor.videocampus_sachsenzViMP:Playlista  (?x)(?P<host>https?://(?:bergauf\.tv|campus\.demo\.vimp\.com|corporate\.demo\.vimp\.com|dancehalldatabase\.com|drehzahl\.tv|educhannel\.hs\-gesundheit\.de|emedia\.ls\.haw\-hamburg\.de|globale\-evolution\.net|hohu\.tv|htvideos\.hightechhigh\.org|k210039\.vimp\.mivitec\.net|media\.cmslegal\.com|media\.fh\-swf\.de|media\.hs\-furtwangen\.de|media\.hwr\-berlin\.de|mediathek\.dkfz\.de|mediathek\.htw\-berlin\.de|mediathek\.polizei\-bw\.de|medien\.hs\-merseburg\.de|mitmedia\.manukau\.ac\.nz|mportal\.europa\-uni\.de|pacific\.demo\.vimp\.com|slctv\.com|streaming\.prairiesouth\.ca|tube\.isbonline\.cn|univideo\.uni\-kassel\.de|ursula2\.genetics\.emory\.edu|ursulablicklevideoarchiv\.com|v\.agrarumweltpaedagogik\.at|video\.eplay\-tv\.de|video\.fh\-dortmund\.de|video\.hs\-nb\.de|video\.hs\-offenburg\.de|video\.hs\-pforzheim\.de|video\.hspv\.nrw\.de|video\.irtshdf\.fr|video\.pareygo\.de|video\.tu\-dortmund\.de|video\.tu\-freiberg\.de|videocampus\.sachsen\.de|videoportal\.uni\-freiburg\.de|videoportal\.vm\.uni\-freiburg\.de|videos\.duoc\.cl|videos\.uni\-paderborn\.de|vimp\-bemus\.udk\-berlin\.de|vimp\.aekwl\.de|vimp\.hs\-mittweida\.de|vimp\.landesfilmdienste\.de|vimp\.oth\-regensburg\.de|vimp\.ph\-heidelberg\.de|vimp\.sma\-events\.com|vimp\.weka\-fachmedien\.de|vimpdesk\.com|webtv\.univ\-montp3\.fr|www\.b\-tu\.de/media|www\.bergauf\.tv|www\.bigcitytv\.de|www\.cad\-videos\.de|www\.drehzahl\.tv|www\.hohu\.tv|www\.hsbi\.de/medienportal|www\.logistic\.tv|www\.orvovideo\.com|www\.printtube\.co\.uk|www\.rwe\.tv|www\.salzi\.tv|www\.signtube\.co\.uk|www\.twb\-power\.com|www\.wenglor\-media\.com|www2\.univ\-sba\.dz))/(?:
        (?P<mode1>album)/view/aid/(?P<album_id>[0-9]+)|
        (?P<mode2>category|channel)/(?P<name>[\w-]+)/(?P<channel_id>[0-9]+)|
        (?P<mode3>tag)/(?P<tag_id>[0-9]+)
    )rl   Nr   r   r   r   rC  rC  c7  s%        4GG UJLLLr   rC  c                       e Zd ZdZdZdS )
ViceBaseIEyt_dlp.extractor.viceViceBaseNr   r   r   r   rF  rF  j7  r  r   rF  c                   &    e Zd ZdZdZdZdZdZdZdS )ViceArticleIErG  zvice:articlezVhttps?://(?:www\.)?vice\.com/(?P<locale>[^/]+)/article/(?:[0-9a-z]{6}/)?(?P<id>[^?#]+)Fro  rk   Nr  r   r   r   rJ  rJ  o7  s,        %GGkJHILLLr   rJ  c                   &    e Zd ZdZdZdZdZdZdZdS )ViceIErG  vicez{https?://(?:(?:video|vms)\.vice|(?:www\.)?vice(?:land|tv))\.com/(?P<locale>[^/]+)/(?:video/[^/]+|embed)/(?P<id>[\da-f]{24})Fr  rk   Nr  r   r   r   rL  rL  x7  s/        %GG SJHILLLr   rL  c                   "    e Zd ZdZdZdZdZdZdS )
ViceShowIErG  z	vice:showz_https?://(?:video\.vice|(?:www\.)?vice(?:land|tv))\.com/(?P<locale>[^/]+)/show/(?P<id>[^/?#&]+)Frl   Nr  r   r   r   rO  rO  7  s'        %GGuJHLLLr   rO  c                       e Zd ZdZdZdZdZdS )VidLiiIEzyt_dlp.extractor.vidliiVidLiizPhttps?://(?:www\.)?vidlii\.com/(?:watch|embed)\?.*?\bv=(?P<id>[0-9A-Za-z_-]{11})rk   Nr   r   r   r   rQ  rQ  7  s"        'GGgJLLLr   rQ  c                   "    e Zd ZdZdZdZdZdZdS )	ViddlerIEzyt_dlp.extractor.viddlerViddlerzZhttps?://(?:www\.)?viddler\.com/(?:v|embed|player)/(?P<id>[a-z0-9]+)(?:.+?\bsecret=(\d+))?Frk   Nr  r   r   r   rT  rT  7  s'        (GGqJHLLLr   rT  c                       e Zd ZdZdZdZdZdS )VideaIEzyt_dlp.extractor.videaVideaaX  (?x)
                    https?://
                        videa(?:kid)?\.hu/
                        (?:
                            videok/(?:[^/]+/)*[^?#&]+-|
                            (?:videojs_)?player\?.*?\bv=|
                            player/v/
                        )
                        (?P<id>[^?#&]+)
                    rk   Nr   r   r   r   rW  rW  7  s%        &GG xJLLLr   rW  c                       e Zd ZdZdZdZdZdS )VideoDetectiveIEzyt_dlp.extractor.videodetectiveVideoDetectivez>https?://(?:www\.)?videodetective\.com/[^/]+/[^/]+/(?P<id>\d+)rk   Nr   r   r   r   rZ  rZ  7  s"        /GGTJLLLr   rZ  c                       e Zd ZdZdZdS )VideoKenBaseIEyt_dlp.extractor.videokenVideoKenBaseNr   r   r   r   r]  r]  7  r  r   r]  c                       e Zd ZdZdZdZdZdS )VideoKenCategoryIEr^  VideoKenCategoryznhttps?://(?P<host>videos\.icts\.res\.in|videos\.cncf\.io|videos\.neurips\.cc)/category/(?P<id>\d+)/?(?:$|[?#])rl   Nr   r   r   r   ra  ra  7  s%        )G G JJLLLr   ra  c                       e Zd ZdZdZdZdZdS )
VideoKenIEr^  VideoKenzhttps?://(?P<host>videos\.icts\.res\.in|videos\.cncf\.io|videos\.neurips\.cc)/(?:(?:topic|category)/[^/#?]+/)?video/(?P<id>[\w-]+)rk   Nr   r   r   r   rd  rd  7  s%        )GG ^JLLLr   rd  c                       e Zd ZdZdZdZdZdS )VideoKenPlayerIEr^  VideoKenPlayerz;https?://player\.videoken\.com/embed/slideslive-(?P<id>\d+)rk   Nr   r   r   r   rg  rg  7  s"        )GGQJLLLr   rg  c                       e Zd ZdZdZdZdZdS )VideoKenPlaylistIEr^  VideoKenPlaylistzthttps?://(?P<host>videos\.icts\.res\.in|videos\.cncf\.io|videos\.neurips\.cc)/(?:category/\d+/)?playlist/(?P<id>\d+)rl   Nr   r   r   r   rj  rj  7  s%        )G G QJLLLr   rj  c                       e Zd ZdZdZdZdZdS )VideoKenTopicIEr^  VideoKenTopiczohttps?://(?P<host>videos\.icts\.res\.in|videos\.cncf\.io|videos\.neurips\.cc)/topic/(?P<id>[^/#?]+)/?(?:$|[?#])rl   Nr   r   r   r   rm  rm  7  s%        )GG JJLLLr   rm  c                       e Zd ZdZdZdZdZdS )VideoPressIEzyt_dlp.extractor.videopress
VideoPressz?https?://video(?:\.word)?press\.com/embed/(?P<id>[\da-zA-Z]{8})rk   Nr   r   r   r   rp  rp  7  s"        +GGUJLLLr   rp  c                       e Zd ZdZdZdZdZdS )VideocampusSachsenIErD  ViMPa   (?x)https?://(?P<host>bergauf\.tv|campus\.demo\.vimp\.com|corporate\.demo\.vimp\.com|dancehalldatabase\.com|drehzahl\.tv|educhannel\.hs\-gesundheit\.de|emedia\.ls\.haw\-hamburg\.de|globale\-evolution\.net|hohu\.tv|htvideos\.hightechhigh\.org|k210039\.vimp\.mivitec\.net|media\.cmslegal\.com|media\.fh\-swf\.de|media\.hs\-furtwangen\.de|media\.hwr\-berlin\.de|mediathek\.dkfz\.de|mediathek\.htw\-berlin\.de|mediathek\.polizei\-bw\.de|medien\.hs\-merseburg\.de|mitmedia\.manukau\.ac\.nz|mportal\.europa\-uni\.de|pacific\.demo\.vimp\.com|slctv\.com|streaming\.prairiesouth\.ca|tube\.isbonline\.cn|univideo\.uni\-kassel\.de|ursula2\.genetics\.emory\.edu|ursulablicklevideoarchiv\.com|v\.agrarumweltpaedagogik\.at|video\.eplay\-tv\.de|video\.fh\-dortmund\.de|video\.hs\-nb\.de|video\.hs\-offenburg\.de|video\.hs\-pforzheim\.de|video\.hspv\.nrw\.de|video\.irtshdf\.fr|video\.pareygo\.de|video\.tu\-dortmund\.de|video\.tu\-freiberg\.de|videocampus\.sachsen\.de|videoportal\.uni\-freiburg\.de|videoportal\.vm\.uni\-freiburg\.de|videos\.duoc\.cl|videos\.uni\-paderborn\.de|vimp\-bemus\.udk\-berlin\.de|vimp\.aekwl\.de|vimp\.hs\-mittweida\.de|vimp\.landesfilmdienste\.de|vimp\.oth\-regensburg\.de|vimp\.ph\-heidelberg\.de|vimp\.sma\-events\.com|vimp\.weka\-fachmedien\.de|vimpdesk\.com|webtv\.univ\-montp3\.fr|www\.b\-tu\.de/media|www\.bergauf\.tv|www\.bigcitytv\.de|www\.cad\-videos\.de|www\.drehzahl\.tv|www\.hohu\.tv|www\.hsbi\.de/medienportal|www\.logistic\.tv|www\.orvovideo\.com|www\.printtube\.co\.uk|www\.rwe\.tv|www\.salzi\.tv|www\.signtube\.co\.uk|www\.twb\-power\.com|www\.wenglor\-media\.com|www2\.univ\-sba\.dz)/(?:
        m/(?P<tmp_id>[0-9a-f]+)|
        (?:category/)?video/(?P<display_id>[\w-]+)/(?P<id>[0-9a-f]{32})|
        media/embed.*(?:\?|&)key=(?P<embed_id>[0-9a-f]{32}&?)
    )rk   Nr   r   r   r   rs  rs  7  s%        4GG KJLLLr   rs  c                   "    e Zd ZdZdZdZdZdZdS )VideofyMeIEzyt_dlp.extractor.videofymez
videofy.mezEhttps?://(?:www\.videofy\.me/.+?|p\.videofy\.me/v)/(?P<id>\d+)(&|#|$)Frk   Nr  r   r   r   rv  rv  7  s'        *GG]JHLLLr   rv  c                   "    e Zd ZdZdZdZdZdZdS )VideomoreIEyt_dlp.extractor.videomore	videomorea  (?x)
                    videomore:(?P<sid>\d+)$|
                    https?://
                        (?:
                            videomore\.ru/
                            (?:
                                embed|
                                [^/]+/[^/]+
                            )/|
                            (?:
                                (?:player\.)?videomore\.ru|
                                siren\.more\.tv/player
                            )/[^/]*\?.*?\btrack_id=|
                            odysseus\.more.tv/player/(?P<partner_id>\d+)/
                        )
                        (?P<id>\d+)
                        (?:[/?#&]|\.(?:xml|json)|$)
                    r  rk   Nr  r   r   r   rx  rx  7  s*        *GG sJILLLr   rx  c                       e Zd ZdZdZdS )VideomoreBaseIEry  VideomoreBaseNr   r   r   r   r|  r|  7  r&  r   r|  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )VideomoreSeasonIEry  zvideomore:seasonzShttps?://(?:videomore\.ru|more\.tv)/(?!embed)(?P<id>[^/]+/[^/?#&]+)(?:/*|[?#&].*?)$rl   c                     t                               |          st                              |          rdn t                                          |          S r   )rx  r4   VideomoreVideoIEr   r   s     r   r4   zVideomoreSeasonIE.suitable7  sN    %..s33 +7G7P7PQT7U7U +WW%%c**	,r   r   r   s   @r   r  r  7  sV        *G GhJL, , , , [, , , , ,r   r  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )r  ry  zvideomore:videozVhttps?://(?:videomore\.ru|more\.tv)/(?P<id>(?:(?:[^/]+/){2})?[^/?#&]+)(?:/*|[?#&].*?)$r  rk   c                 ~    t                               |          rdn t                                          |          S r   )rx  r4   r   r   s     r   r4   zVideomoreVideoIE.suitable8  rU  r   re
  r   s   @r   r  r  7  sd        *GGkJILM M M M [M M M M Mr   r  c                       e Zd ZdZdZdZdZdS )	VidflexIEzyt_dlp.extractor.vidflexVidflexa  https?://(?:[^.]+\.vidflex\.tv|(?:www\.)?acactv\.ca|(?:www\.)?albertalacrossetv\.com|(?:www\.)?cjfltv\.com|(?:www\.)?figureitoutbaseball\.com|(?:www\.)?ocaalive\.com|(?:www\.)?pegasussports\.tv|(?:www\.)?praxisseries\.ca|(?:www\.)?silenticetv\.com|(?:www\.)?tuffhedemantv\.com|(?:www\.)?watchfuntv\.com|live\.ofsaa\.on\.ca|tv\.procoro\.ca|tv\.realcastmedia\.net|tv\.fringetheatre\.ca|video\.haisla\.ca|video\.hockeycanada\.ca|video\.huuayaht\.org|video\.turningpointensemble\.ca|videos\.livingworks\.net|videos\.telusworldofscienceedmonton\.ca|watch\.binghamtonbulldogs\.com|watch\.rekindle\.tv|watch\.wpca\.com)/[a-z]{2}(?:-[a-z]{2})?/c/[\w-]+\.(?P<id>\d+)rk   Nr   r   r   r   r  r  	8  s%        (GG YJLLLr   r  c                       e Zd ZdZdZdZdS )VidioBaseIEyt_dlp.extractor.vidio	VidioBasevidioNrz   r   r   r   r  r  8  r	  r   r  c                   "    e Zd ZdZdZdZdZdZdS )VidioIEr  VidiozPhttps?://(?:www\.)?vidio\.com/(watch|embed)/(?P<id>\d+)-(?P<display_id>[^/?#&]+)r  rk   Nr   r   r   r   r  r  8  s'        &GGfJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )VidioLiveIEr  	VidioLivezGhttps?://(?:www\.)?vidio\.com/live/(?P<id>\d+)-(?P<display_id>[^/?#&]+)r  rk   Nr   r   r   r   r  r  8  s'        &GG]JNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )VidioPremierIEr  VidioPremierzJhttps?://(?:www\.)?vidio\.com/premier/(?P<id>\d+)/(?P<display_id>[^/?#&]+)r  rl   Nr   r   r   r   r  r  &8  s'        &GG`JNLLLr   r  c                       e Zd ZdZdZdZdZdS )VidlyIEzyt_dlp.extractor.vidlyVidlyzPhttps?://(?:vid\.ly/|(?:s\.)?vid\.ly/embeded\.html\?(?:[^#]+&)?link=)(?P<id>\w+)rk   Nr   r   r   r   r  r  .8  s"        &GGiJLLLr   r  c                       e Zd ZdZdZdZdZdS )VidsIoIEr  zvids.iozHhttps?://[\w-]+\.vids\.io/videos/(?P<id>[\da-f]+)/(?P<display_id>[\w-]+)rk   Nr   r   r   r   r  r  58  s"        ,GG`JLLLr   r  c                   "    e Zd ZdZdZg dZdZdS )	VidyardIEr  Vidyard)z=https?://[\w-]+(?:\.hubs)?\.vidyard\.com/watch/(?P<id>[\w-]+)z;https?://(?:embed|share)\.vidyard\.com/share/(?P<id>[\w-]+)z6https?://play\.vidyard\.com/(?:player/)?(?P<id>[\w-]+)r   Nr   r   r   r   r  r  <8  s1        (GG W  W  WJLLLr   r  c                       e Zd ZdZdZdS )ViewLiftBaseIEyt_dlp.extractor.viewliftViewLiftBaseNr   r   r   r   r  r  C8  r  r   r  c                       e Zd ZdZdZdZdZdS )ViewLiftEmbedIEr  zviewlift:embeda  https?://(?:(?:www|embed)\.)?(?P<domain>(?:(?:main\.)?snagfilms|snagxtreme|funnyforfree|kiddovid|winnersview|(?:monumental|lax)sportsnetwork|vayafilm|failarmy|ftfnext|lnppass\.legapallacanestro|moviespree|app\.myoutdoortv|neoufitness|pflmma|theidentitytb|chorki)\.com|(?:hoichoi|app\.horseandcountry|kronon|marquee|supercrosslive)\.tv)/embed/player\?.*\bfilmId=(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})rk   Nr   r   r   r   r  r  H8  s%        )GG yJLLLr   r  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )
ViewLiftIEr  viewlifta  https?://(?:www\.)?(?P<domain>(?:(?:main\.)?snagfilms|snagxtreme|funnyforfree|kiddovid|winnersview|(?:monumental|lax)sportsnetwork|vayafilm|failarmy|ftfnext|lnppass\.legapallacanestro|moviespree|app\.myoutdoortv|neoufitness|pflmma|theidentitytb|chorki)\.com|(?:hoichoi|app\.horseandcountry|kronon|marquee|supercrosslive)\.tv)(?P<path>(?:/(?:films/title|show|(?:news/)?videos?|watch))?/(?P<id>[^?#]+))ro  r   c                 ~    t                               |          rdn t                                          |          S r   )r  r4   r   r   s     r   r4   zViewLiftIE.suitableV8  r  r   re
  r   s   @r   r  r  O8  sg        )GG kJILQ Q Q Q [Q Q Q Q Qr   r  c                       e Zd ZdZdZdZdZdS )ViewSourceIEr  
ViewSourcezview-source:(?P<url>.+)FNrV  r   r   r   r  r  [8  s"        0GG*JGGGr   r  c                       e Zd ZdZdZdZdZdS )ViideaIEzyt_dlp.extractor.viideaViideaa;  (?x)https?://(?:www\.)?(?:
            videolectures\.net|
            flexilearn\.viidea\.net|
            presentations\.ocwconsortium\.org|
            video\.travel-zoom\.si|
            video\.pomp-forum\.si|
            tv\.nil\.si|
            video\.hekovnik.com|
            video\.szko\.si|
            kpk\.viidea\.com|
            inside\.viidea\.net|
            video\.kiberpipa\.org|
            bvvideo\.si|
            kongres\.viidea\.net|
            edemokracija\.viidea\.com
        )(?:/lecture)?/(?P<id>[^/]+)(?:/video/(?P<part>\d+))?/*(?:[#?].*)?$r   Nr   r   r   r   r  r  b8  s%        'GG y	JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )VimeoAlbumIEr  zvimeo:albumzThttps://vimeo\.com/(?:album|showcase)/(?P<id>[^/?#]+)(?:$|[?#]|(?P<is_embed>/embed))r  rl   Nr   r   r   r   r  r  i8  s'        &GGhJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )VimeoChannelIEr  zvimeo:channelz7https://vimeo\.com/channels/(?P<id>[^/?#]+)/?(?:$|[?#])r  rl   Nr   r   r   r   r  r  q8  s'        &GGKJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )VimeoEventIEr  zvimeo:eventz(?x)
        https?://(?:www\.)?vimeo\.com/event/(?P<id>\d+)(?:/
            (?:
                (?:embed/)?(?P<unlisted_hash>[\da-f]{10})|
                videos/(?P<video_id>\d+)
            )
        )?r  rk   Nr   r   r   r   r  r  y8  s*        &GG lJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )VimeoGroupsIEr  zvimeo:groupz=https://vimeo\.com/groups/(?P<id>[^/]+)(?:/(?!videos?/\d+)|$)r  rl   Nr   r   r   r   r  r  8  s'        &GGRJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )VimeoIEr  r  al  (?x)
                     https?://
                         (?:
                             (?:
                                 www|
                                 player
                             )
                             \.
                         )?
                         vimeo\.com/
                         (?:
                             (?P<u>user)|
                             (?!(?:channels|album|showcase)/[^/?#]+/?(?:$|[?#])|[^/]+/review/|ondemand/)
                             (?:(?!event/).*?/)??
                             (?P<q>
                                 (?:
                                     play_redirect_hls|
                                     moogaloop\.swf)\?clip_id=
                             )?
                             (?:videos?/)?
                         )
                         (?P<id>[0-9]+)
                         (?(u)
                             /(?!videos|likes)[^/?#]+/?|
                             (?(q)|/(?P<unlisted_hash>[\da-f]{10}))?
                         )
                         (?:(?(q)[&]|(?(u)|/?)[?]).*?)?(?:[#].*)?$
                 rk   Nr   r   r   r   r  r  8  s*        &GG `JNLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )VimeoLikesIEr  zvimeo:likeszBhttps://(?:www\.)?vimeo\.com/(?P<id>[^/]+)/likes/?(?:$|[?#]|sort:)zVimeo user likesr  rl   Nr   r   r   r   r  r  8  s,        &GGWJ GNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )VimeoOndemandIEr  zvimeo:ondemandzBhttps?://(?:www\.)?vimeo\.com/ondemand/(?:[^/]+/)?(?P<id>[^/?#&]+)r  rk   Nr   r   r   r   r  r  8  s'        &GGWJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
VimeoProIEr  z	vimeo:prozZhttps?://(?:www\.)?vimeopro\.com/[^/?#]+/(?P<slug>[^/?#]+)(?:(?:/videos?/(?P<id>[0-9]+)))?r  rk   Nr   r   r   r   r  r  8  s'        &GGoJNLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )VimeoReviewIEr  zvimeo:reviewzNhttps?://vimeo\.com/(?P<user>[^/?#]+)/review/(?P<id>\d+)/(?P<hash>[\da-f]{10})zReview pages on vimeor  rk   Nr   r   r   r   r  r  8  s,        &GGdJ%GNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )VimeoUserIEr  z
vimeo:userz\https://vimeo\.com/(?!(?:[0-9]+|watchlater)(?:$|[?#/]))(?P<id>[^/]+)(?:/videos)?/?(?:$|[?#])r  rl   Nr   r   r   r   r  r  8  s'        &GGpJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )VimeoWatchLaterIEr  zvimeo:watchlaterz8https://vimeo\.com/(?:home/)?watchlater|:vimeowatchlaterzLVimeo watch later list, ":vimeowatchlater" keyword (requires authentication)r  Nr   r   r   r   r  r  8  s'        &G GLJ\GNNNr   r  c                       e Zd ZdZdZdZdZdS )VimmIEyt_dlp.extractor.vimmzVimm:streamz6https?://(?:www\.)?vimm\.tv/(?:c/)?(?P<id>[0-9a-z-]+)$rk   Nr   r   r   r   r  r  8  s"        %GGKJLLLr   r  c                       e Zd ZdZdZdZdZdS )VimmRecordingIEr  zVimm:recordingzVhttps?://(?:www\.)?vimm\.tv/c/(?P<channel_id>[0-9a-z-]+)\?v=(?P<video_id>[0-9A-Za-z]+)rk   Nr   r   r   r   r  r  8  s"        %GGlJLLLr   r  c                       e Zd ZdZdZdZdS )	ViouslyIEzyt_dlp.extractor.viouslyViouslyFNr  r   r   r   r  r  8  s        (GGJJJr   r  c                   "    e Zd ZdZdZdZdZdZdS )ViqeoIEzyt_dlp.extractor.viqeoViqeoaE  (?x)
                        (?:
                            viqeo:|
                            https?://cdn\.viqeo\.tv/embed/*\?.*?\bvid=|
                            https?://api\.viqeo\.tv/v\d+/data/startup?.*?\bvideo(?:%5B%5D|\[\])=
                        )
                        (?P<id>[\da-f]+)
                    Frk   Nr  r   r   r   r  r  8  s*        &GG kJHLLLr   r  c                       e Zd ZdZdZdS )	ViuBaseIEyt_dlp.extractor.viuViuBaseNr   r   r   r   r  r  8  r  r   r  c                       e Zd ZdZdZdZdZdS )ViuIEr  Viuz<(?:viu:|https?://[^/]+\.viu\.com/[a-z]{2}/media/)(?P<id>\d+)rk   Nr   r   r   r   r  r  8  s"        $GGRJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )ViuOTTIEr  zviu:ottzkhttps?://(?:www\.)?viu\.com/ott/(?P<country_code>[a-z]{2})/(?P<lang_code>[a-z]{2}-[a-z]{2})/vod/(?P<id>\d+)viur   Nr   r   r   r   r  r  8  s*        $GG BJNLLLr   r  c                       e Zd ZdZdZdS )ViuOTTIndonesiaBaseIEr  ViuOTTIndonesiaBaseNr   r   r   r   r  r  8  ri  r   r  c                   "    e Zd ZdZdZdZdZdZdS )ViuOTTIndonesiaIEr  ViuOTTIndonesiaz?https?://www\.viu\.com/ott/\w+/\w+/all/video-[\w-]+-(?P<id>\d+)r2  rk   Nr  r   r   r   r  r  8  s'        $GGXJILLLr   r  c                       e Zd ZdZdZdZdZdS )ViuPlaylistIEr  zviu:playlistz9https?://www\.viu\.com/[^/]+/listing/playlist-(?P<id>\d+)rl   Nr   r   r   r   r  r   9  s"        $GGOJLLLr   r  c                       e Zd ZdZdZdZdZdS )	VocarooIEzyt_dlp.extractor.vocarooVocaroozChttps?://(?:www\.)?(?:vocaroo\.com|voca\.ro)/(?:embed/)?(?P<id>\w+)rk   Nr   r   r   r   r  r  9  r2  r   r  c                       e Zd ZdZdZdS )VoicyBaseIEyt_dlp.extractor.voicy	VoicyBaseNr   r   r   r   r  r  9  r   r   r  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )VoicyChannelIEr  zvoicy:channelz&https?://voicy\.jp/channel/(?P<id>\d+)Frl   c                 |    t                               |           o t                                          |          S r'   )VoicyIEr4   r   r   s     r   r4   zVoicyChannelIE.suitable9  s1    ##C(((BUWW-=-=c-B-BBr   r  r   s   @r   r  r  9  sd        &GG;JHLC C C C [C C C C Cr   r  c                   "    e Zd ZdZdZdZdZdZdS )r  r  voicyz:https?://voicy\.jp/channel/(?P<channel_id>\d+)/(?P<id>\d+)Frl   Nr  r   r   r   r  r  9  s'        &GGPJHLLLr   r  c                       e Zd ZdZdZdS )VolejTVBaseIEyt_dlp.extractor.volejtvVolejTVBaseNr   r   r   r   r  r  '9  r   r   r  c                       e Zd ZdZdZdS )VolejTVPlaylistBaseIEr  VolejTVPlaylistBaseNr   r   r   r   r  r  ,9  r  r   r  c                       e Zd ZdZdZdZdZdS )VolejTVCategoryPlaylistIEr  zvolejtv:categoryz,https?://volej\.tv/kategorie/(?P<id>[^/$?]+)rl   Nr   r   r   r   r  r  19  s"        (G G@JLLLr   r  c                       e Zd ZdZdZdZdZdS )VolejTVClubPlaylistIEr  zvolejtv:clubz#https?://volej\.tv/klub/(?P<id>\d+)rl   Nr   r   r   r   r  r  89  s"        (GG8JLLLr   r  c                       e Zd ZdZdZdZdZdS )	VolejTVIEr  zvolejtv:matchz$https?://volej\.tv/match/(?P<id>\d+)rk   Nr   r   r   r   r  r  ?9  s"        (GG9JLLLr   r  c                       e Zd ZdZdZdZdZdS )
VoxMediaIEyt_dlp.extractor.voxmediaVoxMediazhttps?://(?:www\.)?(?:(?:theverge|vox|sbnation|eater|polygon|curbed|racked|funnyordie)\.com|recode\.net)/(?:[^/]+/)*(?P<id>[^/?]+)r   Nr   r   r   r   r  r  F9  s%        )GG YJLLLr   r  c                       e Zd ZdZdZdZdS )VoxMediaVolumeIEr  VoxMediaVolumez7https?://volume\.vox-cdn\.com/embed/(?P<id>[0-9a-f]{9})Nr  r   r   r   r  r  M9  s        )GGLJJJr   r  c                       e Zd ZdZdZdS )VrSquarePlaylistBaseIEyt_dlp.extractor.vrsquareVrSquarePlaylistBaseNr   r   r   r   r  r  S9  r  r   r  c                       e Zd ZdZdZdZdZdS )VrSquareChannelIEr  zvrsquare:channelz%https?://livr\.jp/channel/(?P<id>\w+)rl   Nr   r   r   r   r  r  X9  s"        )G G:JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
VrSquareIEr  vrsquarez)https?://livr\.jp/contents/(?P<id>[\w-]+)z	VR SQUARErk   Nr   r   r   r   r  r  _9  s'        )GG>JGLLLr   r  c                       e Zd ZdZdZdZdZdS )VrSquareSearchIEr  zvrsquare:searchz2https?://livr\.jp/web-search/?\?(?:[^#]+&)?w=[^#]+rl   Nr   r   r   r   r  r  g9  s"        )GGGJLLLr   r  c                       e Zd ZdZdZdZdZdS )VrSquareSectionIEr  zvrsquare:sectionz3https?://livr\.jp/(?:category|headline)/(?P<id>\w+)rl   Nr   r   r   r   r  r  n9  s"        )G GHJLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )VrtNUIEr  vrtmaxzMhttps?://(?:www\.)?vrt\.be/(?:vrtnu|vrtmax)/a-z/(?:[^/]+/){2}(?P<id>[^/?#&]+)zVRT MAX (formerly VRT NU)vrtnurk   Nr   r   r   r   r  r  u9  s,        $GGbJ)GNLLLr   r  c                       e Zd ZdZdZdZdZdS )VuClipIEzyt_dlp.extractor.vuclipVuClipz5https?://(?:m\.)?vuclip\.com/w\?.*?cid=(?P<id>[0-9]+)rk   Nr   r   r   r   r  r  ~9  r	  r   r  c                       e Zd ZdZdZdZdZdS )WDRElefantIEyt_dlp.extractor.wdr
WDRElefantz8https?://(?:www\.)wdrmaus\.de/elefantenseite/#(?P<id>.+)rk   Nr   r   r   r   r  r  9  s"        $GGMJLLLr   r  c                       e Zd ZdZdZdZdZdS )WDRIEr  WDRz(?x)https?://
        (?:deviceids-medp\.wdr\.de/ondemand/\d+/|
           kinder\.wdr\.de/(?!mediathek/)[^#?]+-)
        (?P<id>\d+)\.(?:js|assetjsonp)
    rk   Nr   r   r   r   r  r  9  s%        $GG |JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )WDRMobileIEr  z
wdr:mobilez(?x)
        https?://mobile-ondemand\.wdr\.de/
        .*?/fsk(?P<age_limit>[0-9]+)
        /[0-9]+/[0-9]+/
        (?P<id>[0-9]+)_(?P<title>[0-9]+)Frk   Nr  r   r   r   r  r  9  s*        $GG oJHLLLr   r  c                       e Zd ZdZdZdZdZdS )	WDRPageIEr  WDRPagezhttps?://(?:www\d?\.)?(?:(?:kinder\.)?wdr\d?|sportschau)\.de/(?:mediathek/)?(?:[^/]+/)*(?P<display_id>[^/]+)\.html|https?://(?:www\.)wdrmaus.de/(?:[^/]+/)*?(?P<maus_id>[^/?#.]+)(?:/?|/index\.php5|\.php5)$r   Nr   r   r   r   r  r  9  s%        $GG iJLLLr   r  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )WNLIEr  wnlz@https?://(?:www\.)?omroepwnl\.nl/video/detail/(?P<id>[^/]+)__\d+r  rl   c                     t          fdt          t          t          fD                       rdn t	                                                    S )Nc              3   B   K   | ]}|                               V  d S r'   r  r  s     r   r;   z!WNLIE.suitable.<locals>.<genexpr>9  r  r   Fr  r   s    `r   r4   zWNLIE.suitable9  r  r   r  r   s   @r   r"  r"  9  s[        $GGVJAGL, , , , [, , , , ,r   r"  c                       e Zd ZdZdZdS )WPPilotBaseIEyt_dlp.extractor.wppilotWPPilotBaseNr   r   r   r   r'  r'  9  r   r   r'  c                       e Zd ZdZdZdZdZdS )WPPilotChannelsIEr(  zwppilot:channelsz<(?:https?://pilot\.wp\.pl/(?:tv/?)?(?:\?[^#]*)?#?|wppilot:)$rl   Nr   r   r   r   r+  r+  9  s"        (G GRJLLLr   r+  c                       e Zd ZdZdZdZdZdS )	WPPilotIEr(  wppilotz:(?:https?://pilot\.wp\.pl/tv/?#|wppilot:)(?P<id>[a-z\d-]+)rk   Nr   r   r   r   r-  r-  9  s"        (GGPJLLLr   r-  c                       e Zd ZdZdZdZdZdS )WSJArticleIEyt_dlp.extractor.wsj
WSJArticlezE(?i)https?://(?:www\.)?wsj\.com/(?:articles|opinion)/(?P<id>[^/?#&]+)rk   Nr   r   r   r   r0  r0  9  r  r   r0  c                   "    e Zd ZdZdZdZdZdZdS )WSJIEr1  WSJa\  (?x)
                        (?:
                            https?://video-api\.wsj\.com/api-video/player/iframe\.html\?.*?\bguid=|
                            https?://(?:www\.)?(?:wsj|barrons)\.com/video/(?:[^/]+/)+|
                            wsj:
                        )
                        (?P<id>[a-fA-F0-9-]{36})
                    zWall Street Journalrk   Nr   r   r   r   r4  r4  9  s*        $GG ~J#GLLLr   r4  c                       e Zd ZdZdZdS )	WWEBaseIEyt_dlp.extractor.wweWWEBaseNr   r   r   r   r7  r7  9  r  r   r7  c                       e Zd ZdZdZdZdZdS )WWEIEr8  WWEz@https?://(?:[^/]+\.)?wwe\.com/(?:[^/]+/)*videos/(?P<id>[^/?#&]+)rk   Nr   r   r   r   r;  r;  9  r
  r   r;  c                       e Zd ZdZdZdZdZdS )WallaIEzyt_dlp.extractor.wallaWallaz@https?://vod\.walla\.co\.il/[^/]+/(?P<id>\d+)/(?P<display_id>.+)rk   Nr   r   r   r   r>  r>  9  r  r   r>  c                       e Zd ZdZdZdZdS )WalyTVBaseIErt  
WalyTVBasewalytvNrz   r   r   r   rA  rA  9  r  r   rA  c                       e Zd ZdZdZdZdZdS )WalyTVIErt  WalyTVz(?x)https?://(?:www\.)?player\.waly\.tv/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )rC  Nr  r   r   r   rE  rE  9  s%        'GG nJNNNr   rE  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )WalyTVLiveIErt  
WalyTVLivez(?x)https?://(?:www\.)?player\.waly\.tv/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )rC  c                 ~    t                               |          rdn t                                          |          S r   )rE  r4   r   r   s     r   r4   zWalyTVLiveIE.suitable9  r  r   r  r   s   @r   rH  rH  9  sb        'GG cJNJ J J J [J J J J Jr   rH  c                       e Zd ZdZdZdZdZdS )WalyTVRecordingsIErt  WalyTVRecordingszw(?x)https?://(?:www\.)?player\.waly\.tv/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )rC  Nr  r   r   r   rL  rL  9  s%        'G G SJNNNr   rL  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )WashingtonPostArticleIEyt_dlp.extractor.washingtonpostzwashingtonpost:articlezAhttps?://(?:www\.)?washingtonpost\.com/(?:[^/]+/)*(?P<id>[^/?#]+)rl   c                 ~    t                               |          rdn t                                          |          S r   )WashingtonPostIEr4   r   r   s     r   r4   z WashingtonPostArticleIE.suitable
:  s2    (11#66QuuEGG<L<LS<Q<QQr   r   r   s   @r   rO  rO  :  s_        /G&GVJLR R R R [R R R R Rr   rO  c                       e Zd ZdZdZdZdZdS )rR  rP  washingtonpostz(?:washingtonpost:|https?://(?:www\.)?washingtonpost\.com/(?:video|posttv)/(?:[^/]+/)*)(?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})rk   Nr   r   r   r   rR  rR  :  s%        /GG qJLLLr   rR  c                       e Zd ZdZdZdZdZdS )WatIEzyt_dlp.extractor.watzwat.tvz>(?:wat:|https?://(?:www\.)?wat\.tv/video/.*-)(?P<id>[0-9a-z]+)rk   Nr   r   r   r   rV  rV  :  s"        $GGSJLLLr   rV  c                       e Zd ZdZdZdZdZdS )rk  rg  	WatchESPNzhttps?://(?:www\.)?espn\.com/(?:watch|espnplus)/player/_/id/(?P<id>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})rk   Nr   r   r   r   rk  rk  :  s%        %GG VJLLLr   rk  c                       e Zd ZdZdZdZdZdS )WeTvEpisodeIEr	  zwetv:episodezdhttps?://(?:www\.)?wetv\.vip/(?:[^?#]+/)?play/(?P<series_id>\w+)(?:-[^?#]+)?/(?P<id>\w+)(?:-[^?#]+)?rk   Nr   r   r   r   rZ  rZ  $:  s"        (GG{JLLLr   rZ  c                       e Zd ZdZdZdZdZdS )WeTvSeriesIEr	  
WeTvSerieszRhttps?://(?:www\.)?wetv\.vip/(?:[^?#]+/)?play/(?P<id>\w+)(?:-[^/?#]+)?/?(?:[?#]|$)rl   Nr   r   r   r   r\  r\  +:  s"        (GGhJLLLr   r\  c                       e Zd ZdZdZdZdZdS )WeVidiIEzyt_dlp.extractor.wevidiWeVidiz6https?://(?:www\.)?wevidi\.net/watch/(?P<id>[\w-]{11})rk   Nr   r   r   r   r_  r_  2:  r  r   r_  c                       e Zd ZdZdZdZdZdS )WebOfStoriesIEyt_dlp.extractor.webofstoriesWebOfStorieszChttps?://(?:www\.)?webofstories\.com/play/(?:[^/]+/)?(?P<id>[0-9]+)rk   Nr   r   r   r   rb  rb  9:  s"        -GGXJLLLr   rb  c                       e Zd ZdZdZdZdZdS )WebOfStoriesPlaylistIErc  WebOfStoriesPlaylistz:https?://(?:www\.)?webofstories\.com/playAll/(?P<id>[^/]+)rl   Nr   r   r   r   rf  rf  @:  s"        -G$GOJLLLr   rf  c                       e Zd ZdZdZdZdZdS )WebcameraplIEzyt_dlp.extractor.webcameraplWebcameraplz&https?://(?P<id>[\w-]+)\.webcamera\.plrk   Nr   r   r   r   ri  ri  G:  s"        ,GG<JLLLr   ri  c                       e Zd ZdZdZdZdS )WebcasterFeedIEyt_dlp.extractor.webcasterWebcasterFeedz9https?://bl\.webcaster\.pro/feed/start/free_(?P<id>[^/]+)Nr  r   r   r   rl  rl  N:  s        *GGNJJJr   rl  c                       e Zd ZdZdZdZdZdS )WebcasterIErm  	WebcasterzDhttps?://bl\.webcaster\.pro/(?:quote|media)/start/free_(?P<id>[^/]+)rk   Nr   r   r   r   rp  rp  T:  r  r   rp  c                       e Zd ZdZdZdS )WeiboBaseIEyt_dlp.extractor.weibo	WeiboBaseNr   r   r   r   rs  rs  [:  r   r   rs  c                       e Zd ZdZdZdZdZdS )WeiboIErt  WeibozYhttps?://(?:m\.weibo\.cn/(?:status|detail)|(?:www\.)?weibo\.com/\d+)/(?P<id>[a-zA-Z0-9]+)r   Nr   r   r   r   rw  rw  `:  s"        &GGqJLLLr   rw  c                       e Zd ZdZdZdZdZdS )WeiboUserIErt  	WeiboUserz+https?://(?:www\.)?weibo\.com/u/(?P<id>\d+)r   Nr   r   r   r   rz  rz  g:  s"        &GGAJLLLr   rz  c                   "    e Zd ZdZdZddgZdZdS )WeiboVideoIErt  
WeiboVideozIhttps?://(?:www\.)?weibo\.com/tv/show/(?P<id>\d+:(?:[\da-f]{32}|\d{16,}))zUhttps?://video\.weibo\.com/show/?\?(?:[^#]+&)?fid=(?P<id>\d+:(?:[\da-f]{32}|\d{16,}))rk   Nr   r   r   r   r}  r}  n:  s/        &GGb  eB  CJLLLr   r}  c                   &    e Zd ZdZdZdZdZdZdZdS )	WeiqiTVIEzyt_dlp.extractor.weiqitvWeiqiTVzNhttps?://(?:www\.)?weiqitv\.com/index/video_play\?videoId=(?P<id>[A-Za-z0-9]+)FWQTVrk   Nr  r   r   r   r  r  u:  s,        (GGdJHGLLLr   r  c                       e Zd ZdZdZdZdS )WeverseBaseIEyt_dlp.extractor.weverseWeverseBaseweverseNrz   r   r   r   r  r  ~:  r6  r   r  c                   "    e Zd ZdZdZdZdZdZdS )	WeverseIEr  WeversezJhttps?://(?:www\.|m\.)?weverse\.io/(?P<artist>[^/?#]+)/live/(?P<id>[\d-]+)r  rk   Nr   r   r   r   r  r  :  s'        (GGaJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )WeverseLiveIEr  WeverseLivez>https?://(?:www\.|m\.)?weverse\.io/(?P<id>[^/?#]+)/?(?:[?#]|$)r  rk   Nr   r   r   r   r  r  :  s'        (GGTJNLLLr   r  c                       e Zd ZdZdZdZdS )WeverseTabBaseIEr  WeverseTabBaser  Nrz   r   r   r   r  r  :  s        (GGNNNr   r  c                   "    e Zd ZdZdZdZdZdZdS )WeverseLiveTabIEr  WeverseLiveTabzChttps?://(?:www\.|m\.)?weverse\.io/(?P<id>[^/?#]+)/live/?(?:[?#]|$)r  rl   Nr   r   r   r   r  r  :  s'        (GGYJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )WeverseMediaIEr  WeverseMediazKhttps?://(?:www\.|m\.)?weverse\.io/(?P<artist>[^/?#]+)/media/(?P<id>[\d-]+)r  rk   Nr   r   r   r   r  r  :  s'        (GGbJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )WeverseMediaTabIEr  WeverseMediaTabzRhttps?://(?:www\.|m\.)?weverse\.io/(?P<id>[^/?#]+)/media(?:/|/all|/new)?(?:[?#]|$)r  rl   Nr   r   r   r   r  r  :  s'        (GGhJNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )WeverseMomentIEr  WeverseMomentzchttps?://(?:www\.|m\.)?weverse\.io/(?P<artist>[^/?#]+)/moment/(?P<uid>[\da-f]+)/post/(?P<id>[\d-]+)r  rk   Nr   r   r   r   r  r  :  s'        (GG{JNLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )WeyyakIEzyt_dlp.extractor.weyyakWeyyakzRhttps?://weyyak\.com/(?P<lang>\w+)/(?:player/)?(?P<type>episode|movie)/(?P<id>\d+)r
  rk   Nr  r   r   r   r  r  :  s'        'GGhJILLLr   r  c                       e Zd ZdZdZdZdS )
WhoWatchIEzyt_dlp.extractor.whowatchwhowatchz(https?://whowatch\.tv/viewer/(?P<id>\d+)Nr  r   r   r   r  r  :  s        )GG=JJJr   r  c                       e Zd ZdZdZdZdZdS )WhypIEzyt_dlp.extractor.whypWhypz.https?://(?:www\.)?whyp\.it/tracks/(?P<id>\d+)rk   Nr   r   r   r   r  r  :  s"        %GGDJLLLr   r  c                       e Zd ZdZdZdZdZdS )WikimediaIEzyt_dlp.extractor.wikimediazwikimedia.orgz?https?://commons\.wikimedia\.org/wiki/File:(?P<id>[^/#?]+)\.\w+rk   Nr   r   r   r   r  r  :  s"        *GGVJLLLr   r  c                       e Zd ZdZdZdZdZdS )WimTVIEzyt_dlp.extractor.wimtvWimTVz(?x:
        https?://platform\.wim\.tv/
        (?:
            (?:embed/)?\?
            |\#/webtv/.+?/
        )
        (?P<type>vod|live|cast)[=/]
        (?P<id>[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}).*?)rk   Nr   r   r   r   r  r  :  s%        &GG GJLLLr   r  c                       e Zd ZdZdZdZdZdS )WimbledonIEzyt_dlp.extractor.wimbledon	WimbledonzChttps?://(?:www\.)?wimbledon\.com/\w+/video/media/(?P<id>\d+)\.htmlrk   Nr   r   r   r   r  r  :  s"        *GG[JLLLr   r  c                       e Zd ZdZdZdZdZdS )WinSportsVideoIEr  WinSportsVideoz1https?://www\.winsports\.co/videos/(?P<id>[\w-]+)rk   Nr   r   r   r   r  r  :  s"        ,GGGJLLLr   r  c                       e Zd ZdZdZdS )WistiaBaseIEyt_dlp.extractor.wistia
WistiaBaseNr   r   r   r   r  r  :  rW  r   r  c                       e Zd ZdZdZdZdZdS )WistiaChannelIEr  WistiaChannelza(?:wistiachannel:|https?://(?:\w+\.)?wistia\.(?:net|com)/(?:embed/)?channel/)(?P<id>[a-z0-9]{10})r   Nr   r   r   r   r  r  :  s"        'GGwJLLLr   r  c                       e Zd ZdZdZdZdZdS )WistiaIEr  Wistiazd(?:wistia:|https?://(?:\w+\.)?wistia\.(?:net|com)/(?:embed/)?(?:iframe|medias)/)(?P<id>[a-z0-9]{10})rk   Nr   r   r   r   r  r  :  s"        'GGzJLLLr   r  c                       e Zd ZdZdZdZdZdS )WistiaPlaylistIEr  WistiaPlaylistzPhttps?://(?:\w+\.)?wistia\.(?:net|com)/(?:embed/)?playlists/(?P<id>[a-z0-9]{10})rl   Nr   r   r   r   r  r  :  s"        'GGfJLLLr   r  c                       e Zd ZdZdZdZdS )WordpressMiniAudioPlayerEmbedIEyt_dlp.extractor.wordpresszwordpress:mb.miniAudioPlayerFNr  r   r   r   r  r  ;  s        *G,GJJJr   r  c                       e Zd ZdZdZdZdS )WordpressPlaylistEmbedIEr  zwordpress:playlistFNr  r   r   r   r  r  ;  s        *G"GJJJr   r  c                       e Zd ZdZdZdZdZdS )WorldStarHipHopIEz yt_dlp.extractor.worldstarhiphopWorldStarHipHopzfhttps?://(?:www|m)\.worldstar(?:candy|hiphop)\.com/(?:videos|android)/video\.php\?.*?\bv=(?P<id>[^&]+)rk   Nr   r   r   r   r  r  ;  s"        0GG~JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )WrestleUniversePPVIEr  WrestleUniversePPVzOhttps?://(?:www\.)?wrestle-universe\.com/(?:(?P<lang>\w{2})/)?lives/(?P<id>\w+)r  rk   Nr   r   r   r   r  r  ;  s'        0G"GfJ&NLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )WrestleUniverseVODIEr  WrestleUniverseVODzPhttps?://(?:www\.)?wrestle-universe\.com/(?:(?P<lang>\w{2})/)?videos/(?P<id>\w+)r  rk   Nr   r   r   r   r  r   ;  s'        0G"GgJ&NLLLr   r  c                       e Zd ZdZdZdZdZdS )WyborczaPodcastIEr  WyborczaPodcastz(?x)
        https?://(?:www\.)?(?:
            wyborcza\.pl/podcast(?:/0,172673\.html)?|
            wysokieobcasy\.pl/wysokie-obcasy/0,176631\.html
        )(?:\?(?:[^&#]+?&)*podcast=(?P<id>\d+))?
    r   Nr   r   r   r   r  r  (;  s%        &GG kJLLLr   r  c                       e Zd ZdZdZdZdZdS )WyborczaVideoIEr  zwyborcza:videozD(?:wyborcza:video:|https?://wyborcza\.pl/(?:api-)?video/)(?P<id>\d+)rk   Nr   r   r   r   r  r  /;  s"        &GGYJLLLr   r  c                       e Zd ZdZdZdS )WykopBaseIEyt_dlp.extractor.wykop	WykopBaseNr   r   r   r   r  r  6;  r   r   r  c                       e Zd ZdZdZdZdZdS )WykopDigCommentIEr  zwykop:dig:commentzMhttps?://(?:www\.)?wykop\.pl/link/(?P<dig_id>\d+)/[^/]+/komentarz/(?P<id>\d+)rk   Nr   r   r   r   r  r  ;;  s"        &G!GdJLLLr   r  c                   4    e Zd ZdZdZdZdZed             ZdS )
WykopDigIEr  z	wykop:digz-https?://(?:www\.)?wykop\.pl/link/(?P<id>\d+)rk   c                 b    |                      |          ot                              |           S r'   )r1   r  r4   r2   s     r   r4   zWykopDigIE.suitableH;  s-    ##C((P1B1K1KC1P1P-PPr   N	r   r   r   r$   r`   r<   rn   rq   r4   r   r   r   r  r  B;  sF        &GGCJLQ Q [Q Q Qr   r  c                       e Zd ZdZdZdZdZdS )WykopPostCommentIEr  zwykop:post:commentzEhttps?://(?:www\.)?wykop\.pl/wpis/(?P<post_id>\d+)/[^/#]+#(?P<id>\d+)rk   Nr   r   r   r   r  r  M;  s"        &G"G\JLLLr   r  c                   4    e Zd ZdZdZdZdZed             ZdS )WykopPostIEr  z
wykop:postz-https?://(?:www\.)?wykop\.pl/wpis/(?P<id>\d+)rl   c                 b    |                      |          ot                              |           S r'   )r1   r  r4   r2   s     r   r4   zWykopPostIE.suitableZ;  s-    ##C((Q1C1L1LS1Q1Q-QQr   Nr  r   r   r   r  r  T;  sF        &GGCJLR R [R R Rr   r  c                   "    e Zd ZdZdZdZdZdZdS )XHamsterEmbedIEyt_dlp.extractor.xhamsterXHamsterEmbedzhttps?://(?:[^/?#]+\.)?(?:xhamster\.(?:com|one|desi)|xhms\.pro|xhamster\d+\.(?:com|desi)|xhday\.com|xhvid\.com)/xembed\.php\?video=(?P<id>\d+)r   rk   Nr  r   r   r   r  r  _;  s*        )GG lJILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
XHamsterIEr  XHamstera  (?x)
                    https?://
                        (?:[^/?#]+\.)?(?:xhamster\.(?:com|one|desi)|xhms\.pro|xhamster\d+\.(?:com|desi)|xhday\.com|xhvid\.com)/
                        (?:
                            movies/(?P<id>[\dA-Za-z]+)/(?P<display_id>[^/]*)\.html|
                            videos/(?P<display_id_2>[^/]*)-(?P<id_2>[\dA-Za-z]+)
                        )
                    r   rk   Nr  r   r   r   r  r  g;  s*        )GG wJILLLr   r  c                       e Zd ZdZdZdZdZdS )XHamsterUserIEr  XHamsterUserzhttps?://(?:[^/?#]+\.)?(?:xhamster\.(?:com|one|desi)|xhms\.pro|xhamster\d+\.(?:com|desi)|xhday\.com|xhvid\.com)/(?:(?P<user>users)|creators)/(?P<id>[^/?#&]+)rl   Nr   r   r   r   r  r  o;  s%        )GG xJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )XMinusIEzyt_dlp.extractor.xminusXMinusz4https?://(?:www\.)?x-minus\.org/track/(?P<id>[0-9]+)Frk   Nr  r   r   r   r  r  v;  s'        'GGIJHLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )XNXXIEzyt_dlp.extractor.xnxxXNXXz=https?://(?:video|www)\.xnxx3?\.com/video-?(?P<id>[0-9a-z]+)/r   rk   Nr  r   r   r   r  r  ~;  s'        %GGRJILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	XVideosIEyt_dlp.extractor.xvideosXVideosa  (?x)
                    https?://
                        (?:
                            (?:[^/]+\.)?xvideos2?\.com/video\.?|
                            (?:www\.)?xvideos\.es/video\.?|
                            (?:www|flashservice)\.xvideos\.com/embedframe/|
                            static-hw\.xvideos\.com/swf/xv-player\.swf\?.*?\bid_video=
                        )
                        (?P<id>[0-9a-z]+)
                    r   rk   Nr  r   r   r   r  r  ;  s*        (GG aJILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )XVideosQuickiesIEr  zxvideos:quickieszphttps?://(?P<domain>(?:[^/?#]+\.)?xvideos2?\.com)/(?:profiles/|amateur-channels/)?[^/?#]+#quickies/a/(?P<id>\w+)r   rk   Nr  r   r   r   r  r  ;  s*        (G G GJILLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )XXXYMoviesIEzyt_dlp.extractor.xxxymovies
XXXYMovieszKhttps?://(?:www\.)?xxxymovies\.com/videos/(?P<id>\d+)/(?P<display_id>[^/]+)r   rk   Nr  r   r   r   r  r  ;  s'        +GGaJILLLr   r  c                       e Zd ZdZdZdZdZdS )XboxClipsIEzyt_dlp.extractor.xboxclips	XboxClipszhttps?://(?:www\.)?(?:xboxclips\.com|gameclips\.io)/(?:video\.php\?.*vid=|[^/]+/)(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})rk   Nr   r   r   r   r  r  ;  s%        *GG ]JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )XiaoHongShuIEzyt_dlp.extractor.xiaohongshuXiaoHongShuzJhttps?://www\.xiaohongshu\.com/(?:explore|discovery/item)/(?P<id>[\da-f]+)u	   小红书rk   Nr   r   r   r   r  r  ;  s'        ,GG`JGLLLr   r  c                       e Zd ZdZdZdS )XimalayaBaseIEyt_dlp.extractor.ximalayaXimalayaBaseNr   r   r   r   r   r   ;  r  r   r   c                   "    e Zd ZdZdZdZdZdZdS )XimalayaAlbumIEr  zximalaya:albumzBhttps?://(?:www\.|m\.)?ximalaya\.com/(?:\d+/)?album/(?P<id>[0-9]+)u   喜马拉雅FM 专辑rl   Nr   r   r   r   r  r  ;  s'        )GGYJ%GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )
XimalayaIEr  ximalayazKhttps?://(?:www\.|m\.)?ximalaya\.com/(?:(?P<uid>\d+)/)?sound/(?P<id>[0-9]+)u   喜马拉雅FMrk   Nr   r   r   r   r  r  ;  s'        )GGbJGLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )XinpianchangIEzyt_dlp.extractor.xinpianchangXinpianchangz/https?://(www\.)?xinpianchang\.com/(?P<id>a\d+)u	   新片场rk   Nr   r   r   r   r	  r	  ;  s'        -GGEJGLLLr   r	  c                       e Zd ZdZdZdZdZdS )	XstreamIEzyt_dlp.extractor.xstreamXstreamak  (?x)
                    (?:
                        xstream:|
                        https?://frontend\.xstream\.(?:dk|net)/
                    )
                    (?P<partner_id>[^/]+)
                    (?:
                        :|
                        /feed/video/\?.*?\bid=
                    )
                    (?P<id>\d+)
                    rk   Nr   r   r   r   r  r  ;  s%        (GG OJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )VGTVIEr  VGTVa  (?x)
                    (?:https?://(?:www\.)?
                    (?P<host>
                        tv.vg.no|vgtv.no|bt.no/tv|aftenbladet.no/tv|fvn.no/fvntv|aftenposten.no/webtv|ap.vgtv.no/webtv|tv.aftonbladet.se|tv.aftonbladet.se/abtv|www.aftonbladet.se/tv
                    )
                    /?
                    (?:
                        (?:\#!/)?(?:video|live)/|
                        embed?.*id=|
                        a(?:rticles)?/
                    )|
                    (?P<appname>
                        vgtv|bttv|satv|fvntv|aptv|abtv
                    ):)
                    (?P<id>\d+)
                    z,VGTV, BTTV, FTV, Aftenposten and Aftonbladetrk   Nr   r   r   r   r  r  ;  s*        %GG h
J<GLLLr   r  c                       e Zd ZdZdZdZdZdS )YahooIEyt_dlp.extractor.yahooyahooz(?P<url>https?://(?:(?P<country>[a-zA-Z]{2}(?:-[a-zA-Z]{2})?|malaysia)\.)?(?:[\da-zA-Z_-]+\.)?yahoo\.com/(?:[^/]+/)*(?P<id>[^?&#]*-[0-9]+(?:-[a-z]+)?)\.html)r   Nr   r   r   r   r  r  ;  s%        &GG vJLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )AolIEzyt_dlp.extractor.aolzaol.comz(?:aol-video:|https?://(?:www\.)?aol\.(?:com|ca|co\.uk|de|jp)/video/(?:[^/]+/)*)(?P<id>\d{9}|[0-9a-f]{24}|[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12})Frk   Nr  r   r   r   r  r  ;  s*        $GG nJHLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )YahooJapanNewsIEr  zyahoo:japannewszFhttps?://news\.yahoo\.co\.jp/(?:articles|feature)/(?P<id>[a-zA-Z0-9]+)zYahoo! Japan Newsrk   Nr   r   r   r   r  r  ;  s'        &GG\J!GLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )YahooSearchIEr  zyahoo:searchz7yvsearch(?P<prefix>|[1-9][0-9]*|all):(?P<query>[\s\S]+)yvsearchrl   Nrg  r   r   r   r  r  ;  s'        &GGLJJLLLr   r  c                       e Zd ZdZdZdZdZdS )YandexDiskIEzyt_dlp.extractor.yandexdisk
YandexDiska  (?x)https?://
        (?P<domain>
            yadi\.sk|
            disk\.(?:360\.)?yandex\.
                (?:
                    az|
                    by|
                    co(?:m(?:\.(?:am|ge|tr))?|\.il)|
                    ee|
                    fr|
                    k[gz]|
                    l[tv]|
                    md|
                    t[jm]|
                    u[az]|
                    ru
                )
        )/(?:[di]/|public.*?\bhash=)(?P<id>[^/?#&]+)rk   Nr   r   r   r   r  r  ;  s%        +GG SJLLLr   r  c                       e Zd ZdZdZdS )YandexMusicBaseIEyt_dlp.extractor.yandexmusicYandexMusicBaseNr   r   r   r   r   r   ;  r  r   r   c                       e Zd ZdZdZdS )YandexMusicPlaylistBaseIEr!  YandexMusicPlaylistBaseNr   r   r   r   r$  r$  <  r  r   r$  c                   B     e Zd ZdZdZdZdZdZe fd            Z	 xZ
S )YandexMusicAlbumIEr!  zyandexmusic:albumzBhttps?://music\.yandex\.(?P<tld>ru|kz|ua|by|com)/album/(?P<id>\d+)u(   Яндекс.Музыка - Альбомrl   c                 ~    t                               |          rdn t                                          |          S r   )YandexMusicTrackIEr4   r   r   s     r   r4   zYandexMusicAlbumIE.suitable<  r  r   r  r   s   @r   r'  r'  	<  sd        ,G!GXJ8GLT T T T [T T T T Tr   r'  c                       e Zd ZdZdZdS )YandexMusicArtistBaseIEr!  YandexMusicArtistBaseNr   r   r   r   r+  r+  <  s        ,G%GGGr   r+  c                   "    e Zd ZdZdZdZdZdZdS )YandexMusicArtistAlbumsIEr!  zyandexmusic:artist:albumszJhttps?://music\.yandex\.(?P<tld>ru|kz|ua|by|com)/artist/(?P<id>\d+)/albumsu9   Яндекс.Музыка - Артист - Альбомыrl   Nr   r   r   r   r.  r.  <  s'        ,G)G`JIGLLLr   r.  c                   "    e Zd ZdZdZdZdZdZdS )YandexMusicArtistTracksIEr!  zyandexmusic:artist:trackszJhttps?://music\.yandex\.(?P<tld>ru|kz|ua|by|com)/artist/(?P<id>\d+)/tracksu5   Яндекс.Музыка - Артист - Трекиrl   Nr   r   r   r   r0  r0  "<  s'        ,G)G`JEGLLLr   r0  c                   "    e Zd ZdZdZdZdZdZdS )YandexMusicPlaylistIEr!  zyandexmusic:playlistz\https?://music\.yandex\.(?P<tld>ru|kz|ua|by|com)/users/(?P<user>[^/]+)/playlists/(?P<id>\d+)u,   Яндекс.Музыка - Плейлистrl   Nr   r   r   r   r2  r2  *<  s'        ,G$GrJ<GLLLr   r2  c                   "    e Zd ZdZdZdZdZdZdS )r)  r!  zyandexmusic:trackzZhttps?://music\.yandex\.(?P<tld>ru|kz|ua|by|com)/album/(?P<album_id>\d+)/track/(?P<id>\d+)u$   Яндекс.Музыка - Трекrk   Nr   r   r   r   r)  r)  2<  s'        ,G!GqJ4GLLLr   r)  c                   "    e Zd ZdZdZdZdZdZdS )YandexVideoIEyt_dlp.extractor.yandexvideoYandexVideoaA  (?x)
                    https?://
                        (?:
                            yandex\.ru(?:/(?:portal/(?:video|efir)|efir))?/?\?.*?stream_id=|
                            frontend\.vh\.yandex\.ru/player/
                        )
                        (?P<id>(?:[\da-f]{32}|[\w-]{12}))
                    r   rk   Nr  r   r   r   r5  r5  :<  s*        ,GG cJILLLr   r5  c                       e Zd ZdZdZdZdZdS )YandexVideoPreviewIEr6  YandexVideoPreviewzehttps?://(?:www\.)?yandex\.\w{2,3}(?:\.(?:am|ge|il|tr))?/video/preview(?:/?\?.*?filmId=|/)(?P<id>\d+)rk   Nr   r   r   r   r9  r9  B<  s"        ,G"G~JLLLr   r9  c                   "    e Zd ZdZdZdZdZdZdS )
YapFilesIEzyt_dlp.extractor.yapfilesYapFileszHhttps?://(?:(?:www|api)\.)?yapfiles\.ru/get_player/*\?.*?\bv=(?P<id>\w+)Frk   Nr  r   r   r   r<  r<  I<  s'        )GG`JHLLLr   r<  c                   "    e Zd ZdZdZdZdZdZdS )YappyIEyt_dlp.extractor.yappyYappyz'https?://yappy\.media/video/(?P<id>\w+)Frk   Nr  r   r   r   r?  r?  Q<  s'        &GG<JHLLLr   r?  c                       e Zd ZdZdZdZdZdS )YappyProfileIEr@  YappyProfilez)https?://yappy\.media/profile/(?P<id>\w+)rl   Nr   r   r   r   rC  rC  Y<  s"        &GG>JLLLr   rC  c                       e Zd ZdZdZdZdZdS )	YfanefaIEzyt_dlp.extractor.yfanefayfanefaz.https?://(?:www\.)?yfanefa\.com/(?P<id>[^?#]+)rk   Nr   r   r   r   rF  rF  `<  rP  r   rF  c                   "    e Zd ZdZdZdZdZdZdS )YleAreenaIEzyt_dlp.extractor.yle_areena	YleAreenaz?https?://areena\.yle\.fi/(?P<podcast>podcastit/)?(?P<id>[\d-]+)   rk   Nr  r   r   r   rI  rI  g<  s'        +GGUJILLLr   rI  c                   "    e Zd ZdZdZdZdZdZdS )	YouJizzIEzyt_dlp.extractor.youjizzYouJizzz\https?://(?:\w+\.)?youjizz\.com/videos/(?:[^/#?]*-(?P<id>\d+)\.html|embed/(?P<embed_id>\d+))r   rk   Nr  r   r   r   rM  rM  o<  r`  r   rM  c                       e Zd ZdZdZdZdZdS )YouNowChannelIEyt_dlp.extractor.younowYouNowChannelz4https?://(?:www\.)?younow\.com/(?P<id>[^/]+)/channelrl   Nr   r   r   r   rP  rP  w<  s"        'GGIJLLLr   rP  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )YouNowLiveIErQ  
YouNowLivez/https?://(?:www\.)?younow\.com/(?P<id>[^/?#&]+)rk   c                     t                               |          st                              |          rdn t                                          |          S r   )rP  r4   YouNowMomentIEr   r   s     r   r4   zYouNowLiveIE.suitable<  sO     #++C00+4B4K4KC4P4P+WW%%c**	,r   r   r   s   @r   rT  rT  ~<  sV        'GGDJL, , , , [, , , , ,r   rT  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )rW  rQ  YouNowMomentz5https?://(?:www\.)?younow\.com/[^/]+/(?P<id>[^/?#&]+)rk   c                 ~    t                               |          rdn t                                          |          S r   )rP  r4   r   r   s     r   r4   zYouNowMomentIE.suitable<  s9     #++C00+WW%%c**	,r   r   r   s   @r   rW  rW  <  sV        'GGJJL, , , , [, , , , ,r   rW  c                       e Zd ZdZdZdS )YouPornListBaseIEyt_dlp.extractor.youpornYouPornListBaseNr   r   r   r   r\  r\  <  r  r   r\  c                   "    e Zd ZdZdZdZdZdZdS )YouPornCategoryIEr]  YouPornCategoryz(?x)
        https?://(?:www\.)?youporn\.com/
        (?P<type>category)/(?P<id>[^/?#&]+)
        (?:/(?P<sort>popular|views|rating|time|duration))?/?(?:[#?]|$)
    z8YouPorn category, with sorting, filtering and paginationrl   Nr   r   r   r   r`  r`  <  s*        (GG JHGLLLr   r`  c                   "    e Zd ZdZdZdZdZdZdS )YouPornChannelIEr]  YouPornChannelz(?x)
        https?://(?:www\.)?youporn\.com/
        (?P<type>channel)/(?P<id>[^/?#&]+)
        (?:/(?P<sort>rating|views|duration))?/?(?:[#?]|$)
    z,YouPorn channel, with sorting and paginationrl   Nr   r   r   r   rc  rc  <  s*        (GG qJ<GLLLr   rc  c                   "    e Zd ZdZdZdZdZdZdS )YouPornCollectionIEr]  YouPornCollectionz(?x)
        https?://(?:www\.)?youporn\.com/
        (?P<type>collection)s/videos/(?P<id>\d+)
        (?:/(?P<sort>rating|views|time|duration))?/?(?:[#?]|$)
    z?YouPorn collection (user playlist), with sorting and paginationrl   Nr   r   r   r   rf  rf  <  s*        (G!G }JOGLLLr   rf  c                   "    e Zd ZdZdZdZdZdZdS )	YouPornIEr]  YouPornzehttps?://(?:www\.)?youporn\.com/(?:watch|embed)/(?P<id>\d+)(?:/(?P<display_id>[^/?#&]+))?/?(?:[#?]|$)r   rk   Nr  r   r   r   ri  ri  <  r  r   ri  c                   "    e Zd ZdZdZdZdZdZdS )YouPornStarIEr]  YouPornStarz(?x)
        https?://(?:www\.)?youporn\.com/
        (?P<type>pornstar)/(?P<id>[^/?#&]+)
        (?:/(?P<sort>rating|views|duration))?/?(?:[#?]|$)
    z:YouPorn Pornstar, with description, sorting and paginationrl   Nr   r   r   r   rl  rl  <  s*        (GG rJJGLLLr   rl  c                   "    e Zd ZdZdZdZdZdZdS )YouPornTagIEr]  
YouPornTagz(?x)
        https?://(?:www\.)?youporn\.com/
        porn(?P<type>tag)s/(?P<id>[^/?#&]+)
        (?:/(?P<sort>views|rating|time|duration))?/?(?:[#?]|$)
    z>YouPorn tag (porntags), with sorting, filtering and paginationrl   Nr   r   r   r   ro  ro  <  s*        (GG wJNGLLLr   ro  c                   "    e Zd ZdZdZdZdZdZdS )YouPornVideosIEr]  YouPornVideosz(?x)
        https?://(?:www\.)?youporn\.com/
            (?:(?P<id>browse)/)?
            (?P<sort>(?(id)
                (?:duration|rating|time|views)|
                (?:most_(?:favou?rit|view)ed|recommended|top_rated)?))
            (?:[/#?]|$)
    zHYouPorn video (browse) playlists, with sorting, filtering and paginationrl   Nr   r   r   r   rr  rr  <  s*        (GG [JXGLLLr   rr  c                   "    e Zd ZdZdZdZdZdZdS )YoukuIEyt_dlp.extractor.youkuyoukuz(?x)
        (?:
            https?://(
                (?:v|play(?:er)?)\.(?:youku|tudou)\.com/(?:v_show/id_|player\.php/sid/)|
                video\.tudou\.com/v/)|
            youku:)
        (?P<id>[A-Za-z0-9]+)(?:\.html|/v\.swf|)
    u   优酷rk   Nr   r   r   r   ru  ru  <  s*        &GG RJGLLLr   ru  c                       e Zd ZdZdZdZdZdS )YoukuShowIErv  z
youku:showz9https?://list\.youku\.com/show/id_(?P<id>[0-9a-z]+)\.htmlrl   Nr   r   r   r   ry  ry  <  s"        &GGOJLLLr   ry  c                   "    e Zd ZdZdZdZdZdZdS )YoutubeWebArchiveIEr  zweb.archive:youtubeaE  (?x)(?:(?P<prefix>ytarchive:)|
            (?:https?://)?web\.archive\.org/
            (?:web/)?(?:(?P<date>[0-9]{14})?[0-9A-Za-z_*]*/)?  # /web and the version index is optional
            (?:https?(?::|%3[Aa])//)?(?:
                (?:\w+\.)?youtube\.com(?::(?:80|443))?/watch(?:\.php)?(?:\?|%3[fF])(?:[^\#]+(?:&|%26))?v(?:=|%3[dD])  # Youtube URL
                |(?:wayback-fakeurl\.archive\.org/yt/)  # Or the internal fake url
            )
        )(?P<id>[0-9A-Za-z_-]{11})
        (?(prefix)
            (?::(?P<date2>[0-9]{14}))?$|
            (?:%26|[#&]|$)
        )z9web.archive.org saved youtube videos, "ytarchive:" prefixrk   Nr   r   r   r   r{  r{  <  s*        +G#G n	JIGLLLr   r{  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )ZDFChannelIEr'  zzdf:channelz2https?://www\.zdf\.de/(?:[^/?#]+/)*(?P<id>[^/?#]+)r   c                 ~    t                               |          rdn t                                          |          S r   )ZDFIEr4   r   r   s     r   r4   zZDFChannelIE.suitable<  r  r   r   r   s   @r   r}  r}  <  s_        $GGGJLG G G G [G G G G Gr   r}  c                   "    e Zd ZdZdZg dZdZdS )r  r'  zdf)zFhttps?://(?:www\.)?zdf\.de/(?:video|play)/(?:[^/?#]+/)*(?P<id>[^/?#]+)z=https?://(?:www\.)?zdf\.de/(?:[^/?#]+/)*(?P<id>[^/?#]+)\.htmlzKhttps?://(?:www\.)?(?:zdfheute|logo)\.de/(?:[^/?#]+/)*(?P<id>[^/?#]+)\.htmlrk   Nr   r   r   r   r  r  <  s1        $GG t  t  tJLLLr   r  c                       e Zd ZdZdZdS )ZaikoBaseIEyt_dlp.extractor.zaiko	ZaikoBaseNr   r   r   r   r  r  <  r   r   r  c                       e Zd ZdZdZdZdZdS )ZaikoETicketIEr  ZaikoETicketz>https?://(?:www.)?zaiko\.io/account/eticket/(?P<id>[\w=-]{49})rl   Nr   r   r   r   r  r  =  s"        &GGSJLLLr   r  c                       e Zd ZdZdZdZdZdS )ZaikoIEr  ZaikozAhttps?://(?:[\w-]+\.)?zaiko\.io/event/(?P<id>\d+)/stream(?:/\d+)+rk   Nr   r   r   r   r  r  
=  s"        &GGYJLLLr   r  c                       e Zd ZdZdZdZdZdS )ZapiksIEzyt_dlp.extractor.zapiksZapikszvhttps?://(?:www\.)?zapiks\.(?:fr|com)/(?:(?:[a-z]{2}/)?(?P<display_id>.+?)\.html|index\.php\?.*\bmedia_id=(?P<id>\d+))rk   Nr   r   r   r   r  r  =  s%        'GG QJLLLr   r  c                       e Zd ZdZdZdZdS )ZattooBaseIErt  
ZattooBasezattooNrz   r   r   r   r  r  =  r  r   r  c                   "    e Zd ZdZdZdZdZdZdS )ZattooIErt  Zattooz(?x)https?://(?:www\.)?zattoo\.com/(?:
        [^?#]+\?(?:[^#]+&)?program=(?P<vid2>\d+)
        |(?:program|watch)/[^/]+/(?P<vid1>\d+)
    )r  rk   Nr   r   r   r   r  r  =  s*        'GG hJNLLLr   r  c                   >     e Zd ZdZdZdZdZe fd            Z xZ	S )ZattooLiveIErt  
ZattooLivez(?x)https?://(?:www\.)?zattoo\.com/(?:
        [^?#]+\?(?:[^#]+&)?channel=(?P<vid2>[^/?&#]+)
        |live/(?P<vid1>[^/?&#]+)
    )r  c                 ~    t                               |          rdn t                                          |          S r   )r  r4   r   r   s     r   r4   zZattooLiveIE.suitable,=  r  r   r  r   s   @r   r  r  &=  sb        'GG ]JNJ J J J [J J J J Jr   r  c                       e Zd ZdZdZdZdZdS )ZattooMoviesIErt  ZattooMoviesz(?x)https?://(?:www\.)?zattoo\.com/(?:
        [^?#]+\?(?:[^#]+&)?movie_id=(?P<vid2>\w+)
        |vod/movies/(?P<vid1>\w+)
    )r  Nr  r   r   r   r  r  1=  s%        'GG \JNNNr   r  c                       e Zd ZdZdZdZdZdS )ZattooRecordingsIErt  ZattooRecordingszr(?x)https?://(?:www\.)?zattoo\.com/(?:
        [^?#]+\?(?:[^#]+&)?recording=(?P<vid2>\d+)
        (?P<vid1>)
    )r  Nr  r   r   r   r  r  8=  s%        'G G MJNNNr   r  c                   "    e Zd ZdZdZdZdZdZdS )Zee5IEyt_dlp.extractor.zee5Zee5a  (?x)
                     (?:
                        zee5:|
                        https?://(?:www\.)?zee5\.com/(?:[^#?]+/)?
                        (?:
                            (?:tv-shows|kids|web-series|zee5originals)(?:/[^#/?]+){3}
                            |(?:movies|kids|videos|news|music-videos)/(?!kids-shows)[^#/?]+
                        )/(?P<display_id>[^#/?]+)/
                     )
                     (?P<id>[^#/?]+)/?(?:$|[?#])
                     zee5rk   Nr   r   r   r   r  r  ?=  s*        %GG }JNLLLr   r  c                       e Zd ZdZdZdZdZdS )Zee5SeriesIEr  zzee5:seriesaS  (?x)
                     (?:
                        zee5:series:|
                        https?://(?:www\.)?zee5\.com/(?:[^#?]+/)?
                        (?:tv-shows|web-series|kids|zee5originals)/(?!kids-movies)(?:[^#/?]+/){2}
                     )
                     (?P<id>[^#/?]+)(?:/episodes)?/?(?:$|[?#])
                     rl   Nr   r   r   r   r  r  G=  s%        %GG pJLLLr   r  c                   &    e Zd ZdZdZdZdZdZdZdS )	ZeeNewsIEzyt_dlp.extractor.zeenewsZeeNewsNzMhttps?://zeenews\.india\.com/[^#?]+/video/(?P<display_id>[^#/?]+)/(?P<id>\d+)Frk   rv  r   r   r   r  r  N=  s,        (GGHcJHLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	ZenPornIEzyt_dlp.extractor.zenpornZenPornz1https?://(?:www\.)?zenporn\.com/video/(?P<id>\d+)r   rk   Nr  r   r   r   r  r  W=  s'        (GGGJILLLr   r  c                       e Zd ZdZdZdS )ZenYandexBaseIEr6  ZenYandexBaseNr   r   r   r   r  r  _=  s        ,GGGGr   r  c                       e Zd ZdZdZdZdZdS )ZenYandexChannelIEr6  zdzen.ru:channelzJhttps?://(zen\.yandex|dzen)\.ru/(?!media|video)(?:id/)?(?P<id>[a-z0-9-_]+)rl   Nr   r   r   r   r  r  d=  s"        ,GG_JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )ZenYandexIEr6  zdzen.ruzshttps?://(zen\.yandex|dzen)\.ru(?:/video)?/(media|watch)/(?:(?:id/[^/]+/|[^/]+/)(?:[a-z0-9-]+)-)?(?P<id>[a-z0-9-]+)u;   Дзен (dzen) formerly Яндекс.Дзен (Yandex Zen)rk   Nr   r   r   r   r  r  k=  s*        ,GG IJKGLLLr   r  c                       e Zd ZdZdZdZdZdS )ZetlandDKArticleIEzyt_dlp.extractor.zetlandZetlandDKArticlezZhttps?://www\.zetland\.dk/\w+/(?P<id>(?P<story_id>\w{8})-(?P<uploader_id>\w{8})-(?:\w{5}))rk   Nr   r   r   r   r  r  s=  s"        (G GsJLLLr   r  c                       e Zd ZdZdZdZdZdS )ZhihuIEzyt_dlp.extractor.zhihuZhihuz3https?://(?:www\.)?zhihu\.com/zvideo/(?P<id>[0-9]+)rk   Nr   r   r   r   r  r  z=  r  r   r  c                       e Zd ZdZdZdS )ZingMp3BaseIEyt_dlp.extractor.zingmp3ZingMp3BaseNr   r   r   r   r  r  =  r   r   r  c                       e Zd ZdZdZdZdZdS )ZingMp3AlbumIEr  zzingmp3:albumz`https?://(?:mp3\.zing|zingmp3)\.vn/(?P<type>(?:album|playlist))/[^/?#]+/(?P<id>\w+)(?:\.html|\?)rl   Nr   r   r   r   r  r  =  r&  r   r  c                       e Zd ZdZdZdZdZdS )ZingMp3ChartHomeIEr  zzingmp3:chart-homezkhttps?://(?:mp3\.zing|zingmp3)\.vn/(?P<id>(?:zing-chart|moi-phat-hanh|top100|podcast-discover))/?(?:[#?]|$)rl   Nr   r   r   r   r  r  =  s%        (G"G AJLLLr   r  c                       e Zd ZdZdZdZdZdS )ZingMp3ChartMusicVideoIEr  zzingmp3:chart-music-videoz]https?://(?:mp3\.zing|zingmp3)\.vn/(?P<type>the-loai-video)/(?P<regions>[^/]+)/(?P<id>[^\.]+)rl   Nr   r   r   r   r  r  =  s"        (G)GsJLLLr   r  c                       e Zd ZdZdZdZdZdS )ZingMp3HubIEr  zzingmp3:hubzIhttps?://(?:mp3\.zing|zingmp3)\.vn/(?P<type>hub)/[^/?#]+/(?P<id>[^./?#]+)rl   Nr   r   r   r   r  r  =  s"        (GG^JLLLr   r  c                   "    e Zd ZdZdZdZdZdZdS )	ZingMp3IEr  zingmp3znhttps?://(?:mp3\.zing|zingmp3)\.vn/(?P<type>(?:bai-hat|video-clip|embed|eps))/[^/?#]+/(?P<id>\w+)(?:\.html|\?)z
zingmp3.vnrk   Nr   r   r   r   r  r  =  s*        (GG GJGLLLr   r  c                       e Zd ZdZdZdZdZdS )ZingMp3LiveRadioIEr  zzingmp3:liveradiozShttps?://(?:mp3\.zing|zingmp3)\.vn/(?P<type>(?:liveradio))/(?P<id>\w+)(?:\.html|\?)rk   Nr   r   r   r   r  r  =  s"        (G!GkJLLLr   r  c                       e Zd ZdZdZdZdZdS )ZingMp3PodcastEpisodeIEr  zzingmp3:podcast-episodezYhttps?://(?:mp3\.zing|zingmp3)\.vn/(?P<type>(?:pgr|cgr))/[^/?#]+/(?P<id>\w+)(?:\.html|\?)rl   Nr   r   r   r   r  r  =  s"        (G'GqJLLLr   r  c                       e Zd ZdZdZdZdZdS )ZingMp3PodcastIEr  zzingmp3:podcastzVhttps?://(?:mp3\.zing|zingmp3)\.vn/(?P<id>(?:cgr|top-podcast|podcast-new))/?(?:[#?]|$)rl   Nr   r   r   r   r  r  =  s"        (GGkJLLLr   r  c                       e Zd ZdZdZdZdZdS )ZingMp3UserIEr  zzingmp3:userzhhttps?://(?:mp3\.zing|zingmp3)\.vn/(?P<user>[^/]+)/(?P<type>bai-hat|single|album|video|song)/?(?:[?#]|$)rl   Nr   r   r   r   r  r  =  s"        (GG}JLLLr   r  c                       e Zd ZdZdZdZdZdS )ZingMp3WeekChartIEr  zzingmp3:week-chartzahttps?://(?:mp3\.zing|zingmp3)\.vn/(?P<type>(?:zing-chart-tuan))/[^/?#]+/(?P<id>\w+)(?:\.html|\?)rl   Nr   r   r   r   r  r  =  s"        (G"GyJLLLr   r  c                       e Zd ZdZdZdZdZdS )ZoomIEzyt_dlp.extractor.zoomzoomz_(?P<base_url>https?://(?:[^.]+\.)?zoom\.us/)rec(?:ording)?/(?P<type>play|share)/(?P<id>[\w.-]+)rk   Nr   r   r   r   r  r  =  s"        %GGuJLLLr   r  c                       e Zd ZdZdZdZdZdS )ZypeIEzyt_dlp.extractor.zypeZypezwhttps?://player\.zype\.com/embed/(?P<id>[\da-fA-F]+)\.(?:js|json|html)\?.*?(?:access_token|(?:ap[ip]|player)_key)=[^&]+rk   Nr   r   r   r   r  r  =  s%        %GG PJLLLr   r  c                   *    e Zd ZdZdZdZdZdZdZdZ	dS )		GenericIEzyt_dlp.extractor.genericgenericz.*z+Generic downloader that works on some sitesFr   r   Nr  r   r   r   r  r  =  s1        (GGJ;GNILLLr   r  )
r  r  r  r  r  r  r  r  r  r  (  r"   r\   r?   utilsr   r   r   r   r   r   r   typer   r    rt   rv   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r  r  r!  r#  r%  r(  r,  r0  r2  r8  r;  r>  rB  rF  rI  rK  rN  rR  rU  rY  r\  r_  re  rg  rj  rl  rn  rq  rt  rw  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r  r  r  r  r!  r%  r)  r+  r.  r1  r5  r8  r<  r@  rB  rD  rG  rJ  rN  rQ  rS  rU  rX  rZ  r]  r`  rc  re  rg  rk  rm  rs  rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r!  r$  r&  r)  r-  r0  r4  r6  r9  r<  r?  rB  rE  rK  rN  rH  rS  rV  rY  r\  r_  rc  rf  ri  rm  rp  rt  rw  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r   r$  r(  r+  r.  r0  r5  r8  r<  r@  rC  rF  rI  rL  rO  rS  rV  rY  r]  r_  rc  rg  rj  rm  rq  ru  rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r$  r(  r+  r.  r4  r7  r9  r;  r=  rB  rE  rH  rK  rM  rP  rT  rV  rY  r\  r^  ra  rd  rh  rj  rl  rn  rq  rt  rx  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r#  r&  r*  r-  r0  r4  r9  r<  r@  rB  rE  rH  rL  rP  rS  rW  rZ  r^  r`  rd  rf  rm  rj  rr  ru  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r  r  r  r  r  r!  r%  r(  r*  r.  r1  r4  r8  r;  r>  rB  rD  rG  rJ  rM  rQ  rU  rX  r[  r^  ra  rd  rh  rl  ro  rr  ru  rx  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r!  r%  r)  r,  r/  r3  r6  r:  r=  r@  rD  rG  rJ  rM  rP  rS  rW  r\  r`  rb  re  rh  rk  rn  rq  rt  rw  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r	  r	  r
	  r	  r	  r	  r	  r	  r	  r 	  r"	  r%	  r)	  r-	  r0	  r2	  r6	  r:	  r=	  r?	  rC	  rH	  rL	  rO	  rS	  rW	  rZ	  r^	  ra	  rd	  rh	  rj	  rn	  rq	  rt	  rw	  rz	  r}	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r
  r
  r
  r

  r
  r
  r
  r
  r
  r
  r"
  r$
  r&
  r(
  r*
  r,
  r.
  r1
  r4
  r7
  r;
  r>
  rA
  rD
  rH
  rK
  rO
  rR
  rV
  rZ
  r\
  r`
  rb
  rg
  rd
  rk
  rn
  rr
  ru
  rw
  rz
  r~
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r   r  r	  r  r  r  r  r  r  r   r#  r&  r)  r,  r/  r2  r5  r:  r<  rA  rC  rF  rI  rK  rN  rQ  rT  rW  r[  r]  r_  rb  re  rh  rk  rn  rq  rt  rw  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r!  r$  r'  r*  r.  r0  r3  r5  r8  r;  r>  rB  rE  rH  rK  rN  rQ  rT  rW  r[  r^  r`  rb  rf  ri  rk  ro  rs  ru  rx  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r%  r'  r,  r/  r1  r3  r6  r9  r;  r=  r?  rB  rE  rG  rJ  rM  rP  rS  rV  rX  r[  r^  ra  re  rh  rj  rm  rq  rs  ru  rw  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r
  r  r  r  r  r  r  r  r   r"  r%  r(  r,  r/  r3  r6  r9  r=  r?  rA  rC  rE  rG  rI  rK  rO  rR  rW  rZ  r^  ra  rd  ri  rl  rq  rs  ru  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r
  r  r  r  r  r  r  r  r  r!  r$  r'  r*  r,  r.  r0  r2  r5  r9  r<  r@  rC  rG  rJ  rN  rQ  rT  rW  rZ  r\  r^  ra  rc  rf  ri  rm  ro  rr  rt  rx  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r"  r$  r'  r)  r,  r/  r3  r7  r:  r=  r@  rD  rG  rK  rO  rR  rU  rX  r]  r`  rd  rh  rl  ro  rr  ru  rx  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r#  r%  r(  r+  r-  r/  r1  r3  r6  r:  r=  rA  rD  rF  rJ  rN  rR  rU  rX  r[  r_  rb  rg  rk  rn  rr  ru  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r   r#  r&  r)  r,  r/  r3  r7  r;  r>  rA  rE  rH  rK  rN  rQ  rU  rX  r[  r^  rb  rf  ri  rl  ro  rr  ru  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r#  r&  r)  r,  r1  r3  r5  r8  r;  r?  rB  rF  rI  rL  rP  rS  rV  rY  r\  r_  rb  re  rh  rk  rn  rr  ru  rw  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r!  r%  r)  r,  r1  r4  r8  r<  r>  rA  rC  rF  rH  rK  rM  rO  rQ  rS  rW  rY  r\  r^  r`  rb  rd  rf  rh  rl  ro  rr  rv  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r%  r(  r*  r,  r/  r3  r6  r9  r;  r>  rA  rD  rH  rK  rM  rO  rQ  rS  rV  rZ  r_  rc  rf  ri  rl  ro  rs  ru  rw  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r%  r(  r,  r/  r3  r7  r:  r=  r@  rD  rG  rJ  rM  rP  rT  rW  rZ  r]  ra  re  rh  rj  rm  ro  rr  rt  rv  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r"  r&  r*  r,  r.  r1  r3  r5  r8  r<  r>  r@  rC  rF  rI  rL  rP  rS  rV  r[  r]  r_  rb  re  rj  rk  ri  rh  rs  rw  ry  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r"  r&  r)  r-  r0  r3  r6  r9  r=  r@  rC  rF  rJ  rL  rO  rQ  rT  rW  rZ  r]  ra  rd  rg  rj  rm  rp  rs  rv  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r'  r+  r-  r0  r4  r7  r;  r>  rA  rE  rH  rL  rO  rR  rV  rk  rZ  r\  r_  rb  rf  ri  rl  rp  rs  rw  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r  r  r  r  r  r  r   r$  r'  r+  r.  r0  r2  r)  r5  r9  r<  r?  rC  rF  rI  rM  rP  rT  rW  r\  r`  rc  rf  ri  rl  ro  rr  ru  ry  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  _CLASS_LOOKUPr   r   r   <module>r     s)'       				              ZYY 
- - - - - - - -cL cL cL cL cL"3 cL cL cL cLL	 	 	 	 	/ 	 	 	    0       ":       /       7       2        8       0   % % % % %( % % %&    7       9       8   % % % % %0 % % %&    4       57N       13J       4        8       6   
K 
K 
K 
K 
K. 
K 
K 
K    3       4       2       ,       .              "       ,       &       !       #   
I I I I I[ I I I    k   / / / / /! / / /    I       )       %   
           %          ! ! ! ! !* ! ! !
    '       /       *              0          K K K K K K K K    #   
    +       %       ;       "       !          
    U       %              ]       (   
    %       #       -   F F F F F& F F F    &       #   
    ;   
    ,           ! ! ! ! !' ! ! !    O       /       o       o              '       #       (       !       "       %   
           }       $       (   
    (       #       ,       %          I I I I IG I I I    #   
" " " " "+ " " "
    ,       #          ! ! ! ! !* ! ! !
    '       -       -       '       %       -       "3       )              (       %   
    -              }                       &       '       '       .   e e e e e' e e e    $                     #       $   

' 
' 
' 
' 
'| 
' 
' 
'    %       |       |   ! ! ! ! !* ! ! !
    '       -       $       *       %       #       #       (   
    )       *       (       #       $   
    |       |       &   D D D D DH D D D           (       !   + + + + +#4 + + +
    ;       8   $ $ $ $ $- $ $ $
    -   , , , , ,I , , ,# # # # #, # # #
    &       k   I I I I I+ I I I           #       #   
    [       k       +              #       !       )              $       $   
    l       |       "   
, 
, 
, 
, 
,j 
, 
, 
,    &       z       %   
                  %       "       *       '       "              $       "            )      
           %   
    M       m       ]       !                     &   
           ^       n       )          [ [ [ [ [( [ [ [    .            &                 ~       "   " " " " "+ " " "
    .       )       *   # # # # #> # # #
    +       1   " " " " ". " " "
& & & & &1 & & &
V V V V V6 V V V    5       0       2       .       .       2       '       )       "       "       /   K K K K K$5 K K K    %       (                     !       #       !       $   
    |       #               %       &                          &               >          (       (       '              '       '                  
! ! ! ! !* ! ! !
    "       #       *   " " " " "+ " " "
    )   % % % % %+ % % %    0       /       $       #       "       )       "                     $       |       $       |              #       #       +       %   
    ]   
                             
    &       ]              %       *       (       '   
    /              %                     #                     #       $              #              &                     &       &       '              !       $               "       &       #   L L L L L# L L L    '       !       !       '               $       !       #       %       '       %   
    =       '       %       $       &       !   
    	       (       '   
           /       '   
T T T T T T T T           $       "   
    z       #       !       '       *       #                      '       (       \   
    ^       #       *                      !       !       &       (       ,       %              !       *   ' ' ' ' '- ' ' '' ' ' ' '&; ' ' '    #B       -       =       %       m                                   !   
    )       I   I I I I I% I I I    "       k       #              "       $       $                     #          \ \ \ \ \$ \ \ \    |       ,       !   
    y       #       '   
    /          # # # # ##4 # # #    0   # # # # # < # # #    5       3       1       %   
    m       ]   " " " " "( " " "    #       )       "   
l l l l l l l l    Z       "   
L L L L LZ L L L           %               &       .       $              #       ,       +       "       "       0       )       /       )       .   & & & & &k & & &
    6   o o o o o. o o o    6               $   
    |       #   
    +              !       !       !   
    	       !       !       !       '               (       !       !   # # # # #, # # #
    +   
            #       $       %   
                  '   g g g g g% g g g    &              "       &       k   I I I I I+ I I I           %              %   
    m       m       "   
    :       Z       %       .       )   Q Q Q Q Q- Q Q Q     3                      #       (               !               &       '       !              !       )       $       !               +               &       #       #       !       "              !   E E E E E E E E    "              %       "       .       -       &       $       L               $   
    |       <              !              $       '               !       !       %               )                       +       (   
    #       %       '       #       "       &   
           (              &       #       !       (            )      
    '       %       "   ( ( ( ( ( 1 ( ( (
    .       .       $   
    |       \       #       $   ' ' ' ' '- ' ' '' ' ' ' ' 5 ' ' '
6 
6 
6 
6 
67 
6 
6 
6    -       7       (              #       N       !               "       )       %                            ,       &   
% % % % %^ % % %
    0       +       ~              -       +       "       "       "               %               &       #       %       +       #   
    k       {       #   % % % % %. % % %% % % % %) % % %Q Q Q Q Q- Q Q Q% % % % % 3 % % %       ! ! ! ! !* ! ! !
    !3       ,       +       !3       ,   I I I I I& I I I           $   
    L       |       '       ;                      #       %       !                      "       +       %   # # # # #, # # #
    /       +       ,       !       !       $               $       !       I       %       "       #              %       "       Z       Z       %   
    =              )       #       $              #            )      
    %               '       #       +       "3       !       &       %   
           '       m       (       !       "       %   
    ]              %       "       #                      !   
    9       I                   )      
    %       ,       #               %   
    m              !              #       !       *   N N N N N& N N N    )   # # # # #, # # #
    (       3       +       ,       %       "       %   
       
    *   
    [       K               #              "       #   
! ! ! ! ! ! ! !
    %       '       k                     (       l       '   
    /       &          & & & & &o & & &
    ,       -       (       .       2       !                     &       ,       ,       (              !              #       k       k       +               "       !              %       $       !       Y       #       &   
    n       ~              ^       ^       ^                                   !       #       #       !       "       (       %            )      
    %       )       "   
       	i 	i 	i 	i 	iZ 	i 	i 	i    %       
                      &   i i i i i$ i i i    #       0       )       ,       #       #   
    K              "              $       #       &       #       "   
    Z       z       $              +       &       "   
    J       Z       Z                     "       #               $       %       #       $       '   
    /       /           # # # # #, # # #
    +       '              !       ,       .          F F F F F$ F F F    *       $            &          ~                             !              #              +               #       "              #            &          ~                   ^      	T 	T 	T 	T 	T5 	T 	T 	T    /       "       %       %       $       ,       -       )                     $              #   
    [       '       #       K       k                            $       !   
    I          G G G G G G G G    #       '       |   J J J J J< J J J                         +               $       &           & & & & &/ & & &
    +       1       '   E E E E E' E E EI I I I Io I I I^ ^ ^ ^ ^ ^ ^ ^    "       !       !   	K 	K 	K 	K 	K% 	K 	K 	K    +       !       !       "   
    J       Z       !       !       $            )      
    %       )       "       '   
    /       "       Z       *       #   f f f f f/ f f f            '   
           /       #               "       $       (       (   $ $ $ $ $- $ $ $
    3       0       /       -   ! ! ! ! !) ! ! !    #   
    k   
    _       ?       k   ~ ~ ~ ~ ~  ~ ~ ~    !       &   
       H H H H H^ H H H    $       &              $       &   
       % % % % %^ % % %
    /       +              '              $       #       "       $5       $   $ $ $ $ $- $ $ $
    /       -       $       0       $       %       $       ;       #       %       $       %   
    =       "       &               #       &   
    n       ^   
    ~              ^              !   
    I       y       i       "       &       &       !       !       #       #               %       !       <   
       
    9              I       \   
    >       n                     %       +       #              *       %   g g g g g& g g g           !   
    I              !   
    I       )       %       !   
    9       I       y       i       !   
    I       .       Y       &   , , , , , , , ,
, 
, 
, 
, 
, 
, 
, 
,, , , , ,& , , ,    !       *   T T T T T" T T T    !   
    I            )      
    %       )       "       &       '          5 5 5 5 5W 5 5 5    y   
	, 	, 	, 	, 	,$ 	, 	, 	,( ( ( ( ($ ( ( (           !       %   
    -                     %   
    }       }       .              "       $              (              %       U        1       #   
    k       +          # # # # #$ # # #    l       L       |       \       L       $       '       "              $   
           L   ! ! ! ! !* ! ! !
    ,       .       '       +       )       .       -       *       /   M M M M Mo M M M    O       &   
                  .       "       $       ,       (       #              #              -        1       -       *       #       '       !   
    y   J J J J Ji J J J       ( ( ( ( ( 1 ( ( (
/ / / / /'@ / / /
    (H       )I       5   % % % % %. % % %
B B B B B. B B B         &                 ^       /       -       &   $ $ $ $ $- $ $ $
    13J       -/F       0       -       &   E E E E E( E E E    !       "       !       "               $       &              (       #              "       "       %   
                  m                     %       "   
J J J J J J J J    *       
                      %       !              $       "       '              &       '       (              .       '       .       %       #       )       J       Z   / / / / /
 / / /            &              %   
    }   I I I I I I I I    ]       &   
                     ! ! ! ! !* ! ! !! ! ! ! !/ ! ! !M M M M Mo M M M! ! ! ! !O ! ! !    #       "              !       !       !   
    9       )       	#:       $;              &   
L L L L L~ L L L           &   
T T T T T~ T T TQ Q Q Q Q Q Q Q    n       !       %   
S S S S S S S S    M              /               $   
           "       #   
           ;       %   
                  #       &   
                   "       *       !       %       &       '   
    /       o       -       	       %       !           N N N N N! N N N    $               "       '   
M M M M MO M M M    /       +       $       !       '       $   	J 	J 	J 	J 	J\ 	J 	J 	J    |       $       $              "       "       "            )      
    +       %       !       #       )       "       #       #       %       -              "       .   V V V V V. V V V! ! ! ! !* ! ! !
    '       -       ,   ( ( ( ( ( 1 ( ( (
    5        9       #       &       "       %              M       !6   , , , , ,8 , , ,    -       )        :       !              !       >       '       !       #       "       #       '       *       !   " " " " "+ " " "
    )       (               %       !       !               (   
    %       %   
           (       m       '       ]       "   ! ! ! ! !* ! ! !! ! ! ! !/ ! ! !M M M M Mo M M M! ! ! ! !O ! ! !    $   	F 	F 	F 	F 	F# 	F 	F 	F           !   
    )       I       9       &   
       	L 	L 	L 	L 	L~ 	L 	L 	LL L L L L> L L L           &              '       \       &       .              #   
    [       +       ;       [                             &   
    N       n              "   
    Z       *              J       (                      $       !   K K K K Ky K K KK K K K Ki K K K    $   
f f f f f| f f fN N N N NL N N N           /       %       (       0       !       %       )   ( ( ( ( ( 1 ( ( (
    4       4       #4       $   ! ! ! ! !* ! ! !
    '       +       '       )       !   
    I       	       9       	       I       )       Y              .       I   Q Q Q Q Q- Q Q Q    '       &               )       !       #   f f f f f[ f f fM M M M M- M M M    $       %   
           m       M       !               !       !       &       %       "       %   
    m              '   # # # # #, # # #
    *               ,       (   $ $ $ $ $* $ $ $    '       -       (       "       !       m       !   
    I                            #       %       '       %                       $   
# # # # #< # # #
    *       L       |       (       )       +       '                     "              #       &       k   I I I I I+ I I I           .       !       ,          u u u u u  u u u    H       $   ! ! ! ! !* ! ! !
    &       #       !   
K K K K K	 K K K    	   K K K K K) K K K           $       ,   , , , , ,\ , , ,    |       "       '       |   J J J J J< J J J           %       !       ,              "       "       *       !       #       $       *       '       )          
    U       #                     +       #       $       $               %              -       &       5   
    |       <       $       *       $          A A A A A& A A A    (   
	s 	s 	s 	s 	s' 	s 	s 	s    +       &       %       (   
    *       #       *                     #   
    k       '       '   h h h h hK h h h    ;       {       #   " " " " "+ " " "
    0       )       !   
    	       Y       )       i       (       $       $       "       %   
    ]              M              +              -                     !       '   [ [ [ [ [) [ [ [" " " " "( " " "    #   " " " " "/ " " "    3   " " " " "$4 " " "    7       )+B       .       <       4        =       #       *       '       (       %       %       %       #       &   " " " " "+ " " "
    )       1       #       +       !               "       *       "       &       -       %   ' ' ' ' '- ' ' '         *          ^       N       -       /               "        1       (              &   
           ^       '   
    /              o              "       $       %       )       #       '   
    /       /       "       "   " " " " "+ " " "
    0       !4                             L       -   
    [       k       [                                           0       !       %       $       +                     %                     &       %   
           ]       l       +       '          P P P P P- P P P    &       $              #                     &   
    n       n       "              #       $   
    \       L       $               "       ]       $       $   
    ,       |   
    &       \       '       (   
    +       +       (          ! ! ! ! !' ! ! !	M 	M 	M 	M 	M 	M 	M 	M    /       %       )       )       '              #       "       !   
    I       )       	               !       '               ,       (   
    #       '       )       (       "       (       '   
    /       #       '       #       $              !       '       "       !       $   
! ! ! ! ! ! ! !
    )   ! ! ! ! ! ! ! !
    $       ,       #4       %       #       &       )   V V V V V! V V V    I              %   Y Y Y Y Y} Y Y YY Y Y Y Y+ Y Y Y    1       #       +       "   c c c c c& c c c    %              !               -   * * * * *~ * * *    6       6       *       &       !   $ $ $ $ $- $ $ $
    +       -       #       $       (              |   
    %       |       <       $       "       <       "                      '       &       %       m       !       !       %       '       )       %              &       M       #   
! ! ! ! ! ! ! !
    +       *       k              '       "       !                         " " " " "( " " "    #       )               $               $   
    L       \   X X X X Xl X X X    )       l                      !       '       "       o       '       *       %       )       )       $       L              <       -   , , , , ,' , , ,(    .        4   , , , , ,' , , ,     ,       %   
    }              %          F F F F F F F F    m              "       '   
! ! ! ! !/ ! ! !    o       "                             5       "          I I I I IG I I I    "       %       %       $       !       ,              $   
    |   M M M M Ml M M M           (       !       &       !                      .       '               8       $   
    |       <       X       8       j       %   , , , , , , , ,       
    )              I       O                     &       k   I I I I I+ I I I                   8       "                     "   
    Z       Z       &       "   
    J       Z                      !              (       &   
                  ~              n       $       ,       #       #       '   
	, 	, 	, 	, 	, 	, 	, 	,	M 	M 	M 	M 	M 	M 	M 	M    !       #       k       +       [                             &   
    n   	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q    $               )       +       )       N       $       >       g       '       *       .                     '       !              !   
    I           $ $ $ $ $- $ $ $
    -       I       !       #   
	C 	C 	C 	C 	C[ 	C 	C 	C    k       %   
$ $ $ $ $M $ $ $
     5       1              "   M M M M M( M M M% % % % %. % % %
    .       "       -       .       i               $              #          , , , , , , , ,    %   
                  $              !   
    I              '       |   J J J J J< J J J       R R R R R/ R R R    (              +       J       :               &       .       %   O O O O O' O O O    #       #   
    k       +       ;       !       %              M       }       '       ]       (       m           > > > > >" > > >           #              #       (       $   
    l       |       |       &7       0       )       0       0       )       '       #   
       Q Q Q Q Q Q Q Q       R R R R R+ R R R    '       "       &                      !       )       $       #       %       &   
    n              &       !       Y              G       (       +       $            )      
( ( ( ( ( 1 ( ( (
	T 	T 	T 	T 	T2 	T 	T 	T& & & & &7 & & &
     7        7       5       *       %       ,       "              &       !       #       !       '   
, 
, 
, 
, 
,$ 
, 
, 
,
, 
, 
, 
, 
,& 
, 
, 
,         )      
    )       (       +       !       %       $       '              #       +   G G G G G9 G G G    I       #   
    [       k               '       |   J J J J J< J J J    \                     $       !       !       '   
           /       *              %   
    ]              }       =                     m       }       M                            !    EH-  EH1KMe  EHg|  R  EH  Tf  hx  EH  zE  GP  EH  Rl  nF  EH  Ha  cz  EH  |T  Vl  EH  nA  CT  EH  Vl  nB  EH  DY  [n  EH  pA  CR  EH  Th  j|  EH  ~Y	  [	t	  EH  v	N
  P
f
  EH  h
v
  x
D  EH  F\  ^r  EH  EH  tK  Mb  EH  dy  {N  EH  P_  an  EH  pA  CR  EH  T[  ]b  EH  dp  r|  EH  ~T  Vj  EH  l|  ~L  EH  NY  [d  EH  fv  xF  EH  HQ  SZ  EH  \c  ej  EH  ly  {F  EH  HS  U^  EH  `o  q~  EH  @G  IN  EH  P`  bp  EH  EH  EH  rJ  Lb  EH  dx  zL  EH  NU  W\  EH  ^x  zR  EH  T]  _f  EH  hq  sz  EH  |I  KV  EH  Xg  iv  EH  xF  HT  EH  Vb  dn  EH  p{  }F  EH  HX  Zh  EH  ju  w@  EH  BR  Tb  EH  dt  vD  EH  FT  Vb  EH  d{  }R  EH  EH  EH  Td  ft  EH  vF  HV  EH  Xe  gr  EH  t~  @H  EH  Ja  cx  EH  zG  IT  EH  Vg  ix  EH  zK   M \   EH  ^ g   i p   EH  r C!  E!T!  EH  V!c!  e!p!  EH  r!D"  F"V"  EH  X"c"  e"n"  EH  p"|"  ~"H#  EH  J#U#  W#`#  EH  b#t#  v#F$  EH  H$V$  X$d$  EH  EH  EH  f$y$  {$L%  EH  N%\%  ^%j%  EH  l%B&  D&X&  EH  Z&i&  k&x&  EH  z&C'  E'L'  EH  N']'  _'l'  EH  n'B(  D(V(  EH  X(e(  g(r(  EH  t(}(  (F)  EH  H)X)  Z)h)  EH  j)@*  B*V*  EH  X*n*  p*D+  EH  F+W+  Y+h+  EH  j+y+  {+H,  EH  J,a,  c,x,  EH  z,W-  Y-t-  EH  v-I.  K.\.  EH  EH  EH  ^.g.  i.p.  EH  r.B/  D/R/  EH  T/i/  k/~/  EH  @0S0  U0f0  EH  h0z0  |0L1  EH  N1X1  Z1b1  EH  d1n1  p1x1  EH  z1J2  L2Z2  EH  \2m2  o2~2  EH  @3Q3  S3b3  EH  d3|3  ~3T4  EH  V4g4  i4x4  EH  z4H5  J5V5  EH  X5a5  c5j5  EH  l5u5  w5~5  EH  @6M6  O6Z6  EH  \6n6  p6@7  EH  EH  EH  B7Q7  S7`7  EH  b7l7  n7v7  EH  x7J8  L8\8  EH  ^8n8  p8~8  EH  @9V9  X9l9  EH  n9|9  ~9J:  EH  L:`:  b:t:  EH  v:E;  G;T;  EH  V;c;  e;p;  EH  r;;  A<L<  EH  N<b<  d<v<  EH  x<M=  O=b=  EH  d=v=  x=H>  EH  J>W>  Y>d>  EH  f>p>  r>z>  EH  |>N?  P?`?  EH  b?s?  u?D@  EH  EH  EH  F@U@  W@d@  EH  f@m@  o@t@  EH  v@HA  JAZA  EH  \AgA  iArA  EH  tANB  PBhB  EH  jBAC  CCXC  EH  ZCmC  oC@D  EH  BDID  KDPD  EH  RD[D  ]DdD  EH  fDsD  uD@E  EH  BEUE  WEhE  EH  jEwE  yEDF  EH  FFVF  XFfF  EH  hFqF  sFzF  EH  |FIG  KGVG  EH  XG^G  `GdG  EH  fGsG  uG@H  EH  EH  EH  BHMH  OHXH  EH  ZHmH  oH@I  EH  BIKI  MITI  EH  VIdI  fIrI  EH  tIEJ  GJVJ  EH  XJbJ  dJlJ  EH  nJzJ  |JFK  EH  HKYK  [KjK  EH  lK|K  ~KLL  EH  NL`L  bLrL  EH  tLL  AMJM  EH  LM_M  aMrM  EH  tMCN  ENRN  EH  TN`N  bNlN  EH  nNBO  DOVO  EH  XOiO  kOzO  EH  |OHP  JPTP  EH  EH  EH  VP^P  `PfP  EH  hPvP  xPDQ  EH  FQRQ  TQ^Q  EH  `QgQ  iQnQ  EH  pQQ  ARNR  EH  PRaR  cRrR  EH  tRDS  FSTS  EH  VSaS  cSlS  EH  nSvS  xS~S  EH  @THT  JTPT  EH  RTeT  gTxT  EH  zTRU  TUjU  EH  lUEV  GV^V  EH  `VsV  uVFW  EH  HWTW  VW`W  EH  bWtW  vWFX  EH  HXZX  \XlX  EH  EH  EH  nXzX  |XFY  EH  HYZY  \YlY  EH  nYzY  |YFZ  EH  HZ^Z  `ZtZ  EH  vZG[  I[X[  EH  Z[n[  p[B\  EH  D\V\  X\h\  EH  j\B]  D]Z]  EH  \]v]  x]P^  EH  R^k^  m^D_  EH  F_Z_  \_n_  EH  p_F`  H`\`  EH  ^`t`  v`Ja  EH  Laba  daxa  EH  zaPb  Rbfb  EH  hbyb  {bJc  EH  Lc_c  acrc  EH  EH  EH  tc@d  BdLd  EH  NdZd  \dfd  EH  hdAe  CeZe  EH  \e{e  }eZf  EH  \fqf  sfFg  EH  HgZg  \glg  EH  ngwg  yg@h  EH  BhJh  LhRh  EH  Th_h  ahjh  EH  lhyh  {hFi  EH  HiSi  Ui^i  EH  `iji  liti  EH  viCj  EjPj  EH  Rj\j  ^jfj  EH  hjwj  yjFk  EH  HkXk  Zkhk  EH  jkqk  skxk  EH  EH  EH  zkAl  ClHl  EH  JlYl  [lhl  EH  jlyl  {lHm  EH  JmXm  Zmfm  EH  hmtm  vm@n  EH  BnPn  Rn^n  EH  `nnn  pn|n  EH  ~nIo  KoTo  EH  Voco  eopo  EH  roFp  HpZp  EH  \pmp  op~p  EH  @qXq  Zqpq  EH  rqIr  Kr`r  EH  brpr  rr~r  EH  @sMs  OsZs  EH  \shs  jsts  EH  vsIt  Kt\t  EH  EH  EH  ^tjt  ltvt  EH  xtt  AuFu  EH  HuPu  RuXu  EH  Zudu  funu  EH  pu~u  @vLv  EH  Nv`v  bvrv  EH  tv{v  }vBw  EH  DwQw  Sw^w  EH  `wmw  owzw  EH  |wQx  Sxfx  EH  hx{x  }xNy  EH  Py\y  ^yhy  EH  jyzy  |yJz  EH  Lz\z  ^zlz  EH  nzyz  {zD{  EH  F{U{  W{d{  EH  f{z{  |{N|  EH  EH  EH  P|b|  d|t|  EH  v|C}  E}P}  EH  R}Y}  [}`}  EH  b}q}  s}@~  EH  B~J~  L~R~  EH  T~\~  ^~d~  EH  f~s~  u~@  EH  BI  KP  EH  RZ  \b  EH  dq  s~  EH  @@N@  P@\@  EH  ^@f@  h@n@  EH  p@}@  @JA  EH  LASA  UAZA  EH  \AlA  nA|A  EH  ~AGB  IBPB  EH  RBZB  \BbB  EH  EH  EH  dBtB  vBDC  EH  FCVC  XCfC  EH  hCyC  {CJD  EH  LDUD  WD^D  EH  `DkD  mDvD  EH  xDFE  HETE  EH  VE`E  bEjE  EH  lExE  zEDF  EH  FFVF  XFfF  EH  hFuF  wFBG  EH  DGQG  SG^G  EH  `GqG  sGBH  EH  DHOH  QHZH  EH  \HgH  iHrH  EH  tHEI  GIVI  EH  XIbI  dIlI  EH  nI|I  ~IJJ  EH  EH  EH  LJWJ  YJbJ  EH  dJqJ  sJ~J  EH  @KOK  QK^K  EH  `KqK  sKBL  EH  DLRL  TL`L  EH  bLsL  uLDM  EH  FMUM  WMdM  EH  fMtM  vMBN  EH  DNTN  VNdN  EH  fNqN  sN|N  EH  ~NPO  RObO  EH  dOxO  zOLP  EH  NP[P  ]PhP  EH  jP}P  PPQ  EH  RQfQ  hQzQ  EH  |QJR  LRXR  EH  ZRdR  fRnR  EH  EH  EH  pR}R  RJS  EH  LSWS  YSbS  EH  dSuS  wSFT  EH  HT\T  ^TpT  EH  rTT  AULU  EH  NUXU  ZUbU  EH  dUlU  nUtU  EH  vUGV  IVXV  EH  ZVlV  nV~V  EH  @WPW  RW`W  EH  bWoW  qW|W  EH  ~WPX  RXbX  EH  dXlX  nXtX  EH  vX@Y  BYJY  EH  LYWY  YYbY  EH  dYoY  qYzY  EH  |YLZ  NZ\Z  EH  EH  EH  ^ZpZ  rZB[  EH  D[Z[  \[p[  EH  r[A\  C\P\  EH  R\[\  ]\d\  EH  f\q\  s\|\  EH  ~\R]  T]f]  EH  h]F^  H^d^  EH  f^y^  {^L_  EH  N_g_  i_@`  EH  B`S`  U`d`  EH  f`q`  s`|`  EH  ~`Fa  HaNa  EH  PaWa  Ya^a  EH  `aga  iana  EH  pa}a  aJb  EH  LbSb  UbZb  EH  \bkb  mbzb  EH  EH  EH  |bHc  JcTc  EH  Vc_c  achc  EH  jcwc  ycDd  EH  FdNd  PdVd  EH  Xddd  fdpd  EH  rd@e  BeNe  EH  Pe^e  `ele  EH  newe  ye@f  EH  BfJf  LfRf  EH  Tfaf  cfnf  EH  pfvf  xf|f  EH  ~fPg  Rgbg  EH  dgqg  sg~g  EH  @hRh  Thdh  EH  fhsh  uh@i  EH  BiOi  Qi\i  EH  ^iri  tiFj  EH  EH  EH  HjWj  Yjfj  EH  hjj  AkVk  EH  Xkmk  okBl  EH  DlWl  Yljl  EH  ll}l  lNm  EH  Pm`m  bmpm  EH  rm@n  BnNn  EH  Pndn  fnxn  EH  znFo  HoRo  EH  To\o  ^odo  EH  fovo  xoFp  EH  HpTp  Vp`p  EH  bpqp  sp@q  EH  BqLq  NqVq  EH  Xqhq  jqxq  EH  zqPr  Rrfr  EH  hrvr  xrDs  EH  EH  EH  FsOs  QsXs  EH  Zsgs  ists  EH  vsLt  Ntbt  EH  dtyt  {tNu  EH  Pu\u  ^uhu  EH  juvu  xuBv  EH  Dv^v  `vxv  EH  zvKw  Mw\w  EH  ^wuw  wwLx  EH  Nx_x  axpx  EH  rxHy  Jy^y  EH  `yzy  |yTz  EH  Vzlz  nzB{  EH  D{^{  `{x{  EH  z{D|  F|N|  EH  P|Z|  \|d|  EH  f|s|  u|@}  EH  EH  EH  B}M}  O}X}  EH  Z}e}  g}p}  EH  r}}}  }H~  EH  J~U~  W~`~  EH  b~m~  o~x~  EH  z~E  GP  EH  R]  _h  EH  j{  }L@  EH  N@X@  Z@b@  EH  d@v@  x@HA  EH  JAUA  WA`A  EH  bAmA  oAxA  EH  zAEB  GBPB  EH  RB_B  aBlB  EH  nB|B  ~BJC  EH  LC_C  aCrC  EH  tCC  ADJD  EH  EH  EH  LD]D  _DnD  EH  pDD  AENE  EH  PE`E  bEpE  EH  rEzE  |EBF  EH  DFPF  RF\F  EH  ^FgF  iFpF  EH  rFF  AGLG  EH  NGaG  cGtG  EH  vGEH  GHTH  EH  VH^H  `HfH  EH  hHyH  {HJI  EH  LI]I  _InI  EH  pI~I  @JLJ  EH  NJVJ  XJ^J  EH  `JoJ  qJ~J  EH  @KQK  SKbK  EH  dKyK  {KNL  EH  EH  EH  PLkL  mLFM  EH  HMPM  RMXM  EH  ZMdM  fMnM  EH  pM}M  MJN  EH  LN^N  `NpN  EH  rN|N  ~NFO  EH  HOSO  UO^O  EH  `OjO  lOtO  EH  vOFP  HPVP  EH  XPiP  kPzP  EH  |PGQ  IQRQ  EH  TQ]Q  _QfQ  EH  hQsQ  uQ~Q  EH  @RSR  URfR  EH  hRvR  xRDS  EH  FSQS  SS\S  EH  ^ShS  jSrS  EH  EH  EH  tSIT  KT^T  EH  `TjT  lTtT  EH  vTFU  HUVU  EH  XUeU  gUrU  EH  tUAV  CVNV  EH  PV[V  ]VfV  EH  hVtV  vV@W  EH  BWIW  KWPW  EH  RW]W  _WhW  EH  jWrW  tWzW  EH  |WHX  JXTX  EH  VX]X  _XdX  EH  fXuX  wXDY  EH  FYRY  TY^Y  EH  `YxY  zYPZ  EH  RZiZ  kZ@[  EH  B[R[  T[b[  EH  EH  EH  d[r[  t[@\  EH  B\Q\  S\`\  EH  b\l\  n\v\  EH  x\B]  D]L]  EH  N]\]  ^]j]  EH  l]s]  u]z]  EH  |]G^  I^R^  EH  T^\^  ^^d^  EH  f^t^  v^B_  EH  D_U_  W_f_  EH  h_r_  t_|_  EH  ~_I`  K`T`  EH  V`a`  c`l`  EH  n`}`  `La  EH  NaXa  Zaba  EH  dawa  yaJb  EH  LbVb  Xb`b  EH  EH  EH  bblb  nbvb  EH  xbMc  Ocbc  EH  dcrc  tc@d  EH  BdQd  Sd`d  EH  bdqd  sd@e  EH  BeOe  Qe\e  EH  ^eje  leve  EH  xeDf  FfPf  EH  Rfdf  ffvf  EH  xfCg  EgNg  EH  Pg`g  bgpg  EH  rgg  AhLh  EH  NhYh  [hdh  EH  fhxh  zhJi  EH  Li]i  _ini  EH  pii  AjNj  EH  Pj\j  ^jhj  EH  EH  EH  jjzj  |jJk  EH  Lk\k  ^klk  EH  nkxk  zkBl  EH  DlTl  Vldl  EH  flsl  ul@m  EH  BmPm  Rm^m  EH  `mym  {mRn  EH  Tngn  inzn  EH  |nUo  Wono  EH  poBp  DpTp  EH  Vp^p  `pfp  EH  hpup  wpBq  EH  DqKq  MqRq  EH  Tq_q  aqjq  EH  lqvq  xq@r  EH  BrNr  PrZr  EH  \ror  qrBs  EH  EH  EH  DsSs  Usbs  EH  dsks  msrs  EH  ts}s  sFt  EH  HtPt  RtXt  EH  Ztpt  rtFu  EH  Hu]u  _uru  EH  tuDv  FvTv  EH  Vvpv  rvJw  EH  LwXw  Zwdw  EH  fwxw  zwJx  EH  Lx\x  ^xlx  EH  nxzx  |xFy  EH  HyTy  Vy`y  EH  byny  pyzy  EH  |yFz  HzPz  EH  Rzaz  czpz  EH  rz|z  ~zF{  EH  EH  EH  H{X{  Z{h{  EH  j{w{  y{D|  EH  F|U|  W|d|  EH  f|{|  }|P}  EH  R}[}  ]}d}  EH  f}x}  z}J~  EH  L~Y~  [~f~  EH  h~y~  {~J  EH  La  cv  EH  xS@  U@n@  EH  p@y@  {@BA  EH  DA`A  bA|A  EH  ~ASB  UBhB  EH  jB~B  @CRC  EH  TCpC  rCLD  EH  NDcD  eDxD  EH  zDJE  LEZE  EH  EH  EH  \EeE  gEnE  EH  pEE  AFNF  EH  PFZF  \FdF  EH  fFuF  wFDG  EH  FGLG  NGRG  EH  TG^G  `GhG  EH  jGsG  uG|G  EH  ~GKH  MHXH  EH  ZHiH  kHxH  EH  zHEI  GIPI  EH  RI\I  ^IfI  EH  hIqI  sIzI  EH  |IHJ  JJTJ  EH  VJkJ  mJ@K  EH  BKQK  SK`K  EH  bKxK  zKNL  EH  PLbL  dLtL  EH  EH  EH  vLFM  HMVM  EH  XMcM  eMnM  EH  pM{M  }MFN  EH  HNVN  XNdN  EH  fNpN  rNzN  EH  |NJO  LOXO  EH  ZOeO  gOpO  EH  rOyO  {O@P  EH  BPQP  SP`P  EH  bPlP  nPvP  EH  xPCQ  EQNQ  EH  PQYQ  [QbQ  EH  dQsQ  uQBR  EH  DRLR  NRTR  EH  VRfR  hRvR  EH  xRFS  HSTS  EH  VSaS  cSlS  EH  EH  EH  nSAT  CTTT  EH  VTcT  eTpT  EH  rT@U  BUNU  EH  PUYU  [UbU  EH  dUqU  sU~U  EH  @VOV  QV^V  EH  `VjV  lVtV  EH  vVGW  IWXW  EH  ZWgW  iWtW  EH  vWKX  MX`X  EH  bXX  AY\Y  EH  ^YiY  kYtY  EH  vYFZ  HZVZ  EH  XZcZ  eZnZ  EH  pZA[  C[R[  EH  T[e[  g[v[  EH  x[J\  L\\\  EH  EH  EH  ^\i\  k\t\  EH  v\B]  D]N]  EH  P]h]  j]@^  EH  B^M^  O^X^  EH  Z^i^  k^x^  EH  z^F_  H_R_  EH  T_a_  c_n_  EH  p_y_  {_B`  EH  D`N`  P`X`  EH  Z`h`  j`v`  EH  x``  AaFa  EH  HaTa  Va`a  EH  baqa  sa@b  EH  BbXb  Zbnb  EH  pb}b  bJc  EH  LcVc  Xc`c  EH  bcsc  ucDd  EH  EH  EH  FdQd  Sd\d  EH  ^did  kdtd  EH  vd}d  dDe  EH  FeSe  Ue`e  EH  beme  oexe  EH  zeNf  Pfbf  EH  dftf  vfDg  EH  FgYg  [glg  EH  ng}g  gLh  EH  Nhhh  jhBi  EH  DiVi  Xihi  EH  ji}i  iPj  EH  Rjaj  cjpj  EH  rj~j  @kJk  EH  Lk\k  ^klk  EH  nk}k  kLl  EH  NlXl  Zlbl  EH  EH  EH  dlql  sl~l  EH  @mHm  JmPm  EH  Rm^m  `mjm  EH  lmzm  |mHn  EH  JnZn  \njn  EH  lnun  wn~n  EH  @oGo  IoNo  EH  PoWo  Yo^o  EH  `oro  toDp  EH  FpOp  QpXp  EH  Zpgp  iptp  EH  vpFq  HqVq  EH  Xqjq  lq|q  EH  ~qNr  Pr^r  EH  `rqr  srBs  EH  DsVs  Xshs  EH  jsBt  DtZt  EH  EH  EH  \tvt  xtPu  EH  Ru]u  _uhu  EH  jupu  ruvu  EH  xuAv  CvJv  EH  Lv\v  ^vlv  EH  nvDw  FwZw  EH  \wrw  twHx  EH  Jx\x  ^xnx  EH  pxwx  yx~x  EH  @yKy  MyVy  EH  Xyay  cyjy  EH  lyuy  wy~y  EH  @zQz  Szbz  EH  dzqz  sz~z  EH  @{J{  L{T{  EH  V{b{  d{n{  EH  p{{{  }{F|  EH  EH  EH  H|P|  R|X|  EH  Z|i|  k|x|  EH  z|H}  J}V}  EH  X}c}  e}n}  EH  p}@~  B~P~  EH  R~_~  a~l~  EH  n~~  AP  EH  Rd  fv  EH  xL@  N@`@  EH  b@r@  t@BA  EH  DA\A  ^AtA  EH  vAFB  HBVB  EH  XB_B  aBfB  EH  hBpB  rBxB  EH  zBAC  CCHC  EH  JCSC  UC\C  EH  ^CiC  kCtC  EH  EH  EH  vCCD  EDPD  EH  RD_D  aDlD  EH  nDyD  {DDE  EH  FERE  TE^E  EH  `ErE  tEDF  EH  FFUF  WFdF  EH  fFuF  wFDG  EH  FGYG  [GlG  EH  nGzG  |GFH  EH  HHPH  RHXH  EH  ZHiH  kHxH  EH  zHEI  GIPI  EH  RI\I  ^IfI  EH  hIpI  rIxI  EH  zIJJ  LJZJ  EH  \JjJ  lJxJ  EH  zJGK  IKTK  EH  EH  EH  VKbK  dKnK  EH  pKK  ALNL  EH  PL]L  _LjL  EH  lL{L  }LJM  EH  LMSM  UMZM  EH  \MhM  jMtM  EH  vM}M  MDN  EH  FNTN  VNbN  EH  dNqN  sN~N  EH  @OPO  RO`O  EH  bOoO  qO|O  EH  ~OFP  HPNP  EH  PPZP  \PdP  EH  fPtP  vPBQ  EH  DQKQ  MQRQ  EH  TQiQ  kQ~Q  EH  @RNR  PR\R  EH  EH  EH  ^RmR  oR|R  EH  ~RFS  HSNS  EH  PS`S  bSpS  EH  rSyS  {S@T  EH  BTJT  LTRT  EH  TT`T  bTlT  EH  nT{T  }THU  EH  JUTU  VU^U  EH  `UnU  pU|U  EH  ~UMV  OV\V  EH  ^VkV  mVxV  EH  zVHW  JWVW  EH  XWeW  gWrW  EH  tWIX  KX^X  EH  `XjX  lXtX  EH  vXHY  JYZY  EH  \YjY  lYxY  EH  EH  EH  zYAZ  CZHZ  EH  JZUZ  WZ`Z  EH  bZxZ  zZN[  EH  P[h[  j[@\  EH  B\H\  J\N\  EH  P\^\  `\l\  EH  n\B]  D]V]  EH  X]f]  h]t]  EH  v]H^  J^Z^  EH  \^p^  r^D_  EH  F_R_  T_^_  EH  `_k_  m_v_  EH  x_A`  C`J`  EH  L`Y`  [`f`  EH  h`p`  r`x`  EH  z`Oa  Qada  EH  fapa  raza  EH  EH  EH  |aIb  KbVb  EH  Xbdb  fbpb  EH  rb{b  }bDc  EH  FcSc  Uc`c  EH  bctc  vcFd  EH  HdTd  Vd`d  EH  bd|d  ~dVe  EH  Xele  ne@f  EH  BfNf  PfZf  EH  \fkf  mfzf  EH  |fKg  MgZg  EH  \gjg  lgxg  EH  zgPh  Rhfh  EH  hhh  AiVi  EH  Xiki  mi~i  EH  @jGj  IjNj  EH  PjXj  Zj`j  EH  EH  EH  bjpj  rj~j  EH  @kHk  JkPk  EH  Rkbk  dkrk  EH  tk}k  kFl  EH  HlWl  Ylfl  EH  hlql  slzl  EH  |lCm  EmJm  EH  LmSm  UmZm  EH  \mdm  fmlm  EH  nm|m  ~mJn  EH  LnSn  UnZn  EH  \nen  gnnn  EH  pn|n  ~nHo  EH  JoWo  Yodo  EH  fopo  rozo  EH  |oJp  LpXp  EH  Zpnp  ppBq  EH  EH  EH  DqKq  MqRq  EH  Tq[q  ]qbq  EH  dqyq  {qNr  EH  PrZr  \rdr  EH  frtr  vrBs  EH  DsTs  Vsds  EH  fsps  rszs  EH  |sKt  MtZt  EH  \tqt  stFu  EH  HuYu  [uju  EH  lu}u  uNv  EH  Pvbv  dvtv  EH  vvBw  DwNw  EH  Pw[w  ]wfw  EH  hwsw  uw~w  EH  @xOx  Qx^x  EH  `xux  wxJy  EH  EH  EH  LyWy  Yyby  EH  dyoy  qyzy  EH  |yKz  MzZz  EH  \zdz  fzlz  EH  nzyz  {zD{  EH  F{Q{  S{\{  EH  ^{l{  n{z{  EH  |{K|  M|Z|  EH  \|o|  q|B}  EH  D}P}  R}\}  EH  ^}k}  m}x}  EH  z}F~  H~R~  EH  T~d~  f~t~  EH  v~J  L^  EH  `m  oz  EH  |U@  W@n@  EH  p@z@  |@DA  EH  EH  EH  FAXA  ZAjA  EH  lAyA  {AFB  EH  HBUB  WBbB  EH  dBnB  pBxB  EH  zBFC  HCRC  EH  TCbC  dCpC  EH  rCDD  FDVD  EH  XDjD  lD|D  EH  ~DWE  YEpE  EH  rELF  NFfF  EH  hFAG  CGZG  EH  \GoG  qGBH  EH  DHWH  YHjH  EH  lH|H  ~HLI  EH  NI\I  ^IjI  EH  lIuI  wI~I  EH  @JJJ  LJTJ  EH  EH  EH  VJaJ  cJlJ  EH  nJzJ  |JFK  EH  HKXK  ZKhK  EH  jKxK  zKFL  EH  HLXL  ZLhL  EH  jLsL  uL|L  EH  ~LLM  NMZM  EH  \MhM  jMtM  EH  vMJN  LN^N  EH  `NpN  rN@O  EH  BOKO  MOTO  EH  VOgO  iOxO  EH  zOAP  CPHP  EH  JPXP  ZPfP  EH  hPuP  wPBQ  EH  DQPQ  RQ\Q  EH  ^Q}Q  Q\R  EH  EH  EH  ^RlR  nRzR  EH  |RQS  SSfS  EH  hS{S  }SNT  EH  PT^T  `TlT  EH  nTDU  FUZU  EH  \UjU  lUxU  EH  zUFV  HVRV  EH  TVbV  dVpV  EH  rV@W  BWNW  EH  PW]W  _WjW  EH  lW{W  }WJX  EH  LXZX  \XhX  EH  jXxX  zXFY  EH  HYTY  VY`Y  EH  bYrY  tYBZ  EH  DZNZ  PZXZ  EH  ZZgZ  iZtZ  EH  EH  EH  vZG[  I[X[  EH  Z[l[  n[~[  EH  @\T\  V\h\  EH  j\z\  |\J]  EH  L]S]  U]Z]  EH  \]c]  e]j]  EH  l]v]  x]@^  EH  B^S^  U^d^  EH  f^r^  t^~^  EH  @_P_  R_`_  EH  b_r_  t_B`  EH  D`O`  Q`Z`  EH  \`g`  i`r`  EH  t`Aa  CaNa  EH  Pa]a  _aja  EH  lava  xa@b  EH  BbQb  Sb`b  EH  EH  EH  bbmb  obxb  EH  zbHc  JcVc  EH  Xcdc  fcpc  EH  rcyc  {c@d  EH  BdXd  Zdnd  EH  pdAe  CeRe  EH  Te`e  bele  EH  neue  we|e  EH  ~eMf  Of\f  EH  ^fsf  ufHg  EH  JgWg  Ygdg  EH  fgyg  {gLh  EH  Nhbh  dhvh  EH  xhGi  IiVi  EH  Xihi  jixi  EH  ziFj  HjRj  EH  Tj[j  ]jbj  EH  EH  EH  djlj  njtj  EH  vj}j  jDk  EH  FkSk  Uk`k  EH  bkqk  sk@l  EH  BlPl  Rl^l  EH  `lgl  ilnl  EH  plBm  DmTm  EH  Vmgm  imxm  EH  zmAn  CnHn  EH  JnWn  Yndn  EH  fnnn  pnvn  EH  xnHo  JoXo  EH  Zoao  coho  EH  jozo  |oJp  EH  LpWp  Ypbp  EH  dpxp  zpLq  EH  NqZq  \qfq  EH  EH  EH  hqoq  qqvq  EH  xqGr  IrVr  EH  Xrkr  mr~r  EH  @sLs  NsXs  EH  Zsjs  lszs  EH  |sMt  Ot^t  EH  `tit  ktrt  EH  ttDu  FuTu  EH  Vueu  gutu  EH  vuEv  GvTv  EH  Vv_v  avhv  EH  jvuv  wv@w  EH  BwOw  Qw\w  EH  ^wgw  iwpw  EH  rw{w  }wDx  EH  FxXx  Zxjx  EH  lx~x  @yPy  EH  EH  EH  Ryjy  lyBz  EH  DzOz  QzZz  EH  \zhz  jztz  EH  vzD{  F{R{  EH  T{[{  ]{b{  EH  d{v{  x{H|  EH  J|R|  T|Z|  EH  \|k|  m|z|  EH  ||T}  V}l}  EH  n}I~  K~d~  EH  f~o~  q~x~  EH  z~G  IT  EH  Vb  dn  EH  pA@  C@R@  EH  T@c@  e@r@  EH  t@~@  @AHA  EH  JAZA  \AjA  EH  EH  EH  lACB  EBZB  EH  \BjB  lBxB  EH  zBKC  MC\C  EH  ^CjC  lCvC  EH  xC@D  BDHD  EH  JD^D  `DrD  EH  tDCE  EERE  EH  TEiE  kE~E  EH  @FWF  YFnF  EH  pF@G  BGPG  EH  RGfG  hGzG  EH  |GNH  PH`H  EH  bHyH  {HPI  EH  RIhI  jI~I  EH  @JMJ  OJZJ  EH  \JmJ  oJ~J  EH  @KWK  YKnK  EH  EH  EH  pK|K  ~KHL  EH  JL^L  `LrL  EH  tLFM  HMXM  EH  ZMfM  hMrM  EH  tMBN  DNPN  EH  RNhN  jN~N  EH  @ORO  TOdO  EH  fOsO  uO@P  EH  BPKP  MPTP  EH  VPcP  ePpP  EH  rPzP  |PBQ  EH  DQ[Q  ]QrQ  EH  tQOR  QRjR  EH  lRCS  ESZS  EH  \SpS  rSDT  EH  FTST  UT`T  EH  bTsT  uTDU  EH  EH  EH  FUPU  RUZU  EH  \UmU  oU~U  EH  @VHV  JVPV  EH  RVuV  wVXW  EH  ZW~W  @XbX  EH  dX{X  }XRY  EH  TYgY  iYzY  EH  |YHZ  JZTZ  EH  VZfZ  hZvZ  EH  xZL[  N[`[  EH  b[t[  v[F\  EH  H\X\  Z\h\  EH  j\A]  C]X]  EH  Z]m]  o]@^  EH  B^X^  Z^n^  EH  p^C_  E_V_  EH  X_h_  j_x_  EH  EH  EH  z_L`  N`^`  EH  ``k`  m`v`  EH  x`Da  FaPa  EH  Ra]a  _aha  EH  java  xaBb  EH  DbNb  PbXb  EH  Zbhb  jbvb  EH  xbHc  JcXc  EH  Zcfc  hcrc  EH  tcFd  HdXd  EH  Zdgd  idtd  EH  vd~d  @eFe  EH  HeTe  Ve`e  EH  bene  peze  EH  |eGf  IfRf  EH  Tfgf  ifzf  EH  |fMg  Og^g  EH  EH  EH  `ggg  igng  EH  pgwg  yg~g  EH  @hOh  Qh^h  EH  `hlh  nhxh  EH  zhGi  IiTi  EH  Viai  cili  EH  niwi  yi@j  EH  BjLj  NjVj  EH  Xjgj  ijvj  EH  xjCk  EkNk  EH  PkYk  [kbk  EH  dkrk  tk@l  EH  BlNl  PlZl  EH  \lml  ol~l  EH  @mHm  JmPm  EH  Rmbm  dmrm  EH  tmEn  GnVn  EH  EH  EH  Xnjn  ln|n  EH  ~nFo  HoNo  EH  Poho  jo@p  EH  BpSp  Updp  EH  fp~p  @qVq  EH  Xqgq  iqvq  EH  xqEr  GrRr  EH  Trgr  irzr  EH  |rKs  MsZs  EH  \sds  fsls  EH  nsys  {sDt  EH  FtPt  RtZt  EH  \tlt  nt|t  EH  ~tGu  IuPu  EH  Rudu  fuvu  EH  xuCv  EvNv  EH  Pv`v  bvpv  EH  EH  EH  rv~v  @wJw  EH  Lw`w  bwtw  EH  vww  AxHx  EH  JxWx  Yxdx  EH  fxwx  yxHy  EH  Jyay  cyxy  EH  zyGz  IzTz  EH  Vzbz  dznz  EH  pzwz  yz~z  EH  @{K{  M{V{  EH  X{c{  e{n{  EH  p{~{  @|L|  EH  N|[|  ]|h|  EH  j|}|  |P}  EH  R}f}  h}z}  EH  |}H~  J~T~  EH  V~h~  j~z~  EH  EH  EH  |~H  JT  EH  Vh  jz  EH  |H@  J@T@  EH  V@g@  i@x@  EH  z@EA  GAPA  EH  RA]A  _AhA  EH  jAyA  {AHB  EH  JB]B  _BpB  EH  rBKC  MCdC  EH  fCpC  rCzC  EH  |CPD  RDdD  EH  fDrD  tD~D  EH  @ESE  UEfE  EH  hEvE  xEDF  EH  FFYF  [FlF  EH  nFyF  {FDG  EH  FGSG  UG`G  EH  EH  EH  bGnG  pGzG  EH  |GFH  HHPH  EH  RH^H  `HjH  EH  lH@I  BITI  EH  VIaI  cIlI  EH  nI}I  ILJ  EH  NJ^J  `JnJ  EH  pJ}J  JJK  EH  LK]K  _KnK  EH  pKGL  IL^L  EH  `LkL  mLvL  EH  xLGM  IMVM  EH  XMcM  eMnM  EH  pMzM  |MDN  EH  FNQN  SN\N  EH  ^NlN  nNzN  EH  |NFO  HOPO  EH  EH  EH  RO^O  `OjO  EH  lOCP  EPZP  EH  \PiP  kPvP  EH  xPMQ  OQbQ  EH  dQrQ  tQ@R  EH  BRMR  ORXR  EH  ZRkR  mR|R  EH  ~RNS  PS^S  EH  `SjS  lStS  EH  vSDT  FTRT  EH  TTbT  dTpT  EH  rT~T  @UJU  EH  LUXU  ZUdU  EH  fUrU  tU~U  EH  @VLV  NVXV  EH  ZVoV  qVDW  EH  FWUW  WWdW  EH  EH  EH  fWqW  sW|W  EH  ~WKX  MXXX  EH  ZXmX  oX@Y  EH  BYNY  PYZY  EH  \YiY  kYvY  EH  xYEZ  GZRZ  EH  TZiZ  kZ~Z  EH  @[K[  M[V[  EH  X[d[  f[p[  EH  r[J\  L\b\  EH  d\|\  ~\T]  EH  V]f]  h]v]  EH  x]N^  P^d^  EH  f^|^  ~^R_  EH  T_k_  m_B`  EH  D`_`  a`z`  EH  |`Ia  KaVa  EH  EH  EH  Xaha  jaxa  EH  zaFb  HbRb  EH  Tb_b  abjb  EH  lbEc  Gc^c  EH  `csc  ucFd  EH  HdWd  Ydfd  EH  hdCe  Ee^e  EH  `eke  meve  EH  xeDf  FfPf  EH  Rf]f  _fhf  EH  jfxf  zfFg  EH  HgYg  [gjg  EH  lgwg  ygBh  EH  DhQh  Sh^h  EH  `hlh  nhxh  EH  zhGi  IiTi  EH  Vigi  iixi  EH  EH  EH  ziNj  Pjbj  EH  djoj  qjzj  EH  |jMk  Ok^k  EH  `krk  tkDl  EH  FlPl  RlZl  EH  \lkl  mlzl  EH  |lEm  GmNm  EH  Pm[m  ]mfm  EH  hmrm  tm|m  EH  ~mNn  Pn^n  EH  `nkn  mnvn  EH  xnKo  Mo^o  EH  `oqo  soBp  EH  DpVp  Xphp  EH  jpzp  |pJq  EH  LqXq  Zqdq  EH  fqsq  uq@r  EH  EH  EH  BrSr  Urdr  EH  fr}r  rTs  EH  Vsds  fsrs  EH  tsAt  CtNt  EH  PtVt  Xt\t  EH  ^tkt  mtxt  EH  ztAu  CuHu  EH  JuXu  Zufu  EH  hutu  vu@v  EH  BvTv  Vvfv  EH  hvvv  xvDw  EH  FwMw  OwTw  EH  Vwfw  hwvw  EH  xwAx  CxJx  EH  Lx]x  _xnx  EH  pxxx  zx@y  EH  ByRy  Tyby  EH  EH  EH  dy|y  ~yTz  EH  Vz^z  `zfz  EH  hzxz  zzH{  EH  J{W{  Y{d{  EH  f{t{  v{B|  EH  D|T|  V|d|  EH  f|p|  r|z|  EH  ||C}  E}J}  EH  L}U}  W}^}  EH  `}o}  q}~}  EH  @~Q~  S~b~  EH  d~p~  r~|~  EH  ~~N  P^  EH  `m  oz  EH  |H@	  J@	T@	  EH  V@	e@	  g@	t@	  EH  v@	HA	  JA	ZA	  EH  EH  EH  \A	dA	  fA	lA	  EH  nA	xA	  zA	BB	  EH  DB	RB	  TB	`B	  EH  bB	mB	  oB	xB	  EH  zB	LC	  NC	^C	  EH  `C	qC	  sC	BD	  EH  DD	ND	  PD	XD	  EH  ZD	iD	  kD	xD	  EH  zD	FE	  HE	RE	  EH  TE	mE	  oE	FF	  EH  HF	WF	  YF	fF	  EH  hF	zF	  |F	LG	  EH  NG	hG	  jG	BH	  EH  DH	OH	  QH	ZH	  EH  \H	kH	  mH	zH	  EH  |H	OI	  QI	bI	  EH  dI	zI	  |I	PJ	  EH  EH  EH  RJ	hJ	  jJ	~J	  EH  @K	^K	  `K	|K	  EH  ~K	LL	  NL	ZL	  EH  \L	lL	  nL	|L	  EH  ~L	RM	  TM	fM	  EH  hM	yM	  {M	JN	  EH  LN	_N	  aN	rN	  EH  tN	{N	  }N	BO	  EH  DO	OO	  QO	ZO	  EH  \O	jO	  lO	xO	  EH  zO	EP	  GP	PP	  EH  RP	aP	  cP	pP	  EH  rP	EQ	  GQ	XQ	  EH  ZQ	jQ	  lQ	zQ	  EH  |Q	PR	  RR	dR	  EH  fR	~R	  @S	VS	  EH  XS	gS	  iS	vS	  EH  EH  EH  xS	OT	  QT	fT	  EH  hT	yT	  {T	JU	  EH  LU	\U	  ^U	lU	  EH  nU	xU	  zU	BV	  EH  DV	WV	  YV	jV	  EH  lV	wV	  yV	BW	  EH  DW	QW	  SW	^W	  EH  `W	pW	  rW	@X	  EH  BX	YX	  [X	pX	  EH  rX	@Y	  BY	NY	  EH  PY	[Y	  ]Y	fY	  EH  hY	yY	  {Y	JZ	  EH  LZ	[Z	  ]Z	jZ	  EH  lZ	wZ	  yZ	B[	  EH  D[	N[	  P[	X[	  EH  Z[	e[	  g[	p[	  EH  r[	}[	  [	H\	  EH  EH  EH  J\	Z\	  \\	j\	  EH  l\	{\	  }\	J]	  EH  L]	X]	  Z]	d]	  EH  f]	]	  A^	X^	  EH  Z^	e^	  g^	p^	  EH  r^	C_	  E_	T_	  EH  V_	g_	  i_	x_	  EH  z_	D`	  F`	N`	  EH  P`	``	  b`	p`	  EH  r`	Aa	  Ca	Pa	  EH  Ra	ba	  da	ra	  EH  ta	Jb	  Lb	`b	  EH  bb	tb	  vb	Fc	  EH  Hc	Tc	  Vc	`c	  EH  bc	mc	  oc	xc	  EH  zc	Kd	  Md	\d	  EH  ^d	ed	  gd	ld	  EH  EH  EH  nd	zd	  |d	Fe	  EH  He	Qe	  Se	Ze	  EH  \e	de	  fe	le	  EH  ne	{e	  }e	Hf	  EH  Jf	Yf	  [f	hf	  EH  jf	{f	  }f	Lg	  EH  Ng	]g	  _g	lg	  EH  ng	xg	  zg	Bh	  EH  Dh	Nh	  Ph	Xh	  EH  Zh	kh	  mh	|h	  EH  ~h	Mi	  Oi	\i	  EH  ^i	hi	  ji	ri	  EH  ti	Cj	  Ej	Rj	  EH  Tj	dj	  fj	tj	  EH  vj	Hk	  Jk	Zk	  EH  \k	jk	  lk	xk	  EH  zk	Cl	  El	Ll	  EH  EH  EH  Nl	Ul	  Wl	\l	  EH  ^l	jl	  ll	vl	  EH  xl	l	  Am	Fm	  EH  Hm	Um	  Wm	bm	  EH  dm	mm	  om	vm	  EH  xm	En	  Gn	Rn	  EH  Tn	gn	  in	zn	  EH  |n	To	  Vo	lo	  EH  no	yo	  {o	Dp	  EH  Fp	\p	  ^p	rp	  EH  tp	{p	  }p	Bq	  EH  Dq	Nq	  Pq	Xq	  EH  Zq	aq	  cq	hq	  EH  jq	xq	  zq	Fr	  EH  Hr	Wr	  Yr	fr	  EH  hr	ur	  wr	Bs	  EH  Ds	Os	  Qs	Zs	  EH  EH  EH  \s	gs	  is	rs	  EH  ts	At	  Ct	Nt	  EH  Pt	Yt	  [t	bt	  EH  dt	qt	  st	~t	  EH  @u	Pu	  Ru	`u	  EH  bu	lu	  nu	vu	  EH  xu	Dv	  Fv	Pv	  EH  Rv	\v	  ^v	fv	  EH  hv	vv	  xv	Dw	  EH  Fw	Zw	  \w	nw	  EH  pw	w	  Ax	Nx	  EH  Px	[x	  ]x	fx	  EH  hx	~x	  @y	Ty	  EH  Vy	^y	  `y	fy	  EH  hy	uy	  wy	Bz	  EH  Dz	Pz	  Rz	\z	  EH  ^z	pz	  rz	B{	  EH  EH  EH  D{	O{	  Q{	Z{	  EH  \{	i{	  k{	v{	  EH  x{	F|	  H|	T|	  EH  V|	j|	  l|	~|	  EH  @}	Q}	  S}	b}	  EH  d}	w}	  y}	J~	  EH  L~	d~	  f~	|~	  EH  ~~	K	  M	X	  EH  Z	b	  d	j	  EH  l	s	  u	z	  EH  |	Q@
  S@
f@
  EH  h@
u@
  w@
BA
  EH  DA
RA
  TA
`A
  EH  bA
pA
  rA
~A
  EH  @B
JB
  LB
TB
  EH  VB
cB
  eB
pB
  EH  rB
zB
  |B
BC
  EH  EH  EH  DC
[C
  ]C
rC
  EH  tC
DD
  FD
TD
  EH  VD
`D
  bD
jD
  EH  lD
zD
  |D
HE
  EH  JE
XE
  ZE
fE
  EH  hE
|E
  ~E
PF
  EH  RF
`F
  bF
nF
  EH  pF
yF
  {F
BG
  EH  DG
TG
  VG
dG
  EH  fG
xG
  zG
JH
  EH  LH
bH
  dH
xH
  EH  zH
KI
  MI
\I
  EH  ^I
mI
  oI
|I
  EH  ~I
SJ
  UJ
hJ
  EH  jJ
xJ
  zJ
FK
  EH  HK
]K
  _K
rK
  EH  tK
|K
  ~K
DL
  EH  EH  EH  FL
NL
  PL
VL
  EH  XL
aL
  cL
jL
  EH  lL
yL
  {L
FM
  EH  HM
UM
  WM
bM
  EH  dM
sM
  uM
BN
  EH  DN
RN
  TN
`N
  EH  bN
tN
  vN
FO
  EH  HO
UO
  WO
bO
  EH  dO
|O
  ~O
TP
  EH  VP
gP
  iP
xP
  EH  zP
EQ
  GQ
PQ
  EH  RQ
bQ
  dQ
rQ
  EH  tQ
AR
  CR
NR
  EH  PR
aR
  cR
rR
  EH  tR
FS
  HS
XS
  EH  ZS
hS
  jS
vS
  EH  xS
FT
  HT
TT
  EH  EH  EH  VT
bT
  dT
nT
  EH  pT
@U
  BU
PU
  EH  RU
]U
  _U
hU
  EH  jU
yU
  {U
HV
  EH  JV
]V
  _V
pV
  EH  rV
GW
  IW
\W
  EH  ^W
gW
  iW
pW
  EH  rW
IX
  KX
`X
  EH  bX
jX
  lX
rX
  EH  tX
}X
  X
FY
  EH  HY
SY
  UY
^Y
  EH  `Y
qY
  sY
BZ
  EH  DZ
WZ
  YZ
jZ
  EH  lZ
zZ
  |Z
H[
  EH  J[
`[
  b[
v[
  EH  x[
M\
  O\
b\
  EH  d\
x\
  z\
L]
  EH  EH  EH  N]
_]
  a]
p]
  EH  r]
L^
  N^
f^
  EH  h^
z^
  |^
L_
  EH  N_
i_
  k_
D`
  EH  F`
S`
  U`
``
  EH  b`
v`
  x`
Ja
  EH  La
]a
  _a
na
  EH  pa
Bb
  Db
Tb
  EH  Vb
eb
  gb
tb
  EH  vb
Ec
  Gc
Tc
  EH  Vc
ec
  gc
tc
  EH  vc
Cd
  Ed
Pd
  EH  Rd
bd
  dd
rd
  EH  td
Ee
  Ge
Ve
  EH  Xe
qe
  se
Jf
  EH  Lf
Yf
  [f
ff
  EH  hf
}f
  f
Rg
  EH  EH  EH  Tg
_g
  ag
jg
  EH  lg
vg
  xg
@h
  EH  Bh
Nh
  Ph
Zh
  EH  \h
ph
  rh
Di
  EH  Fi
Ri
  Ti
^i
  EH  `i
pi
  ri
@j
  EH  Bj
Yj
  [j
pj
  EH  rj
Ak
  Ck
Pk
  EH  Rk
bk
  dk
rk
  EH  tk
Cl
  El
Rl
  EH  Tl
kl
  ml
Bm
  EH  Dm
]m
  _m
vm
  EH  xm
Bn
  Dn
Ln
  EH  Nn
Zn
  \n
fn
  EH  hn
Co
  Eo
^o
  EH  `o
ro
  to
Dp
  EH  Fp
Op
  Qp
Xp
  EH  EH  EH  Zp
fp
  hp
rp
  EH  tp
Dq
  Fq
Tq
  EH  Vq
cq
  eq
pq
  EH  rq
Er
  Gr
Xr
  EH  Zr
kr
  mr
|r
  EH  ~r
Is
  Ks
Ts
  EH  Vs
bs
  ds
ns
  EH  ps
~s
  @t
Lt
  EH  Nt
]t
  _t
lt
  EH  nt
Au
  Cu
Tu
  EH  Vu
cu
  eu
pu
  EH  ru
u
  Av
Lv
  EH  Nv
cv
  ev
xv
  EH  zv
Fw
  Hw
Rw
  EH  Tw
`w
  bw
lw
  EH  nw
Fx
  Hx
^x
  EH  `x
|x
  ~x
Xy
  EH  EH  EH  Zy
my
  oy
@z
  EH  Bz
Jz
  Lz
Rz
  EH  Tz
^z
  `z
hz
  EH  jz
qz
  sz
xz
  EH  zz
J{
  L{
Z{
  EH  \{
m{
  o{
~{
  EH  @|
P|
  R|
`|
  EH  b|
i|
  k|
p|
  EH  r|
y|
  {|
@}
  EH  B}
I}
  K}
P}
  EH  R}
Y}
  [}
`}
  EH  b}
m}
  o}
x}
  EH  z}
Q~
  S~
h~
  EH  j~
u~
  w~
@
  EH  B
Q
  S
`
  EH  b
p
  r
~
  EH  @@U@  W@j@  EH  EH  EH  l@u@  w@~@  EH  @AIA  KARA  EH  TAcA  eArA  EH  tA{A  }ABB  EH  DBKB  MBRB  EH  TBdB  fBtB  EH  vBAC  CCLC  EH  NC^C  `CnC  EH  pCyC  {CBD  EH  DDQD  SD^D  EH  `DqD  sDBE  EH  DEKE  MERE  EH  TEkE  mEBF  EH  DFTF  VFdF  EH  fFtF  vFBG  EH  DGKG  MGRG  EH  TGaG  cGnG  EH  EH  EH  pGyG  {GBH  EH  DHMH  OHVH  EH  XHiH  kHzH  EH  |HMI  OI^I  EH  `IlI  nIxI  EH  zIAJ  CJHJ  EH  JJWJ  YJdJ  EH  fJvJ  xJFK  EH  HKWK  YKfK  EH  hKvK  xKDL  EH  FLPL  RLZL  EH  \LhL  jLtL  EH  vL~L  @MFM  EH  HMVM  XMdM  EH  fMsM  uM@N  EH  BNSN  UNdN  EH  fNvN  xNFO  EH  EH  EH  HOZO  \OlO  EH  nODP  FPZP  EH  \PrP  tPHQ  EH  JQ]Q  _QpQ  EH  rQzQ  |QBR  EH  DRWR  YRjR  EH  lRyR  {RFS  EH  HSWS  YSfS  EH  hS{S  }SNT  EH  PTcT  eTvT  EH  xTIU  KUZU  EH  \UhU  jUtU  EH  vUCV  EVPV  EH  RV^V  `VjV  EH  lV{V  }VJW  EH  LWYW  [WfW  EH  hWsW  uW~W  EH  EH  EH  @XJX  LXTX  EH  VX_X  aXhX  EH  jX{X  }XLY  EH  NYXY  ZYbY  EH  dYzY  |YPZ  EH  RZ`Z  bZnZ  EH  pZB[  D[T[  EH  V[i[  k[|[  EH  ~[Q\  S\d\  EH  f\r\  t\~\  EH  @]R]  T]d]  EH  f]s]  u]@^  EH  B^O^  Q^\^  EH  ^^o^  q^@_  EH  B_O_  Q_\_  EH  ^_l_  n_z_  EH  |_E`  G`N`  EH  EH  EH  P`[`  ]`f`  EH  h`y`  {`Ja  EH  LaXa  Zada  EH  faqa  sa|a  EH  ~aPb  Rbbb  EH  dbqb  sb~b  EH  @cVc  Xclc  EH  ncLd  Ndjd  EH  ld{d  }dJe  EH  LeYe  [efe  EH  hexe  zeHf  EH  Jf]f  _fpf  EH  rfyf  {f@g  EH  BgKg  MgTg  EH  Vgeg  ggtg  EH  vgNh  Phfh  EH  hhvh  xhDi  EH  EH  EH  FiXi  Ziji  EH  liyi  {iFj  EH  HjYj  [jjj  EH  lj|j  ~jLk  EH  NkYk  [kdk  EH  fkqk  sk|k  EH  ~kHl  JlRl  EH  Tlil  kl~l  EH  @mYm  [mrm  EH  tmMn  Onfn  EH  hn|n  ~nPo  EH  Robo  doro  EH  too  ApJp  EH  Lp]p  _pnp  EH  ppCq  EqVq  EH  Xqeq  gqrq  EH  tqBr  DrPr  EH  EH  EH  Rrdr  frvr  EH  xrLs  Ns`s  EH  bsrs  tsBt  EH  DtNt  PtXt  EH  Ztht  jtvt  EH  xtGu  IuVu  EH  Xueu  guru  EH  tuBv  DvPv  EH  Rv^v  `vjv  EH  lvvv  xv@w  EH  BwKw  MwTw  EH  Vwgw  iwxw  EH  zwJx  LxZx  EH  \xkx  mxzx  EH  |xEy  GyNy  EH  Py[y  ]yfy  EH  hysy  uy~y  EH  EH  EH  @zOz  Qz^z  EH  `zqz  szB{  EH  D{U{  W{f{  EH  h{s{  u{~{  EH  @|P|  R|`|  EH  b|q|  s|@}  EH  B}V}  X}j}  EH  l}}  A~R~  EH  T~]~  _~f~  EH  h~t~  v~@  EH  BS  Ud  EH  fr  t~  EH  @@K@  M@V@  EH  X@b@  d@l@  EH  n@w@  y@@A  EH  BAKA  MATA  EH  VAdA  fArA  EH  EH  EH  tAHB  JB\B  EH  ^BhB  jBrB  EH  tBBC  DCPC  EH  RC\C  ^CfC  EH  hCwC  yCFD  EH  HD`D  bDxD  EH  zDKE  ME\E  EH  ^EqE  sEDF  EH  FFWF  YFhF  EH  jFtF  vF~F  EH  @GGG  IGNG  EH  PG[G  ]GfG  EH  hGyG  {GJH  EH  LHXH  ZHdH  EH  fHH  AIXI  EH  ZIkI  mI|I  EH  ~IRJ  TJfJ  EH  EH  EH  hJwJ  yJFK  EH  HK[K  ]KnK  EH  pKCL  ELVL  EH  XLgL  iLvL  EH  xLLM  NM`M  EH  bMrM  tMBN  EH  DNYN  [NnN  EH  pNKO  MOfO  EH  hOxO  zOHP  EH  JPWP  YPdP  EH  fPxP  zPJQ  EH  LQ`Q  bQtQ  EH  vQER  GRTR  EH  VRaR  cRlR  EH  nRBS  DSVS  EH  XSiS  kSzS  EH  |SDT  FTLT  EH  EH  EH  NTZT  \TfT  EH  hTuT  wTBU  EH  DUMU  OUVU  EH  XUdU  fUpU  EH  rU{U  }UDV  EH  FVMV  OVTV  EH  VV`V  bVjV  EH  lVzV  |VHW  EH  JWVW  XWbW  EH  dWmW  oWvW  EH  xWGX  IXVX  EH  XXdX  fXpX  EH  rXAY  CYPY  EH  RYaY  cYpY  EH  rY@Z  BZNZ  EH  PZ[Z  ]ZfZ  EH  hZ~Z  @[T[  EH  EH  EH  V[_[  a[h[  EH  j[t[  v[~[  EH  @\Q\  S\b\  EH  d\m\  o\v\  EH  x\J]  L]\]  EH  ^]i]  k]t]  EH  v]F^  H^V^  EH  X^c^  e^n^  EH  p^z^  |^D_  EH  F_M_  O_T_  EH  V_b_  d_n_  EH  p_v_  x_|_  EH  ~_H`  J`R`  EH  T`b`  d`p`  EH  r`Ba  DaRa  EH  Taba  dapa  EH  ra{a  }aDb  EH  EH  EH  FbUb  Wbdb  EH  fbnb  pbvb  EH  xbEc  GcRc  EH  Tc`c  bclc  EH  ncuc  wc|c  EH  ~cEd  GdLd  EH  NdWd  Yd`d  EH  bdid  kdpd  EH  rd{d  }dDe  EH  FeSe  Ue`e  EH  beue  weHf  EH  JfTf  Vf^f  EH  `fnf  pf|f  EH  ~fJg  LgVg  EH  Xgag  cgjg  EH  lgsg  ugzg  EH  |gDh  FhLh  EH  EH  EH  Nh^h  `hnh  EH  ph@i  BiPi  EH  Riai  cipi  EH  rizi  |iBj  EH  DjPj  Rj\j  EH  ^jhj  jjrj  EH  tjj  AkJk  EH  LkUk  Wk^k  EH  `krk  tkDl  EH  FlZl  \lnl  EH  pl|l  ~lHm  EH  Jm\m  ^mnm  EH  pmDn  FnXn  EH  Znkn  mn|n  EH  ~nLo  NoZo  EH  \oro  toHp  EH  JpWp  Ypdp  EH  EH  EH  fpsp  up@q  EH  BqUq  Wqhq  EH  jq|q  ~qNr  EH  Pr[r  ]rfr  EH  hrqr  srzr  EH  |rIs  KsVs  EH  Xshs  jsxs  EH  zsCt  EtLt  EH  NtXt  Ztbt  EH  dtot  qtzt  EH  |tMu  Ou^u  EH  `ulu  nuxu  EH  zuHv  JvVv  EH  Xvbv  dvlv  EH  nv|v  ~vJw  EH  Lw\w  ^wlw  EH  nw|w  ~wJx  EH  EH  EH  Lx[x  ]xjx  EH  lxux  wx~x  EH  @yNy  Py\y  EH  ^yoy  qy@z  EH  BzNz  PzZz  EH  \zkz  mzzz  EH  |zI{  K{V{  EH  X{k{  m{~{  EH  @|H|  J|P|  EH  R|c|  e|t|  EH  v|A}  C}L}  EH  N}W}  Y}`}  EH  b}i}  k}p}  EH  r}|}  ~}F~  EH  H~[~  ]~n~  EH  p~~  AN  EH  P[  ]f  EH  EH  EH  hx  zH@  EH  J@S@  U@\@  EH  ^@y@  {@TA  EH  VAmA  oADB  EH  FBQB  SB\B  EH  ^BjB  lBvB  EH  xBJC  LC\C  EH  ^CqC  sCDD  EH  FDRD  TD^D  EH  `DrD  tDDE  EH  FEYE  [ElE  EH  nEwE  yE@F  EH  BFLF  NFVF  EH  XFfF  hFtF  EH  vF}F  FDG  EH  FGSG  UG`G  EH  bGmG  oGxG  EH  EH  EH  zGAH  CHHH  EH  JH]H  _HpH  EH  rH}H  HHI  EH  JIXI  ZIfI  EH  hIoI  qIvI  EH  xII  AJFJ  EH  HJQJ  SJZJ  EH  \JfJ  hJpJ  EH  rJ@K  BKNK  EH  PKdK  fKxK  EH  zKSL  ULlL  EH  nL@M  BMRM  EH  TM[M  ]MbM  EH  dMqM  sM~M  EH  @NON  QN^N  EH  `NnN  pN|N  EH  ~NHO  JORO  EH  EH  EH  TOdO  fOtO  EH  vONP  PPfP  EH  hPwP  yPFQ  EH  HQYQ  [QjQ  EH  lQyQ  {QFR  EH  HRQR  SRZR  EH  \RiR  kRvR  EH  xRFS  HSTS  EH  VSaS  cSlS  EH  nSyS  {SDT  EH  FTUT  WTdT  EH  fTxT  zTJU  EH  LU\U  ^UlU  EH  nUAV  CVTV  EH  VVgV  iVxV  EH  zVDW  FWNW  EH  PW\W  ^WhW  EH  EH  EH  jWrW  tWzW  EH  |WIX  KXVX  EH  XXaX  cXjX  EH  lXyX  {XFY  EH  HYZY  \YlY  EH  nYY  AZPZ  EH  RZ\Z  ^ZfZ  EH  hZzZ  |ZL[  EH  N[o[  q[P\  EH  R\l\  n\F]  EH  H][]  ]]n]  EH  p]F^  H^\^  EH  ^^t^  v^J_  EH  L___  a_r_  EH  t_E`  G`V`  EH  X`k`  m`~`  EH  @aLa  NaXa  EH  EH  EH  Zana  paBb  EH  DbQb  Sb^b  EH  `bqb  sbBc  EH  DcPc  Rc\c  EH  ^cnc  pc~c  EH  @dJd  LdTd  EH  Vd^d  `dfd  EH  hdsd  ud~d  EH  @eSe  Uefe  EH  heve  xeDf  EH  FfSf  Uf`f  EH  bfqf  sf@g  EH  BgSg  Ugdg  EH  fgrg  tg~g  EH  @hPh  Rh`h  EH  bhmh  ohxh  EH  zhBi  DiJi  EH  EH  EH  LiUi  Wi^i  EH  `igi  iini  EH  piBj  DjTj  EH  Vjej  gjtj  EH  vjDk  FkRk  EH  Tkhk  jk|k  EH  ~kYl  [ltl  EH  vlQm  Smlm  EH  nmEn  Gn\n  EH  ^nrn  tnFo  EH  HoWo  Yofo  EH  ho~o  @pTp  EH  Vpbp  dpnp  EH  ppyp  {pBq  EH  DqTq  Vqdq  EH  fqqq  sq|q  EH  ~qKr  MrXr  EH  EH  EH  Zrer  grpr  EH  rrCs  EsTs  EH  Vsds  fsrs  EH  tsDt  FtTt  EH  Vtit  kt|t  EH  ~tPu  Rubu  EH  duyu  {uNv  EH  Pv[v  ]vfv  EH  hvwv  yvFw  EH  HwVw  Xwdw  EH  fwww  ywHx  EH  JxSx  Ux\x  EH  ^xkx  mxxx  EH  zxOy  Qydy  EH  fyty  vyBz  EH  DzKz  MzRz  EH  Tzdz  fztz  EH  EH  EH  vzz  A{H{  EH  J{T{  V{^{  EH  `{j{  l{t{  EH  v{D|  F|R|  EH  T|d|  f|t|  EH  v|J}  L}^}  EH  `}h}  j}p}  EH  r}@~  B~N~  EH  P~[~  ]~f~  EH  h~s~  u~~~  EH  @T  Vh  EH  jw  yD@  EH  F@Z@  \@n@  EH  p@y@  {@BA  EH  DATA  VAdA  EH  fAzA  |ANB  EH  PBjB  lBDC  EH  EH  VCbC  qCzC  RDdD  AEXE  nE~E  QF^F  vFHG  TGZG  fGlG  {GDH  EH  EH  EHr   