package Ġcom . rar ible . protocol . order . listener . service . order Ċ Ċ import Ġcom . rar ible . ethereum . domain . Eth UInt 2 5 6 Ċ import Ġcom . rar ible . protocol . contracts . Tuples Ċ import Ġcom . rar ible . protocol . contracts . exchange . v 2 . Exchange V 2 Ċ import Ġcom . rar ible . protocol . order . core . model .* Ċ import Ġcom . rar ible . protocol . order . core . model . R ar ible Matched Orders . Simple Order Ċ import Ġio . da onom ic . rpc . domain . Binary Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ @ Component Ċ class ĠR ar ible Exchange V 2 Order Parser Ġ{ ĊĠĠĠ Ġfun Ġparse Matched Orders ( input : ĠString ): ĠR ar ible Matched Orders Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdecoded Ġ= ĠExchange V 2 . match Orders Signature (). ` in ` (). decode ( Binary . apply ( input ), Ġ 4 ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠR ar ible Matched Orders ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= ĠSimple Order ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġconvert Order Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= ĠBinary . apply ( decoded . value (). _ 1 (). _ 8 ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠBinary . apply ( decoded . value (). _ 1 (). _ 9 ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsalt Ġ= ĠE th UInt 2 5 6 . of ( decoded . value (). _ 1 (). _ 5 ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= ĠSimple Order ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġconvert Order Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= ĠBinary . apply ( decoded . value (). _ 3 (). _ 8 ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠBinary . apply ( decoded . value (). _ 3 (). _ 9 ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsalt Ġ= ĠE th UInt 2 5 6 . of ( decoded . value (). _ 3 (). _ 5 ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconvert Order Data ( version : ĠBinary , Ġdata : ĠBinary ): ĠOrder Data Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( version ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOrder Data Version . R AR IBLE _ V 2 _ DATA _ V 1 . eth DataType Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( pay outs , Ġorigin Fees ) Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . slice ( 0 , Ġ 3 2 ) Ġ== Ġ ĠEN CODE D _ ORDER _ R AR IBLE _ V 2 _ DATA _ V 1 _ PREFIX Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecoded Ġ= ĠT uples . order Data V 1 Type (). decode ( data , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecoded . value (). _ 1 (). map Ġ{ Ġit . to Part () Ġ} Ġto Ġdecoded . value (). _ 2 (). map Ġ{ Ġit . to Part () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . slice ( 0 , Ġ 3 2 ) Ġ== Ġ ĠWR ONG _ ENCODE D _ ORDER _ R AR IBLE _ V 2 _ DATA _ V 1 _ PREFIX Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecoded Wrong Ġ= ĠT uples . wrong Order Data V 1 Type (). decode ( data , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecoded Wrong . value (). _ 1 (). map Ġ{ Ġit . to Part () Ġ} Ġto Ġdecoded Wrong . value (). _ 2 (). map Ġ{ Ġit . to Part () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unsupported Ġdata Ġencode Ġ( data =$ data )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrder R ar ible V 2 Data V 1 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpay outs Ġ= Ġpay outs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorigin Fees Ġ= Ġorigin Fees ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unsupported Ġorder Ġdata Ġversion Ġ$ version ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠWR ONG _ ENCODE D _ ORDER _ R AR IBLE _ V 2 _ DATA _ V 1 _ PREFIX : ĠBinary Ġ= ĠBinary . apply (" 0 x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 ") ĊĠĠĠĠĠĠĠ Ġval ĠEN CODE D _ ORDER _ R AR IBLE _ V 2 _ DATA _ V 1 _ PREFIX : ĠBinary Ġ= ĠBinary . apply (" 0 x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 ") ĊĠĠĠ Ġ} Ċ } Ċ