package Ġorg . ot nip . mo y . core Ċ Ċ import Ġjava . util . jar . Manifest Ċ Ċ /** Ċ Ġ* ĠHel ps Ġaccess Ġbuild Ġinformation Ġrelevant Ġto Ġmo y . Ċ Ġ*/ Ċ object ĠBuild Info Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠKEY _ HASH Ġ= Ġ" mo y - hash " ĊĠĠĠ Ġprivate Ġval ĠKEY _ TIMESTAMP Ġ= Ġ" mo y - timestamp " ĊĊĠĠĠ Ġval Ġtimestamp : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġoutput Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBuild Info :: class . java . class Loader . getResource AsStream (" META - INF / MAN IFEST . MF "). use Ġ{ ĠinputStream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( inputStream Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= ĠManifest ( inputStream ). main Attributes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( KEY _ TIMESTAMP Ġin Ġattributes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Ġ= Ġattributes . getValue ( KEY _ TIMESTAMP ). to Long OrNull () Ġ?: Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġoutput ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġval Ġhash : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġoutput Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBuild Info :: class . java . class Loader . getResource AsStream (" META - INF / MAN IFEST . MF "). use Ġ{ ĠinputStream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( inputStream Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= ĠManifest ( inputStream ). main Attributes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( KEY _ HASH Ġin Ġattributes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Ġ= Ġattributes . getValue ( KEY _ HASH ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġoutput ĊĠĠĠĠĠĠĠ Ġ} Ċ }