/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠX PATH - QS Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġorg . xpath qs . core . util Ċ Ċ import Ġorg . xpath qs . core . constants . Global Ċ import Ġorg . xpath qs . core . selector . args . KV Selector Arg Ċ import Ġorg . xpath qs . core . selector . args . Selector Args Ċ import Ġorg . xpath qs . core . selector . args . Value Arg Ċ import Ġorg . xpath qs . core . selector . args . decorators . Comma Decorator Ċ import Ġorg . xpath qs . core . selector . args . decorators . Contains Decorator Ċ import Ġorg . xpath qs . core . selector . args . decorators . KV Normalize Space Decorator Ċ import Ġorg . xpath qs . core . selector . base . I Selector Ċ import Ġorg . xpath qs . core . selector . compose . Compose Selector Ċ import Ġorg . xpath qs . core . selector . compose . Compose Selector Props Ċ import Ġorg . xpath qs . core . selector . extensions . add Arg Ċ import Ġorg . xpath qs . core . selector . extensions . add StringTo Args Ċ import Ġorg . xpath qs . core . selector . selector . Selector Ċ import Ġorg . xpath qs . core . selector . selector . Selector Props Ċ import Ġorg . xpath qs . core . selector . xpath . Xpath Selector Ċ Ċ /** Ċ Ġ* ĠBuilder Ġfactory Ġmethods Ċ Ġ*/ Ċ object ĠSelector Factory Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġnew Ġ[ Selector ] Ġwith Ġspecified Ġ` tag ` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtag Selector ( tag : ĠString Ġ= Ġ"* ") Ġ= ĠSelector ( props Ġ= ĠSelector Props ( tag Ġ= Ġtag )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġnew Ġ[ Xpath Selector ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġxpath Selector ( xpath : ĠString ) Ġ= ĠX path Selector ( xpath ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġnew Ġ[ Selector ] Ġwith Ġspecified Ġ` text ` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtext Selector ( text : ĠString , Ġnormalize : ĠBoolean Ġ= ĠGlobal . NORMAL IZE _ TEXT _ VALUE ) Ġ= ĠSelector ( ĊĠĠĠĠĠĠĠ Ġprops Ġ= ĠSelector Props ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs Ġ= ĠSelector Args ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK V Normalize Space Decorator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCom ma Decorator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK V Selector Arg ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk Ġ= ĠGlobal . TEXT _ ARG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv Ġ= Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormalize K Ġ= Ġnormalize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormalize V Ġ= ĠGlobal . NORMAL IZE _ TEXT _ ARG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġnew Ġ[ Selector ] Ġwith Ġcontaining Ġspecified Ġ` text ` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtext Contains Selector ( text : ĠString , Ġnormalize : ĠBoolean Ġ= ĠGlobal . NORMAL IZE _ TEXT _ VALUE ) Ġ= ĠSelector ( ĊĠĠĠĠĠĠĠ Ġprops Ġ= ĠSelector Props ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs Ġ= ĠSelector Args ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContains Decorator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK V Normalize Space Decorator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCom ma Decorator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK V Selector Arg ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk Ġ= ĠGlobal . TEXT _ ARG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv Ġ= Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormalize K Ġ= Ġnormalize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormalize V Ġ= ĠGlobal . NORMAL IZE _ TEXT _ ARG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġ[ Selector ] Ġwith Ġspecified Ġ` id ` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġid Selector ( id : ĠString ) Ġ= ĠSelector ( ĊĠĠĠĠĠĠĠ Ġprops Ġ= ĠSelector Props ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs Ġ= ĠSelector Args ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCom ma Decorator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK V Selector Arg ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk Ġ= ĠGlobal . ID _ ARG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv Ġ= Ġid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġ[ Selector ] Ġwith Ġcontains Ġof Ġspecified Ġ` id ` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġid Contains Selector ( id : ĠString ) Ġ= ĠSelector ( ĊĠĠĠĠĠĠĠ Ġprops Ġ= ĠSelector Props ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs Ġ= ĠSelector Args ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContains Decorator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCom ma Decorator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK V Selector Arg ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk Ġ= ĠGlobal . ID _ ARG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv Ġ= Ġid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġ[ Selector ] Ġbased Ġon Ġattribute Ġname Ġand Ġvalue ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠRequire Ġ# 1 Ġ- Ġdefault Ġvalues Ġshould Ġreturn Ġ[ Selector ] Ġwithout Ġlimitation ĊĠĠĠĠ Ġ* Ġ@ sample Ġ[ org . xpath qs . core . util . Selector Factory Attr Selector Test . without Args ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠRequire Ġ# 2 Ġ- Ġ[ name ] Ġargument Ġshould Ġreturn Ġ[ Selector ] Ġwith Ġattribute Ġname ĊĠĠĠĠ Ġ* Ġ@ sample Ġ[ org . xpath qs . core . util . Selector Factory Attr Selector Test . with Name ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠRequire Ġ# 3 Ġ- Ġ[ value ] Ġargument Ġshould Ġreturn Ġ[ Selector ] Ġwith Ġattribute Ġvalue ĊĠĠĠĠ Ġ* Ġ@ sample Ġ[ org . xpath qs . core . util . Selector Factory Attr Selector Test . with Value ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠRequire Ġ# 4 Ġ- Ġ[ name ] Ġand Ġ[ value ] Ġargument Ġshould Ġreturn Ġ[ Selector ] Ġwith Ġattributes Ġname Ġand Ġvalue ĊĠĠĠĠ Ġ* Ġ@ sample Ġ[ org . xpath qs . core . util . Selector Factory Attr Selector Test . with Name And Value ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠRequire Ġ# 5 Ġ- Ġ[ name ] Ġand Ġ[ value Contains ] Ġargument Ġshould Ġreturn Ġ[ Selector ] Ġwith Ġattributes Ġname ĊĠĠĠĠ Ġ* ĠĠĠĠĠ Ġand Ġvalue Ġwrapped Ġinto Ġcontains Ġfunction ĊĠĠĠĠ Ġ* Ġ@ sample Ġ[ org . xpath qs . core . util . Selector Factory Attr Selector Test . with Name And Value Contains ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠRequire Ġ# 6 Ġ- Ġ[ value Contains ] Ġargument Ġshould Ġreturn Ġ[ Selector ] Ġwith Ġattribute Ġvalue ĊĠĠĠĠ Ġ* ĠĠĠ Ġwrapped Ġinto Ġcontains Ġfunction ĊĠĠĠĠ Ġ* Ġ@ sample Ġ[ org . xpath qs . core . util . Selector Factory Attr Selector Test . with Value Contains ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġattr Selector ( ĊĠĠĠĠĠĠĠ Ġname : ĠString Ġ= Ġ"*", ĊĠĠĠĠĠĠĠ Ġvalue : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġvalue Contains : ĠString Ġ= Ġ"" ĊĠĠĠ Ġ): ĠSelector Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchecked Name Ġ= Ġif ( name . first () Ġ!= Ġ'@ ') Ġ"@ $ name " Ġelse Ġname ĊĠĠĠĠĠĠĠ Ġval Ġarg Ġ= Ġif ( value . isEmpty () Ġ&& Ġvalue Contains . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK V Selector Arg ( k Ġ= Ġchecked Name ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( value . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCom ma Decorator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK V Selector Arg ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk Ġ= Ġchecked Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( value Contains . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContains Decorator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCom ma Decorator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK V Selector Arg ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk Ġ= Ġchecked Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv Ġ= Ġvalue Contains ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValue Arg () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠSelector ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprops Ġ= ĠSelector Props ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs Ġ= ĠSelector Args ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġ[ Compose Selector ] Ġbased Ġon Ġprovided Ġ[ selectors ] ĊĠĠĠĠ Ġ* Ġ@ sample Ġ Ġorg . xpath qs . core . util . Property Facade Test ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcompose ( var arg Ġselectors : ĠI Selector ) Ġ= ĊĠĠĠĠĠĠĠ ĠCompose Selector ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprops Ġ= ĠCompose Selector Props ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselectors Ġ= ĠArrayList < I Selector >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( selectors ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġtext Ġselector Ġwere Ġall Ġ[ text ] Ġelements Ġwrapped Ġas Ġa Ġcontains Ġarg ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠRequire Ġ# 1 ĊĠĠĠĠ Ġ* Ġwhen Ġ[ text ] Ġhas Ġmore Ġthan Ġone Ġarguments Ġthey Ġall Ġshould Ġbe Ġwrapped Ġinto Ġcontains Ġfunction ĊĠĠĠĠ Ġ* Ġ@ sample Ġorg . xpath qs . core . util . Selector Factory Attr Selector Test . r 1 _ text With Inner Tags Selector ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠRequire Ġ# 2 ĊĠĠĠĠ Ġ* Ġwhen Ġ[ text ] Ġcontains Ġonly Ġone Ġarg Ġ- Ġresult Ġshould Ġsame Ġas Ġa Ġnormal Ġ[ text Contains Selector ] Ġcall ĊĠĠĠĠ Ġ* Ġ@ sample Ġorg . xpath qs . core . util . Selector Factory Attr Selector Test . r 2 _ text With Inner Tags Selector ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtext With Inner Tags Selector ( var arg Ġtext : ĠString ): ĠSelector Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( text . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠSelector Args ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContains Decorator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK V Normalize Space Decorator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCom ma Decorator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK V Selector Arg ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk Ġ= ĠGlobal . TEXT _ ARG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv Ġ= Ġtext . first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormalize K Ġ= ĠGlobal . NORMAL IZE _ TEXT _ VALUE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormalize V Ġ= ĠGlobal . NORMAL IZE _ TEXT _ ARG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext . drop ( 1 ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContains Decorator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCom ma Decorator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK V Selector Arg ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk Ġ= Ġ".", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSelector ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprops Ġ= ĠSelector Props ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Contains Selector ( text . first ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }