package Ġcom . sk yy o . template . utils Ċ Ċ import Ġandroidx . compose . ui . text . Annotated String Ċ import Ġandroidx . compose . ui . text . input . Offset Mapping Ċ import Ġandroidx . compose . ui . text . input . Trans formed Text Ċ Ċ fun Ġpassword Filter ( text : ĠAnnot ated String ): ĠTrans formed Text Ġ{ ĊĠĠĠ Ġreturn ĠTrans formed Text ( ĊĠĠĠĠĠĠĠ ĠAnnot ated String ("* ". repeat ( text . text . length )), ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ Offset Mapping . Identity ] Ġis Ġa Ġpredefined Ġ[ Offset Mapping ] Ġthat Ġcan Ġbe Ġused Ġfor Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġtransformation Ġthat Ġdoes Ġnot Ġchange Ġthe Ġcharacter Ġcount . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ Offset Mapping . Identity ] Ġis Ġa Ġpredefined Ġ[ Offset Mapping ] Ġthat Ġcan Ġbe Ġused Ġfor Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġtransformation Ġthat Ġdoes Ġnot Ġchange Ġthe Ġcharacter Ġcount . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠOffset Mapping . Identity ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun Ġcredit Card Filter ( text : ĠAnnot ated String ): ĠTrans formed Text Ġ{ ĊĊĠĠĠ Ġ// ĠMaking ĠXXX X - XXXX - XXXX - XXXX Ġstring . ĊĠĠĠ Ġval Ġtrimmed Ġ= Ġif Ġ( text . text . length Ġ>= Ġ 1 6 ) Ġtext . text . substring ( 0 .. 1 5 ) Ġelse Ġtext . text ĊĠĠĠ Ġvar Ġout Ġ= Ġ"" ĊĠĠĠ Ġfor Ġ( i Ġin Ġtrimmed . indices ) Ġ{ ĊĠĠĠĠĠĠĠ Ġout Ġ+= Ġtrimmed [ i ] ĊĠĠĠĠĠĠĠ Ġif Ġ( i Ġ% Ġ 4 Ġ== Ġ 3 Ġ&& Ġi Ġ!= Ġ 1 5 ) Ġout Ġ+= Ġ"-" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġoffset Ġtranslator Ġshould Ġignore Ġthe Ġhy phen Ġcharacters , Ġso Ġconversion Ġfrom ĊĠĠĠĠ Ġ* Ġ Ġoriginal Ġoffset Ġto Ġtransformed Ġtext Ġworks Ġlike ĊĠĠĠĠ Ġ* Ġ Ġ- ĠThe Ġ 4 th Ġchar Ġof Ġthe Ġoriginal Ġtext Ġis Ġ 5 th Ġchar Ġin Ġthe Ġtransformed Ġtext . ĊĠĠĠĠ Ġ* Ġ Ġ- ĠThe Ġ 1 3 th Ġchar Ġof Ġthe Ġoriginal Ġtext Ġis Ġ 1 5 th Ġchar Ġin Ġthe Ġtransformed Ġtext . ĊĠĠĠĠ Ġ* Ġ ĠSimilar ly , Ġthe Ġreverse Ġconversion Ġworks Ġlike ĊĠĠĠĠ Ġ* Ġ Ġ- ĠThe Ġ 5 th Ġchar Ġof Ġthe Ġtransformed Ġtext Ġis Ġ 4 th Ġchar Ġin Ġthe Ġoriginal Ġtext . ĊĠĠĠĠ Ġ* Ġ Ġ- ĠThe Ġ 1 2 th Ġchar Ġof Ġthe Ġtransformed Ġtext Ġis Ġ 1 0 th Ġchar Ġin Ġthe Ġoriginal Ġtext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcredit Card Offset Translator Ġ= Ġobject Ġ: ĠOffset Mapping Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġoriginal To Trans formed ( offset : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ<= Ġ 3 Ġ-> Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ<= Ġ 7 Ġ-> Ġoffset Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ<= Ġ 1 1 Ġ-> Ġoffset Ġ+ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ<= Ġ 1 6 Ġ-> Ġoffset Ġ+ Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 1 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtransformed To Original ( offset : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ<= Ġ 4 Ġ-> Ġoffset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ<= Ġ 9 Ġ-> Ġoffset Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ<= Ġ 1 4 Ġ-> Ġoffset Ġ- Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ<= Ġ 1 9 Ġ-> Ġoffset Ġ- Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 1 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn ĠTrans formed Text ( Annotated String ( out ), Ġcredit Card Offset Translator ) Ċ } Ċ