/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 ĠMark ĠF air child . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġess . pap yr us Ċ Ċ import ĠPlatform ByteBuffer Ċ import Ġess . ESS . ESS Context Ċ import Ġess . Element Ċ import Ġess . Global Data Block Ċ import Ġess . Link able Ċ import Ġess . Model Builder Ċ import Ġmf . Counter Ċ import Ġmu . K Log gable Ċ import Ġmu . K Logger Ċ import Ġres aver . List Exception Ċ import Ġjava . nio . Buffer Under flow Exception Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠDescri bes Ġa Ġthe Ġdata Ġfor Ġa Ġ` Global Data ` Ġwhen Ġit Ġis Ġthe ĠP ap yr us Ċ Ġ* Ġscript Ġsection . Ċ Ġ* Ċ Ġ* Ġ@ author ĠMark ĠF air child Ċ Ġ*/ Ċ class ĠP ap yr us ( input : ĠPlatform ByteBuffer , Ġess Context : ĠE SS Context , Ġmodel : ĠModel Builder ) Ġ: ĠP ap yr us Element , ĠGlobal Data Block Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see Ġess . Element . write ĊĠĠĠĠ Ġ* Ġ@ param Ġoutput ĠThe Ġoutput Ġstream . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġwrite ( output : ĠPlatform ByteBuffer ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck (! tr uncated ) Ġ{ Ġ" P ap yr us Ġis Ġtruncated . ĠCannot Ġwrite ." Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġstarting Position Ġ= Ġoutput ?. position () ĊĠĠĠĠĠĠĠ Ġoutput ?. put Short ( header ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWrite Ġthe Ġstring Ġtable . ĊĠĠĠĠĠĠĠ ĠSTR INGS ?. write ( output ) ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= ĠSTR UCT S ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput ?. put Int ( SCRIP TS !!. size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSTR UCT S ?. size ?. let Ġ{ Ġoutput ?. put Int ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS CRIP TS ?. write ( output ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSTR UCT S ?. write ( output ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput ?. put Int ( SCRIP TS !!. size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS CRIP TS ?. write ( output ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠS CRIPT _ INST AN CES !!. write ( output ) ĊĠĠĠĠĠĠĠ ĠREFERENCES !!. write ( output ) ĊĠĠĠĠĠĠĠ Ġif Ġ( STRUCT _ INST AN CES Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSTR UCT _ INST AN CES ?. write ( output ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠARRAY S !!. write ( output ) ĊĠĠĠĠĠĠĠ ĠP AP YR US _ RUNTIME !!. write ( output ) ĊĠĠĠĠĠĠĠ ĠACT IV ES CRIP TS !!. write ( output ) ĊĠĠĠĠĠĠĠ ĠS CRIPT _ INST AN CES ?. values ?. forEach Ġ{ Ġdata : ĠScript Instance Ġ-> Ġdata . data !!. write ( output ) Ġ} ĊĠĠĠĠĠĠĠ ĠREFERENCES ?. values ?. forEach Ġ{ Ġref : ĠReference Ġ-> Ġref . data !!. write ( output ) Ġ} ĊĠĠĠĠĠĠĠ ĠSTR UCT _ INST AN CES ?. values ?. forEach Ġ{ Ġstruct : ĠStruct Instance Ġ-> Ġstruct . write Data ( output ) Ġ} ĊĠĠĠĠĠĠĠ ĠARRAY S ?. values ?. forEach Ġ{ Ġinfo : ĠArray Info Ġ-> Ġinfo . write Data ( output ) Ġ} ĊĠĠĠĠĠĠĠ ĠACT IV ES CRIP TS ?. values ?. forEach Ġ{ Ġscript : ĠActive Script Ġ-> Ġscript . write Data ( output ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWrite Ġthe Ġfunction Ġmessage Ġtable Ġand Ġsus pended Ġstacks . ĊĠĠĠĠĠĠĠ Ġoutput ?. put Int ( FUNCTION MESSAGES . size ) ĊĠĠĠĠĠĠĠ ĠFUNCTION MESSAGES . forEach Ġ{ Ġmessage : ĠFunction Message Ġ-> Ġmessage . write ( output ) Ġ} ĊĠĠĠĠĠĠĠ ĠS US PEN DED STACK S 1 !!. write ( output ) ĊĠĠĠĠĠĠĠ ĠS US PEN DED STACK S 2 !!. write ( output ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWrite Ġthe Ġ" unknown " Ġfields . ĊĠĠĠĠĠĠĠ Ġoutput ?. put Int ( UNK 1 ) ĊĠĠĠĠĠĠĠ ĠUN K 2 . if Present Ġ{ Ġvalue : ĠInt ? Ġ-> Ġoutput ?. put Int ( value !! ) Ġ} ĊĠĠĠĠĠĠĠ Ġoutput ?. put Int ( UN KS . size ) ĊĠĠĠĠĠĠĠ ĠUN KS . forEach Ġ{ Ġid : ĠE ID ? Ġ-> Ġid !!. write ( output ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWrite Ġthe Ġun bind Ġmap . ĊĠĠĠĠĠĠĠ ĠUN BIND MAP !!. write ( output ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWrite Ġthe Ġsave Ġfile Ġversion Ġfield , Ġif Ġpresent . ĊĠĠĠĠĠĠĠ ĠSAVE _ FILE _ VERSION . if Present Ġ{ Ġvalue : ĠShort ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput ?. put Short ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWrite Ġthe Ġremaining Ġdata . ĊĠĠĠĠĠĠĠ Ġoutput ?. put ( ARRAY SB LOCK ) ĊĠĠĠĠĠĠĠ Ġif Ġ( starting Position Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( output . position () Ġ== Ġstarting Position Ġ+ Ġcalculate Size ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Actual Ġ= Ġ% d , Ġcalculated Ġ= Ġ% d ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . position (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Size () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see Ġess . Element . calculate Size ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġsize Ġof Ġthe Ġ` Element ` Ġin Ġbytes . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġcalculate Size (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġsum Ġ= Ġ 2 Ġ// ĠHEADER ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġstring Table . calculate Size () ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġscripts . calculate Size () ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġif Ġ( STRUCT S Ġ== Ġnull ) Ġ 0 Ġelse Ġstructs . calculate Size () ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġscript Instances . calculate Size () ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġif Ġ( STRUCT _ INST AN CES Ġ== Ġnull ) Ġ 0 Ġelse Ġstruct Instances . calculate Size () ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġreferences . calculate Size () ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġarrays . calculate Size () ĊĠĠĠĠĠĠĠ Ġsum Ġ+= ĠP AP YR US _ RUNTIME ?. calculate Size () Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġactive Scripts . calculate Size () ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( function Message Ġin Ġfunction Messages ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalculate Size Ġ= Ġfunction Message !!. calculate Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ+= Ġcalculate Size ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġ 4 Ġ+ Ġresult ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġsus pended Stack s 1 . calculate Size () ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġsus pended Stack s 2 . calculate Size () ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġ 4 Ġ// ĠUN K 1 ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġif Ġ( UNK 2 Ġ!= Ġnull Ġ&& ĠUN K 2 . isPresent ) Ġ 4 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġsum 1 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( eid Ġin Ġunknown ID List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalculate Size Ġ= Ġe id !!. calculate Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsum 1 Ġ+= Ġcalculate Size ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġ 4 Ġ+ Ġsum 1 ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġun bind s . calculate Size () ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġif Ġ( SAVE _ FILE _ VERSION . isPresent ) Ġ 2 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠ Ġsum Ġ+= ĠARRAY SB LOCK . size ĊĠĠĠĠĠĠĠ Ġreturn Ġsum ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAccess or Ġfor Ġthe Ġstring Ġtable . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġstring Table : ĠString Table ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠSTR INGS Ġ?: ĠString Table () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAccess or Ġfor Ġthe Ġlist Ġof Ġscripts . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġscripts : ĠScript Map ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠS CRIP TS Ġ?: ĠScript Map () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAccess or Ġfor Ġthe Ġlist Ġof Ġstruct defs . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġstructs : ĠStruct Map ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠSTR UCT S Ġ?: ĠStruct Map () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAccess or Ġfor Ġthe Ġlist Ġof Ġscript Ġinstances . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġscript Instances : ĠScript Instance Map ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠS CRIPT _ INST AN CES Ġ?: ĠScript Instance Map () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAccess or Ġfor Ġthe Ġlist Ġof Ġreferences . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġreferences : ĠReference Map ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠREFERENCES Ġ?: ĠReference Map () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAccess or Ġfor Ġthe Ġlist Ġof Ġstructs . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġstruct Instances : ĠStruct Instance Map ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠSTR UCT _ INST AN CES Ġ?: ĠStruct Instance Map () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAccess or Ġfor Ġthe Ġlist Ġof Ġarrays . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġarrays : ĠArray Map ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠARRAY S Ġ?: ĠArray Map () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAccess or Ġfor Ġthe Ġlist Ġof Ġactive Ġscripts . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġactive Scripts : ĠActive Script Map ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠACT IV ES CRIP TS Ġ?: ĠActive Script Map () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAccess or Ġfor Ġthe Ġlist Ġof Ġfunction Ġmessages . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġfunction Messages : ĠList < Function Message ?> ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠFUNCTION MESSAGES ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAccess or Ġfor Ġthe Ġcombined Ġlist Ġof Ġsus pended Ġstacks . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsus pended Stack s : ĠS us pended Stack Map ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs 1 Ġ= Ġsus pended Stack s 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs 2 Ġ= Ġsus pended Stack s 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcombined Ġ= ĠS us pended Stack Map () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcombined . put All ( s 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcombined . put All ( s 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcombined ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAccess or Ġfor Ġthe Ġfirst Ġlist Ġof Ġsus pended Ġstacks . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsus pended Stack s 1 : ĠS us pended Stack Map ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠS US PEN DED STACK S 1 Ġ?: ĠS us pended Stack Map () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAccess or Ġfor Ġthe Ġsecond Ġlist Ġof Ġsus pended Ġstacks . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsus pended Stack s 2 : ĠS us pended Stack Map ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠS US PEN DED STACK S 2 Ġ?: ĠS us pended Stack Map () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAccess or Ġfor Ġthe Ġqueued Ġun bind s Ġlist . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġun bind s : ĠU nb ind Map ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠUN BIND MAP Ġ?: ĠU nb ind Map () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġunknown ID List : ĠList < E ID ?> ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠUN KS ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAccess or Ġfor Ġthe ĠArrays Ġblock . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġarrays Block : ĠPlatform ByteBuffer ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠBUFFER Ġ= ĠPlatform ByteBuffer . wrap ( ARRAY SB LOCK ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBUFFER . make Le () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBUFFER ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFind Ġa Ġ` Game Element ` Ġby Ġits Ġ` E ID `. ĊĠĠĠĠ Ġ* Ġ` Game Element ` Ġincludes Ġ` Script Instance `, ĊĠĠĠĠ Ġ* Ġ` Struct Instance `, Ġand Ġ` Reference `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġid ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfind Refer rent ( id : ĠE ID ): ĠGame Element ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscript Instances . containsKey ( id ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript Instances [ id ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreferences . containsKey ( id ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreferences [ id ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstruct Instances . containsKey ( id ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstruct Instances [ id ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid . is Zero Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCount s Ġthe Ġnumber Ġof Ġun attached Ġinstances , Ġthe ĊĠĠĠĠ Ġ* Ġ` Script Instance ` Ġobjects Ġwhose Ġref ID Ġis Ġ 0 . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġnumber Ġof Ġun attached Ġinstances . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcount Un attached Instances (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġfor Ġ( script Instance Ġin Ġscript Instances . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( script Instance . is Un attached ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcount . toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCount s Ġthe Ġnumber Ġof Ġ` Script Instance `, Ġ` Reference `, ĊĠĠĠĠ Ġ* Ġand Ġ` Active Script ` Ġobjects Ġwhose Ġscript Ġis Ġnull . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġnumber Ġof Ġundefined Ġelements Ġ/ Ġundefined Ġthreads . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcount Undefined Elements (): ĠInt Array Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġthreads Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġfor Ġ( script Ġin Ġscripts . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( script . is Undefined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcount Ġ+= Ġresult . toInt () ĊĠĠĠĠĠĠĠ Ġvar Ġcount 3 Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġfor Ġ( script Instance Ġin Ġscript Instances . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( script Instance . is Undefined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount 3 ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcount Ġ+= Ġcount 3 . toInt () ĊĠĠĠĠĠĠĠ Ġvar Ġcount 1 Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġfor Ġ( reference Ġin Ġreferences . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reference . is Undefined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount 1 ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcount Ġ+= Ġcount 1 . toInt () ĊĠĠĠĠĠĠĠ Ġvar Ġresult 2 Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġfor Ġ( struct Ġin Ġstructs . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( struct . is Undefined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult 2 ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcount Ġ+= Ġresult 2 . toInt () ĊĠĠĠĠĠĠĠ Ġvar Ġresult 1 Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġfor Ġ( struct Instance Ġin Ġstruct Instances . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( struct Instance . is Undefined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult 1 ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcount Ġ+= Ġresult 1 . toInt () ĊĠĠĠĠĠĠĠ Ġvar Ġcount 2 Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġfor Ġ( v Ġin Ġactive Scripts . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . is Undefined Ġ&& Ġ! v . is Terminated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount 2 ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthreads Ġ+= Ġcount 2 . toInt () ĊĠĠĠĠĠĠĠ Ġreturn Ġint ArrayOf ( count , Ġthreads ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġall Ġ` Script Instance ` Ġobjects Ġwhose Ġref ID Ġis Ġ 0 . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġelements Ġthat Ġwere Ġremoved . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove Un attached Instances (): ĠSet < P ap yr us Element ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠUN ATTACH ED : ĠMutable Set < Script Instance > Ġ= ĠHashSet () ĊĠĠĠĠĠĠĠ Ġfor Ġ( script Instance Ġin Ġscript Instances . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( script Instance . is Un attached ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUN ATTACH ED . add ( script Instance ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġremove Elements ( UN ATTACH ED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġall Ġ` Script Instance ` Ġobjects Ġwhose Ġscript Ġis Ġnull . ĊĠĠĠĠ Ġ* ĠAlso Ġchecks Ġ` Active Script `, Ġ` Function Message `, Ġand ĊĠĠĠĠ Ġ* Ġ` Sus pended Stack `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġelements Ġthat Ġwere Ġremoved . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove Undefined Elements (): ĠSet < P ap yr us Element ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġset : ĠMutable Set < Script > Ġ= Ġmutable Set Of () ĊĠĠĠĠĠĠĠ Ġfor Ġ( script Ġin Ġscripts . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( script . is Undefined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . add ( script ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠRE MOVED : ĠMutable Set < P ap yr us Element ?> Ġ= ĠHashSet ( remove Elements ( set )) ĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠMutable Set < Struct > Ġ= Ġmutable Set Of () ĊĠĠĠĠĠĠĠ Ġfor Ġ( struct Ġin Ġstructs . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( struct . is Undefined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( struct ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠRE MOVED . addAll ( remove Elements ( result )) ĊĠĠĠĠĠĠĠ Ġval Ġset 1 : ĠMutable Set < Script Instance > Ġ= Ġmutable Set Of () ĊĠĠĠĠĠĠĠ Ġfor Ġ( script Instance Ġin Ġscript Instances . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( script Instance . is Undefined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset 1 . add ( script Instance ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠRE MOVED . addAll ( remove Elements ( set 1 )) ĊĠĠĠĠĠĠĠ Ġval Ġresult 1 : ĠMutable Set < Reference > Ġ= Ġmutable Set Of () ĊĠĠĠĠĠĠĠ Ġfor Ġ( reference Ġin Ġreferences . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reference . is Undefined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult 1 . add ( reference ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠRE MOVED . addAll ( remove Elements ( result 1 )) ĊĠĠĠĠĠĠĠ Ġval Ġset 2 : ĠMutable Set < Struct Instance > Ġ= Ġmutable Set Of () ĊĠĠĠĠĠĠĠ Ġfor Ġ( struct Instance Ġin Ġstruct Instances . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( struct Instance . is Undefined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset 2 . add ( struct Instance ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠRE MOVED . addAll ( remove Elements ( set 2 )) ĊĠĠĠĠĠĠĠ Ġfor Ġ( v Ġin Ġactive Scripts . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . is Undefined Ġ&& Ġv . is Terminated . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . zero () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRE MOVED . add ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠRE MOVED ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġall Ġ` Script Instance ` Ġobjects Ġwhose Ġscript Ġis Ġnull . ĊĠĠĠĠ Ġ* ĠAlso Ġchecks Ġ` Active Script `, Ġ` Function Message `, Ġand ĊĠĠĠĠ Ġ* Ġ` Sus pended Stack `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġelements Ġthat Ġwere Ġremoved . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġterminate Undefined Threads (): ĠSet < Active Script > Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTER MIN ATED : ĠMutable Set < Active Script > Ġ= ĠHashSet () ĊĠĠĠĠĠĠĠ Ġfor Ġ( v Ġin Ġactive Scripts . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . is Undefined Ġ&& Ġ! v . is Terminated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTER MIN ATED . add ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠTER MIN ATED . forEach Ġ{ Ġobj : ĠActive Script Ġ-> Ġobj . zero () Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠTER MIN ATED ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġa Ġ` P ap yr us Element ` Ġcollection . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġelements ĠThe Ġelements Ġto Ġremove . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġelements Ġthat Ġwere Ġremoved . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove Elements ( elements : ĠCollection < P ap yr us Element >? ): ĠSet < P ap yr us Element > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( elements Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNullPointerException (" The Ġset Ġof Ġelements Ġto Ġremove Ġmust Ġnot Ġbe Ġnull Ġand Ġmust Ġnot Ġcontain Ġnull .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠELEMENT S Ġ= ĠLinkedList ( elements ) ĊĠĠĠĠĠĠĠ Ġval ĠRE MOVED : ĠMutable Set < P ap yr us Element > Ġ= Ġmutable Set Of () ĊĠĠĠĠĠĠĠ Ġwhile Ġ(! ELEMENT S . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠELEMENT Ġ= ĠELEMENT S . pop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ELEMENT Ġis ĠScript ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠDEF Ġ= ĠELEMENT Ġas ĠDefinition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset : ĠMutable Set < Script Instance > Ġ= Ġhash Set Of () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( v Ġin Ġscript Instances . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . definition Ġ=== ĠDEF ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . add ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠELEMENT S . addAll ( set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscripts . remove ( DEF . name )?. let Ġ{ ĠRE MOVED . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( ELEMENT Ġis ĠStruct ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠDEF Ġ= ĠELEMENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset : ĠMutable Set < Struct Instance > Ġ= Ġhash Set Of () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( v Ġin Ġstruct Instances . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . definition Ġ=== ĠDEF ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . add ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠELEMENT S . addAll ( set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstructs . remove ( DEF . name )?. let Ġ{ ĠRE MOVED . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( ELEMENT Ġis ĠScript Instance ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠINSTANCE Ġ= ĠELEMENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( script Instances . containsKey ( INSTANCE . i D )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript Instances . remove ( INSTANCE . i D )?. let Ġ{ ĠRE MOVED . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( ELEMENT Ġis ĠStruct Instance ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠSTR UCT Ġ= ĠELEMENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( struct Instances . containsKey ( STRUCT . i D )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstruct Instances . remove ( STRUCT . i D )?. let Ġ{ ĠRE MOVED . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( ELEMENT Ġis ĠReference ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠREF Ġ= ĠELEMENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( references . containsKey ( REF . i D )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreferences . remove ( REF . i D )?. let Ġ{ ĠRE MOVED . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( ELEMENT Ġis ĠArray Info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠARRAY Ġ= ĠELEMENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arrays . containsKey ( ARRAY . i D )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarrays . remove ( ARRAY . i D )?. let Ġ{ ĠRE MOVED . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( ELEMENT Ġis ĠActive Script ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠACT IVE Ġ= ĠELEMENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( active Scripts . containsKey ( ACTIVE . i D )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Scripts . remove ( ACTIVE . i D )?. let Ġ{ ĠRE MOVED . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( ELEMENT Ġis ĠS us pended Stack ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠSTACK Ġ= ĠELEMENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sus pended Stack s 1 . containsKey ( STACK . i D )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsus pended Stack s 1 . remove ( STACK . i D )?. let Ġ{ ĠRE MOVED . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( sus pended Stack s 2 . containsKey ( STACK . i D )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsus pended Stack s 2 . remove ( STACK . i D )?. let Ġ{ ĠRE MOVED . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn {" P ap yr us . remove Elements : Ġcan 't Ġdelete Ġelement : Ġ$ ELEMENT "} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠRE MOVED ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠString Ġrepresentation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" P ap yr us -${ super . toString () }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠS ear ches Ġfor Ġall Ġ` Link able ` Ġelements Ġthat Ġrefer Ġto Ġthe ĊĠĠĠĠ Ġ* Ġspecified ĠID . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġid ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġfind Matches ( id : ĠE ID ): ĠRefer rent Map Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠREFER RENT S Ġ= ĠRefer rent Map () ĊĠĠĠĠĠĠĠ Ġval Ġset : ĠMutable Set < Link able > Ġ= ĠHashSet () ĊĠĠĠĠĠĠĠ Ġfor Ġ( script Instance Ġin Ġscript Instances . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( script Instance . data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( m Ġin Ġscript Instance . variables ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m . has Ref ( id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . add ( script Instance ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠREFER RENT S [ Script Instance :: class . java ] Ġ= Ġset ĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠMutable Set < Link able > Ġ= ĠHashSet () ĊĠĠĠĠĠĠĠ Ġfor Ġ( reference Ġin Ġreferences . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( m Ġin Ġreference . variables ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m . has Ref ( id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( reference ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠREFER RENT S [ Reference :: class . java ] Ġ= Ġresult ĊĠĠĠĠĠĠĠ Ġval Ġset 1 : ĠMutable Set < Link able > Ġ= ĠHashSet () ĊĠĠĠĠĠĠĠ Ġfor Ġ( array Info Ġin Ġarrays . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( m Ġin Ġarray Info . variables ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m !!. has Ref ( id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset 1 . add ( array Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠREFER RENT S [ Array Info :: class . java ] Ġ= Ġset 1 ĊĠĠĠĠĠĠĠ Ġval Ġresult 1 : ĠMutable Set < Link able > Ġ= ĠHashSet () ĊĠĠĠĠĠĠĠ Ġfor Ġ( active Script Ġin Ġactive Scripts . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( active Script . attached Ġ=== Ġid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult 1 . add ( active Script ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠREFER RENT S [ Active Script :: class . java ] Ġ= Ġresult 1 ĊĠĠĠĠĠĠĠ Ġval Ġset 2 : ĠMutable Set < Link able > Ġ= ĠHashSet () ĊĠĠĠĠĠĠĠ Ġfor Ġ( active Script Ġin Ġactive Scripts . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( stack Frame Ġin Ġactive Script . stack Frames ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stack Frame . owner . has Ref ( id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset 2 . add ( stack Frame ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠREFER RENT S [ Active Script :: class . java ] Ġ= Ġset 2 ĊĠĠĠĠĠĠĠ Ġval Ġresult 2 : ĠMutable Set < Link able > Ġ= ĠHashSet () ĊĠĠĠĠĠĠĠ Ġfor Ġ( t Ġin Ġactive Scripts . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( s Ġin Ġt . stack Frames ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( m Ġin Ġs . variables ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m . has Ref ( id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult 2 . add ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠREFER RENT S [ Stack Frame :: class . java ] Ġ= Ġresult 2 ĊĠĠĠĠĠĠĠ Ġval Ġset 3 : ĠMutable Set < Link able > Ġ= ĠHashSet () ĊĠĠĠĠĠĠĠ Ġfor Ġ( v Ġin Ġstruct Instances . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( m Ġin Ġv . variables ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m . has Ref ( id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset 3 . add ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠREFER RENT S [ Struct Instance :: class . java ] Ġ= Ġset 3 ĊĠĠĠĠĠĠĠ Ġreturn ĠREFER RENT S ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠS ear ches Ġfor Ġall Ġ` Link able ` Ġelements Ġthat Ġrefer Ġto Ġthe ĊĠĠĠĠ Ġ* Ġspecified ĠID Ġand Ġprints Ġthem Ġto Ġa Ġ` StringBuilder `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġref ĊĠĠĠĠ Ġ* Ġ@ param Ġbuilder ĊĠĠĠĠ Ġ* Ġ@ param Ġmy Name ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġprint Refer rent s ( ref : ĠGame Element , Ġbuilder : ĠStringBuilder , Ġmy Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠREFER ENTS Ġ= Ġfind Matches ( ref . i D ) ĊĠĠĠĠĠĠĠ Ġrefer rent s Print ( ref , Ġbuilder , ĠREFER ENTS [ Active Script :: class . java ], Ġmy Name , Ġ" threads ", Ġ" attached Ġto ") ĊĠĠĠĠĠĠĠ Ġrefer rent s Print ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠREFER ENTS [ Stack Frame :: class . java ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" stack frames ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" with Ġmember Ġdata Ġreferring Ġto " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrefer rent s Print ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠREFER ENTS [ Script Instance :: class . java ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" instances ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" with Ġmember Ġdata Ġreferring Ġto " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrefer rent s Print ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠREFER ENTS [ Reference :: class . java ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" references ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" with Ġmember Ġdata Ġreferring Ġto " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrefer rent s Print ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠREFER ENTS [ Array Info :: class . java ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" arrays ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" with Ġmember Ġdata Ġreferring Ġto " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrefer rent s Print ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠREFER ENTS [ Struct Instance :: class . java ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" structs ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" with Ġmember Ġdata Ġreferring Ġto " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġflag Ġindicating Ġif Ġthe Ġpap yr us Ġblock Ġhas Ġa Ġtrunc ation Ġerror . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġis Truncated : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtruncated Ġ|| Ġstring Table . is Truncated ĊĊĊĠĠĠ Ġprivate Ġvar Ġtruncated Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠReturns Ġa Ġnew Ġ` P ap yr us Context `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcontext : ĠP ap yr us Context ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġheader Ġfield . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġheader : ĠShort Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar ĠP AP YR US _ RUNTIME : ĠE ID ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠSAVE _ FILE _ VERSION : ĠOptional < Short > Ġ= ĠOptional . empty () ĊĠĠĠ Ġprivate Ġvar ĠUN K 1 Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar ĠUN K 2 : ĠOptional < Int > Ġ= ĠOptional . empty () ĊĠĠĠ Ġprivate Ġvar ĠSTR INGS : ĠString Table ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠS CRIP TS : ĠScript Map ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠSTR UCT S : ĠStruct Map ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠS CRIPT _ INST AN CES : ĠScript Instance Map ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠREFERENCES : ĠReference Map ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠSTR UCT _ INST AN CES : ĠStruct Instance Map ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠARRAY S : ĠArray Map ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠACT IV ES CRIP TS : ĠActive Script Map ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠFUNCTION MESSAGES : ĠMutable List < Function Message > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġprivate Ġvar ĠS US PEN DED STACK S 1 : ĠS us pended Stack Map ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠS US PEN DED STACK S 2 : ĠS us pended Stack Map ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠUN BIND MAP : ĠU nb ind Map ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠUN KS : ĠMutable List < E ID ?> Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAccess or Ġthe Ġ" other " Ġdata . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġother Data : ĠOther Data ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval ĠARRAY SB LOCK : ĠByteArray ĊĠĠĠ Ġval ĠE IDS : ĠMap < Number , ĠE ID > ĊĊĠĠĠ Ġcompanion Ġobject : K Log gable Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠHelper Ġfor Ġprint Refer rent s . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġbuilder ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġls ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġmy name ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġl name ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġrelationship ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġrefer rent s Print ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref : ĠElement , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder : ĠStringBuilder , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġls : ĠSet < Link able ?> ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelationship : ĠString ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( null Ġ== Ġls ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġls . isEmpty () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ("< p > There Ġare Ġzero Ġ$ lname Ġ$ relationship Ġthis Ġ$ my name .</ p >") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġls . size Ġ== Ġ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ("< p > There Ġis Ġone Ġ$ lname Ġ$ relationship Ġthis Ġ$ my name .</ p >") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< p > There Ġare Ġ${ ls . size } Ġ$ lname Ġ$ relationship Ġthis Ġ$ my name .</ p >" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ls . size Ġin Ġ 1 .. 4 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ("< ul >") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġls . forEach Ġ{ Ġi : ĠLink able ? Ġ-> Ġbuilder . append ("< li > "). append ( i !!. to HTML ( ref )). append ("</ a >") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ("</ ul >") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġlogger : ĠK Logger ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġlogger () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġ` P ap yr us ` Ġby Ġreading Ġfrom Ġa Ġbyte Ġbuffer . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinput ĠThe Ġdata . ĊĠĠĠĠ Ġ* Ġ@ param Ġess Context ĠThe Ġ` ESS Context ` Ġinfo . ĊĠĠĠĠ Ġ* Ġ@ param Ġmodel ĠA Ġ` Model Builder `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠP ap yr us Exception ĠThrow n Ġif Ġthe ĠP ap yr us Ġblock Ġwas Ġpartially ĊĠĠĠĠ Ġ* Ġread Ref ID . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠSUM Ġ= ĠCounter ( input . capacity ()) ĊĠĠĠĠĠĠĠ ĠSUM . add Count Listener Ġ{ Ġsum : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck (( tr uncated Ġ|| Ġsum Ġ!= Ġinput . position ()). not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Position Ġmismatch ; Ġcounted Ġ% d Ġbut Ġactual Ġ% d .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsum , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . position () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcontext Ġ= ĠP ap yr us Context ( ess Context , Ġthis ) ĊĠĠĠĠĠĠĠ ĠE IDS Ġ= ĠHashMap ( 1 0 0 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input . limit () Ġ- Ġinput . position () Ġ< Ġ 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The ĠP ap yr us Ġblock Ġis Ġmissing . ĠThis Ġcan Ġhappen Ġif ĠSky rim Ġis Ġrunning Ġtoo Ġmany Ġmods Ġor Ġtoo Ġmany Ġscripts .\ n Unfortunately , Ġthere Ġis Ġliter ally Ġnothing ĠI Ġcan Ġdo Ġto Ġhelp Ġyou Ġwith Ġthis ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠP ap yr us Exception ( msg , Ġnull , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġheader . ĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader Ġ= Ġinput . get Short () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġstring Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstring Table : ĠString Table ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring Table Ġ= ĠString Table ( input , Ġess Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSTR INGS Ġ= Ġstring Table ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . add String Table ( string Table !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( STRING S !!. calculate Size ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscript Count Ġ= Ġinput . getInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstruct Count Ġ= Ġif Ġ( ess Context . game !!. is FO 4 ) Ġinput . getInt () Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( if Ġ( ess Context . game !!. is FO 4 ) Ġ 8 Ġelse Ġ 4 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġscripts . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġscript Map : ĠScript Map ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript Map Ġ= ĠScript Map ( script Count , Ġinput , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS CRIP TS Ġ= Ġscript Map ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS CRIP TS !!. values . forEach Ġ{ Ġscript : ĠScript Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript . resolve Parent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS CRIP TS !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . add Scripts ( SCRIP TS !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( SCRIP TS !!. calculate Size () Ġ- Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġstructs . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! ess Context . game !!. is FO 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSTR UCT S Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstruct Map : ĠStruct Map ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstruct Map Ġ= ĠStruct Map ( struct Count , Ġinput , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSTR UCT S Ġ= Ġstruct Map ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . add Struct s ( STRUCT S !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( STRUCT S ?. calculate Size ()?. minus ( 4 ) Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġscript Ġinstance Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġscript Instance Map : ĠScript Instance Map ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript Instance Map Ġ= ĠScript Instance Map ( input , ĠS CRIP TS !! , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS CRIPT _ INST AN CES Ġ= Ġscript Instance Map ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( SCRIPT _ INST AN CES !!. calculate Size ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġreference Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġreference Map : ĠReference Map ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreference Map Ġ= ĠReference Map ( input , ĠS CRIP TS , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREFERENCES Ġ= Ġreference Map ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( REFER ENCES !!. calculate Size ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġstruct Ġbody Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! ess Context . game !!. is FO 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSTR UCT _ INST AN CES Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstruct Instance Map : ĠStruct Instance Map ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstruct Instance Map Ġ= Struct Instance Map ( input , ĠSTR UCT S !! , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSTR UCT _ INST AN CES Ġ= Ġstruct Instance Map ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( STRUCT _ INST AN CES !!. calculate Size ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġarray Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġarray Map : ĠArray Map ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray Map Ġ= ĠArray Map ( input , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠARRAY S Ġ= Ġarray Map ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( ARRAY S !!. calculate Size ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP AP YR US _ RUNTIME Ġ= Ġcontext . read E ID 3 2 ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( 4 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġactive Ġscript Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġactive Script Map : ĠActive Script Map ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Script Map Ġ= ĠActive Script Map ( input , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠACT IV ES CRIP TS Ġ= Ġactive Script Map ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( ACTIV ES CRIP TS !!. calculate Size ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe ĠScript Ġdata Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS CRIPT _ INST AN CES ?. calculate Size ()?. let Ġ{ ĠSUM . unc lick ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= ĠS CRIPT _ INST AN CES ?. size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe id Ġ= Ġcontext . read E ID ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġscript Instances [ eid ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement !!. read Data ( input , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠList Exception ( i , Ġcount , Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠP ap yr us FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠList Exception ( i , Ġcount , Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠP ap yr us ElementException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠList Exception ( i , Ġcount , Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS CRIPT _ INST AN CES ?. calculate Size ()?. let Ġ{ ĠSUM . click ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠList Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠP ap yr us Exception (" Error Ġreading ĠScript Instance Ġdata .", Ġex , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . add Script Instances ( SCRIPT _ INST AN CES !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġreference Ġdata Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREFERENCES ?. calculate Size ()?. let Ġ{ ĠSUM . unc lick ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= ĠREFERENCES ?. size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe id Ġ= Ġcontext . read E ID ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġreferences [ eid ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement !!. read Data ( input , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠList Exception ( i , Ġcount , Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠP ap yr us FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠList Exception ( i , Ġcount , Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠP ap yr us ElementException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠList Exception ( i , Ġcount , Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREFERENCES ?. calculate Size ()?. let Ġ{ ĠSUM . click ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠList Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠP ap yr us Exception (" Error Ġreading ĠReference Ġdata .", Ġex , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . add References ( reference Map !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġstruct Ġdata Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( STRUCT _ INST AN CES Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSTR UCT _ INST AN CES ?. calculate Size ()?. let Ġ{ ĠSUM . unc lick ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġstruct Instances . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe id Ġ= Ġcontext . read E ID ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġstruct Instances [ eid ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement !!. read Data ( input , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠList Exception ( i , Ġcount , Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠP ap yr us FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠList Exception ( i , Ġcount , Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠP ap yr us ElementException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠList Exception ( i , Ġcount , Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSTR UCT _ INST AN CES ?. calculate Size ()?. let Ġ{ ĠSUM . click ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠList Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠP ap yr us Exception (" Error Ġreading ĠStruct Instance Ġdata .", Ġex , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . add Struct Instances ( STRUCT _ INST AN CES !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġarray Ġdata Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠARRAY S ?. calculate Size ()?. let Ġ{ ĠSUM . unc lick ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= ĠARRAY S ?. size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe id Ġ= Ġcontext . read E ID ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġarrays [ eid ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement !!. read Data ( input , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠList Exception ( i , Ġcount , Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠP ap yr us FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠList Exception ( i , Ġcount , Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠP ap yr us ElementException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠList Exception ( i , Ġcount , Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠARRAY S ?. calculate Size ()?. let Ġ{ ĠSUM . click ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠList Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠP ap yr us Exception (" Error Ġreading ĠArray Ġdata .", Ġex , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . add Arrays ( array Map !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe ĠActive Script Ġdata Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠACT IV ES CRIP TS ?. calculate Size ()?. let Ġ{ ĠSUM . unc lick ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= ĠACT IV ES CRIP TS ?. size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe id Ġ= Ġcontext . read E ID 3 2 ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġactive Scripts [ eid ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement !!. read Data ( input , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠList Exception ( i , Ġcount , Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠP ap yr us FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠList Exception ( i , Ġcount , Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠP ap yr us ElementException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠList Exception ( i , Ġcount , Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠACT IV ES CRIP TS ?. calculate Size ()?. let Ġ{ ĠSUM . click ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠList Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠP ap yr us Exception (" Error Ġreading ĠActive Script Ġdata .", Ġex , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġfunction Ġmessage Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunction Message Count Ġ= Ġinput . getInt () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFUNCTION MESSAGES Ġ= ĠArrayList ( function Message Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġfunction Message Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠFunction Message ( input , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFUNCTION MESSAGES . add ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsum Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( FUNCTION MESSAGE Ġin ĠFUNCTION MESSAGES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalculate Size Ġ= ĠFUNCTION MESSAGE . calculate Size () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsum Ġ+= Ġcalculate Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( 4 Ġ+ Ġsum ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠList Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠP ap yr us Exception (" Failed Ġto Ġread ĠFunction Message Ġtable .", Ġex , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġfirst ĠS us pended Stack Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsuspend Stack s 1 : ĠS us pended Stack Map ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuspend Stack s 1 Ġ= ĠS us pended Stack Map ( input , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS US PEN DED STACK S 1 Ġ= Ġsuspend Stack s 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( SUS PEN DED STACK S 1 !!. calculate Size ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġsecond ĠS us pended Stack Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsuspend Stack s 2 : ĠS us pended Stack Map ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuspend Stack s 2 Ġ= ĠS us pended Stack Map ( input , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS US PEN DED STACK S 2 Ġ= Ġsuspend Stack s 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( SUS PEN DED STACK S 2 !!. calculate Size ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . add Threads ( active Scripts ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . addFunction Messages ( function Messages ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . add Sus pended Stack s 1 ( sus pended Stack s 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . add Sus pended Stack s 2 ( sus pended Stack s 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġ" unknown " Ġfields . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUN K 1 Ġ= Ġinput . getInt () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUN K 2 Ġ= Ġif Ġ( UNK 1 Ġ== Ġ 0 ) ĠOptional . empty () Ġelse ĠOptional . of ( input . getInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( if Ġ( UNK 2 . isPresent ) Ġ 4 Ġelse Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunknown Count Ġ= Ġinput . getInt () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUN KS Ġ= ĠArrayList ( unknown Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġunknown Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUN KS . add ( context . read E ID ( input )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . add Unknown ID List ( UN KS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsum Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( UNK Ġin ĠUN KS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalculate Size Ġ= ĠUN K !!. calculate Size () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsum Ġ+= Ġcalculate Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( 4 Ġ+ Ġsum ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġun bind s : ĠU nb ind Map ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun bind s Ġ= ĠU nb ind Map ( input , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUN BIND MAP Ġ= Ġun bind s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . add Un bind s ( unbind s !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSUM . click ( UN BIND MAP !!. calculate Size ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor ĠSky rim , Ġread Ref ID Ġthe Ġsave Ġfile Ġversion Ġfield . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSAVE _ FILE _ VERSION Ġ= Ġif Ġ( ess Context . game !!. is Sky rim ) ĠOptional . of ( input . get Short ()) Ġelse ĠOptional . empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstacks : ĠMap < E ID ?, ĠS us pended Stack ?> Ġ= Ġsus pended Stack s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Scripts . values . forEach Ġ{ Ġscript : ĠActive Script Ġ-> Ġscript . resolve Stack ( stacks ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSt uff Ġthe Ġremaining Ġdata Ġinto Ġa Ġbuffer . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġremaining Ġ= Ġinput . limit () Ġ- Ġinput . position () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠARRAY SB LOCK Ġ= ĠByteArray ( remaining ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput [ ARRAY SB LOCK ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( input . position () Ġ== Ġcalculate Size ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pos Ġ= Ġ% d , Ġcalculated Ġ= Ġ% d ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . position (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Size () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġ" other " Ġstuff . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġother : ĠOther Data ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠARRAY S BUFFER Ġ= ĠPlatform ByteBuffer . wrap ( ARRAY SB LOCK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠARRAY S BUFFER . make Le () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ= ĠOther Data ( input , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠBuffer Under flow Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Data Ġ= Ġother ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . add Other Data ( other ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠP ap yr us Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtruncated Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠMSG Ġ= Ġ" Error Ġwhile Ġreading Ġthe ĠP ap yr us Ġsection Ġof Ġ${ ess Context . path . fileName }: Ġ${ ex . message } ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠP ap yr us Exception ( MSG , Ġex , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }