package Ġm ary k . lib . bytes Ċ Ċ import Ġkotlinx . c interop . CP o inter Ċ import Ġkotlinx . c interop . get Ċ import Ġkotlinx . c interop . interpret CP o inter Ċ import Ġkotlinx . c interop . native Heap Ċ import Ġkotlinx . c interop . to C Values Ċ import Ġm ary k . lib . exceptions . ParseException Ċ import Ġplatform . Foundation . NS Data Ċ import Ġplatform . Foundation . base 6 4 Encoded String WithOptions Ċ import Ġplatform . Foundation . create Ċ import Ġplatform . posix . uint 8 _ t Var Ċ Ċ /** ĠObject Ġto Ġconvert Ġbase Ġ 6 4 Ġ*/ Ċ actual Ġobject ĠBase 6 4 Ġ{ ĊĠĠĠ Ġ/** ĠDecode Ġ[ base 6 4 ] Ġstring Ġinto Ġbytes Ġarray Ġ*/ ĊĠĠĠ Ġactual Ġfun Ġdecode ( base 6 4 : ĠString ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġthis Ġlibrary Ġend Ġpadding Ġis Ġmandatory Ġso Ġadd Ġpossible Ġmissing Ġpadding ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġbase 6 4 . pad End ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlength Ġ= Ġ(( base 6 4 . length Ġ+ Ġ 3 ) Ġ/ Ġ 4 ) Ġ* Ġ 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpad Char Ġ= Ġ'=' ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠNS Data . create ( value , Ġ 0 ) Ġ?: Ġthrow ĠParseException (" Invalid ĠBase 6 4 Ġvalue Ġ$ base 6 4 ") ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġval Ġbyte Ptr Ġ= Ġ( data . bytes Ġas ĠC Pointer < uint 8 _ t Var >) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠByteArray ( data . length . toInt ()) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbyte Ptr [ index ]. to Byte () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠEncode Ġ[ bytes ] Ġarray Ġinto Ġa Ġbase 6 4 ĠString Ġ*/ ĊĠĠĠ Ġactual Ġfun Ġencode ( bytes : ĠByteArray ) Ġ= ĠNS Data . create ( ĊĠĠĠĠĠĠĠ Ġbytes No Copy Ġ= Ġbytes . to C Values (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . place ( interpret CP o inter ( native Heap . alloc ( it . size , Ġit . align ). raw Ptr ) !! ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġlength Ġ= Ġbytes . size . to UL ong () ĊĠĠĠ Ġ). base 6 4 Encoded String WithOptions ( 0 ). drop Last While Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠRemove Ġany ĠBase 6 4 Ġpadding ĊĠĠĠĠĠĠĠ Ġit Ġ== Ġ'=' ĊĠĠĠ Ġ} Ċ } Ċ