package Ġbr . u fs . k rypt ok arte ira . backend Ċ Ċ import Ġjava . util .* Ċ Ċ object ĠConfig s Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġall Ġby Ġlazy Ġ{ ĠreadFile () Ġ} ĊĊĠĠĠ Ġfun Ġfrom File Or Env ( key : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġassigned Or Not Ġ= ĠProcess Builder (). environment ()[ key ] ĊĠĠĠĠĠĠĠ Ġreturn Ġassigned Or Not ?. let Ġ{ Ġit Ġ} Ġ?: ĠConfig s . all . getProperty ( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠreadFile (): ĠProperties Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġfile Ġdoes Ġnot Ġbelow Ġto ĠV CS ĊĠĠĠĠĠĠĠ Ġval Ġclass Loader Ġ= ĠConfig s :: class . java . class Loader ĊĠĠĠĠĠĠĠ Ġval Ġprop FileName Ġ= Ġ" private / config . properties " ĊĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= Ġclass Loader . getResource AsStream ( prop FileName ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= ĠProperties () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties . load ( inputStream ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġproperties ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Cannot Ġread Ġfile Ġconfig . properties ") ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠinputStream . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }