package Ġorg . ke thereum . extensions Ċ Ċ import Ġorg . w alle th . k hex . clean 0 x Prefix Ċ import Ġjava . math . BigInteger Ċ import Ġjava . util .* Ċ Ċ fun ĠBigInteger . to Bytes P added ( length : ĠInt ): ĠByteArray Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= ĠByteArray ( length ) ĊĠĠĠ Ġval Ġbytes Ġ= Ġto ByteArray () ĊĊĠĠĠ Ġval Ġbytes Length : ĠInt ĊĠĠĠ Ġval Ġsrc Offset : ĠInt ĊĠĠĠ Ġif Ġ( bytes [ 0 ]. toInt () Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbytes Length Ġ= Ġbytes . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġsrc Offset Ġ= Ġ 1 ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġbytes Length Ġ= Ġbytes . size ĊĠĠĠĠĠĠĠ Ġsrc Offset Ġ= Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( bytes Length Ġ> Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Input Ġis Ġtoo Ġlarge Ġto Ġput Ġin Ġbyte Ġarray Ġof Ġsize Ġ$ length ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdest Offset Ġ= Ġlength Ġ- Ġbytes Length ĊĠĠĠ ĠSystem . arraycopy ( bytes , Ġsrc Offset , Ġresult , Ġdest Offset , Ġbytes Length ) ĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ fun ĠBigInteger . to HexString No Prefix (): ĠString Ġ= ĠtoString ( 1 6 ) Ċ Ċ fun ĠBigInteger . to HexString Zero P added ( size : ĠInt , Ġwith Prefix : ĠBoolean Ġ= Ġtrue ): ĠString Ġ{ ĊĠĠĠ Ġvar Ġresult Ġ= Ġto HexString No Prefix () ĊĊĠĠĠ Ġval Ġlength Ġ= Ġresult . length ĊĠĠĠ Ġif Ġ( length Ġ> Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" Value Ġ$ result Ġis Ġlarger Ġthen Ġlength Ġ$ size ") ĊĠĠĠ Ġ} Ġelse Ġif Ġ( sign um () Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" Value Ġcannot Ġbe Ġnegative ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( length Ġ< Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ" 0 ". repeat ( size Ġ- Ġlength ) Ġ+ Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġif Ġ( with Prefix ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" 0 x $ result " ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġresult ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠString . hex To BigInteger () Ġ= ĠBigInteger ( clean 0 x Prefix (), Ġ 1 6 ) Ċ Ċ fun ĠByteArray . to BigInteger ( offset : ĠInt , Ġlength : ĠInt ) Ġ= ĠBigInteger ( 1 , ĠArrays . copyOf Range ( this , Ġoffset , Ġoffset Ġ+ Ġlength )) Ċ fun ĠByteArray . to BigInteger () Ġ= ĠBigInteger ( 1 , Ġthis ) ĊĊ