package Ġio . github . z sq w 1 2 3 Ċ Ċ import Ġjava . util .* Ċ Ċ class ĠNormal K son Ġ{ ĊĠĠĠ Ġprivate Ġval Ġsb Ġby Ġlazy Ġ{ ĠStringBuilder () Ġ} ĊĠĠĠ Ġprivate Ġfun Ġwrap Append ( string : ĠString ): ĠStringBuilder Ġ= Ġsb . append (' \" '). append ( string ). append (' \" ') ĊĠĠĠ Ġprivate Ġfun ĠString . normal Append ( v : ĠAny ): ĠStringBuilder Ġ= Ġwrap Append ( this ). append (': '). append ( v ). append (',') ĊĠĠĠ Ġoperator Ġfun ĠString . minus ( value : ĠNormal K son ) Ġ= Ġnormal Append ( value ) ĊĠĠĠ Ġoperator Ġfun ĠString . minus ( value : ĠNormal K son Arr ) Ġ= Ġnormal Append ( value ) ĊĠĠĠ Ġoperator Ġfun ĠString . minus ( value : ĠNumber ) Ġ= Ġnormal Append ( value ) ĊĠĠĠ Ġoperator Ġfun ĠString . minus ( value : ĠBoolean ) Ġ= Ġnormal Append ( value ) ĊĠĠĠ Ġfun ĠAny . raw (): ĠStringBuilder Ġ= Ġsb . append ( this ). append (',') ĊĊĠĠĠ Ġoperator Ġfun ĠString . minus ( value : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġwrap Append ( this ). append (": null ") ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrap Append ( this ). append (': ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrap Append ( value . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsb . append (',') ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( sb . isEmpty ()) Ġreturn Ġ"{} " ĊĠĠĠĠĠĠĠ Ġreturn Ġsb . insert ( 0 , Ġ'{ '). delete Char At ( sb . last Index ). append (' } '). toString () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠNormal K son Arr Ġ{ ĊĠĠĠ Ġprivate Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠ Ġprivate Ġfun Ġwrap Append ( string : ĠString ): ĠStringBuilder Ġ= Ġsb . append (' \" '). append ( string ). append (' \" ') ĊĠĠĠ Ġoperator Ġfun Ġget ( collection : ĠCollection < Any ?> ) Ġ= Ġget (* collection . to Typed Array ()) ĊĠĠĠ Ġoperator Ġfun Ġget ( var arg Ġarray : ĠAny ?) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġsb . clear () ĊĠĠĠĠĠĠĠ Ġfor Ġ( v Ġin Ġarray ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v Ġ== Ġnull ) Ġsb . append (" null ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġwhen Ġ( v ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNumber , Ġis ĠBoolean , Ġis ĠNormal K son , Ġis ĠNormal K son Arr Ġ-> Ġsb . append ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġwrap Append ( v . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (',') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( sb . isEmpty ()) Ġreturn Ġ" []" ĊĠĠĠĠĠĠĠ Ġreturn Ġsb . insert ( 0 , Ġ'[' ). delete Char At ( sb . last Index ). append (' ]'). toString () ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠNode < out ĠA , Ġout ĠB >( val Ġfirst : ĠA , Ġval Ġsecond : ĠB ) Ċ Ċ class ĠPretty K son ( var Ġlevel : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlist Ġ= ĠLinkedList < StringBuilder >() ĊĠĠĠ Ġprivate Ġval Ġk son List Ġ= ĠLinkedList < Node < StringBuilder , ĠPretty K son >>() ĊĠĠĠ Ġprivate Ġval Ġarr List Ġ= ĠLinkedList < Node < StringBuilder , ĠPretty K son Arr >>() ĊĊĠĠĠ Ġoperator Ġfun ĠString . minus ( value : ĠNumber ) Ġ= Ġlist . add ( wrap Append ( this ). append (': '). append ( value )) ĊĠĠĠ Ġoperator Ġfun ĠString . minus ( value : ĠBoolean ) Ġ= Ġlist . add ( wrap Append ( this ). append (': '). append ( value )) ĊĠĠĠ Ġfun ĠAny . raw () Ġ= Ġlist . add ( StringBuilder ( this . toString ())) ĊĠĠĠ Ġprivate Ġfun Ġwrap Append ( string : ĠString ): ĠStringBuilder Ġ= ĠStringBuilder (). append (' \" '). append ( string ). append (' \" ') ĊĊĠĠĠ Ġoperator Ġfun ĠString . minus ( value : ĠPretty K son ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= Ġwrap Append ( this ). append (': ') ĊĠĠĠĠĠĠĠ Ġlist . add ( sb ) ĊĠĠĠĠĠĠĠ Ġk son List . add ( Node ( sb , Ġvalue )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun ĠString . minus ( value : ĠPretty Wrapper ) Ġ= Ġminus ( value . first Arr Ġ?: ĠPretty K son Arr ()) ĊĠĠĠ Ġoperator Ġfun ĠString . minus ( value : ĠPretty K son Arr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= Ġwrap Append ( this ). append (': ') ĊĠĠĠĠĠĠĠ Ġlist . add ( sb ) ĊĠĠĠĠĠĠĠ Ġarr List . add ( Node ( sb , Ġvalue )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun ĠString . minus ( value : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= Ġwrap Append ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġsb . append (": null ") ĊĠĠĠĠĠĠĠ Ġelse Ġsb . append (" :\ "" ). append ( value ). append (' \" ') ĊĠĠĠĠĠĠĠ Ġlist . add ( sb ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġarr Ġget () Ġ= ĠPretty K son Arr () ĊĠĠĠ Ġinline Ġfun Ġobj ( cross inline Ġaction : ĠPretty K son . () Ġ-> ĠUnit ) Ġ= ĠPretty K son ( level Ġ+ Ġ 1 ). apply ( action ) ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( it Ġin Ġk son List ) Ġit . first . append ( it . second . apply Ġ{ Ġlevel Ġ= Ġthis @ Pretty K son . level Ġ+ Ġ 1 Ġ}. toString ()) ĊĠĠĠĠĠĠĠ Ġfor Ġ( it Ġin Ġarr List ) Ġit . first . append ( it . second . apply Ġ{ Ġlevel Ġ= Ġthis @ Pretty K son . level Ġ+ Ġ 1 Ġ}. toString ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġlist . to Typed Array (). wrap ( level , Ġ'{ ', Ġ'} '). toString () ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġarr Ġget () Ġ= ĠNormal K son Arr () Ċ val Ġp arr Ġget () Ġ= ĠPretty K son Arr () Ċ Ċ inline Ġfun Ġobj ( cross inline Ġaction : ĠNormal K son . () Ġ-> ĠUnit ) Ġ= ĠNormal K son (). apply ( action ) Ċ inline Ġfun Ġp obj ( cross inline Ġaction : ĠPretty K son . () Ġ-> ĠUnit ) Ġ= ĠPretty K son (). apply ( action ) Ċ Ċ class ĠPretty K son Arr ( var Ġlevel : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlist : ĠArray < StringBuilder > ĊĠĠĠ Ġprivate Ġval Ġk son List Ġ= ĠLinkedList < Node < StringBuilder , ĠPretty K son >>() ĊĠĠĠ Ġprivate Ġval Ġarr List Ġ= ĠLinkedList < Node < StringBuilder , ĠPretty K son Arr >>() ĊĠĠĠ Ġprivate Ġfun ĠStringBuilder . wrap Append ( string : ĠString ) Ġ= Ġappend (' \" '). append ( string ). append (' \" ') ĊĠĠĠ Ġoperator Ġfun Ġget ( collection : ĠCollection < Any ?> ) Ġ= Ġget (* collection . to Typed Array ()) ĊĠĠĠ Ġoperator Ġfun Ġget ( var arg Ġarray : ĠAny ?) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Ġ= ĠArray ( array . size ) Ġ{ ĠStringBuilder () Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġidx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( v Ġin Ġarray ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v Ġ== Ġnull ) Ġlist [ idx ++ ]. append (" null ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġwhen Ġ( v ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPretty K son Ġ-> Ġk son List . add ( Node ( list [ idx ++ ], Ġv )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPretty K son Arr Ġ-> Ġarr List . add ( Node ( list [ idx ++ ], Ġv )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPretty Wrapper Ġ-> Ġarr List . add ( Node ( list [ idx ++ ], Ġv . first Arr Ġ?: ĠPretty K son Arr ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNumber , Ġis ĠBoolean Ġ-> Ġlist [ idx ++] Ġ= ĠStringBuilder ( v . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġlist [ idx ++ ]. wrap Append ( v . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! this :: list . isInitialized ) Ġreturn Ġ" []" ĊĠĠĠĠĠĠĠ Ġfor Ġ( it Ġin Ġk son List ) Ġit . first . append ( it . second . apply Ġ{ Ġlevel Ġ= Ġthis @ Pretty K son Arr . level Ġ+ Ġ 1 Ġ}. toString ()) ĊĠĠĠĠĠĠĠ Ġfor Ġ( it Ġin Ġarr List ) Ġit . first . append ( it . second . apply Ġ{ Ġlevel Ġ= Ġthis @ Pretty K son Arr . level Ġ+ Ġ 1 Ġ}. toString ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġlist . wrap ( level , Ġ'[ ', Ġ' ]'). toString () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠArray < StringBuilder >. wrap ( tab Count : ĠInt , Ġpre : ĠChar Ġ= Ġ'{ ', Ġend : ĠChar Ġ= Ġ'} '): ĠStringBuilder Ġ{ ĊĠĠĠ Ġif Ġ( isEmpty ()) Ġreturn ĠStringBuilder (). append ( pre ). append ( end ) ĊĠĠĠ Ġval Ġwhite Space Ġ= ĠStringBuilder () ĊĠĠĠ Ġrepeat ( tab Count ) Ġ{ Ġwhite Space . append ('\ t ') Ġ} ĊĠĠĠ Ġval Ġsp Ġ= ĠStringBuilder (", \ n "). append ( white Space ). append ('\ t ') ĊĊĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder (). append ( pre ). append ('\ n '). append ( white Space ). append ('\ t ') ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġsize Ġ- Ġ 1 ) Ġsb . append ( get ( i )). append ( sp ) ĊĠĠĠ Ġreturn Ġsb . append ( get ( size Ġ- Ġ 1 )). append ('\ n '). append ( white Space ). append ( end ) Ċ } Ċ Ċ inline Ġfun Ġpretty ( cross inline Ġaction : ĠPretty Wrapper . () Ġ-> ĠUnit ) Ġ= ĠPretty Wrapper (). apply ( action ) Ċ Ċ class ĠPretty Wrapper Ġ{ ĊĠĠĠ Ġvar Ġfirst Arr : ĠPretty K son Arr ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ( first Arr Ġ?: Ġ" [] "). toString () ĊĠĠĠ Ġinline Ġfun Ġobj ( cross inline Ġaction : ĠPretty K son . () Ġ-> ĠUnit ) Ġ= ĠPretty K son (). apply ( action ) ĊĠĠĠ Ġval Ġarr : ĠPretty K son Arr ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠPretty K son Arr () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first Arr Ġ== Ġnull ) Ġfirst Arr Ġ= Ġa ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġa ĊĠĠĠĠĠĠĠ Ġ} Ċ }