package Ġcom . bt spl us plus . f ow allet Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġbit shares .* Ċ import Ġcom . f ow allet . wallet core . b ts . Chain Object Manager Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ Ċ class ĠView Proposal Account Update Permission Owner Ġ: ĠLinearLayout Ġ{ ĊĊĠĠĠ Ġvar Ġ_ ctx : ĠContext ĊĠĠĠ Ġval Ġcontent _ fontsize Ġ= Ġ 1 1 . 0 f ĊĊĠĠĠ Ġconstructor ( ctx : ĠContext ) Ġ: Ġsuper ( ctx ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ ctx Ġ= Ġctx ĊĠĠĠĠĠĠĠ Ġval Ġlayout _ params Ġ= ĠLinearLayout . LayoutParams ( LinearLayout . LayoutParams . MATCH _ PARENT , ĠLinearLayout . LayoutParams . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠ Ġlayout _ params . top Margin Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġthis . layout Params Ġ= Ġlayout _ params ĊĠĠĠĠĠĠĠ Ġthis . orientation Ġ= ĠLinearLayout . VERTICAL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgen Line L ables ( name : ĠString , Ġold _ value : ĠInt , Ġnew _ value : ĠInt ): ĠLinearLayout Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Ġ= ĠLinearLayout (_ ctx ) ĊĠĠĠĠĠĠĠ Ġlayout . layout Params Ġ= ĠLinearLayout . LayoutParams ( LL AY OUT _ MATCH , ĠL LAYOUT _ WAR P ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Margins ( 0 , Ġ 2 . dp , Ġ 0 , Ġ 2 . dp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlayout . orientation Ġ= ĠLinearLayout . HORIZONTAL ĊĠĠĠĠĠĠĠ Ġlayout . gravity Ġ= ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠ Ġlayout . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv _ name Ġ= ĠTextView (_ ctx ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠLinearLayout . LayoutParams ( 0 , ĠL LAYOUT _ WAR P , Ġ 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . LEFT Ġor ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( resources . getColor ( R . color . theme 0 1 _ textColor Normal )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Text Size ( Typed Value . COMPLEX _ UNIT _ DIP , Ġcontent _ fontsize ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Single Line ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġel lip size Ġ= ĠText Utils . Truncate At . valueOf (" END ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . is Fake Bold Text Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv _ change Ġ= ĠTextView (_ ctx ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠLinearLayout . LayoutParams ( 0 , ĠL LAYOUT _ WAR P , Ġ 2 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . RIGHT Ġor ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . RIGHT Ġor ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( resources . getColor ( R . color . theme 0 1 _ textColor Normal )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Text Size ( Typed Value . COMPLEX _ UNIT _ DIP , Ġcontent _ fontsize ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . is Fake Bold Text Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġnew _ value . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv _ result Ġ= ĠTextView (_ ctx ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠLinearLayout . LayoutParams ( 0 , ĠL LAYOUT _ WAR P , Ġ 1 . 5 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . RIGHT Ġor ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . RIGHT Ġor ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( resources . getColor ( R . color . theme 0 1 _ textColor Normal )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Text Size ( Typed Value . COMPLEX _ UNIT _ DIP , Ġcontent _ fontsize ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . is Fake Bold Text Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old _ value Ġ== Ġnew _ value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ result . text Ġ= Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( new _ value Ġ> Ġold _ value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ åıĺåĮĸ Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ result . text Ġ= Ġ"+ ${ new _ value Ġ- Ġold _ value }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ change . setTextColor ( resources . getColor ( R . color . theme 0 1 _ buy Color )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ åıĺåĮĸ Ġ- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ result . text Ġ= Ġ( new _ value Ġ- Ġold _ value ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ change . setTextColor ( resources . getColor ( R . color . theme 0 1 _ sell Color )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( tv _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( tv _ change ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( tv _ result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlayout ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit With Permission ( old _ permission _ json : ĠJSONObject , Ġnew _ permission _ json : ĠJSONObject , Ġtitle : ĠString ): ĠLinearLayout Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġ ç¬¬ä¸Ģ è¡Į æłĩé¢ĺ è¡Į : Ġ æĿĥéĻĲ Ġ æĸ° éĺ Ī åĢ¼ / æĸ° æĿĥ éĩį Ġ åıĺåĮĸ éĩı ĊĠĠĠĠĠĠĠ Ġval Ġlayout _ permission _ title Ġ= ĠLinearLayout (_ ctx ) ĊĠĠĠĠĠĠĠ Ġlayout _ permission _ title . layout Params Ġ= ĠLinearLayout . LayoutParams ( LL AY OUT _ MATCH , ĠL LAYOUT _ WAR P ) ĊĠĠĠĠĠĠĠ Ġlayout _ permission _ title . orientation Ġ= ĠLinearLayout . HORIZONTAL ĊĠĠĠĠĠĠĠ Ġlayout _ permission _ title . gravity Ġ= ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠ Ġlayout _ permission _ title . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv _ name Ġ= ĠTextView (_ ctx ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠLinearLayout . LayoutParams ( 0 , ĠL LAYOUT _ WAR P , Ġ 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . LEFT Ġor ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( resources . getColor ( R . color . theme 0 1 _ textColor Gray )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Text Size ( Typed Value . COMPLEX _ UNIT _ DIP , Ġcontent _ fontsize ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . is Fake Bold Text Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv _ change Ġ= ĠTextView (_ ctx ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠLinearLayout . LayoutParams ( 0 , ĠL LAYOUT _ WAR P , Ġ 2 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . RIGHT Ġor ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . RIGHT Ġor ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( resources . getColor ( R . color . theme 0 1 _ textColor Gray )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Text Size ( Typed Value . COMPLEX _ UNIT _ DIP , Ġcontent _ fontsize ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . is Fake Bold Text Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠR . string . k Op Detail Sub Title New Weight Or Threshold . xml string (_ ctx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv _ result Ġ= ĠTextView (_ ctx ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠLinearLayout . LayoutParams ( 0 , ĠL LAYOUT _ WAR P , Ġ 1 . 5 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . RIGHT Ġor ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . RIGHT Ġor ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( resources . getColor ( R . color . theme 0 1 _ textColor Gray )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Text Size ( Typed Value . COMPLEX _ UNIT _ DIP , Ġcontent _ fontsize ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . is Fake Bold Text Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠR . string . k Op Detail Sub Title Change Value . xml string (_ ctx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( tv _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( tv _ change ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( tv _ result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd View ( layout _ permission _ title ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ ç¬¬äºĮ è¡Į Ġ éĺ Ī åĢ¼ Ġ æĿĥ éĩį ( åĢ¼ ) Ġ åıĺåĮĸ éĩı ( åĢ¼ ) ĊĠĠĠĠĠĠĠ Ġadd View ( gen Line L ables ( R . string . k Op Detail Sub Prefix Threshold . xml string (_ ctx ), Ġold _ permission _ json . getInt (" weight _ threshold "), Ġnew _ permission _ json . getInt (" weight _ threshold "))) ĊĊĠĠĠĠĠĠĠ Ġval Ġchain Mgr Ġ= ĠChain Object Manager . shared Chain Object Manager () ĊĊĠĠĠĠĠĠĠ Ġval Ġold _ weights _ hash Ġ= ĠJSONObject () ĊĠĠĠĠĠĠĠ Ġval Ġnew _ weights _ hash Ġ= ĠJSONObject () ĊĠĠĠĠĠĠĠ Ġval Ġtotal _ keys Ġ= ĠJSONObject () ĊĊĠĠĠĠĠĠĠ Ġold _ permission _ json . get JSONArray (" account _ auth s "). forEach < JSONArray > Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġit !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( item . length () Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount _ id Ġ= Ġitem . getString ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold _ weights _ hash . put ( account _ id , Ġitem . getInt ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal _ keys . put ( account _ id , ĠJSONObject (). apply Ġ{ Ġput (" is account ", Ġtrue ) Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġold _ permission _ json . get JSONArray (" key _ auth s "). forEach < JSONArray > Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġit !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( item . length () Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġitem . getString ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold _ weights _ hash . put ( key , Ġitem . getInt ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal _ keys . put ( key , ĠJSONObject (). apply Ġ{ Ġput (" is key ", Ġtrue ) Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnew _ permission _ json . get JSONArray (" account _ auth s "). forEach < JSONArray > Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġit !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( item . length () Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount _ id Ġ= Ġitem . getString ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew _ weights _ hash . put ( account _ id , Ġitem . getInt ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal _ keys . put ( account _ id , ĠJSONObject (). apply Ġ{ Ġput (" is account ", Ġtrue ) Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnew _ permission _ json . get JSONArray (" key _ auth s "). forEach < JSONArray > Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġit !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( item . length () Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġitem . getString ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew _ weights _ hash . put ( key , Ġitem . getInt ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal _ keys . put ( key , ĠJSONObject (). apply Ġ{ Ġput (" is key ", Ġtrue ) Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtotal _ keys . keys (). toJSON Array (). forEach < String > Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġit !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġtotal _ keys . getJSONObject ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( info . opt Boolean (" is account ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠString . format ("* Ġ% s ", Ġchain Mgr . get Chain Object ByID ( key ). getString (" name ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠString . format ("* Ġ% s ", Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Old Weight Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi New Weight Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold _ weight Ġ= Ġold _ weights _ hash . opt Int ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old _ weight Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Old Weight Ġ= Ġold _ weight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew _ weight Ġ= Ġnew _ weights _ hash . opt Int ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new _ weight Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi New Weight Ġ= Ġnew _ weight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( gen Line L ables ( name , Ġi Old Weight , Ġi New Weight )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ Ġ çº¿ ĊĠĠĠĠĠĠĠ Ġval Ġlv _ line Ġ= ĠView (_ ctx ) ĊĠĠĠĠĠĠĠ Ġlv _ line . set BackgroundColor ( resources . getColor ( R . color . theme 0 1 _ bottom Line Color )) ĊĠĠĠĠĠĠĠ Ġlv _ line . layout Params Ġ= ĠLinearLayout . LayoutParams ( LinearLayout . LayoutParams . MATCH _ PARENT , Ġ 1 . dp ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Margin Ġ= Ġ 6 . dp ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd View ( lv _ line ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} Ċ }