аЯрЁБс>ўџ ”ўџџџ Ž‘’џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџRoot EntryџџџџџџџџЃ+wТ|ƒбЃыsА К_—Т•@ContentsџџџџџџџџЇ SummaryInformation(џџџџџџџџџџџџ-џџџџџџџџџџџџўџџџ§џџџџџџџџџџџўџџџ§џџџ§џџџ §џџџ§џџџџџџџџџџџџџџџџџџџџџџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџRoot EntryџџџџџџџџЃ+wТ|ƒбЃыsА 5‰_—Т•@ContentsџџџџџџџџЇЧSummaryInformation(џџџџџџџџџџџџ-џџџџџџџџџџџџџџџџџџџџўџџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџхlхх 4щ>1єФ(…$$ˆšџџџ˜Ÿѕ' <ј@  Arialœ0       !"#$%&'()*+,-./012345џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџџџџџџџџџ§џџџ§џџџџџџџўџџџІџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџџЈЉЊЋЌЎџџџџЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ7lV•^tKфЉSфЉS”ќ“œ0 \94К“1Ф(…$$џџџPлѕ' <ј@  Arialœaџџџџ0 €Ре01HДЄq`ыАџџџџ1`|ВА8,•aџџџџ €Ре01E•­ +94’{1Ф(…$$џџџбѕ' <ј@  Arialœ0 л94pW1Ф(…$$џџџЈЫѕ' <ј@  Arialœ0РМzрЊz Нz z№І0Нzфv№kцyцy0Нz№ёz Р94NA1Ф(…$$џџџpФѕ' <ј@  ArialР`їœ0O€p‘ДаіЈq €Д@MЕУДаЄБp‘ДвР‘ўpџp‘ДРІД  948#1Ф(…$$џџџрКѕ' <ј@  Arial€Ў1РœE$ѕ—1œe0аdpyАApжаy1`єє—єє—рАzаy10Ь?мє—{ай ƒ94ЪБ1Ф(…$$ˆšџџџ€Ÿѕ' <ј@  Arialœ0 :4„q1Ф(…$$џџџ fѕ' <ј@  Arialœ0 t?4­Œ1Ф(…$$џџџРJѕ' <ј@  Arialœœ0hh ў@ўћсœop0o—шАўЈўрќрЬ›шАўvw т@41џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџФ(…$$ˆ*џџџ8ѕ' <ј@  Arialœ0 СD4R11Ф(…$$ˆšџџџИѕє' <ј@  Arialœ$ 0 7ДцN,і“Ќ7ДZ^№ѕ“И7ДLœ$Ф7Дџџџџ а7Д$м7Д Iœш7Дџџџџє7ДMœ$8Д ‘8ДцN oI4 ј1Ф(…$$џџџ рє' <ј@  Arialижњ(зњxзњШзњињhињИињœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ$џџџџ Hœ$ 7Kџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџр…ŸђљOhЋ‘+'Гйр…ŸђљOhЋ‘+'Гй0§АИдє@LX l x „  œЈАИР€ирш№фRailway CrossingSDL-2000 Design Contest Jens Brandt/railway crossing, sam 2002, sdl design contest Jens Brandt794@Аc[СИ@P,ЄфјС@аџ!—Т@р'T)бС*Cinderella SDLџџџ Scope units & errors" Scope units" MSC control"All"Document structure"Pagination & document structure"Errors"Empty"Default" Communication" Instances"States & Input"l а    "s4t4Х4œ44J4K4Ш4Щ4Ъ4Ы4-4.4/404142434445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4є4ѕ4і4E4F4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}4~44€44‚4ƒ4„4…4†4‡4ˆ4‰4Š4‹4Œ44С4Т4У4Ф4Х4Ц4Ч4Ш4“4”4•4–4—4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4§4ќ4ћ4њ4љ4?4@4U4V4W4X4Y4Ц4Ч4Ш4Щ4Ъ4Ы4Ь4Э4Ю4Я4а4б4в4г4д4е4ж4з4и4й4к4л4м4н4о4п4р4с4т4у4ф4х4ц4G4H4N4I4J4K4L4M4У4Ф2O4P4А4Б4В4Г4Œ44Ž44­44Ќ4‘4’4“4”4v4w4x4y4X4Y4Z4[4\4]4^4z4{4ц4ч44ш4щ44ъ4ы4Ь4Э4Ю4Я4а4б4u4v4w4x4y4z4{4|4}4~44€44‚44434241404Q4R4в4г4Щ4Ъ4Ы4Ь4Э4Ю4Я4а4б4в4г4д4е4ж4з4и4й4к4л4м4н4о4п4р4с4т4у4ф4х4ц4ч4ш4 4Ё4Ђ4Ѓ4І4Ї4Ј4Љ4ь4э4ю4я4L4M4N4O4P4Q4R4S4T4U4љ4њ4ћ4ќ494:4;4<4=4>4?444444444Є4Ѕ2О4Н4М4Л4К4П4Й4И4З4Ж4Е4Д4Г4В4Б4А4Р4Џ4Ў4­4Ќ4Ћ4Њ4С4644Т4У44Ф4Х4Ц4Ч4Ш494:4;4<444S4T4/4.4-4U4V4W4,4+4*4X4Y44Z4)4(4'4&4%4[4\4$4#4"4!4 4]4^4444_4`4a4444b4c4444d4e4f4g4h4i444j4k4l444m4n4o444p4ž4Ÿ4a44 4 4 4)4(4 4д4q4r2№4ё4ђ4ѓ4є4ѕ4і4ї4ј4љ4њ4ћ4ќ4§4ў4џ4444444 44'4&44е4ж4з4и4й4к4л4м4н4о4п4р4с4т4у4ф4х4ц4ч4ш4щ4444%4$4444#4"44ъ4ы4ь4э4V4W2r4q4p4o4n4s4m4l4k4j4i4h4g4f4e4d4c4b4t4u2ˆ4‡4†4…4„4‰4ƒ4‚44€44~4}4Š4‹2Њ4Љ4Ј4Ї4І4Ћ4Ѕ4Є4Ѓ4Ў4Џ2Ь4Ы4Ъ4Щ4Ш4Э4Ч4Ц4Х4Ф4У4Т4С4Р4П4О4Н4М4Л4К4Й4И4З4Ж4Е4Д4Ђ4Ё4 4ю4я4ѕ4№4ё4ђ4ѓ4є4Ц4Ч2і4ї4ј2,2I2х2 44444!444444ф4у4т4с4р4п4о4н4м4л4к4й4и4з4ж4е4д4г4в4б4а4Я4Ю44Ф4У4Т4С4Р4П4О4Н4Л4Ќ4­4Џ4А4Б4В4Г4Д4К4Е4Ж4З4И4Й4І4Ї2Ў4Ћ4Њ4Љ4М4Ѕ4Є4Ѓ4Ђ4Ё4 4Ÿ4ž44œ4›4š4™4˜4—4–4•4”4“4’4‘444Ž44Œ4‹4Š4‰4ˆ4‡4Х4†4…4Ј4`4_4|44œ4›4š4™4˜4—4–4•444444444*4+4џ4ў4§4„4ƒ4 4 44 4 4 444l4m24Ю4Я4а4б4в4г4д4ј4ї4і4A4B4C4D2e2c4b4a4`4_4d4^4]4\4[4Z4™4š4›4œ44ž4Ÿ4 444 4f4{4g4h4z4i4j4е44ж4з4и4й4к4л4м4н44ѓ4є494ѕ4і4ї4ј4љ4њ4ћ4ќ4§4ў4џ44444444п4р4с2Ё4Ђ4Ѓ4Є4Ѕ4І4Ї4Ј4Љ4Њ4Ћ4Ќ4­4Ў4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4!4"4#454$4%4&4'4(4)4*4+4,4-4.4/40414243444m4n4o4p4Џ4q4.4/4046414243444544282ў4O4N4M4L4K48494:4J4I4H4G4F4;4<4=4>4?4E4@4A4B4C4D4џ4a4`4_4^4]444444 44 4 4 4 4422r4s4y4t4u4v4w4x4_4`2|2272T4U4[4V4W4X4Y4Z442i4j4k2U4V4\4W4X4Y4Z4[45462=4>2я4ю4э4ь4ы4№4ъ4щ4‘4’2Р2О4Н4М4Л4К4П4Й4И4З4Ж4<4;4b4c4d4e4f444ё4ђ4ѓ4є4ѕ4Е4Д4Г4В4Б4А4Ž4:47444\4]4^4_4`44 4 4a4b4c4d4 4e4 4 44444f4g4h4l44444444 4 4 4 4 4k4о4A4@4?4>4=4-4,4+4*4)4(4'4&4%4$4#4^4]4\4[4Z4Y4X4W4V4U4T4S4R4Q4P4O4N4M4L4K4J4I4H4G4F4E4D4"474!4e46454P4Q4R4S4T48474g4h4i4j4k4Э4Ь4Ы44Ъ44Щ44434241404/4.4-442'4&4%4$4#4(4"4!4 4444444)4444*44+44,444ђ4ё44№4я4ю4˜4444444C4B4A4@4э4ь4ы4ъ4щ4ш4ч4ц4х4ф4у4т4d4c4 44b4a484ƒ4„24œ4›4š4™4ž4˜4—4–4•4”4“4’4‘444Ž44Œ4‚444€444~4}4‹4Š4‰4ˆ4‡4†4…4Ÿ4"4#2!4 4C4B4A4@4?4D4>4=4<4;4:494847464544434241404/4.4-4,4+4*4)4(4'4&4%4E4$4F4 4 4 44444444444444444ђ4ѓ2ё4№4 4 444444444я4ю4э4ь4ы4ъ4щ4ш4ч4444џ4ў4§4ќ4ћ4њ4љ4ј4ї4Љ4Њ4Ћ4Ќ4­4Ў4Џ4А4Б4В4Г4Д4Е4Ж4З4И4Й4К4Л4М4Т4Н4О4П4Р4С4š4›2™4˜4Ј4Ї4І4Ѕ4Є4Ѓ4Ђ4Ё4 4Ÿ4ž4q4r4s4t4—4–4n4o2”4“4’4‘44•44Ž44Œ4‹4Š4‰4ˆ4‡4†4…4„4ƒ4‚44€44~4}4|4{4z4y4x4w4v4u4p4l24srM&t›ФџџCSDLLine№х# џџџџџџџџK4tr tracks:=toDo;‰sФџџ CSDLSymbollсДџџџxž# <ј@  Arial€ˆђаˆђ ‰ђp‰ђР‰ђŠђ`ŠђœX/‚№nѕ0+1јь@z/‚N0А/Pђ‚a|а†fѕР/Ш‚71ˆьŒK4ХФM&соФ€qТq `O# qТq џџџџџџџџyK4œ›M&ЏЌФ€АhАшN# АhАџџџџџџџџxK4›M&ЙЖФ€lhlЙ(N# lhlЙџџџџџџџџwK4JIM&кмФ€hр€#  hџџџџџџџџdK4KIM&ижФ€uuh@Œ€#  uuhџџџџџџџџcK4ШЧM&ЫфФ€ЙдЙншр‚# ЙдЙнџџџџџџџџbK4ЩЧM&ЪчФ€%д.нИц€# .д.н%н%нџџџџџџџџaK4ЪЧ0trackTbl(track).count:= trackTbl(track).count-1шЩФ€ АRдџџџpS‚! <ј@  Arialœ0_K4ЫЧ0trackTbl(track).count:= trackTbl(track).count+1хШФ€•Андџџџ0Ь€! <ј@  Arialœ0`K4-,8null.Ф€Ћ;НM $jџџџИdї#<ј@  Arialœ0KK4.,M&18-Ф€uMЯя@dї# ™MЯMЯцuцuяџџџџџџџџ8K4/,[else0Ф€~_Ђq $jџџџШcї#<ј@  Arialœ0,JK40,M&1</Ф€u_uzPcї# u_uzџџџџџџџџ9K41,train2.0Ф€Q;™_џџџиbї! <ј@  Arial@…/…/р…/0†/€†/а†/ ‡/œшa‘јЏ0+А/И_ŒaI˜‹ќ[2(x‡S(А0і‰Pў7А/И_Œaa:K42,M&61Ф€uu;`bї#  uu;џџџџџџџџ;K43,M&:6Ф€uиuѓшaї#  uиuѓџџџџџџџџK46,trackTbl(track).sight:=train;324Ф€Qѓ™џџџ€`ї! <ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ?K47,M&<8Ф€užuя`ї# užuяџџџџџџџџ@K48, -.7Ф€Qя™џџџˆ_ї! ˆ$FјP H1а!Fа!Fа!Fh!F<ј@  Arialœ0EK49,M&;:Ф€u™uДџџџ_ї# u™uДџџџџџџџџFK4:,inSight(track,train)93>Ф€QД™иџџџ˜^їЁ QД™Д™иQиjЦ<ј@  Arialœ€cC0GK4;, *9Ф€Qu™™џџџ ^ї! И"Fр…ŸђљOhЋ‘+'ГйpК'l pК'l X+lˆ F<ј@  Arialœ0X Wh]]p~Wh]]X Wа WœT…@c[x/HK4<,:trainSignal(trackTbl(track).sig) to trackTbl(track).sight07@Ф€Qz™žџџџЈ]ї! Qz€z™Œ€žQž<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџIK4=,#handover requested>Ф€_Дниџџџ0]ї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0DK4>,M&=:Ф€™Ц_ЦИ\ї# ™Ц_ЦџџџџџџџџCK4?,#<send signal status to train which is now in range of sight@Ф€_qнЇџџџ@\ї# <ј@  Arialижњ(зњxзњШзњињhињИињœxмњhнњ0XоњЈоњјоњHпњшпњ8рњˆрњирњ(сњxсњШсњтњ€тњатњ уњpуњРуњфњ`фњАфњхњ!cl0P BK4@,M&?<Ф€™Œ_ŒШ[ї# ™ŒЂŒЂŒ_ŒџџџџџџџџAK4B,cФ€[-v= $jџџџиZї#<ј@  Arialœ§' 0ј@  ArialhВРœ02(4)6K4єѓM&ѕ Ф€~Ђ~ЋWї# ~Ђ~Ћџџџџџџџџ K4ѕѓtr:=call regularTracks;ієФ€Z~ЂЂџџџWї! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяK4іѓM&ѕФ€~u~~ Vї# ~u~~џџџџџџџџK4EDM&FNФ€Ћ7и7(Vї# Ћ7и7џџџџџџџџ‘I4FD##all waiting cars pass the crossingEФ€и%DIџџџАUї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0I4feM&gqФ€cuc‡8Uї# cuc‡џџџџџџџџI4ge detectingfФ€?Q‡uџџџРTї! Аiр…ŸђљOhЋ‘+'ГйpК'l pК'l X+l<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0h ?а2ŽI4heM&jtФ€c c.џџџHTї# c c.џџџџџџџџ|I4ieM&nmФ€cc)џџџаSї# cc)џџџџџџџџ}I4jemanyCarsWaitingxhФ€?ц‡ џџџXSї! ?цnц‡јn ? <ј@  Arialœ0HL ˆv2˜љ1@j1Pњ/~I4ke8 thresholdlФ€lMЂ_ $jџџџрRї#<ј@  Arialœ€ф=0љ5рО4 '8p1ˆI4leM&mrkФ€cMchџџџhRї# cMchџџџџџџџџI4mecarsizlФ€?)‡Mџџџ№Qї! <ј@  Arialœ0r4X–€I4ne cars:=cars+1;‚i}Ф€?ѓ‡џџџxQї! <ј@  Arialœ0ˆ.2I4oeM&tpФ€cRcdџџџQї# cRcdџџџџџџџџ‚I4pe -oФ€?d‡ˆџџџˆPї! рц?Ач? 0„?ˆж;— 0„?—X+lРж;€Ач?рц?<ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџƒI4qet1f€Ф€?‡‡ЋџџџPїЁ ?‡‡‡‡Ћ?ЋX™<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ р ‘ œ#цN,і“,œ#Z^№ѕ“8œ#Lœ$Dœ#џџџџ Pœ#$„I4re carsWaitinglsФ€?h‡Œџџџ˜Oї! ?hnh‡znŒ?Œ<ј@  ArialœBœџџџџ0$џџџџDœ$џџџџEœ%џџџџ ‘`’#"O,і“l’#z№ѕ“x’#Lœ$„’#џџџџ ’#$…I4seM&ruФ€cŒcЇџџџ Oї# cŒcЇџџџџџџџџ†I4teset(t1);„vhoФ€?.‡RџџџЈNї! <ј@  Arialœ$ 0 7ДцN,і“Ќ7ДZ^№ѕ“И7ДLœ$Ф7Дџџџџ а7Д$м7Д Iœш7Дџџџџє7ДMœ$8Д ‘8ДцN‡I4uecarszsxvФ€?Ї‡Ыџџџ0Nї! <ј@  Arialœ0r4X–{I4veM&utwФ€cЙЯ.ИMї# ‡ЙЯЙЯ%c%c.џџџџџџџџzI4we[elsevФ€ЇДЙ $jџџџ@Mї#<ј@  Arialœ0‰I4xeM&ujyФ€cЫcцШLї# cЫcцџџџџџџџџyI4ye8 manyThresholdxФ€lЫЦн $jџџџPLї#<ј@  Arialœ0h ?а2ŠI4zeM&mu{Ф€c;ЯЇиKї# ‡;Я;ЯžcžcЇџџџџџџџџxI4{e[elsezФ€)Д; $jџџџ`Kї#<ј@  Arialœ0pК'lщщ( @щuŽl‹I4|e#approaching car must wait}Ф€hѓТџџџшJї# <ј@  Arialижњ(зњxзњШзњињhињИињœFœџџџџ0$  ‘Рнйb`њ“Ьнй‚№ѕ“инйџџџџ фнй$№нйMœќнйџџџџойJœ$ойџџџџ ой$wI4}eM&|nФ€‡hpJї# ‡hџџџџџџџџvI4~e#too many cars are waitingФ€hЇТЫџџџјIї# <ј@  Arialижњ(зњxзњШзњињhињИињœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџuI4eM&~uФ€‡ЙhЙ€Iї# ‡ЙhЙџџџџџџџџtI4€eM&qФ€cЋcНIї# cЋcНџџџџџџџџsI4e gateClosed€„‚Ф€?Н‡сџџџHї! <ј@  ArialhЬ/ИЬ/Э/XЭ/ЈЭ/јЭ/HЮ/œ$ 0 7ДцN,і“Ќ7ДZ^№ѕ“И7ДLœ$Ф7Дџџџџ а7Д$м7Д Iœш7Дџџџџє7ДMœ$8Д ‘8ДцNrI4‚eM&nƒФ€cсcѓHї# cсcѓџџџџџџџџqI4ƒe8true‚Ф€lсѓ $jџџџ Gї#<ј@  ArialœBœџџџџ0$џџџџDœ$џџџџEœ%џџџџ ‘`’#"O,і“l’#z№ѕ“x’#Lœ$„’#џџџџ ’#$ŒI4„eM&t…Ф€cЯ.(Gї# ‡ЯЯ%c%c.џџџџџџџџpI4…e8false„Ф€НДЯ $jџџџАFї#<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ р ‘ œ#цN,і“,œ#Z^№ѕ“8œ#Lœ$Dœ#џџџџ Pœ#$I4‡ecФ€d-= $jџџџРEї#<ј@  Arialœ0r4X–2(2)nI4СРM&ШкФ€cMchxBї# cMchџџџџџџџџCI4ТРM&еШФ€cc)Bї# cc)џџџџџџџџBI4УРM&ФШФ€‡;ДЫˆAї# ‡;;ЫДЫџџџџџџџџ@I4ФР#5cars are not allowed to pass while closing the gateУФ€ДА2цџџџAї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0?I4ХРM&ЧЬФ€•M•h˜@ї# •M•hџџџџџџџџ>I4ЦРM&ЪЭФ€•Ц•ъ @ї#  •Ц•ъџџџџџџџџ=I4ЧРgateOpen via S3ЮХФ€q)ЙMџџџЈ?ї! q) )Й; MqM<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0ї# lъlџџџџџџџџ:I4”’M&Ђ—Ф€lДlЦ@>ї# lДlЦџџџџџџџџ9I4•’M&–ЖФ€ЦШ=ї# Цџџџџџџџџ8I4–’#initially the gate is closed•Ф€Ц )џџџP=ї# <ј@  Arialижњ(зњxзњШзњињhињИињœENDSe; 0OCESS; CONNECT CarChannel AND CarSimulatorERailroadCrossingAname152__i; ENDBLOCK; SYNONYM nrOfTracks Integer=1; 7I4—’gateClosed via S3”“Ф€HЦъџџџи<ї! HЦwЦиwъHъ<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0HL ˆv2˜љ1@j1Pњ/5I4GDM&PLФ€ž žd`<ї# ž ždџџџџџџџџ4I4HDM&RPФ€žЫžцш;ї# žЫžцџџџџџџџџ3I4IDM&NMФ€‡I‡dp;ї# ‡I‡dџџџџџџџџ2I4JDM&ONФ€‡ ‡%ј:ї# ‡ ‡%џџџџџџџџ1I4KDM&TOФ€‡Ы‡ц€:ї# ‡Ы‡цџџџџџџџџ0I4LD -GФ€zdТˆџџџ:ї! рц?Ач? 0„?ˆж;— 0„?—X+lРж;€Ач?рц?<ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџ/I4MD -IФ€cdЋˆџџџ9ї! рц?Ач? 0„?ˆж;— 0„?—X+lРж;€Ач?рц?<ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџ.I4NDcars:=0JIEФ€c%ЋIџџџ9ї! <ј@  Arialœ0ˆ.2-I4ODgateClosed:=falseKJФ€cцЋ џџџ 8ї! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0r4X–*I4PDgateClosed:=trueHGФ€zцТ џџџ(8ї! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0r4X–$I4QDM&ZRФ€‡ƒžЇА7ї# ‡ƒ‡•ž•žЇџџџџџџџџэH4RD gateClosedQHФ€zЇТЫџџџ87їЁ zЇТЇТЫzЫ“Й<ј@  Arial…/P…/ …/№…/@†/†/р†/œЈ[~˜ƒВ0`ƒВ~Ъ˜щ(%Вx"|ьH4SDM&ZTФ€‡ƒ‡ЇР6ї# ‡ƒ‡ЇџџџџџџџџыH4TDgateOpenSKФ€cЇЋЫџџџH6їЁ cЇЋЇЋЫcЫ|Й<ј@  Arial…/P…/ …/№…/@†/†/р†/œ0ъH4§>`?name620ќФ€љw‰ $jџџџа5ї#<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџщH4ќ>$§@CФџџ CSDLConnector№nіt $jџџџX5ї#шH4ћ>`?name619њФ€nw’‰ $jџџџр4ї#<ј@  Arialœ`Хќ€Уќ0шФќДќјРќ€РќРќˆПќ˜Оќ ОќЈНќ0Нќ@МќШЛќPЛќиКќ`КќшЙќpЙќјИќ€ИќЗќЗќ Жќ(ЖќАЕќИќИМќПќчH4њ>$ћ@‘Фe€enkt $jџџџh4ї#цH4љ>`S3@Ф€)V;h $jџџџ№3ї#<ј@  Arialœ$ 0 7ДцN,і“Ќ7ДZ^№ѕ“И7ДLœ$Ф7Дџџџџ а7Д$м7Д Iœш7Дџџџџє7ДMœ$8Д ‘8ДцNхH4?>N (gateStatus)@Ф€zVŒџџџx3ї# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœЬ?(Wќ0џџџќX+lc|џџџџИ› Ќ `‚\jи}—ЛфH4@>M!њќљ?Фџџ CSDLChannelѓqhq3ї#  hqѓqџџџџуH4UDM&XVФ€‡и‡ъџџџˆ2ї# ‡и‡ъџџџџџџџџоH4VD detectingUФ€cъЋџџџ2ї! Jœ$ЄЙ#џџџџАЙ#$МЙ#RœШЙ#џџџџдЙ#Qœ$рЙ#џџџџџџџџ<ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџпH4WDM&YXФ€‡Ђ‡Дџџџ˜1ї# ‡Ђ‡ДџџџџџџџџрH4XDset(t1);WUФ€cДЋиџџџ 1ї! <ј@  Arialœ$ 0 7ДцN,і“Ќ7ДZ^№ѕ“И7ДLœ$Ф7Дџџџџ а7Д$м7Д Iœш7Дџџџџє7ДMœ$8Д ‘8ДцNсH4YD WФ€c~ЋЂџџџЈ0ї! сџџџџсџџџџсџџџџџџџџ#с<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџтH4ЦФM&ЧЬФ€c‘cЌ00ї# c‘cЌџџџџџџџџ€H4ЧФ switchCarsЪЦФ€?m‡‘џџџИ/ї! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяH4ШФM&гЯФ€Я‘Яы@/ї# Я‘Яыџџџџџџџџ~H4ЩФ80ЪФ€l@~R $jџџџШ.ї#<ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010Apя}H4ЪФM&ЮЧЩФ€c.cmP.ї# c.cmџџџџџџџџ|H4ЫФM&ЬЭФ€cаcыи-ї# cаcыџџџџџџџџ{H4ЬФset(t1)ЦЫФ€?Ќ‡аџџџ`-ї! <ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџzH4ЭФ carsЫФ€?ы‡џџџш,ї! АŠx/<ј@  Arialœ0yH4ЮФcall totalCountжЪаФ€? ‡.џџџp,ї! <ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџxH4ЯФ fastШФ€Ћыѓџџџј+ї! АŠx/<ј@  Arialœ0wH‚§џџџƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ4аФM&ЮгбФ€‡Яmџџџ€+ї# ‡ЯЯmџџџџџџџџvH4бФ[elseаФ€и7ќI€џџџ+ї#<ј@  Arialœ0џџџџApє№—є№—&5ˆєкXєЪ4HєџџџџA0д№—д№— , p uH4вФ trainsеФ€?_‡ƒџџџ*ї! ЪУр…ŸђљOhЋ‘+'ГйpК'l pК'l X+l8ЧУ<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0tH4гФ switchFastаШФ€Ћmѓ‘џџџ*ї! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяsH4дФredefined carsWaitingежФ€?ž‡Тџџџ )їЁ ?ž‡ž‡Т?ТXА<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ$џџџџ Hœ$rH4еФM&вдФ€cƒcž()ї# cƒcžџџџџџџџџqH4жФM&дЮФ€cТc А(ї# cТc џџџџџџџџpH4зФM&ихФ€q‘qЌџџџ8(ї# q‘qЌџџџџџџџџoH4иФ switchCarsнзФ€Mm•‘џџџР'ї! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяnH4йФ[elseкФ€цI [€џџџH'ї#<ј@  Arialœ0џџџџApє№—є№—&5ˆєкXєЪ4HєџџџџA0д№—д№— , p mH4кФM&олйФ€•ныџџџа&ї# •нныџџџџџџџџlH4лФ -кФ€ЙыџџџX&ї! АŠx/<ј@  Arialœ0kH4мФ80нФ€zIŒ[€џџџр%ї#<ј@  Arialœ0jH4нФM&оимФ€q.qmџџџh%ї# q.qmџџџџџџџџiH4оФcall totalCountХкнфФ€M •.џџџ№$ї! <ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџhH4пФ carsцФ€Mы•џџџ$ї! АŠx/<ј@  Arialœ0fH4рФM&тсФ€qƒqžџџџ˜"ї# qƒqžџџџџџџџџcH4сФredefined trainLeaving(track)рХФ€Mž•Тџџџ "їЁ Mž•ž•ТMТfА<ј@  Arialœ0bH4тФ fastрФ€M_•ƒџџџЈ!ї! р?јx/0иD<ј@  Arialœ0aH4уФ#9total number of trains (all tracks) between the sensorsфФ€7џџџ0!ї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0`H4фФM&уоФ€•И ї# •žžџџџџџџџџ_H4хФset(t1)зцФ€MЌ•аџџџ@ ї! <ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџ^H4цФM&хпФ€qаqыШї# qаqыџџџџџџџџ]H4HФcФ€d-= $jџџџиї#<ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010Apя1(1)ТD4NФ`FastTrainsPrecedenceControllerФ€y-= $jџџџ`ї#<ј@  Arialœ0ШD4IФ_Ф€y-y- $jџџџшї#<ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџУD4JФ\ Service TypeФ€--t= $jџџџpї#<ј@  Arialœ0ФD4KФUФ€---- $jџџџјї#<ј@  Arial œBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ$џџџџ Hœ$ХD4LФZФ€---- $jџџџ€ї#<ј@  Arialœ0ЦD4MФRinherits BasicControllerФ€-FЃV $jџџџї#<ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяЧD4УmFastTrainsPrecedenceControllerPФФ€VъТџџџшї! <ј@  Arialœ0БD2ФmФNLJKIMGHХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђ !"GHIJKLMNУ4Om#$regular trains wait for fast trainsPФ€цъˆџџџpї# <ј@  Arialижњ(зњxзњШзњињhињИињœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџЎD4PmM&OУФ€Тќцќјї# Тќцќџџџџџџџџ­D4АЏM&БСФ€ЋŒqŒ€ї# ЋŒДŒДŒqŒџџџџџџџџ&D4БЏ#.add the number of trains between the sensorsАФ€qqнЇџџџї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0HќА‚šp:’@Јj§Х%D4ВЏM&ГЗФ€Ћqї# Ћqџџџџџџџџ$D4ГЏ#for all tracksВФ€qѓЙџџџї# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ#D4Œ‹M&—Ф€ЂНVН ї# ЂНVНџџџџџџџџќC4‹#set all stopping signalsŒФ€VЋдЯџџџ(ї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0`„šЈџћC4Ž‹M&˜Ф€ЂќVќАї# ЂќVќџџџџџџџџњC4‹#%wait until all signals have been setŽФ€Vъдџџџ8ї# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ а‘€?Bv,і“Œ?BЪ4№ѕ“˜?BJœ$Є?BџџџџА?B$М?BRœШ?Bџџџџд?BQœ$р?BџџџџљC4­‹8falseФ€?Œcž $jџџџРї#<ј@  Arialœџџџџ0Wmџџџџ№WmА/и—mX@n@Vmш/АZk`џџџџцC4‹M&’˜­Ф€?с~ƒHї# Zƒ?ƒ?с~с~ъџџџџџџџџхC4Ќ‹8true‘Ф€‡АЋТ $jџџџаї#<ј@  Arialœ0HќА‚šp:’@Јj§ХфC4‘‹M&’ ЌФ€~•~ЫXї# ~•~ЫџџџџџџџџуC4’‹tr=trackLst and st=red•‘Ф€ZqЂ•џџџрї! <ј@  ArialhЬ/ИЬ/Э/XЭ/ЈЭ/јЭ/HЮ/œ0`„šЈџтC4“‹'DCL tr TrackList; DCL st SignalStatus;Ф€нQd‡џџџhї# нQZQd[Z[ZQd[d‡н‡<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџНC4”‹M& ЂФ€~я~№ї# ~я~џџџџџџџџМC4vuM&w|Ф€Ђ)xї# Ђ)џџџџџџџџЛC4wu#clear all stopping signalsvФ€)ѓƒџџџї# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџКC4xuM&y~Ф€ЂЦ)Цˆї# ЂЦ)ЦџџџџџџџџЙC4yu# open the gatexФ€)Дƒиџџџї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0`„šЈџИC4XWM&Y`Ф€z_z˜ї# z_zџџџџџџџџЗC4YW##finally clear all stopping signalsXФ€_hЫŒџџџ ї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0`„šЈџЖC4ZWM&[iФ€ќ_ќЈї# ќ_ќџџџџџџџџЕC4[W#$wait until the gate has been closedZФ€_ъЫџџџ0ї# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџДC4\WM&]cФ€Н_НИї# Н_НџџџџџџџџГC4]W#close the gate\Ф€_ЋЫЯџџџ@ї# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ а‘€?Bv,і“Œ?BЪ4№ѕ“˜?BJœ$Є?BџџџџА?B$М?BRœШ?Bџџџџд?BQœ$р?BџџџџВC4^WM&`fФ€lŒlЇШ ї# lŒlЇџџџџџџџџ{C4zuM&|Ф€~~;P ї# ~~;џџџџџџџџhC4{uM&~|Ф€~и~ѓи ї# ~и~ѓџџџџџџџџgC4цхM&чыФ€я я` ї# я яџџџџџџџџQA4чх#safe to open the gateцФ€ нžџџџш ї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0PA4х[elseшФ€ѓ $jџџџp ї#<ј@  Arialœ0OA4шхM&ыщФ€ясRј ї# ясясRџџџџџџџџNA4щх -шФ€НRvџџџ€ ї! АŠx/<ј@  Arialœ0MA4х80ъФ€u‡ $jџџџ ї#<ј@  Arialœ0й€Жї№]њ c4LA4ъхM&ыѓФ€ll ї# llџџџџџџџџKA4ыхcall totalCountђшъцФ€Hнџџџ ї! <ј@  ArialhЬ/ИЬ/Э/XЭ/ЈЭ/јЭ/HЮ/œ!01Ф}„$$џџџ€єќ' <ј@  ArialJA4ЬЧM&ЭсФ€ъЇц ї# ъЇѓЇѓццџџџџџџџџIA4ЭЧ#^sensor signals in the next threshold time units will not be passed to theCentralControllerЬФ€Йqџџџ(ї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0HA4ЮЧM&ЯцФ€яѓ[_Аї# R_[_[ я яѓјѓџџџџџџџџGA4ЯЧ#4no sensor signal for at least threshold time unitsЮФ€јиdџџџ8ї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0FA4аЧM&бгФ€яRdРї# IRRIяIяdјdџџџџџџџџEA4бЧ#wake up theSignalControlаФ€јRdvџџџHї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0DA4urM&vœФ€Д_с_аї# Д_с_џџџџџџџџCA4vr#$for all signals in the list lstCopyuФ€сM;qџџџXї# <ј@  Arialижњ(зњxзњШзњињhињИињœФ0šˆџџџ`љќ' <ј@  ArialœBA4wrM&x”Ф€2.V.рї# 2.V.џџџџџџџџAA4xr#signal will be set laterwФ€Vž@џџџhї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0 С4оb@A4yrM&z™Ф€ДнVн№ї# ДнVнџџџџџџџџ?A4zr#signal can be setyФ€VЫžяџџџxї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0 4˜61­Фu„$?Ќ3>A4{rM&|ІФ€2%2ї# 2%2џџџџџџџџ=A4|r# set a signal{Ф€% mDџџџˆї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0>0lcќ<ј@  Arialœ0џџџ!X0lјџџџ"Arial<ј@ ї@4зР closeGateийФ€?Ћ‡ЯџџџxєіЁ ?Ћ‡Ћ‡Я?ЯXН<ј@  Arialœ0!X0lјџџџ"Arial<ј@  Arialі@4иРM&жзФ€ccЋџџџєі# ccЋџџџџџџџџѕ@4йРM&зеФ€cЯcъџџџˆѓі# cЯcъџџџџџџџџє@4кР closingСФ€?h‡Œџџџѓі! ˆx/# X0lа‘џџџџ=Vl PpК,l<ј@  Arialœ 0!+82=l PpК,l pК,l pК,l ѓ@4лРM&моФ€ќќ)џџџ˜ђі# ќќ)џџџџџџџџё@4мРgateOpen via S2нлФ€иъ џџџ ђі! иъъ ќи<ј@  Arialœ0œX0l0щј4Ch5qœC„CрuЈCCШwДCœCИxРCЈC№@4нРM&пмФ€ќЯќъџџџЈёі# ќЯќъџџџџџџџџя@4оР -лФ€и) Mџџџ0ёі! џџџџћџџџџџџџџ€џџџџџџџџEс<ј@  ArialœBœџџџџ0$џџџџDœ$џџџџEœ$џџџџ №‘Fr,і“ Fžо№ѕ“FLœ$$Fџџџџ 0F$ю@4пРopenGateрнФ€иЋ ЯџџџИ№іЁ иЋ Ћ ЯиЯёН<ј@  Arialœ0Dœ%џџџџEœ$џџџџ А ‘а=:,і“м=~№ѕ“ш=Lœ$є=џџџџ >$ > Iœэ@4рРM&жпФ€cќЋџџџ@№і# cc™ќ™ќЋџџџџџџџџь@4тРcФ€[-v= $jџџџPяі#<ј@  Arialœ02(2)с@4 |M&ЁЄФ€яD Dьі# яD Dџџџџџџџџ‚@4Ё|#$calculates minimum braking distance Ф€ 2vVџџџыі# <ј@  Arialижњ(зњxзњШзњињhињИињœЬт0`}тј у@4Ђ|M&ЃрФ€я ыі# я џџџџџџџџ€@4Ѓ|#)calculates position, speed, accelerationЂФ€ ќv џџџ ъі# <ј@  Arialижњ(зњxзњШзњињhињИињœ€ї0 c41ФQ„$$šˆџџџ№\§' @4ІЅM&ЇЏФ€ЂzDz(ъі# ЂzDzџџџџџџџџ~@4ЇЅ#simulate brakingІФ€DhдŒџџџАщі# <ј@  Arialижњ(зњxзњШзњињhињИињœ0}@4ЈЅM&ЉБФ€ЂDDD8щі# ЂDDDџџџџџџџџx@4ЉЅ#calculate braking distanceЈФ€D2дVџџџРші# <ј@  Arialижњ(зњxзњШзњињhињИињœ0№-­w@4ьхM&эіФ€Й ЙHші# Й Йџџџџџџџџ5@4эх#"manual open" requestьФ€ ЇžЫџџџачі# <ј@  Arialижњ(зњxзњШзњињhињИињœ04@4юхM&яќФ€Ц ЦXчі# Ц Цџџџџџџџџ1@4ях#"manual close" requestюФ€ Дžиџџџрці# <ј@  Arialижњ(зњxзњШзњињhињИињœ00@4LIM&MЎФ€žјАјhці# žјАјџџџџџџџџ@4MI#@returns total number of trains (all tracks) between the sensorsLФ€Ацd џџџ№хі# <ј@  Arialижњ(зњxзњШзњињhињИињœ0xюќ`њќшљќpљќјјќ€јќјќїќїќ іќ(іќАѕќ8ѕќрђќhђќxёќёќˆ№ќ№ќ˜яќ№ёќ@4NIM&OŠФ€‡R™Rxхі# ‡R™Rџџџџџџџџ @4OI#signals to red, open the gateNФ€™@;dџџџхі# <ј@  Arialижњ(зњxзњШзњињhињИињœ0@4PIM&QtФ€‡%™%ˆфі# ‡%™%џџџџџџџџ@4QI#open the gate, signals to greenPФ€™;7џџџфі# <ј@  Arialижњ(зњxзњШзњињhињИињœ0@4RIM&SVФ€‡ј™ј˜уі# ‡ј™јџџџџџџџџ@4SI# close the gate, signals to greenRФ€™ц; џџџ уі# <ј@  Arialижњ(зњxзњШзњињhињИињœ0@4TIM&UйФ€™ЋЦЋЈті# ™ЋЦЋџџџџџџџџ@4UI#standard behaviourTФ€Ц™2Нџџџ0ті# <ј@  Arialижњ(зњxзњШзњињhињИињœ0xюќ`њќшљќpљќјјќ€јќјќїќїќ іќ(іќАѕќ8ѕќрђќhђќxёќёќˆ№ќ№ќ˜яќ№ёќ@4љјM&њФ€™ЙќТИсі# ™ТЂТЂЙќЙџџџџџџџџц?4њј#;append track to track list, set speed information in tableљФ€ќЇžЫџџџ@сі# <ј@  Arialижњ(зњxзњШзњињhињИињœ0х?4ћјM&ќФ€™ЯќЯШрі# ™ЯќЯџџџџџџџџф?4ќј#7initially the gate is closed and all signals are greenћФ€ќНŒсџџџPрі# <ј@  Arialижњ(зњxзњШзњињhињИињœ0у?498M&:FФ€ЇhЇипі# ЇhЇџџџџџџџџЪ?4:8#train is passing second sensor9Ф€h• Йџџџ`пі# <ј@  Arialижњ(зњxзњШзњињhињИињœ0Щ?4;8M&<QФ€ъhъшоі# ъhъџџџџџџџџШ?4<8#train is passing first sensor;Ф€hи ќџџџpоі# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџЧ?4=8M&>SФ€ДhДјні# ДhДџџџџџџџџЦ?4>8#train at position (p1,p2)=Ф€hЂ Цџџџ€ні# <ј@  Arialижњ(зњxзњШзњињhињИињœ0џџџ!X0lјџџџ"Arial<ј@ Х?4?8F/* variables*/ DCL p1,p2 Real; /* position of the train */Ф€ЇHmџџџні# ЇHcHmRcRcHmRmЇ<ј@  Arialœ0їЈ/xF[Ф?4M&(Ф€2мі# 2џџџџџџџџУ?4#.create the first train (at an arbitrary time)Ф€2 ž.џџџмі# <ј@  Arialижњ(зњxзњШзњињhињИињœ0Т?4M& Ф€q2q лі# q2qџџџџџџџџЛ?4#%announce the track to the controllerФ€2_žƒџџџ(лі# <ј@  Arialижњ(зњxзњШзњињhињИињœ0К?4M&$Ф€Д2ДАкі# Д2ДџџџџџџџџЙ?4#get a unique track idФ€2ЂžЦџџџ8кі# <ј@  Arialижњ(зњxзњШзњињhињИињœ0И?4M&%Ф€ќz_zРйі# ќz_zџџџџџџџџ‘?4#maximum brake forceФ€_hнŒџџџHйі# <ј@  Arialижњ(зњxзњШзњињhињИињœ0?4Є| breakingDist  ЅФ€•2яVџџџ(иі! Ÿ2х2я<яLхVŸV•L•<<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0'4як1џФ„$6ššџџџ S§' e?2Ѕ| ЅПНЛМКОИЙІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСЄ4ОЅR returns RealФ€-FoV $jџџџАзі#<ј@  Arialœ0z?4НЅZФ€---- $jџџџ8зі#<ј@  Arialœ0y?4МЅUФ€---- $jџџџРжі#<ј@  Arial œ0x?4ЛЅ\ ProcedureФ€--n= $jџџџHжі#<ј@  Arialœ0w?4КЅ_Ф€s-s- $jџџџаеі#<ј@  Arialœ0v?4ПЅ` breakingDistФ€s-Е= $jџџџXеі#<ј@  Arialœ0{?4ЙЅcФ€[-v= $jџџџрді#<ј@  Arialœ01(1)u?4ЗЅДФ€ZЂДџџџ№гі! @Ўx/<ј@  ArialБњрБњ0Вњ€ВњаВњ ГњpГњœ0s?4ЖЅsp:=speed; dist:=0;ДВФ€ZЦЂъџџџxгі! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0r?4ЕЅ%/* variables */ DCL sp, dist Real;Ф€ТcIЂџџџгі# Тc?cIm?m?cImIЂТЂ<ј@  Arialœ0q?4ДЅM&ЗЖФ€~Д~Цˆві#  ~Д~Цџџџџџџџџp?4ГЅsp­ВЊАФ€ZќЂ џџџві! <ј@  ArialhЬ/ИЬ/Э/XЭ/ЈЭ/јЭ/HЮ/œ0o?4ВЅM&ЖГФ€~ъ~ќ˜бі# ~ъ~ќџџџџџџџџn?4БЅdist:=dist+sp;АЎЈФ€Z2ЂVџџџ бі! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0m?4АЅM&ГБРФ€~ ~2Јаі# ~ ~2џџџџџџџџl?4РЅ8>0АФ€‡ ™2 $jџџџ0аі#<ј@  Arialœ0|?4ЏЅsp:=sp+minAccel;Ў­ІФ€ZhЂŒџџџИЯі! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0k?4ЎЅM&БЏФ€~V~h@Яі# ~V~hџџџџџџџџj?4­ЅM&ЏГФ€?ѓ~žШЮі# ~Œ~ž?ž?ѓ~ѓ~ќџџџџџџџџi?4ЌЅЊЋФ€ЦžъТџџџPЮі! <ј@  ArialРЬњЭњ`ЭњАЭњЮњhЮњИЮњœ0h?4ЋЅ“distЌФ€ѓžА $jџџџиЭі#<ј@  Arialœ0g?4ЊЅM&ГЌСФ€Ђиž`Эі# Ђииžџџџџџџџџf?4СЅ[elseЊФ€ъ 2 $jџџџшЬі#<ј@  Arialœ0}?468redФ€сDѓV $jџџџpЬі#<ј@  Arialœ0d?4M&)%6Ф€‡)иhјЫі# ‡)и)иhџџџџџџџџc?4Т|M&УеФ€НЫќЫ€Ыі# НЫЦЫЦЫќЫџџџџџџџџБ>4У|#Rpossible to stop in front of the signal or handing over of signal already doneТФ€ќЇŒяџџџЫі# <ј@  Arialижњ(зњxзњШзњињhињИињœ0А>4lЂ/* SDL-2000 Design Contest 3rd SDL And MSC Workshop Specification of a Railway Crossing Jens Brandt (University of Kaiserslautern) May 11 2002 */Ф€?6)ќџџџЪі# ?66)@@6)@)ќ?ќ<ј@  Arialœ0Џ>4Ф|M&зеФ€™Ї™ЙЪі#  ™Ї™Йџџџџџџџџ[>4Х|M&ЦЭФ€VтЇт Щі# VтЇтџџџџџџџџZ>4Ц|#+create next train before leaving the trackХФ€Їа%єџџџ(Щі# <ј@  Arialœ0Y>4Ч|M&ШпФ€НъќъАШі# НъќъџџџџџџџџT>4Ш|#0update current acceleration, speed and positionЧФ€ќиŒќџџџ8Ші# <ј@  Arialœ0S>497M&:>Ф€нMMРЧі# нMMџџџџџџџџE>4:7#create next train9Ф€;m_џџџHЧі# <ј@  Arialœ 04ŠG1Фжƒ$$ˆ`џџџ8"' <D>4;7M&<JФ€~сѓсаЦі# ~сѓсџџџџџџџџC>4<7#position of previous train;Ф€ѓЯMѓџџџXЦі# <ј@  Arialœp<ћ0€ЅД€ЅД В§аШ§ц§ рдІ`ЌІ§<У§p<ћ ч§010В§pц§B>4/* general purpose procedures*/Ф€•QduџџџрХі# •QZQd[Z[ZQd[du•u<ј@  Arialœ* trmete0nonym fastSpeed Real=30; /* maximal speed of fast trains*/ synonym slowSpeed Real=20; /* maximal speed of?>4m/* type definitions */ /* signal status */ value type SignalStatus; literals red, green endvalue type; /* track identifier */ syntype TrackId=PId endsyntype; /* list of all tracks */ syntype TrackList=String(TrackId,Emptylist) endsyntype; /* information about a track */ value type TrackInfo struct speed Real; /* maximal speed */ count Integer; /* number of trains between the sensors*/ sight PId; /* trains which ist in range of sight of signal */ sig SignalStatus; /* signal status */ endvalue type; syntype TrackTable=Array(TrackId,TrackInfo) endsyntype;Ф€6QqјџџџhХі# 6QgQq[g[gQq[qј6ј<ј@  Arialœ0Y=4SmM&TїФ€ТZцZ№Фі# ТZцZџџџџџџџџу<4Tm#'basic functionality of all controllersSФ€цHˆlџџџxФі# <ј@  Arialœ0т<4/m`g5.Ф€Й;ЫM $jџџџФі#<ј@  Arialœ0 '4Ьй1мФжƒ$6ššџџџЋ<4.m$/V§џџџ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€іФe€ЖJМP $jџџџˆУі#Њ<4-m`S5VФ€dVvh $jџџџУі#<ј@  Arialœ0Ј<4UmN (gateControl)VФ€д2Dџџџ˜Ті# <ј@  Arialœ0€Жї№]њ c41Фжƒ$$ˆˆЇ<4VmM!.-UФk€ЙM Ті#  MЙMџџџџІ<4WmN(gateStatus),(carSensor)YФ€Z2ъDџџџЈСі# <ј@  Arialœ0“<4,m`g1+Ф€ќ;M $jџџџ0Сі#<ј@  Arialœ0pК'lЯ0сwpК'l`pК'l{<4+m$,YіФe€JP $jџџџИРі#z<4*m`S1YФ€ZVlh $jџџџ@Рі#<ј@  Arialœ0y<4XmN (gateControl)YФ€Q§™џџџШПі# <ј@  Arialœ0x<4YmM!+*XWФk€HMPПі#  MHMHw<4M%_ФџџCSDLCreateLineъDнDиОі#  нDъDџџџџd<4ZmN settingDone\Ф€Аqјƒџџџ`Оі# <ј@  Arialœ0;4)m`?name369(Ф€"ўF $jџџџшНі#<ј@  Arialœ0;4(m$)\qФe€ѕћ $jџџџpНі#;4'm`g4&Ф€ž_Аq $jџџџјМі#<ј@  Arialœ0;4&m$'\іФe€’e˜k $jџџџ€Мі#;4%m`S4\Ф€цАјТ $jџџџМі#<ј@  Arialœ0ˆ9$А­&xC}&шЗ ˆW$PЪўє;4[mN setSignals\Ф€д[цџџџЛі# <ј@  Arialœ0јЌ Э)№m1иЬџ@Z   "јž)џ:4\mM!&(%[ZФk€•hјЛі# •hјў:4$m`g2#Ф€2hDz $jџџџ Кі#<ј@  Arialœ<Ау0јПMˆ9ˆј-р/9 4ы:4#m$$^іФe€&e,k $jџџџ(Кі#ъ:4"m`?name339!Ф€Кўо $jџџџАЙі#<ј@  Arialœi0јПMƒ9и3 x4щ:4!m$"^ЦФe€БѕЗћ $jџџџ8Йі#ш:4 m`S2^Ф€иАъТ $jџџџРИі#<ј@  Arialœ0ч:4]mN(trainDetection)^Ф€ДqƒџџџHИі# <ј@  Arialœ0ц:4^mM!!# ]Фk€Дh)јаЗі#  Дј)hџџџџх:4m`?name310Ф€"44 $jџџџXЗі#<ј@  ArialœXf0"`]Э:4m$`qФe€+ 1 $jџџџрЖі#Ь:4m`S7`Ф€н@яR $jџџџhЖі#<ј@  Arialœ0Шё) €$рЫ:4_mN trainSignal`Ф€ƒыЫ§џџџ№Еі# <ј@  Arialœ0Ъ:4`mM!_Фk€_. xЕі#  ._џџџџЩ:4amNtrackAnnounce, inSightcФ€hЙТнџџџЕі# <ј@  Arialœ˜0њ0Ж:4m`g3Ф€hhzz $jџџџˆДі#<ј@  Arialœ0`b§шa§pa§ј`§€`§`§_§А:4m$cіФe€\ebk $jџџџДі#Џ:4m`S3cФ€MI_[ $jџџџ˜Гі#<ј@  Arialœ0Ў:4bmN trainSignalcФ€hˆАšџџџ Гі# <ј@  Arialœ0­:4cmM!baФk€_h_ЈВі#  _h_Ќ:4m`?name278Ф€К"о4 $jџџџ0Ві#<ј@  Arialœ0І:4m$eЦФe€Б+З1 $jџџџИБі#Ѕ:4m`S6eФ€сIѓ[ $jџџџ@Бі#<ј@  Arialœ0Є:4dmN (trainSensor)eФ€uIН[џџџШАі# <ј@  Arialœ Ћ203 еиЋ23зЌ23Ѓ:4emM!dФk€Д._PАі#  _Д.џџџџЂ:4fmN(gateStatus),(carSensor)jФ€T!ф3џџџиЏі# <ј@  Arialœ0i:4gmN%trackAnnounce, inSight, (trainSensor)mФ€h*.<џџџ`Џі# <ј@  Arialœ0h:4hmVjФ€<€`’ $jџџџшЎі#F€V€`Š`ˆV’F’<ˆ<Š<ј@  ArialœX90 /аб2H{'ˆ,Ш9h…1hЈ,9p:=`јP!'Ш99АЄА/0дќg:4imN (gateControl)jФ€QN™`џџџpЎі# <ј@  ArialœАу0јџџџ"ArialЉ2<ј@  Arialf:4m`g1jФ€6<HN $jџџџј­і#<ј@  ArialœџџџџАb0ЇШ+aџџџџ8L$pD§KxJ8T!џџџџ~ Аџ0h/Kџџџџ8š(иce:4m$Yj Фe€EK $jџџџ€­і#d:4jmM"fihФџџCSDLGateHHr­і#  HHrc:4kmVmФ€тew $jџџџЌі#ьeќeomќwьwтmтo<ј@  Arialœp/0(_˜_ш`@/ш88/x4`_а_XўИkА/ aX˜_(.b:4lmN trainSignalmФ€hWАiџџџЌі# <ј@  Arialœ0Ё X+lјџџџ"ArialРА2<ј@  Ariala:4m`g2mФ€M3_E $jџџџ Ћі#<ј@  Arialœ00ььыrФ[ќ<ј@  Arial…/P…/ …/№…/@†/†/р†/`:4m$`cem Фe€\b $jџџџ(Ћі#_:4mmM"glkФ|__rАЊі#  __r^:4nmVpФ€Zm~ $jџџџ8Њі#dmtm~w~utdZuZw<ј@  ArialœpК'l0 pК'l HЦъxWќџџџ(ф! X+lјџџџ\:4omN (gateControl)pФ€ˆ*а<џџџРЉі# <ј@  Arialœ 0Ч‡№^(_€‰ќ˜aM`џџџџј‡ќШaр– aTА/H‰ќaџџџџ[:4m`g3pФ€m3E $jџџџHЉі#<ј@  Arialœ`о203ШХ˜о2w3PХао2~3Z:4m$Vp Фe€|‚ $jџџџаЈі#Y:4pmM"onФ|iXЈі#  iџџџџX:4ž‹M&Ÿ Ф€ЂнVнрЇі# ЂнЋнЋнVнџџџџџџџџГ94Ÿ‹#3open the gate (C1: no trains between the sensors)žФ€VТдјџџџhЇі# <ј@  Arialижњ(зњxзњШзњињhињИињœXт 0А/ВaџџџџјSm PзќFxYiTm ш/Иж{Д94aWM&ihФ€lЯ2№Іі# llЯЯ2џџџџџџџџx94јN settingDone Ф€Тš ЌџџџxІі# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœQœѕ—0єє—Pкрupv01@vu0мє—@Иv@vєє—`1 vu1tРИ@v vќє—1A94 јF/* variables */ DCL train PId; DCL track TrackId; DCL speed Real;Ф€АcdЦџџџІі# АcZcdmZmZcdmdЦАЦ<ј@  Arialœ0џџџџ%сџџџџџџџџ=€џџџџрЁ) $џџџџ* $џџџџB94 јV Ф€Ад! $jџџџˆЅі#h&•ЌЄМwћДН–АдwћРН–Фwћ!Š„wћ –(l <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`ŠњœHеo0hк Ш7n)hк )X+l8nБр$r$r 4HеoHlshк 8‰m,C94 јN setSignals Ф€Тй ыџџџЅі# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ@:Ÿq0~v1œVvh~˜a`~˜ŒAv Ї01 риЭt@v@@~˜@~˜108~˜lvaD94)ј`g4 Ф€ЇЕЙЧ $jџџџ˜Єі#<ј@  Arialœt0єє—01а%w0Ь2рЖ№w1@фѕ—фѕ—1tв x1Ьѕ—Ьѕ—k94(ј$ Фe€Ж…М‹ $jџџџ Єі#j94 јM"()  Ф|ЙˆЙ§ЈЃі#  ЙˆЙ§E94дЧ\/* timer */ timer t1(TrackId); timer t2(TrackId); /* variables */ DCL track TrackId; Ф€6HќДџџџ0Ѓі# 6HђHќRђRђHќRќД6Д<ј@  Arialœ0р‘Ц%Ъ4ьѓ“ Ц%Ц%$Ц%0Ц%<Ц%HЦ%TЦ%`Ц%94qmtheSignalControl3( rФ€Ыјm.џџџЂі! <ј@  Arialœ0ььД„UpК'lnВрwџџџфwєxєЫ82rm rРУПТСФНОstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІНОПРСТУФХq4№хM&ѓёФ€l7lRџџџ˜Ёі# l7lRџџџџџџџџ:4ёх cars№Ф€HRvџџџ Ёі! АŠx/<ј@  Arialœ0:4ђхM&іыФ€lЫlнџџџЈ і# lЫlнџџџџџџџџ:4ѓх switchCarsъ№Ф€H7џџџ0 і! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010Apя:4єхM&ѕіФ€l•lЇџџџИŸі#  l•lЇџџџџџџџџ:4ѕх trainsєФ€Hq•џџџ@Ÿі! р?јx/0иD<ј@  Arialœ0:4іхopenGateєђьФ€HЇЫџџџШžіЁ HЇЇЫHЫaЙ<ј@  Arialœ0:4їхM&јњФ€ll џџџPžі# ll џџџџџџџџ :4јх switchTrainsљїФ€Hъџџџиі! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010Apя :4љхM&ќјФ€lиlъџџџ`і# lиlъџџџџџџџџ :4њх trainsїФ€H Dџџџшœі! АŠx/<ј@  Arialœ0 :4ћхM&§ќФ€lЂlДџџџpœі# lЂlДџџџџџџџџ :4ќх closeGateћљюФ€HДиџџџј›іЁ HДДиHиaЦ<ј@  Arialœ0:4§х cars,bothћФ€H~Ђџџџ€›і! р?јx/0иD<ј@  Arialœ0:4џхcФ€d-= $jџџџšі#<ј@  Arialœ04(4):4 јVФ€§@ $jџџџH—і#x/x/`ђ|X§m<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0ФrвrF94јN (gateControl)Ф€7šЌџџџа–і# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0 Ш^рzG94'ј`g5Ф€Е.Ч $jџџџX–і#<ј@  Arialœ0€№|а yHЈ]i94&ј$Фe€+…1‹ $jџџџр•і#h94јM"&' Ф|.ˆ.§џџџh•і#  .§.ˆџџџџH94еЧM&ырФ€ZъZџџџ№”і# ZъZџџџџџџџџ94жЧM&чгФ€%% џџџx”і# %% џџџџџџџџ94зЧM&фьФ€ZЙ@џџџ”і# ЙЙ7Z7Z@џџџџџџџџ94иЧM&рцФ€Z).Mџџџˆ“і# Z)Z2.2.Mџџџџџџџџ94йЧM&руФ€Z)ЙMџџџ“і# Z)Z2Й2ЙMџџџџџџџџ94кЧM&сьФ€ZЙЦ@џџџ˜’і# ЦЙЦТZТZ@џџџџџџџџ94лЧM&ъсФ€ЦqЦ•џџџ ’і# ЦqЦ•џџџџџџџџ94мЧM&ръФ€Z)ЦMџџџЈ‘і# Z)Z2Ц2ЦMџџџџџџџџ94нЧM&тьФ€ZЙZ@џџџ0‘і# ZЙZ@џџџџџџџџ94оЧM&этФ€ZqZ•џџџИі# ZqZ•џџџџџџџџ94пЧM&рэФ€Z)ZMџџџ@і# Z)ZMџџџџџџџџ94рЧ idleеиймпФ€6~)џџџШі! АШ€рlшЗm`‚ иФиZjа\hшœ\Ј^dиОg mmшo(Q РЊ`03ohФZ@9\8Ф]№Щ^№Ÿ <ј@  Arialœ0ььыrФ[ќ<ј@  Arial…/P…/ …/№…/@†/†/р†/œ94сЧset(NOW+threshold, t2(track))лкЬФ€Ђ•ъЙџџџPі! <ј@  Arialœ0даШpК'l X+lX+lX+lpК'l X+l94тЧset(NOW+threshold, t1(track));онФ€6•~ЙџџџиŽі! <ј@  Arialœ0даШpК'l X+lX+lX+lpК'l X+l94уЧ t1(track)йхФ€•Mнqџџџ`ŽіЁ •MнMнq•qЎ_<ј@  Arialœ0 94фЧtrainApproaching (track)ШзФ€•ннџџџші! •нФнняФ•<ј@  Arialœ0даШpК'l X+lX+lX+lpК'l X+l!94хЧM&уЫФ€ЙqЙАџџџpі# ЙqЙАџџџџџџџџ"94цЧ t2(track)ишЮФ€ MRqџџџјŒіЁ  MRMRq q#_<ј@  Arialœ0#94чЧtrainLeaving (track)ЩжФ€нIџџџ€Œі! н0нIя0<ј@  Arialœ0$94шЧM&цЪФ€.q.АџџџŒі# .q.Аџџџџџџџџ%94щЧAsynonym threshold Duration=1; /* debouncing threshold */Ф€Hнuџџџ‹і# HгHнRгRгHнRнuu<ј@  Arialœ0&94јN(gateStatus), (carSensor)Ф€HšОџџџ‹і# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0рЉ[pmI94јVФ€}ўџџЁўџџ $jџџџ Šі#ј0rhg –(l <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0J94јN (gateControl)Ф€Hйыџџџ(Šі# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0K94%ј`g1Ф€-Е?Ч $jџџџА‰і#<ј@  Arialœ0џџџ˜q! %цYцcg94$ј$Фe€<…B‹ $jџџџ8‰і#f94јM"$%Ф|?ˆ?§џџџРˆі#  ?ˆ?§L94јVФ€ЂЦ $jџџџHˆі#x/ux/<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0M94јN(trainDetection)Ф€НšЌџџџа‡і# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0N94#ј`g2Ф€ЂЕДЧ $jџџџX‡і#<ј@  Arialœ0e94"ј$Фe€Б…З‹ $jџџџр†і#d94јM""#Ф|ДˆД§џџџh†і#  Д§ДˆџџџџO94ъЧdetectLeaving (track)млФ€ЂMъqџџџ№…іЁ ЂMъMъqЂqЛ_<ј@  Arialœ0'94ыЧ еФ€6Ц~ъџџџx…і! `rx/<ј@  Arialœ0(94ьЧ -взкнФ€6@~dџџџ…і! АШ€рlшЗm`‚ иФиZjа\hшœ\Ј^dиОg mmшo(Q РЊ`03ohФZ@9\8Ф]№Щ^№Ÿ <ј@  Arialœ0ььыrФ[ќ<ј@  Arial…/P…/ …/№…/@†/†/р†/œ)94эЧdetectApproaching (track)поФ€6M~qџџџˆ„іЁ 6M~M~q6qO_<ј@  Arialœ0*94VI switchTrainsR WФ€?ц‡ џџџhƒі! Iц}ц‡№‡} I ??№<ј@  Arialœ0џџџџ%сџџџџџџџџ=€џџџџрЁ) $џџџџ* $џџџџn92WI WsqopnrlmXYZ[\]^_`abcdefghijklmnopqrsV4rWRФ€-FQX€џџџ№‚і#<ј@  Arialœt0єє—01а%w0Ь2рЖ№w1@фѕ—фѕ—1tв x1Ьѕ—Ьѕ—‰94qWZФ€----€џџџx‚і#<ј@  ArialœQœѕ—0єє—Pкрupv01@vu0мє—@Иv@vєє—`1 vu1tРИ@v vќє—1ˆ94pWUФ€----€џџџ‚і#<ј@  Arial œA”ѕ—0œs€їЇрААј€Џ0t@AptАs p,0€іЇpж`ј€Џtps€QРtАs ‡94oW\ ProcedureФ€--f=€џџџˆі#<ј@  Arialœ€Џмє—0,ѕ—,ѕ— Р$ѕ—ртІай З§€ЏPrPr№q@Arаq 0мє—ћІ€џр™§€ЏАr№q€†94nW_Ф€k-k-€џџџі#<ј@  Arialœ0 4u1а4uWv qА^ў 4uа4up4u015uWvр]ўа4u5u 4u`1р.uWv…94sW` switchTrainsФ€k-Б=€џџџ˜€і#<ј@  Arialœ@:Ÿq0~v1œVvh~˜a`~˜ŒAv Ї01 риЭt@v@@~˜@~˜108~˜lvaŠ94mWcФ€[-v=€џџџ €і#<ј@  Arialœ№0<˜q@|v€Ї |v1pX˜X˜aP˜P˜ `=Ї01P•фПq0}v11(1)„94kWM&ijФ€ll)џџџ0і# ll)џџџџџџџџ‚94jW gateClosedk_Ф€H)MџџџИ~іЁ H))MHMa;<ј@  Arialœ0`„šЈџ94iW waitingbakZФ€Hъџџџ@~і! јё™ˆЮџpЮџ ЮџИЮџаЮџ Яџ8ЯџPЯџhЯџ€Яџ˜ЯџАЯџШЯџрЯџјЯџаџ(аџ@аџXаџpаџљ™ ާ<ј@  Arialœ0HќА‚šp:’@Јj§Х€94hW*aФ€Ћ2ѓVџџџШ}і! Ф2ѓ2кVЋV<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ94gWdФ€HlџџџP}і! `1˜э Ђ№ђ€”1\ёˆє—Pрјr€”<ј@  Arialœ0Dœ$џџџџEœ$џџџџ Fœ$џџџџ Oœ$џџџџ Lœ$џџџџ Hœ$џџџџ Iœ~94fW^eФ€ZЇ~Ыџџџи|і! <ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџ}94eW“fФ€ŒžАА€џџџ`|і#<ј@  Arialœa0  C01  ”АtP w1`X‚˜X‚˜a Р•Ї01 рФ|94dWM&gcФ€llЋџџџш{і#  llЋџџџџџџџџ{94cWcloseGate via g1db\Ф€HЋЯџџџp{і! HЋwЋНwЯHЯ<ј@  ArialœFœџџџџ0$џџџџ Lœ$џџџџ Hœ$џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџRœ$z94bWM&ciФ€lЯlъџџџјzі# lЯlъџџџџџџџџy94tI switchBothP uФ€?‡7џџџиyі! I}‡‡-}7I7?-?<ј@  Arialœa0Ѕ­Ї01@­АЬшwРЃДа•Г€ЄД1` ЋДX<•aа€Д)0­Ї01рЪА‹92uI u‰‡…†„ˆ‚ƒvwxyz{|}~€‚ƒ„…†‡ˆ‰t4ˆuRФ€-FQX€џџџ`yі#<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџІ94‡uZФ€----€џџџшxі#<ј@  ArialœУДНД0ркј€ЈјНД0р”Д-€QНДР@Ј р”Д НДР€Д№ајЅ94†uUФ€----€џџџpxі#<ј@  Arial œАŽГ0џџџџ€0иГ№'ДJœ$„Д№ЋДАŽГ„Д$ aћЄ94…u\ ProcedureФ€--f=€џџџјwі#<ј@  Arialœ0Е0ŒTЕD>•рГPЗДЕРq@Е sЕаgЏPЕа0ЕЃ94„u_Ф€k-k-€џџџ€wі#<ј@  ArialœА Е0А@ Е0еЕ€ЇPЗД ŸІА ЕPЗД1pcџЂ94‰u` switchBothФ€k-Љ=€џџџwі#<ј@  Arialœ1D>•0рЕ YЋPЗД`ЕРq0Е0еЕ№ТБ P!ГАЕЇ94ƒucФ€[-v=€џџџvі#<ј@  ArialœPЙД0ррАЬљ0дљ№sљ` Ъ— Ъ—<ељPЙДЬљ01@Ьљ дљ1(1)Ё94uz€Ф€l;_џџџ uі! <ј@  Arialœ0Dœ$џџџџEœ$џџџџ Fœ$џџџџ Oœ%џџџџ Lœ$џџџџ Hœ$џџџџ Iœš94€u“Ф€ЇMЫ_€џџџ(uі#<ј@  Arialœ0™94u}Ф€ZuЂ™џџџАtі! БКъКъ8@AvHєXєšŒˆєH&z<ј@  ArialœFœџџџџ0$џџџџ Lœ$џџџџ Hœ$џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџRœ$˜94~uopenGate via g1}{xФ€ZДЂиџџџ8tі! ZД‰ДЂЦ‰иZи<ј@  ArialœFœџџџџ0$џџџџ Lœ$џџџџ Hœ$џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџRœ$—94}uM&~Ф€~™~ДџџџРsі# ~™~Дџџџџџџџџ–94ŠI switchCarsN ‹Ф€?@‡dџџџ rі! I@}@‡J‡Z}dId?Z?J<ј@  Arialœ№0dTu*[ІJєZІpTu.[ІњA00z˜0z˜ˆTuФщv`AЄl— ь—Ј92‹I ‹ЋЉЇЈІЊЄЅŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­Š4Њ‹RФ€-FQX€џџџ(rі#<ј@  Arialœ010\Йz\˜ zЙzPq`КzрЊz ЙzЦ94Љ‹ZФ€----€џџџАqі#<ј@  Arialœ zрИz0АjЈљyљyрИzЖz ЗzЏz`l…zмКz@Зz z@Иz0Х94Ј‹UФ€----€џџџ8qі#<ј@  Arial œ0Зzp ЗzрЊzрeЉЋz z0 ЕЗz zФ94Ї‹\ ProcedureФ€--f=€џџџРpі#<ј@  Arialœ0№Гz01 Дz@ГzжzP zqДz?Ј cu€ОzУ94І‹_Ф€k-k-€џџџHpі#<ј@  Arialœ0аВz?Ј@иz z,Г@ГzP zаnЏ€qw€qw@Гz€БzРЅzТ94Ћ‹` switchCarsФ€k-Њ=€џџџаoі#<ј@  Arialœa0  C01  Иz/qџz1`t˜t˜a @СД01 ЙzЧ94Ѕ‹cФ€[-v=€џџџXoі#<ј@  Arialœ1”‘˜0  C01 z q0§z1@d‘˜d‘˜a `зІ11(1)С94Ѓ‹–Ф€ZlЂџџџhnі! €phгn˜jCh(FИti€t €лjР?tP-jЕuиэnpсmgАk№Н ˆƒmаC ШYjh€p<ј@  Arialœ0П94ЎI totalCountL ЏФ€Vцž џџџHmі! `ц”цž№ž” ` VV№<ј@  Arialœ№) 0џџџџ* $џџџџ( $џџџџKœ$џџџџ@œ$џџџџBœ$џџџџCœ$џџџџШ92ЏI ЏЭЫЩЪШЬЦЧАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЎ4ЬЏRreturns IntegerФ€-F{V€џџџаlі#<ј@  Arialœ0с94ЫЏZФ€----€џџџXlі#<ј@  Arialœ0р94ЪЏUФ€----€џџџрkі#<ј@  Arial œ0п94ЩЏ\ ProcedureФ€--f=€џџџhkі#<ј@  Arialœ0о94ШЏ_Ф€k-k-€џџџ№jі#<ј@  Arialœ0н94ЭЏ` totalCountФ€k-Ђ=€џџџxjі#<ј@  Arialœ0т94ЧЏcФ€[-v=€џџџjі#<ј@  Arialœ01(1)м94ХЏM&ЙЗФ€6ъ‡цџџџiі# ‡н‡ц6ц6ъ‡ъ‡ѓџџџџџџџџк94ФЏM&УСФ€‡_‡zџџџ˜hі# ‡_‡zџџџџџџџџй94УЏtr:=first(lstCopy);КФФ€c;Ћ_џџџ hі! <ј@  ArialœFœџџџџ0$@‘`О>Ъ4`њ“lО>*Œ№ѕ“xО>џџџџ „О>$О>MœœО>џџџџЈО>Jœ$ДО>џџџџРО>$и94ТЏM&СЙФ€‡ž‡ЙџџџЈgі# ‡ž‡Йџџџџџџџџз94СЏi:=i+trackTbl(tr).count;ФТАФ€czЋžџџџ0gі! <ј@  ArialœFœџџџџ0$А‘Ј>v,і“œЈ>і№ѕ“ЈЈ>џџџџ ДЈ>$РЈ>MœЬЈ>џџџџиЈ>Jœ$фЈ>џџџџ№Ј>$ж94РЏ8 EmptylistПФ€Дѓъ€џџџИfі#<ј@  ArialœT$`$0l$4\ІP$x$L\Іџџџџ„$‘$РS$ $Ј$‘Pф№—ф№—е94ПЏM&ЗМРФ€ЋѓVџџџ@fі# ЋѓѓVџџџџџџџџд94ОЏJ/* variables */ DCL lstCopy TrackList; DCL i Integer; DCL tr TrackId;Ф€АQdЋџџџШeі# АQZQd[Z[ZQd[dЋАЋ<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџг94НЏ“iМФ€V h€џџџPeі#<ј@  Arialœ0 aсџџџџсџџџџсџџџџв94МЏПНФ€сVzџџџиdі! <ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџб94ЛЏ[elseКФ€ Д2€џџџ`dі#<ј@  Arialœ0р‘Ц%Ъ4ьѓ“ Ц%Ц%$Ц%0Ц%<Ц%HЦ%TЦ%`Ц%а94КЏM&ЗУЛФ€‡‡;џџџшcі# ‡‡;џџџџџџџџЯ94ЙЏ2lstCopy:= substring(lstCopy,2,length(lstCopy)-1);ТХФ€cЙЋнџџџpcі! <ј@  Arialœ0Ы%v,і“Ы%Ъ4№ѕ“(Ы%џџџџ 4Ы%$@Ы% OœLЫ%џџџџXЫ%Lœ$dЫ%џџџџ pЫ%$ IœЮ94ИЏM&ЕЗФ€‡Я‡ѓџџџјbі# ‡Я‡ѓџџџџџџџџЭ94ЗЏlstCopyХИПКВФ€cѓЋџџџ€bі! <ј@  Arialœ0pВ%Ъ4,і“|В%v№ѕ“ˆВ%џџџџ ”В%$ В% OœЌВ%џџџџИВ%Lœ%ФВ%џџџџ аВ%$ IœЬ94ЖЏM&ДЕФ€‡‡Ћџџџbі# ‡‡ЋџџџџџџџџЫ94ЕЏlstCopy:=trackLst; i:=0;ЖИФ€cЋЋЯџџџaі! <ј@  ArialœFœџџџџ0$Р‘Й%v,і“Й%Ъ4№ѕ“(Й%џџџџ 4Й%$@Й%MœLЙ%џџџџXЙ%Jœ$dЙ%џџџџpЙ%$Ъ94ДЏЖФ€clЋџџџaі! <ј@  Arialœ0Н%,і“ Н%z№ѕ“Н%џџџџ $Н%$0Н% Oœ<Н%џџџџHН%Lœ$TН%џџџџ `Н%$ IœЩ94Ђ‹”ЁФ€l7џџџ `і! <ј@  Arialœ0Й94Ё‹“ЂФ€•ТЙд $jџџџ(`і#<ј@  Arialœў0шВšИ94 ‹openGate via g1‘”žФ€ZЫЂяџџџА_і! ZЫ‰ЫЂн‰яZя<ј@  Arialœ0HќА‚šp:’@Јj§ХЖ94яЧcФ€[-v= $jџџџР^і#<ј@  Arialœ0(, x(1(1),94ѕЧ`theSensorDebouncerФ€^-Ь= $jџџџH^і#<ј@  ArialœAŒ.•0Ф.•Ф.•” БpБ#AРl.•l.•XБ1T.•T.•a294№Ч_Ф€^-^- $j‚§џџџƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџџџџа]і#<ј@  Arialœ№„А0LрА.•a8,•8,•aе01+№ Ў(пP…А1 LрА.•aX-94ёЧ\ServiceФ€--Y= $jџџџX]і#<ј@  Arialœ y­ИИq01P,•P,•aМ“АH,•Aе01.№ ЎhИq нА10 ,•LнАa.94ђЧUФ€---- $jџџџр\і#<ј@  Arial œ1X-•0 tІ0CFРХе01]­Єаq0‡А11@|“А(-•aа /е0/94ѓЧZФ€---- $jџџџh\і#<ј@  Arialœa0 ре01. ЎTаq‰А@‰АpаЌ1`8,•8,•aцяРХе01 y­094єЧRФ€-FQX $jџџџ№[і#<ј@  ArialœX“q0X,•X,•1P,•P,•aАЗА€ЗАpxж01 9ЎXБq ЗАPщА10 ,•LЗАa194ЦmtheSensorDebouncer1! ЧФ€cј.џџџаZі! <ј@  Arialœј”А•А00•АА‘@•А  зL•А4•А€PзX•А@•ААeзd•АL•А.зp•АX•А 4з|•Аd•А0+зˆ•Аp•АMз”•А|•АpJз •Аˆ•А92Чm Чѕѓёђ№єюяШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕЦ4іm5theCentralController: FastTrainsPrecedenceController.+&# Ф€2ЙhџџџXZі! <ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ394їmBasicControllerSјФ€VHТlџџџ@Wі! <ј@  Arialœ0492јmј! љњћќ§ўџ      !"#$%&'()*+,ї2,mјDGCFEHAB-./0123456789:;<=>?@ABCDEFGHIї2ImјруптсфноJKLMNOPQRSTUVtŠЎЮЯабвгдежзийклмнопрстуфхї2хmјўџцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџї!4 јRФ€-FQX $jџџџШVі#<ј@  Arialœ0b94јZФ€---- $jџџџPVі#<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџa94јUФ€---- $jџџџиUі#<ј@  Arial œHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ`94ј\ Service TypeФ€--t= $jџџџ`Uі#<ј@  Arialœ0X Wh]]p~Wh]]X Wа WœT…@c[x/_94ј_Ф€y-y- $jџџџшTі#<ј@  Arialœ€cC0^94!ј`BasicControllerФ€y-Щ= $jџџџpTі#<ј@  Arialœ0c94јcФ€d-= $jџџџјSі#<ј@  Arialœ@ќ0ЫŸbЈb@ќвŸbHЈb@ќйŸb1(4)]94јM&Ф€u™uНџџџSі# u™uНџџџџџџџџ[94ј virtualФ€Qu™™џџџRі! и/и/<ј@  Arialœ0Z94ј trainsћФ€QН™сџџџRі! р?јx/0иD<ј@  Arialœ0Y94оIcФ€d-= $jџџџаNі#<ј@  Arialœ03(4)ћ94мI -JФ€ъh2ŒџџџрMі! АŠx/<ј@  Arialœ0љ94лIM&йкФ€uНѓџџџhMі# uНuЦЦѓџџџџџџџџј94кI!virtual trainApproaching(track)лJФ€ъѓ2џџџ№LіЁ ъѓ2ѓ2ъ<ј@  ArialœџџџџŽ0˜*љ(…ƒ –(l џџџџАœж/а*љ сy –(l h§њиhєaџџџџї94йI *вглзTФ€Q™™НџџџxLі! р?јx/0иD<ј@  Arialœ0і94иIvirtual trainLeaving(track)зKФ€Qѓ™џџџLіЁ Qѓ™ѓ™Qj<ј@  Arialœ0ѕ94зIM&йиФ€uНuѓџџџˆKі# uНuѓџџџџџџџџє94жI -KФ€Qh™ŒџџџИHі! АŠx/<ј@  Arialœ0ю94еIvirtual carsWaitingгЯФ€ƒѓЫџџџШGіЁ ƒѓЫѓЫƒœ<ј@  Arialœ0ь94дIvirtual manyCarsWaitingвЮФ€ѓ[џџџPGіЁ ѓ[ѓ[,<ј@  Arialœ0ы94гIM&йеФ€uНЇѓџџџиFі# uНuЦЇЦЇѓџџџџџџџџъ94вIM&йдФ€uН7ѓџџџ`Fі# uНuЦ7Ц7ѓџџџџџџџџщ94бI -ЯФ€ƒhЫŒџџџшEі! АŠx/<ј@  Arialœ0ш94аI -ЮФ€h[ŒџџџpEі! АŠx/<ј@  Arialœ0ч94ЯIM&ебФ€ЇЇhџџџјDі#  ЇЇhџџџџџџџџц94ЮIM&даФ€77hџџџ€Dі#  77hџџџџџџџџх94mЎDCL trackLst TrackList:=Emptylist; /* tracks of the system */ DCL trackTbl TrackTable:=(. (. 0,0,null,green .) .); /* information about all the tracks */Ф€-H)ЂџџџDі# -HH)RRH)R)Ђ-Ђ<ј@  Arialœ0Ъ84ФrRФ€-FQX $jџџџCі#<ј@  Arialœt•q05Г01№5Г05Г№у­€сБР5Г№5Г10\5Г46•јПqYВР5Г€t1`;Г05Г 94УrZФ€---- $jџџџCі#<ј@  Arialœ №(Ў0<6•1,vГd6• а]Ўі 1`мГL6• 9')+а]Ўі 10\ZГМHГ 94ТrUФ€---- $jџџџ Bі#<ј@  Arial œџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџ 94Сr_Ф€b-b- $jџџџ(Bі#<ј@  Arialœ`Р8Г0РсАP9Г€9Г1А9ГР8ГаВ€9ГА9ГР1р9ГР8ГВА9Г  94Рr`theSignalControlФ€b-З= $jџџџАAі#<ј@  ArialœаВ€n0 7Гр6Гœ“qРсАp7Г 7Г№†#1а7Гр6Г`ЭЊ Г 7Г№(Ў№1`;ГА6ГЬ‰qАс­ 94Пr\ServiceФ€--]= $jџџџ8Aі#<ј@  Arialœ0p1 Г№Ар‰Б`;Г1`мГL6•рБ;Г01№Г`;Г 94ОrcФ€d-= $jџџџР@і#<ј@  Arialœ0 єДppѓДРМДqрjЕКДЃЉ рѓД€ Ј БВ1(1)94ЛЇ[elseЌФ€‡;ЋM $jџџџа?і#<ј@  ArialœHеo0hк иhк иX+l(о  ˆmєР_t№^t 4Hеo(`thк и94ЌЇM&­ЎЛФ€~;~VџџџX?і#  ~;~Vџџџџџџџџѕ84­ЇtrackTbl(tr).sight ЈЉЌФ€ZЂ;џџџр>і! <ј@  ArialœHеo0hк 8‰mPhк PX+lp‰mО8;rh:r 4Hеo ;rhк Ш7nUі84ЏЇtrackTbl(tr).sig:=sigstat;ЋЈФ€ZЯЂѓџџџh>і! <ј@  ArialœFœџџџџ0$А‘Ј>v,і“œЈ>і№ѕ“ЈЈ>џџџџ ДЈ>$РЈ>MœЬЈ>џџџџиЈ>Jœ$фЈ>џџџџ№Ј>$ј84АЇ“БФ€нŒž€џџџ№=і#<ј@  Arialœ0 aсџџџџсџџџџсџџџџљ84БЇЉЊАФ€lЇЫџџџx=і! <ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџњ84ВЇЋФ€Z‡ЂЋџџџ=і! <ј@  Arialœ0Н%,і“ Н%z№ѕ“Н%џџџџ $Н%$0Н% Oœ<Н%џџџџHН%Lœ$TН%џџџџ `Н%$ Iœћ84ДЇcФ€[-v=€џџџ<і#<ј@  Arialœ0 єДppѓДРМДqрjЕКДЃЉ рѓД€ Ј БВ1(1)§84КЇ` setSignalФ€k-ž=€џџџ˜;і#<ј@  Arialœt•q05Г01№5Г05Г№у­€сБР5Г№5Г10\5Г46•јПqYВР5Г€t1`;Г05Г94ЕЇ_Ф€k-k-€џџџ ;і#<ј@  ArialœаВ€n0 7Гр6Гœ“qРсАp7Г 7Г№†#1а7Гр6Г`ЭЊ Г 7Г№(Ў№1`;ГА6ГЬ‰qАс­ў84ЖЇ\ ProcedureФ€--f=€џџџЈ:і#<ј@  Arialœ`Р8Г0РсАP9Г€9Г1А9ГР8ГаВ€9ГА9ГР1р9ГР8ГВА9Г џ84ЗЇUФ€----€џџџ0:і#<ј@  Arial œ0p1 Г№Ар‰Б`;Г1`мГL6•рБ;Г01№Г`;Г 94ИЇZФ€----€џџџИ9і#<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџ94ЙЇR&fpar tr TrackId, sigstat SignalStatus;Ф€-FрV€џџџ@9і#<ј@  Arialœ №(Ў0<6•1,vГd6• а]Ўі 1`мГL6• 9')+а]Ўі 10\ZГМHГ94Іr setSignal{ ЇФ€Й Dџџџ 8і! У ї *:їDУDЙ:Й*<ј@  Arialœ0Kœ$џџџџ@œ$џџџџBœ$џџџџCœ$џџџџDœ$џџџџEœ$џџџџ Fœ№82Їr ЇКИЖЗЕЙГДЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМІ4ЎЇ,trainSignal(sigstat) to trackTbl(tr).sightЌЊФ€ZVЂzџџџЈ7і! ZV‰VЂh‰zZz<ј@  Arialœџџџџ$0Eœ%џџџџ Fœ$џџџџ Oœ$џџџџ Lœ$џџџџ Hœ$џџџџ Iœ$џџџџї84ЋЇM&ВЏФ€~Ћ~Яџџџ07і#  ~Ћ~Яџџџџџџџџє84ЊЇM&ЎБФ€~z~ЇџџџИ6і# ~z~Їџџџџџџџџѓ84ЉЇM&­БМФ€~)Їџџџ@6і# Ђ))•~•~Їџџџџџџџџђ84МЇ8nullЉФ€);;M $jџџџШ5і#<ј@  ArialœFœџџџџ0$@‘`О>Ъ4`њ“lО>*Œ№ѕ“xО>џџџџ „О>$О>MœœО>џџџџЈО>Jœ$ДО>џџџџРО>$94ЅrM&ЃžФ€@dџџџP5і# @dџџџџџџџџя84ЄrM&Ђ™Ф€ЙЫџџџи4і# ЙЫџџџџџџџџю84ЃrsetSignal (tr,sigStatus)˜ЅФ€lД@џџџ`4і! <ј@  ArialœHеo0hк Ш7n)hк )X+l8nБр$r$r 4HеoHlshк 8‰m,э84Ђrtr:=first(lstCopy);ŸЄФ€l•ДЙџџџш3і! <ј@  ArialœFœџџџџ0$@‘`О>Ъ4`њ“lО>*Œ№ѕ“xО>џџџџ „О>$О>MœœО>џџџџЈО>Jœ$ДО>џџџџРО>$ь84Ёr!/* variables */ DCL tracks TrackList; /* tracks to set */ DCL lstCopy TrackList; /* current tracks */ DCL toDo TrackList; /* remaining tracks*/ DCL tr TrackId; /* current track */ DCL sigStatus SignalStatus; /* desired signal status */Ф€ЙQmџџџp3і# ЙQcQm[c[cQm[mЙ<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџы84 r[elseŸФ€™zНŒ€џџџј2і#<ј@  Arialœ0р‘Ц%Ъ4ьѓ“ Ц%Ц%$Ц%0Ц%<Ц%HЦ%TЦ%`Ц%ъ84ŸrM&œЂ Ф€q•џџџ€2і# q•џџџџџџџџщ84žr2lstCopy:= substring(lstCopy,2,length(lstCopy)-1);ЅšФ€ldДˆџџџ2і! <ј@  Arialœ0Ы%v,і“Ы%Ъ4№ѕ“(Ы%џџџџ 4Ы%$@Ы% OœLЫ%џџџџXЫ%Lœ$dЫ%џџџџ pЫ%$ Iœш84rM&›œФ€;Mџџџ1і# ;Mџџџџџџџџч84œrlstCopyš–ŸuФ€lMДqџџџ1і! <ј@  Arialœ0pВ%Ъ4,і“|В%v№ѕ“ˆВ%џџџџ ”В%$ В% OœЌВ%џџџџИВ%Lœ%ФВ%џџџџ аВ%$ Iœц84›r lstCopy:=toDo; toDo:=Emptylist;sФ€lД;џџџ 0і! <ј@  ArialœFœџџџџ0$Р‘Й%v,і“Й%Ъ4№ѕ“(Й%џџџџ 4Й%$@Й%MœLЙ%џџџџXЙ%Jœ$dЙ%џџџџpЙ%$х84šrM&žœФ€?D‘џџџ(0і# ˆ‘?‘?DDMџџџџџџџџф84™r(trackTbl(tr).count=0 or sigStatus=greenЄ“˜yФ€lЫДяџџџА/і! <ј@  Arialœџџџџ$0@œ$џџџџBœ$џџџџCœ$џџџџDœ$џџџџEœ$џџџџ Fœ$џџџџ у84˜rM&™Ѓ—Ф€яџџџ8/і# яџџџџџџџџт84—r8true˜Ф€™јН €џџџР.і#<ј@  Arialœњ$ њ$0,њ$8њ$@ б ћ$Tћ$ ~Еаф$Р1Еб„щ$ Евєў$PQЕгŒц$€Едhч$0wЕес84–rM&œ•Ф€qТŒџџџH.і# qzТzТŒџџџџџџџџр84•r8 Emptylist–Ф€ЫzŒ€џџџа-і#<ј@  ArialœT$`$0l$4\ІP$x$L\Іџџџџ„$‘$РS$ $Ј$‘Pф№—ф№—п84”rtoDo:=toDo//mkstring(tr);“wФ€ъ2@џџџX-і! <ј@  Arialœ0`UІ<,і“lUN№ѕ“xUџџџџ „U$U OœœUџџџџЈULœ$ДUџџџџ РUА‘аUІ<о84“rM&™”’Ф€Днџџџр,і# Дннџџџџџџџџн84’r8false“Ф€;€џџџh,і#<ј@  ArialœPшАКq0 \Љ1t>•t>•aИЉq€+Е рeЉ01 @щАи—qА+Е АrЉ10œЕм+Еaм84‘r waitingФ€ž[цџџџ№+і! <ј@  Arialœ0л84rtoDo–‡Ф€žŒцАџџџx+і! <ј@  Arialœџџџџ0В€А‘@нЕІ<јј“LнЕџџџџXнЕdнЕpнЕџџџџ|нЕЖ€ˆнЕџџџџ”нЕ нЕк84rM&‘ŽФ€ТАТ[џџџ+і# ТАТ[џџџџџџџџй84Žr[elseФ€ЫЙяЫ€џџџˆ*і#<ј@  ArialœФдЕадЕ0мдЕџџџџ`шдЕ№дЕєдЕpеЕќдЕеЕtї“еЕеЕџџџџ еЕ‘PX@•X@•и84rM&”žФ€@dџџџ*і# @RRdџџџџџџџџз84Œr idleƒŠФ€luД™џџџ˜)і! А‹x/<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0ж84‹rsetSignals (toDo, sigStatus)Š‰Ф€lЋДЯџџџ )іЁ lЋДЋДЯlЯ…Н<ј@  Arial…/P…/ …/№…/@†/†/р†/œ0е84ŠrM&Œ‹Ф€™ЋЈ(і# ™Ћџџџџџџџџд84‰rM&‹tФ€Яс0(і# Ясџџџџџџџџг84ˆr settingDone (tracks, sigStatus)‡…Ф€I@џџџИ'і! 0I.0@@<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0PД‰І<,і“\Д‰~№ѕ“hД‰џџџџ tД‰$€Д‰p‘Д‰І<`њ“œД‰$ЄД‰ЈД‰ АД‰ДД‰РД‰Iœв84‡rM&ˆХФ€цž%@'і# цž%ž%џџџџџџџџб84Хr8 Emptylist‡Ф€.ЙdЫ $jџџџШ&і#<ј@  Arialœsignaiti0nal manyCarsWaiting; signal trackAnnounce(TrackId,Real); signal settingDone; NEWTYPE SignalStatus LITERALS red, green 94†r idle…Ф€[IџџџP&і! p/p/<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0а84…rM&ˆ†Ф€%@%[и%і# %@%[џџџџџџџџЯ84ЈЇM&Џ­Ф€~ѓ~`%і# ~ѓ~џџџџџџџџё84`WsetSignals (trackLst,green)_^XФ€HhŒџџџш$і! HhwhzwŒHŒ<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0pЬ ’,і“|Ь ~№ѕ“ˆЬ џџџџ ”Ь $ Ь  OœЌЬ џџџџИЬ Lœ%ФЬ џџџџ аЬ Р ‘рЬ ~w94_WM&j`Ф€lMlhp$і# lMlhџџџџџџџџv94|usetSignals(trackLst,green){zvФ€ZѓЂџџџј#і! Zѓ‰ѓЂ‰Z<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0pЬ ’,і“|Ь ~№ѕ“ˆЬ џџџџ ”Ь $ Ь  OœЌЬ џџџџИЬ Lœ%ФЬ џџџџ аЬ Р ‘рЬ ~Ž94‹M&—˜Ф€~Я~ъ€#і# ~Я~ъџџџџџџџџБ94œ‹M&˜™Ф€~с2#і# ~~сс2џџџџџџџџА94›‹M&˜šФ€~~2"і# ~~2џџџџџџџџЏ94š‹settingDone(tr,st)›•Ф€Z2ЂVџџџ"іЁ Z2Ђ2ЂVZVsD<ј@  Arialœ0`„šЈџЎ94™‹*œФ€Н2Vџџџ !і! ж22ьVНV<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ­94˜‹ waiting2œ›ŽФ€ZъЂџџџ(!і! №“x/<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`ŠњœHœ0џџџџ а‘€?Bv,і“Œ?BЪ4№ѕ“˜?BJœ$Є?BџџџџА?B$М?BRœШ?Bџџџџд?BQœ$р?BџџџџЌ94—‹setSignals(trackLst,red)–ŒФ€ZЋЂЯџџџА і! ZЋ‰ЋЂН‰ЯZЯ<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0pЬ ’,і“|Ь ~№ѕ“ˆЬ џџџџ ”Ь $ Ь  OœЌЬ џџџџИЬ Lœ%ФЬ џџџџ аЬ Р ‘рЬ ~Ћ94–‹M&Ѓ—Ф€~~Ћ8 і# ~~ЋџџџџџџџџЊ94•‹M&š’Ф€~V~qРі# ~V~qџџџџџџџџЉ94јM&Ф€u•uАџџџHі# u•uАџџџџџџџџ@94јEtrackLst:=trackLst // mkstring(track); trackTbl(track).speed:=speed;љФ€QА™дџџџаі! <ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ?94ј *Ф€Q2™VџџџXі! И"Fр…ŸђљOhЋ‘+'ГйpК'l pК'l X+lˆ F<ј@  Arialœ0X Wh]]p~Wh]]X Wа WœT…@c[x/>94јtrackAnnounce(track, speed)Ф€Qq™•џџџріЁ Qq™q™•Q•jƒ<ј@  Arialœ€cC0=94јM&Ф€uVuqџџџhі# uVuqџџџџџџџџ<94ј -Ф€Qј™џџџ№і! ˆ$FјP H1а!Fа!Fа!Fh!F<ј@  Arialœ0;94јM&Ф€uдuјџџџxі# uдuјџџџџџџџџ:94јM"*+§џўФ|2ˆ2§і#  2ˆ2§994*ј$Фe€/…5‹ $jџџџˆі#l94+ј`g3Ф€ Е2Ч $jџџџі#<ј@  Arialœ0m94џјN trainSignalФ€;йƒыџџџ˜і# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0894ўјVФ€)M! $jџџџ і#x/x/<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0794§јNtrackAnnounce, inSightФ€;š•ОџџџЈі# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0694„r ƒФ€lHДlџџџ0і! 0O)ЈЋАЌH–<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0Э84ƒrM&„ŒФ€luИі# luџџџџџџџџЬ84 mcФ€-š= $jџџџШі#<ј@  Arialœaџџџџ0 €Ре01HДЄq`ыАџџџџ1`|ВА8,•aџџџџ €Ре01E•­1(1)l84m` ControllerФ€|-Б= $jџџџPі#<ј@  Arialœ0(, x(k84 m_Ф€|-|- $jџџџиі#<ј@  Arialœ№„А0LрА.•a8,•8,•aе01+№ Ў(пP…А1 LрА.•aXj84 m\ Process TypeФ€$-w= $jџџџ`і#<ј@  Arialœ y­ИИq01P,•P,•aМ“АH,•Aе01.№ ЎhИq нА10 ,•LнАai84 mUФ€$-$- $jџџџші#<ј@  Arialœ1X-•0 tІ0CFРХе01]­Єаq0‡А11@|“А(-•aа /е0h84mZФ€$-$- $jџџџpі#<ј@  Arialœa0 ре01. ЎTаq‰А@‰АpаЌ1`8,•8,•aцяРХе01 y­g84mRФ€$FHX $jџџџјі#<ј@  ArialœX“q0X,•X,•1P,•P,•aАЗА€ЗАpxж01 9ЎXБq ЗАPщА10 ,•LЗАaf84lk ControllermФ€?;™_џџџиі! N@Š@”J”PŠZNZDPDJ<ј@  ArialœЙ0№RS8Шp/Ш%0џџџџe82mkm     n–—˜™šУOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqЦії      !"#$%&'()*+,-./01234l!4|8falseЮФ€~ЃЂЕ $jџџџ`і#<ј@  ArialœaЄыu03`0Е01€xыuЙБIP`0Е1`@0•@0•aџџџџ,ыuРЙБIP`0Е01PpТ)4Ю|M&бЯФ€™Ѓ™џџџші# ™Ѓ™џџџџџџџџС)4Я| -ЮФ€uН*џџџpі! pПuр…ŸђљOhЋ‘+'ГйpК'l pК'l X+lj@§<ј@  ArialœџџџџН0АQаU*EaџџџџyK`еѕx SOџџџџpиRАœQАUшАQи7SР)4а|M& бФ€™m™џџџјі# ™m™џџџџџџџџП)4б| pos>posEndаЮгФ€uНЃџџџ€і! <ј@  Arialœ`еѕ0`џџџџи‘V8ќИYUx Jшv`aџџџџ`Мњ SJSШЧѕgЛ)4в| ЩЫФ€с*џџџі! <ј@  Arialœ0aџџџџJSШЧѕp=фO(ˆTh/()P%WМ)4г|M&бЬдФ€Н‘ѓЃџџџі# Н‘ѓ‘ѓЃџџџџџџџџК)4д|8trueгФ€Цъ‘ $jџџџі#<ј@  Arialœ0Н)4ј>`?name337їФ€У\чn $jџџџ і#<ј@  ArialœPW"0 a"РА~"W"P="Ъ(4ї>$јBCФe€КSРY $jџџџ(і#Щ(4і>`S1BФ€иДъЦ $jџџџАі#<ј@  Arialœt{"€{"0Œ{"L~"˜{"Є{"P="А{"01{"‘PœЬ—œЬ—Ш(4A>N (carSensor)BФ€ЦQcџџџ8і# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ„y"y"0œy"P="Јy"{"Дy"Рy"ќ­‘PœЬ—œЬ—Ч(4B>M!їєіAФk€Н$)VџџџР і#  НV)$џџџџЦ(4C>theCarSensor(1,1)ќї DФ€uVѓŒџџџј і! VщVѓ`ѓ‚щŒŒu‚u`<ј@  Arialœ0 (2D> Ddb`a_c]^EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeC2e> D‰Œˆ‹Š†‡fghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒC4cDRФ€-FQX€џџџ€ і#<ј@  ArialœрЫЊ0p!а!€!аbЉА!!`АЊuЇА!А!P2(4bDZФ€----€џџџ і#<ј@  Arialœ \!0ЄЩ—ЄЩ—!pѓ!|!!0!01`!а!аV!0!`!`1А!а!АчР!р[!1(4aDUФ€----€џџџ і#<ј@  Arial œ0ао!PЭ!А["€`К!Рћ!`F0 !0ч­№ж!0=Д1eА0(4`D\ProcessФ€--\=€џџџ і#<ј@  Arialœ01ИЪ—Мі!ИЪ— љ!р[!€ї!Аї!01рї!Pї!1 ј!ї!аV!Аї!рї!0ј!`1ј!Pї!/(4_D_Ф€a-a-€џџџ  і#<ј@  Arialœ{І0AИЪ—ИЪ—  ЧДаwІT!`vВ !@Q і!Pѕ! №6 В€ѓ!PxІ.(4dD` theCarSensorФ€a-Ћ=€џџџ( і#<ј@  Arialœpѓ!0€ђ!Ѕ%!зрŠ!Рм!€ A€ђ!рš!1Рм!pѓ!3(4^DcФ€d-=€џџџАі#<ј@  Arialœа‰!0‰!@р‰!№ƒ!Ај0! Џр‰! Д1рu '!$!PQ €ђ!1(2)-(4\Dk/* timer */ timer t1:=arrival; /* variables */ DCL cars Integer:=0; DCL gateClosed Boolean:=true;Ф€zЦ[DџџџРі# zЦQЦ[аQаQЦ[а[DzD<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџ*(4[Dпsynonym arrival Duration=30; /* delay between the cars */ synonym threshold Integer=2; /* minimum #cars the sensors detects */ synonym manyThreshold Integer=10; /* indication: too many cars */ Ф€zH[ДџџџHі# zHQH[RQRQH[R[ДzД<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ((4ZD *QSФ€c_Ћƒџџџаі! Jœ$ЄЙ#џџџџАЙ#$МЙ#RœШЙ#џџџџдЙ#Qœ$рЙ#џџџџџџџџ<ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџ (4™’M&ЏАФ€llRџџџXі# llRџџџџџџџџP'4š’M&Њ­Ф€ŒнŒяџџџрі# ŒнŒяџџџџџџџџM'4›’M&œžФ€ѓѓ%џџџhі# ѓѓ%џџџџџџџџ№&4œ’gateClosed via S2›Ф€Яяџџџ№і! ЯяўяўЯ<ј@  Arialœ0œX0l0щј4Ch5qœC„CрuЈCCШwДCœCИxРCЈCя&4’M& œФ€ѓнѓяџџџxі# ѓнѓяџџџџџџџџю&4ž’ -›Ф€Я%Iџџџі! џџџџћџџџџџџџџ€џџџџџџџџEс<ј@  ArialœBœџџџџ0$џџџџDœ$џџџџEœ$џџџџ №‘Fr,і“ Fžо№ѕ“FLœ$$Fџџџџ 0F$э&4Ÿ’M&Д Ф€lЇѓЙџџџˆі# lЇlАѓАѓЙџџџџџџџџь&4 ’ closeGateŸФ€ЯЙнџџџіЁ ЯЙЙнЯншЫ<ј@  Arialœ0Dœ%џџџџEœ$џџџџ А ‘а=:,і“м=~№ѕ“ш=Lœ$є=џџџџ >$ > Iœы&4ш/* track layout */ synonym posSensor1 Real=3000; /* position of the "approaching sensor" */ synonym posSignal Real=4000; /* position of the "signal" */ synonym posSensor2 Real=4500; /* position of the "leaving sensor" */ synonym posEnd Real=5000; /* end of the track*/ /* track parameters */ synonym fastSpeed Real=80; /* maximal speed of fast trains*/ synonym regularSpeed Real=50; /* maximal speed of regular trains*/ Ф€hHMџџџ˜і# hHuHRuRuHRMhM<ј@  Arialœ0џџџ!X0lјџџџ"Arial<ј@ {4M&* Ф€l2ѓ_џџџ і# ѓ2ѓDlDl_џџџџџџџџz4 !trackAnnounce (trackId,maxSpeed)'Ф€H_ƒџџџЈі! H_w_qwƒHƒ<ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџx4f`M&hoФ€lцД џџџ0і# ДцДяlяl џџџџџџџџч4{`8truegФ€Н•сЇ€џџџИі#<ј@  Arialœ0xє™xє™а ‘№:8<8ќ:80;8”88;8 ;8,;88;8D;8P;8ц4g`M&jh{Ф€zДТџџџ@і# zДzДТџџџџџџџџх4h`inSight(track,self)gfФ€ТицџџџШџѕ! ТПТидПцц<ј@  Arialœ €т§0џџџџ№Щ§ єА А”§0*3)3А”§ Г§џџџџ0Јк—<Џ§ф4z`8falseiФ€u•™Ї€џџџPџѕ#<ј@  Arialœ0с4i`M&jozФ€lŒl џџџиўѕ# lŒl џџџџџџџџр4j` requestSigcgiФ€HhŒџџџ`ўѕ! <ј@  Arialœ$ 0џџџџ Gœ$џџџџ Lœ%џџџџ Hœ$џџџџ Iœ$џџџџMœ$џџџџJœ$п4е|5handoverDone or (posSignal-pos)> (call breakingDist)ФТФ€uЙНнџџџш§ѕ! <ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџ* 4|8nullжФ€HZ €џџџp§ѕ#<ј@  Arialœџџџџ$0Pœ$џџџџRœ$џџџџQœ$џџџџ]œџџџџЖ€`A г1Hг1|l—Lш1џџџџэ 4ж|M&лзФ€? ™ƒџџџјќѕ# u ? ?z™z™ƒџџџџџџџџь 4з| position(posX,pos) to theSensorжиФФ€uƒНЇџџџ€ќѕ! uƒЄƒН•ЄЇuЇ<ј@  Arialœ0АЇNїї8уHфOч 4и|M&кзФ€™q™ƒџџџќѕ# ™q™ƒџџџџџџџџй 4й|M&плФ€™ќ™џџџћѕ# ™ќ™џџџџџџџџи 4к| position(posX,pos) to nextTrainмиФ€uMНqџџџћѕ! uMЄMН_Єquq<ј@  Arialœ0АЇNїї8уHфOд 4л| nextTrainйжмФ€uН2џџџ њѕ! <ј@  Arialœ0е 4м|M&лкнФ€™2™Mџџџ(њѕ# ™2™Mџџџџџџџџж 4н|[elseмФ€Ђ2ЦD $jџџџАљѕ#<ј@  Arialœ0з 4с[elseѓФ€Нс€џџџ8љѕ#<ј@  Arialœџџџџ00gсLgсp‘eс‚œј“œeсbPј“ЈeсџџџџДeс‘Рeс@fсЬeсbtї“иeс=€фeсџџџџ№eс<€~4ѓсM&єѕФ€ДќД§џџџ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€џџџРјѕ# ДќДџџџџџџџџ}4єсpposіёѓФ€ииќџџџHјѕ! <ј@  Arialœ0r496;synonym nrTracks Integer=4; /* number of tracks */Ф€6lъџџџаїѕ# 6lрlъvрvрlъvъ6<ј@  Arialœ0q4ѕс/accel:= (ppos-pos)+(ppos-pposX-speed)-minDist;ѓ№ъФ€H ;џџџXїѕ! <ј@  ArialœFœџџџџ0$џџџџ Lœ$џџџџ Hœ$џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџRœ$O4ісM&їєФ€ДНДиџџџріѕ# ДНДиџџџџџџџџC4їс posX:=pos;ћіФ€H™ Нџџџhіѕ! <ј@  Arialœ0€пРѕEB4јс“њФ€•[Йm€џџџ№ѕѕ#<ј@  ArialœбˆЫ—0@4љсM&ўњФ€Д@Д[џџџxѕѕ# Д@Д[џџџџџџџџ?4њсљјФ€Ђ[Цџџџѕѕ! <ј@  Arialœ0џџџџџџџџ€џџџџџџџџEсџџџџ A*D\Іјй.L\І>4ћсM&§їФ€Д‡Д™џџџˆєѕ# Д‡Д™џџџџџџџџ$4ќсEspeed:=speed+accel; speed:= call minmax(minSpeed,maxSpeed,speed); яюфФ€Hд  џџџєѕ! <ј@  Arialœ04§сћФ€cи‡џџџ˜ѓѕ! `НДdНД‘lНДpНДpQ|НДˆНД”НД НД<ј@  Arialœ0аЄДpнД€€ИДаЦГрїДаbБАИДАkи4ўсpos:=pos+speed;юљтФ€H @џџџ ѓѕ! <ј@  ArialœY0Ш/Ш/А/АZKИYˆ|YoTШYY€Y8dZMW |ZРЛњOYёX€YшY4сcФ€d-=€џџџ0ђѕ#<ј@  Arialœ01(1)4с`updateФ€k-“=€џџџИёѕ#<ј@  Arialœ04с_Ф€k-k-€џџџ@ёѕ#<ј@  Arialœ04с\ ProcedureФ€--f=€џџџШ№ѕ#<ј@  Arialœ04сUФ€----€џџџP№ѕ#<ј@  Arial œ04сZФ€----€џџџияѕ#<ј@  Arialœ04сRФ€-FQX€џџџ`яѕ#<ј@  Arialœ04п|updateойЧФ€uиНќџџџшюѕ! <ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџ4р|updateЂ сФ€•ќя џџџШэѕ! Ÿќхќяях Ÿ ••<ј@  Arialœ0€ЕаЕ 3Е€p3ЕаЗЕq 3Е№IЕаЪГрlА  3ЕаЪГ№-­2с| сџтуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџр4Ё’M&ЗЂФ€l~lџџџPэѕ# l~lџџџџџџџџк4Ђ’gateClosed via S2Ё”Ф€HДџџџиьѕ! HwЂwДHД<ј@  Arialœ0 м§Hх‚x@˜ єй4Ѓ’M&ІЄФ€Rџџџ`ьѕ# Rџџџџџџџџи4Є’ openingЃФ€яR7vџџџшыѕ! јŸ…x/<ј@  Arialœ0з4Ѕ’M&ЈІФ€няџџџpыѕ# няџџџџџџџџж4І’set (NOW+openingTime,t1)ЅЃФ€яя7џџџјъѕ! <ј@  Arialœ0е4Ї’M&ЉЈФ€ŒЇЙџџџ€ъѕ# ŒЇŒААЙџџџџџџџџд4Ј’openGateЇЅФ€яЙ7нџџџъѕЁ яЙ7Й7нянЫ<ј@  Arialœ0г4Љ’ closingЇЋФ€hƒАЇџџџщѕ! @‚x/<ј@  Arialœœ0hh ў@ўћсœop0o—шАўЈўрќрЬ›шАўvwб4Њ’t1ЋšФ€hЙАнџџџщѕЁ hЙАЙАнhнЫ<ј@  Arialœ0P\јQја4Ћ’M&ЉЊФ€ŒЇŒЙџџџ шѕ# ŒЇŒЙџџџџџџџџЯ4Ќ’ closedЎФ€hRАvџџџ(шѕ! р/р/Рє €ѕ<ј@  Arialœ0рш§И(аYјЮ4­’gateClosed via S2šЎФ€hяАџџџАчѕ! hя—яА—h<ј@  Arialœ0œX0l0щј4Ch5qœC„CрuЈCCШwДCœCИxРCЈCЬ4Ў’M&­ЌФ€ŒŒRџџџ8чѕ# ŒŒRџџџџџџџџЫ4B7 -?Ф€•ЇнЫџџџРцѕ! pВx/<ј@  Arialœ04C7M&FDФ€ЙѓЙџџџHцѕ# ЙѓЙџџџџџџџџ4D7nextTrain=nullC@Ф€•н)џџџахѕ! <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ04E7M&GFФ€ЙНЙЯџџџXхѕ# ЙНЙЯџџџџџџџџ 4F7YnoneECФ€•ЯнѓџџџрфѕЃ •ЯнЯнѓ•ѓЎс<ј@  Arialыњрыњ0ьњ€ьњаьњ эњpэњœ0а(Њ 4G7 *EФ€•™нНџџџhфѕ! 8мЎx/<ј@  Arialœ09W@zC 4H7 -8Ф€6~2џџџ№уѕ! pАx/<ј@  Arialœ0Hс­ юPУЎx/4I7M&KJФ€ZНZЯџџџxуѕ# ZНZЯџџџџџџџџџ4J7position(pposX,ppos)I8;Ф€6Я~ѓџџџуѕЁ 6Я~Я~ѓ6ѓOс<ј@  Arialœ0и‰џў4K7 *IФ€6™~Нџџџˆтѕ! //ЌЊˆК­<ј@  Arialœ0§4M7cФ€d-= $jџџџ˜сѕ#<ј@  Arialœ04(4)у4!M&%#Ф€cŒиАџџџPоѕ# иŒи•c•cАџџџџџџџџм4"M&&#Ф€cŒcАџџџинѕ# cŒcАџџџџџџџџл4# -!"Ф€?А‡дџџџ`нѕ! //<ј@  Arialœ0-ѕˆ-ѕ.ѕx.ѕ№.ѕh/ѕр/ѕX0ѕа0ѕH1ѕР1ѕ82ѕА2ѕ(3ѕ 3ѕ4ѕ4ѕА5ѕ(6ѕ 6ѕ7ѕ7ѕ8ѕ€8ѕј8ѕp9ѕш9ѕ`:ѕи:ѕP;ѕШ;ѕк458green$Ф€lDV $jџџџшмѕ#<ј@  Arialœ0з4$M&)&5Ф€c;chџџџpмѕ# c;chџџџџџџџџж4%sigAccel:=minAccel;!Ф€ДhќŒџџџјлѕ! <ј@  Arialœ0е4&sigAccel:=maxAccel;$"Ф€?h‡Œџџџ€лѕ! <ј@  Arialœ0д4'DCL sig SignalStatus;Ф€?lЦџџџлѕ# ?lМlЦvМvМlЦvЦ?<ј@  Arialœ0г4(M&+)Ф€ccџџџкѕ# ccџџџџџџџџв4)sig($Ф€?‡;џџџкѕ! <ј@  Arialœ0иaІ@ФЅб4*M&,+Ф€cЯcсџџџ йѕ# cЯcсџџџџџџџџа4+trainSignal(sig)*(Ф€?с‡џџџ(йѕЁ ?с‡с‡?Xѓ<ј@  Arialœ0ЇтЇ˜…ќа6іЯ4, **Ф€?Ћ‡ЯџџџАиѕ! @Њx/<ј@  Arialœ0Ю4.cФ€d-= $jџџџРзѕ#<ј@  Arialœ03(4)Ь4m`set (lastStep+stepTime, step)acФ€H)Mџџџxдѕ! <ј@  Arialœ0Т4n`M&pkФ€l™lЋџџџдѕ# l™lЋџџџџџџџџО4o` enRoutefiФ€H .џџџˆгѕ! №Џx/<ј@  Arialœ0Н4p` nФ€Hu™џџџгѕ! x/<ј@  Arialœ0М4Џ’set (NOW+openingTime,t1)Б™Ф€Hяџџџ˜вѕ! <ј@  Arialœ0ќ4q`x/* timer */ timer step; DCL lastStep Time; synonym stepTime Duration=10; /* variables */ DCL pos, posX Real; /* current position */ DCL pposX, ppos Real :=-1; /* current position of previous train */ DCL speed Real; /* current speed */ DCL accel Real; /* current acceleration */ DCL sigAccel Real:=maxAccel; /* maximum acceleration permitted by the signal */ DCL nextTrain PId:=null; /* next train */ DCL rs Boolean:=false; /* next train has to request signal */ DCL handoverDone Boolean:=false; /* handing over of signal notification done */Ф€_2m‘џџџ вѕ# _2c2m<c<c2m<m‘_‘<ј@  Arialœ04. Ф€HlџџџЈбѕ! hіFx/<ј@  Arialœ0Ј-ўHЯIІ40cФ€d-= $jџџџИаѕ#<ј@  Arialœ0рЄўާј‡і‚H1(2)Є46` theSensorФ€a-š= $jџџџ@аѕ#<ј@  Arialœ0x7HЃ41_Ф€a-a- $jџџџШЯѕ#<ј@  Arialœ0Ђ42\ProcessФ€--\= $jџџџPЯѕ#<ј@  Arialœ0їїЁ43UФ€---- $jџџџиЮѕ#<ј@  Arial œ0(ђј 44ZФ€---- $jџџџ`Юѕ#<ј@  Arialœ0Ÿ45RФ€-FQX $jџџџшЭѕ#<ј@  Arialœ0ž4theSensor(1,1)g_ Ф€н2[hџџџ Ьѕ! ч2Q2[<[^Qhчhн^н<<ј@  Arialœ0“2 642315/0 !"#$%&'()*+,-./01234567828 Z]Y\[^WX9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^4ў67use RailroadCrossing;Ф€$Д6џџџЈЫѕ# $ЊДЊЊДД6$6<ј@  Arialœ0!Œl P(#џџџ<ј@  Arial€4OkKCrossingChannelNФ€2šŒЌ $jџџџ0Ыѕ#<ј@  Arialœ0 #џ`jіАŽіs4Nk$9O>Фe€SsYy $jџџџИЪѕ3r4Mk`g1LФ€_qqƒ $jџџџ@Ъѕ#<ј@  Arialœ0H љq4Lk$M9=Фe€SeYk $jџџџШЩѕ#p4Kk`S19Ф€_јw  $jџџџPЩѕ#<ј@  Arialœ0‘іюљіo48kN (gateControl)9Ф€M‘џџџиШѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ08fx Лњn49kM!LNK87Фk€VhVšџџџ`Шѕ#  VhVšm4:kN%(trainSensor), inSight, trackAnnounce<Ф€‡M џџџшЧѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0l4JkK TrackChannelIФ€2‰$ $jџџџpЧѕ#<ј@  Arialœ0ШYњk4Ik$<J>Фe€SY $jџџџјЦѕ3j4Hk`g2GФ€_ q2 $jџџџ€Цѕ#<ј@  Arialœ0i4Gk$H<=Фe€S/Y5 $jџџџЦѕ#h4Fk`S2<Ф€_ЋqН $jџџџХѕ#<ј@  Arialœ0Xiњ@Bњg4;kN trainSignal<Ф€-M?џџџХѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0јбC #џ`jіАŽіf4<kM!GIF;:Фk€V$V2џџџ Фѕ#  V2V$e4=ktheController(1,1):ControllerQLG Ф€2žhџџџ(Фѕ! 2”2ž<ž^”hh^<<ј@  ArialœX0Ш}љ †џџџџ‡(љ№~љш/ИOљ‡џџџџd4?kcФ€d-= $jџџџ8Уѕ#<ј@  Arialœ01(1)b4Ek` theControllerФ€S-—= $jџџџРТѕ#<ј@  Arialœ0a4@k_Ф€S-S- $jџџџHТѕ#<ј@  Arialœ0`4Ak\BlockФ€--N= $jџџџаСѕ#<ј@  Arialœ0_4BkUФ€---- $jџџџXСѕ#<ј@  Arial œ0^4CkZФ€---- $jџџџрРѕ#<ј@  Arialœ0&А/шБњaџџџџШЧѕ-LџџџџhБњ4h/]4DkRФ€-FQX $jџџџhРѕ#<ј@  ArialœА/0ШЧѕь`џџџџ(Џњh)їѓА/PАњaџџџџ \4џ6N trainSignalФ€ќѓDџџџ№Пѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0[4a6`?name134`Ф€V–zЈ $jџџџxПѕ#<ј@  Arialœ0Z4`6$ajФe€JnPt $jџџџПѕ#Y4_6`g1^Ф€DЯVс $jџџџˆОѕ#<ј@  Arialœ0`љX4^6$_iФe€JоPф $jџџџОѕ#W4]6` TrackChannelФ€V ­2 $jџџџ˜Нѕ#<ј@  Arialœ0V46N%(trainSensor), inSight, trackAnnounceФ€~VDhџџџ Нѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0џџџџ@‹њˆњ'ЉА/й€џџџџј†њи‡њР‹њ h/U46M!^`]џФk€MсMqџџџЈМѕ#  MсMqT4H/* signal definitions */ signal openGate; signal closeGate; signal gateOpen; signal gateClosed; signal trainApproaching( TrackId ); signal trainLeaving( TrackId ); signal detectLeaving( TrackId ); signal detectApproaching( TrackId ); signal trainSignal( SignalStatus ); signal setSignals( TrackList, SignalStatus ); signal settingDone( TrackList, SignalStatus ); signal leaving; signal carsWaiting; signal manyCarsWaiting; signal trackAnnounce( TrackId,Real ); signal inSight( TrackId,PId ); signal position( Real,Real ); /* signallist definitions */ signallist trainSensor=detectApproaching, detectLeaving; signallist trainDetection=trainApproaching, trainLeaving; signallist carSensor=carsWaiting, manyCarsWaiting; signallist gateControl=closeGate,openGate; signallist gateStatus=gateClosed, gateOpen;Ф€6HVџџџ0Мѕ# 6HLHVRLRLHVRV6<ј@  Arialœ0K4cФ€v-‘= $jџџџ@Лѕ#<ј@  Arialœ0ио i =ў1(2)I4 `RailroadCrossingФ€b-Л= $jџџџШКѕ#<ј@  Arialœ0јЮџH4_Ф€b-b- $jџџџPКѕ#<ј@  Arialœ0G4 \PackageФ€--]= $jџџџиЙѕ#<ј@  Arialœ0аџF4 UФ€---- $jџџџ`Йѕ#<ј@  Arial œ0E4 ZФ€---- $jџџџшИѕ#<ј@  Arialœ00БўD4 RФ€-FQX $jџџџpИѕ#<ј@  Arialœ0(`x%ќ`ŸР<ћH%ўC4lRailroadCrossingФ€VmŒџџџЈЖѕ! PPXmXmŒŒ<ј@  Arialœ0nћ:0њўB2l   2l03/214-.-./012344s`cФ€d-= $jџџџИЕѕ#<ј@  Arialœ0рНћЈд§ˆљ§Ј)ќ1(4)&4y``aTrainФ€a-†= $jџџџ@Еѕ#<ј@  Arialœ0јџРйўуў%4t`_Ф€a-a- $jџџџШДѕ#<ј@  Arialœ00@§$4u`\ProcessФ€--\= $jџџџPДѕ#<ј@  Arialœ0їїаќ§ˆ>§#4v`UФ€---- $jџџџиГѕ#<ј@  Arial œ0шE§"4w`ZФ€---- $jџџџ`Гѕ#<ј@  Arialœ0!4x`R6fpar track TrackId, maxSpeed Real, requestSig Boolean;Ф€-FAV $jџџџшВѕ#<ј@  Arialœ0 4_aTrain(0,nrTrains) b] `Ф€Z2ъhџџџаЏѕ! d2р2ъ<ъ^рhdhZ^Z<<ј@  Arialœ0!l P2` `ywuvtxrsabcdefghijklmnopqrstuvwxyz{|_2| ` }~€‚ƒ ЁЂЃЄТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопр     _2 `03/214-. !"#$%&'()*+,-./01234567_27 `ORNQPSLM89:;<=>?@ABCDEFGHIJKLMNOPQRS_4UcФ€v-‘= $jџџџрЎѕ#<ј@  Arialœ0hэџX1(1)4[`TrackФ€n-= $jџџџhЎѕ#<ј@  Arialœ0`х§4V_Ф€n-n- $jџџџ№­ѕ#<ј@  Arialœ0И№ќ(ёџ4W\ Block TypeФ€--i= $jџџџx­ѕ#<ј@  Arialœ00-ўШnќ4XUФ€---- $jџџџ­ѕ#<ј@  Arial œ0и ў8Ћћ4YZФ€---- $jџџџˆЌѕ#<ј@  Arialœ0шд§8ћ4ZRФ€-FQX $jџџџЌѕ#<ј@  Arialœ0ˆ4ўрАџ46TrackФ€?Д™иџџџ№Њѕ! <ј@  Arialœ026[YWXVZTU     _TUVWXYZ[\]^_`abcdefgh4i6theTracks(nrTracks):Track^Ф€ѓЋЇсџџџxЊѕ! <ј@  Arialœ04j6theController(1)hc`kФ€ѓqЇЇџџџXЉѕ! <ј@  Arialœ02k6kECAB@D>?l56789:;<=>?@ABCDEFGHIJKLMNOPQRSTjc4V6cФ€ˆHЃX $jџџџhЈѕ#<ј@  Arialœ01(1)4\6`RailroadCrossingФ€]HЖX $jџџџ№Їѕ#<ј@  Arialœ04W6_Ф€]H]H $jџџџxЇѕ#<ј@  Arialœ04X6\SystemФ€-HXX $jџџџЇѕ#<ј@  Arialœ04Y6UФ€-H-H $jџџџˆІѕ#<ј@  Arial œ04Z6ZФ€-H-H $jџџџІѕ#<ј@  Arialœ0 4[6RФ€-aQs $jџџџ˜Ѕѕ#<ј@  Arialœ0 45lsystem RailroadCrossing6Ф€с_qЙџџџxЄѕ! <ј@  Arialœ0 26l6\ZXYW[UўV789:;<=ўџijUVWXYZ[\]^_`abcdefghijk5H4=6theCrossing(1)e>Ф€ѓ@ЇvџџџXЃѕ! <ј@  Arialœ0А2>6>№юьэыящъ?@ABCŽ‘щъыьэюя№ёђѓєѕіїјљњћќ§=4я>RФ€-FQX $jџџџрЂѕ#<ј@  Arialœ0Б4ю>ZФ€---- $jџџџhЂѕ#<ј@  Arialœ0В4э>UФ€---- $jџџџ№Ёѕ#<ј@  Arial œ0Г4ь>\BlockФ€--N= $jџџџxЁѕ#<ј@  Arialœ0Д4ы>_Ф€S-S- $jџџџЁѕ#<ј@  Arialœ0Е4№>` theCrossingФ€S-”= $jџџџˆ ѕ#<ј@  Arialœ0Ж4ъ>cФ€d-= $jџџџ ѕ#<ј@  Arialœ01(1)З4‘> theGate(1,1)њђ ’Ф€hVцŒџџџаѕ! rVмVц`ц‚мŒrŒh‚h`<ј@  Arialœ0Й2’> ’ПНЛМКОИЙ“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПР‘2Р> ’фчуцхшстСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчш‘4О’RФ€-FQX $jџџџXѕ#<ј@  Arialœ0К4Н’ZФ€---- $jџџџрœѕ#<ј@  Arialœ0Л4М’UФ€---- $jџџџhœѕ#<ј@  Arial œ0М4Л’\ProcessФ€--\= $jџџџ№›ѕ#<ј@  Arialœ0Н4К’_Ф€a-a- $jџџџx›ѕ#<ј@  Arialœ0О4П’`theGateФ€a-Ž= $jџџџ›ѕ#<ј@  Arialœ0П4Й’cФ€d-= $jџџџˆšѕ#<ј@  Arialœ01(2)Р4З’ ЁФ€HZ~џџџ˜™ѕ! @/ЈђАиїАjpї<ј@  Arialœ0јішїIР/Р/Иu(qєЏИuHўHўЏТ4Ж’ closed“•Ф€H)џџџ ™ѕ! (/(/Р<@њ 8™0Ш–Рљ<ј@  Arialœ0У4<6M!ceb;:Фk€MЇM@џџџЈ˜ѕ# MЇM@Х4;6N (gateControl)<Ф€ќ%D7џџџ0˜ѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0Ц4b6`CrossingChannel<Ф€VяА $jџџџИ—ѕ#<ј@  Arialœ0Ч4c6$d<jФe€JЄPЊ $jџџџ@—ѕ#Ш4d6`?name158cФ€ АDТ $jџџџШ–ѕ#<ј@  Arialœ0Щ4e6$f<=Фe€J=PC $jџџџP–ѕ#Ъ4f6`?name159eФ€VIz[ $jџџџи•ѕ#<ј@  ArialœџџџџГ0ё`џџџџНљ@]ѕјА/ИШљaџџџџСФЬѕџЫ4>M!єђёŽФk€2$ЇVџџџ`•ѕ#  2$ЇVЬ4>N (gateControl)Ф€А2јDџџџш”ѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0Э4ё>`S2Ф€zДŒЦ $jџџџp”ѕ#<ј@  Arialœ@0џџџ!X0lјџџџ"ArialЮ4ђ>$ѓ‘Фe€ЄSЊY $jџџџј“ѕ#Я4ѓ>`?name161ђФ€ЫDяV $jџџџ€“ѕ#<ј@  Arialœ0 ˜A4ЁADє# X0l˜џџџџ[ /04а4є>$BѕщФe€&3,9 $jџџџ“ѕ#б4ѕ>KCrossingChannelєФ€_$‚§џџџƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ $jџџџ’ѕ#<ј@  Arialœ 0 pК,l h&4q&Dє№[X0lв4Е’synonym openingTime Duration=30; /* time to open the gate */ synonym closingTime Duration=30; /* time to close the gate */Ф€ƒc[Ћџџџ’ѕ# ƒcQc[mQmQc[m[ЋƒЋ<ј@  Arialœ0џџџ!X0lјџџџ"Arial<ј@ е4Д’ closedŸВФ€HƒЇџџџ ‘ѕ! ice PositionUpdate <>0lcќ<ј@  Arialœ0џџџ!X0lјџџџ"Arial<ј@ ж4Г’openGateВБФ€HЙнџџџ(‘ѕЁ HЙЙнHнaЫ<ј@  Arialœ0!X0lјџџџ"Arial<ј@  Arialз4В’M&ДГФ€lЇlЙџџџАѕ# lЇlЙџџџџџџџџи4Б’M&ГЏФ€lнlяџџџ8ѕ# lнlяџџџџџџџџк4А’ opening™Ф€HRvџџџРѕ! ˆx/# X0lа‘џџџџ=Vl PpК,l<ј@  Arialœ 0!+82=l PpК,l pК,l pК,l л4Ž>N (gateStatus)Ф€VQžcџџџHѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ"0<ј@  Arial# X0lœ0l PpК,lф4:6N(carSensor), (gateStatus)<Ф€ДАDТџџџаŽѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ 0мHŒмHDє# X0l Яџџџџ?l PpК,lх47kN(gateStatus), (carSensor)9Ф€НzMŒџџџXŽѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0l PpК,l pК,l pК,l # DE4MEDєц4M!]_\Фk€ъVнVџџџрѕ#  ъVнVџџџџp4NpositionФ€ž_дqџџџhѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœЏ01D&•D&•0Џ@ДЊЏ@Џ€§І01 ,ЏрЏP$&•$&•€ГЊ@Џ10\ Џ Џq4\`S0Ф€V_hqџџџ№Œѕ#<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџr4]$^_Фe€чSэYџџџxŒѕ#s4^`?name68]Ф€Ј\ЬnџџџŒѕ#<ј@  Arialœ0Р-Џ01№-Џр,ЏРВЊР-Џ€ўІ`1 .Џр,Џ€АЊ№-Џ .Џ10Џр,Џt4_$`Фe€кSрYџџџˆ‹ѕ#u4``?name69_Ф€у\nџџџ‹ѕ#<ј@  Arialœ0€?Џ€>Џ€?Џ ,Џ@Џ˜?Џ№9Џ —Њр,Џр9Ћv4Msynonym nrTrains Integer=3; /* maximum number of trains per track */Ф€6c‡џџџ˜Šѕ# 6c cm m cm‡6‡<ј@  Arialœр@20 2[œ2џџџџXœ$ A*„VІJdVІ42”ŒVІL2.”VІџџџџA0X˜X˜X2w4 M!bda Фk€Ђhhšџџџ Šѕ#  Ђhhšx4 NinSight Ф€I;[џџџЈ‰ѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ$&Е0&Е0<&ЕH&ЕT&Е`&Е‘PT>•T>•y4a`S1 Ф€ќняџџџ0‰ѕ#<ј@  Arialœ0z4b$c _Фe€ŸeЅkџџџИˆѕ#{4c`?name143bФ€~VЂhџџџ@ˆѕ#<ј@  Arialœ0|4d$  TФe€e—kџџџШ‡ѕ#}4 M"de  Ф|hšhџџџP‡ѕ#  hšh~4e`g1 Ф€MЧ_йџџџи†ѕ#<ј@  Arialœ04 N%(trainSensor), inSight, trackAnnounce Ф€qт7єџџџ`†ѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0€4 V Ф€X|#џџџш…ѕ#<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ04N trainSignal Ф€ZzЂŒџџџp…ѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœЄЕАЕ0Eсџџџџ@AЕ,Е.|VІьЕšdVІјЕ) џџџџ€A*„VІJ”VІ‚4N trainSignal Ф€qЌЙОџџџј„ѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0€00`€PPРvq ВРp9ЎPPАэГ`ЩВƒ4M!gdfФk€hhšџџџ€„ѕ#  hhšџџџџ„4N(trainSensor), trackAnnounceФ€ŒI.[џџџ„ѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0р`u rА.РРJЉ аu уPKЉ…4f`S2Ф€ЙнЫяџџџƒѕ#<ј@  Arialœ0@wPv€ˆ ˜ CР HЎАэГ№ВВ†4g$hФe€ekџџџƒѕ#‡4h`?name146gФ€"nF€џџџ ‚ѕ#<ј@  Arialœ0ˆ4l`synonym maxAccel Real=3; /* maximum acceleration */ synonym minAccel Real=-10; /* maximum brake acceleration */ synonym minSpeed Real=0; /* minimum speed */ synonym minDist Real=100; /* minimum distance between the trains */Ф€_Zmиџџџ(‚ѕ# _ZcZmdcdcZmdmи_и<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџy4|cФ€d-=€џџџр~ѕ#<ј@  Arialœ0 1H‡w‡™wЋHЋаёl PpК@l pК@l 2(4)€4 |step оФ€uЂНЦџџџ№}ѕЁ uЂНЂНЦuЦŽД<ј@  ArialœџџџџJ0€G(/јоVaџџџџи”JJSШЧѕ0)WpœџXGWxwTЂU(Qиžї HS(Qл4 |set (NOW+stepTime, step)€аФ€uIНmџџџx}ѕ! <ј@  Arialœ0к4 | enRoute Ф€ulНџџџ}ѕ! №Џx/<ј@  Arialœ0и4 |M&  Ф€™™Ђџџџˆ|ѕ# ™™Ђџџџџџџџџз4k`lastStep:=NOW; ndФ€HЋЯџџџ|ѕ! <ј@  Arialœ0ъ4о|M& пФ€™Ц™иџџџ˜{ѕ# ™Ц™иџџџџџџџџ_4A7nextTrain:=offspring=?Ф€•qн•џџџ {ѕ! <ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџ`4@7M&D>Ф€Й)Й;џџџЈzѕ# Й)Й;џџџџџџџџa4?7M&ABФ€Й•ЙЇџџџ0zѕ# Й•ЙЇџџџџџџџџc4>7aTrain (track,maxSpeed,rs)@=9Ф€•;н_џџџИyѕ! <ј@  Arialœ0d4=7M&>AФ€Й_Йqџџџ@yѕ# Й_Йqџџџџџџџџe4-8,Ф€и)ќ;€џџџШxѕ#<ј@  ArialœTЕД`ЕД0lЕД а‘€ЕДvœј“ŒЕДzPј“˜ЕД$ЄЕДџџџџАЕД‘PМЕДP<•ШЕДдЕДрЕД4,M&)*-Ф€ъѓџџџPxѕ# ъѓъѓџџџџџџџџ4+maxSpeed:= regularSpeed;"'Ф€H2џџџиwѕ! <ј@  Arialœ0ŒД4*maxSpeed:= fastSpeed;,Ф€Я2џџџ`wѕ! <ј@  ArialœBœџџџџ0%џџџџDœ$џџџџEœ$џџџџ ‘pЕ~,і“|Еz№ѕ“ˆЕLœ$”Еџџџџ  Е$4)ANY#",Ф€Hиќџџџшvѕ! <ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџ4(aTrain (trackId,maxSpeed,true)%Ф€H .џџџpvѕ! <ј@  Arialœ0А‘`$Еvœј“l$ЕzPј“x$Е` „$Еˆ$Е$Еœ$ЕЖ€Ј$Е€ Е ЕД$Е,ZІМ$ЕР$Еx—–*4'M&+ Ф€l2l_џџџјuѕ# l2l_џџџџџџџџ+4& detecting%Ф€H@dџџџ€uѕ! Odр…ŸђљOhЋ‘+'ГйpК'l pК'l X+l<ј@  Arialœ0XGi-4%M&(&Ф€l.l@џџџuѕ# l.l@џџџџџџџџ.4$trackId:=self;#Ф€HЂЦџџџtѕ! <ј@  Arialœ}`0pbШ\ }`pbWj(](]}`xRgOџџџџ9`/4#M&$)Ф€lЦlиџџџtѕ# lЦlиџџџџџџџџ04X8cФ€d-= $jџџџаpѕ#<ј@  Arialœ0ььД„UpК'lnВрwџџџфwєxє2(2){4V8M&GAФ€ќ ќџџџрoѕ# ќ ќџџџџџџџџ4U8M&LCФ€ѓDѓMџџџhoѕ# ѓDѓMџџџџџџџџ€4T8 detectingRФ€Hlџџџ№nѕ! ш?Ix/`!љ<ј@  Arialœ0Ž4S8position(p1,p2)RP=Ф€HЂЦџџџxnѕЁ HЂЂЦHЦaД<ј@  ArialœˆРQ0№/p$K@‚Kи†ћ˜ПQШ†Kиgћиgћ˜ПQ`еQ~P\S4R8M&TSФ€llЂџџџnѕ# llЂџџџџџџџџŒ4Q8%p1 < posSensor1 AND posSensor1 <= p2PKN;Ф€Hиќџџџˆmѕ! <ј@  ArialœH(C0ˆ™Kh71ФЦ€$$џџџ4L8detectApproaching (trackId)KUФ€Я Dџџџ0kѕ! Я ў 2ўDЯD<ј@  Arialœ0ььД„UpК'lnВрwџџџфwєxє‡4K8M&QLJФ€ъѓ џџџИjѕ# ъѓъѓ џџџџџџџџ†4J88trueKФ€ќ $jџџџ@jѕ#<ј@  ArialœдаШ0 X+lX+l0X+lpК'l X+l4I88trueHФ€Т#д $jџџџШiѕ#<ј@  ArialœдаШ0 X+lX+l0X+lpК'l X+l…4H8M&FGIФ€ЇќцџџџPiѕ# ЇќЇќцџџџџџџџџ„4G8detectLeaving (trackId)HVФ€иц  џџџиhѕ! ицц ј и <ј@  Arialœ0ььД„UpК'lnВрwџџџфwєxєƒ4F8$p1 < posSensor2 AND posSensor2 <=p2BNEH9Ф€H•Йџџџ`hѕ! <ј@  ArialœH(C0ˆ™KhФe€…J‹P $jџџџРbѕ3№04TkK PanelChannelSФ€‘DйV $jџџџHbѕ#<ј@  Arialœ0ё0486M!jhg7Фk€ЇŒЌŒџџџаaѕ#  ЌŒЇŒџџџџ1476N (gateControl)8Ф€Й•ЇџџџXaѕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ014g6` PanelChannel8Ф€ zRŒ $jџџџр`ѕ#<ј@  Arialœ014h6$i8jФe€Є‰Њ $jџџџh`ѕ#14i6`?name910hФ€А•дЇ $jџџџ№_ѕ#<ј@  Arialœ014j6$8kUФe€Љ‰Џ $jџџџx_ѕ# 14k6KjФ€ƒzЇŒ $jџџџ_ѕ#<ј@  Arialœ0 14Э|aTrain (track,maxSpeed,rs)ЪЩХФ€аVєџџџˆ^ѕ! <ј@  Arialœ0Щ24Ь| nextTrainгЪЫФ€ЯЃЧџџџ^ѕ! <ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџЪ24Ы|M&ЬвФ€ѓЧѓџџџ˜]ѕ# ѓЧѓџџџџџџџџЫ24|[elseЫФ€иЧќй€џџџ ]ѕ#<ј@  ArialœЁ"`’˜0˜ž—4™"0oo@!$™ ћ˜nрm@!p ™Ф™€mАl!А `H”˜ЬPl0l Ь24Ъ|M&ЬЭФ€Е2аџџџЈ\ѕ# Е2Е2аџџџџџџџџЭ24|8nullЪФ€Ѓ)Е€џџџ0\ѕ#<ј@  Arialœ$/0/0><ј@  Arialœ0"34valupperBoundФ€ЂhъŒџџџhNѕ! <ј@  Arialœ0034M&*Ф€ЦŒЦ%џџџ№Mѕ# ЦŒЦ%џџџџџџџџ:34*8falseФ€Я•ѓЇ $jџџџxMѕ#<ј@  Arialœ0!Ѕl0Pџџџ<ј@ ;34M&+Ф€cќЂ)џџџMѕ# Ђќcќc)џџџџџџџџ<34+8trueФ€l) $jџџџˆLѕ#<ј@  Arialœ@0=34M&,Ф€ъz2АџџџLѕ# ъz2z2Аџџџџџџџџ>34,8trueФ€;•_Ї $jџџџ˜Kѕ#<ј@  Arialœ0?34M&Ф€cMЦ%џџџ Kѕ# cMcяЦяЦ%џџџџџџџџ@34M&Ф€Цд2%џџџЈJѕ# 2д2яЦяЦ%џџџџџџџџA34ђс/accel:= call minmax(minAccel,sigAccel, accel);ь№яцФ€Hž Тџџџ0Jѕ! <ј@  Arialœial0D34ёсM&єэФ€иъ2VИIѕ# иъ2ъ2VџџџџџџџџE34с8-1ёФ€сиѓъ $jџџџ@Iѕ#<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџF34№сM&ѕђФ€Д;ДžШHѕ# Д;ДžџџџџџџџџG34ясM&ђќФ€ДТДдPHѕ# ДТДдџџџџџџџџH34юсM&ќўФ€Д ДиGѕ# Д Дџџџџџџџџ^34˜’/* timers */ timer t1;Ф€ƒД[сџџџ`Gѕ# ƒДQД[ОQОQД[О[сƒс<ј@  ArialœNEXTen; 0DSTATE opening; STATE closed; INPUT openGate; TASK SET(NOW+openingTime,T1); NEXTSTATE openЈ34YnoneФ€HдјџџџшFѕЃ HддјHјaц<ј@  Arialыњрыњ0ьњ€ьњаьњ эњpэњœ0PvgЋ34M&.$Ф€llЂpFѕ#  llЂџџџџџџџџ­34 startTrainФ€HžТџџџјEѕ! №hbр…ŸђљOhЋ‘+'ГйpК'l pК'l X+lount);<ј@  ArialœBœџџџџ0$џџџџDœ$џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ%џџџџ Hœ$Ў34M& Ф€lƒlž€Eѕ#  lƒlžџџџџџџџџЏ34M&(Ф€lјl Eѕ#  lјl џџџџџџџџА34M&Ф€lТlдDѕ#  lТlдџџџџџџџџБ34C8detectApproaching (trackId)UBФ€ЯMqџџџDѕ! ЯMўM_ўqЯq<ј@  Arialœ0ььД„UpК'lnВрwџџџфwєxєЦ34B8M&CFФ€lqѓ• Cѕ# ѓqѓƒlƒl•џџџџџџџџЧ34A8detectLeaving (trackId)V@Ф€и 7џџџ(Cѕ! и %7и7<ј@  Arialœ0ььД„UpК'lnВрwџџџфwєxєЩ34@8M&AOФ€l7ќ[АBѕ# ќ7ќ@l@l[џџџџџџџџЪ34эсaccel:=maxAccel;ёьшФ€ЦVžzџџџ8Bѕ! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœial0xзњШзњињhињИињйњXйњЈйњјйњHꜘкњшкњ8лњˆлњилњ(мњxмњШмњнњhнњИнњоњXоњЈоњјоњHпњшпњ8рњˆрњирњo>4ьсM&эђФ€Дz2žРAѕ# 2z2ƒДƒДžџџџџџџџџp>4ыс#scalculating maximum possible acceleration (respecting position and speed of previous train to prevent a collisionъФ€ЇDџџџHAѕ# <ј@  Arialижњ(зњxзњШзњињhињИињœial0јЄ/HЅ/˜Ѕ/шЅ/8І/ˆІ/иІ/(Ї/xЇ/ШЇ/Ј/hЈ/ИЈ/Љ/XЉ/ЈЉ/јЉ/HЊ/˜Њ/шЊ/8Ћ/ˆЋ/иЋ/(Ќ/xЌ/ШЌ/­/h­/И­/Ў/XЎ/q>4ъсM&ыѕФ€ )Ї)а@ѕ#  )))))Ї)џџџџџџџџr>4щс#Ucalculation maximum possible acceleration (no previous train - maximum acceleration)шФ€ЇVzџџџX@ѕ# <ј@  Arialижњ(зњxзњШзњињhињИињœ@–њ0l0P"!џџџ<ј@  Arial…/P…/ …/№…/@†/†/р†/0‡/€‡/а‡/ ˆ/pˆ/Рˆ/‰/`‰/s>4шсM&щэФ€žhЇhр?ѕ# žhЇhџџџџџџџџt>4чс#9acceleration is limited by signal status and brake forceцФ€ЇžТџџџh?ѕ# <ј@  Arialижњ(зњxзњШзњињhињИињœџџџ0<ј@  Arialит/(у/xу/Шу/ф/hф/Иф/х/Xх/Јх/јх/Hц/˜ц/шц/8ч/ˆч/ич/(ш/xш/Шш/щ/hщ/Ищ/u>4цсM&чђФ€ АЇА№>ѕ#  АЇАџџџџџџџџv>4хс#calculate current speedфФ€Їнџџџx>ѕ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0!cl0Pw>4фсM&хќФ€ яЇя>ѕ#  я)я)яЇяџџџџџџџџx>4ус#calculate current positionтФ€Ї@џџџˆ=ѕ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0l0P0Uџџџ<ј@  Arial y>4тсM&уўФ€ .Ї.=ѕ#  .Ї.џџџџџџџџz>4d`M&kbФ€lЯlс˜<ѕ# lЯlсџџџџџџџџ}>4c`M&mjФ€lMlh <ѕ#  lMlhџџџџџџџџ—>4 ##immediately react to signal changesФ€_сџџџЈ;ѕ# <ј@  Arialижњ(зњxзњШзњињhињИињœ$ 0џџџџ Gœ$џџџџ Lœ%џџџџ Hœ$џџџџ Iœ$џџџџMœ$џџџџJœ$˜>4M& +Ф€‡ѓ_ѓ0;ѕ# ‡ѓ_ѓџџџџџџџџ™>4b`$pos:=0; speed:=0; accel:=maxAccel;daФ€HсџџџИ:ѕ! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяxA4a`M&bmФ€ll)@:ѕ# ll)џџџџџџџџyA487M&JHФ€ZѓZШ9ѕ# ZѓZџџџџџџџџцA4ƒ|handover} „Ф€•hяŒџџџЈ8ѕ! Ÿhхhяrя‚хŒŸŒ•‚•r<ј@  ArialЈзњјзњH蜘ињшињ8йњˆйњœ(0 вўЧHf–рб– й/ш/`:–гш<”Hf–f–BП–А/ЩyBи>ƒиО–rB2„| „žœš›™—˜…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸƒ4„RФ€-FQX $jџџџ08ѕ#<ј@  Arialœ0sB4œ„ZФ€---- $jџџџИ7ѕ#<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџtB4›„UФ€---- $jџџџ@7ѕ#<ј@  Arialœ0uB4š„\ ProcedureФ€--n= $jџџџШ6ѕ#<ј@  Arialœ0 Ањќ ;ћ УЎ УЎАњќ†аљќњќ@1Ањќ@х§ `ћќvB4™„_Ф€s-s- $jџџџP6ѕ#<ј@  Arialœ0wB4ž„`handoverФ€s-Ј= $jџџџи5ѕ#<ј@  Arialœ0xB4˜„cФ€[-v= $jџџџ`5ѕ#<ј@  Arialœ01(1)yB4–„M&•Ф€Ц_V_p4ѕ# Ц_V_џџџџџџџџ„B4•„#7next train not yet created -> it has to request signal–Ф€VMцqџџџј3ѕ# <ј@  Arialœ0ƒB4”„M&“‘Ф€ЦъVъ€3ѕ# ЦъVъџџџџџџџџ‚B4“„#0hand over signal notification to the next train”Ф€Vицќџџџ3ѕ# <ј@  Arialœ0B4’„M&‘Ф€ЂќЂџџџ2ѕ# ЂќЂџџџџџџџџ€B4‘„inSight (track,nextTrain)Š’”Ф€~иЦќџџџ2ѕ! ~и­иЦъ­ќ~ќ<ј@  Arialœ0B4„ nextTrain’…ŽФ€~Ц2џџџ 1ѕ! <ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ~B4„ rs:=true;އ–Ф€~MЦqџџџ(1ѕ! <ј@  Arialœ0}B4Ž„M&Ф€Ђ2ЂMџџџА0ѕ# Ђ2ЂMџџџџџџџџ|B4„8nullŽФ€Ћ2НD $jџџџ80ѕ#<ј@  Arialœ0{B4Œ„handoverDone:=true;…‡†Ф€~ЇЦЫџџџР/ѕ! <ј@  Arialœ `|0X–@БА ‰…јІ’Ј‹ pК'l И•‘ \œŠМœŠМX+l€ˆPё……B4‚|handover€Ф€uН%џџџH/ѕ! <ј@  Arialл/Xл/Јл/јл/Hм/˜м/шм/œ8•0X+lШI’Pё–•Р•• 'И•Р—• 8•\6 8•\6X+lШI’ †B4|M&е‚Ф€™н™а.ѕ# ™н™џџџџџџџџ‡B4|8falseФ€ЂяЦ $jџџџX.ѕ#<ј@  Arialœ(/а•0ШH–*PXH–ИI–Xљ{0Я”0FˆB4€|M&‚ Ф€™%™Iр-ѕ#  ™%™Iџџџџџџџџ‰B4|M&е Ф€?Ы™Ih-ѕ# uЫ?Ы?7™7™IџџџџџџџџŠB4|8trueФ€HЙlЫ $jџџџ№,ѕ#<ј@  ArialœИ•0 8•И 8•ИX+lШI’а8•ˆ8Œ 4`р’0|a 0В§‹B4~|#2hands over signal notification to the next train}Ф€ _v•џџџx,ѕ# <ј@  ArialœˆЯ’0aш=ƒXЛ’ 8Є§ 0 8Є§М’|ў7А/pМ‘Oˆk’ŒB4}|M&~ƒФ€яz z,ѕ# яzјzјz zџџџџџџџџB4‹„ŠФ€~‡ЦЋџџџˆ+ѕ! и8”р…ŸђљOhЋ‘+'ГйpК'l pК'l X+ly•ИQ”<ј@  ArialТ/XТ/ЈТ/јТ/HУ/˜У/шУ/œp—0aш=ƒј•—ˆД§ ј•—А/pМ‘aјœ—ˆД§ХŒ7ЧŽB4Š„M&‹‘Ф€ЂЋЂи+ѕ#  ЂЋЂиџџџџџџџџB4‰„†ˆФ€цД џџџ˜*ѕ! <ј@  ArialPІњ Іњ№Іњ@ЇњЇњрЇњ0Јњœ~“0•0Šа}“@#‹Hn|АXА/шIŒaа}“xЕ§иЄў7`B4ˆ„“‰Ф€АТдд $jџџџ *ѕ#<ј@  ArialœЬ0a№г’ xХў`Ъ’Ь’Phz А/Щya‘B4‡„M&ŒФ€ЂqЂЇЈ)ѕ# ЂqЂЇџџџџџџџџ’B4†„M&Œ‰Ф€ЂЫЂц0)ѕ# ЂЫЂцџџџџџџџџ“B4…„M&ŒŸФ€Z ЂЇИ(ѕ# ~ Z Z•Ђ•ЂЇџџџџџџџџ”B4Ÿ„[else…Ф€Z~  $jџџџ@(ѕ#<ј@  Arialœ0(Ф’Hа//Pђ˜х X‘рф№f†аŸ§`еˆ•B4"Ф regularTracks  #Ф€ƒЯЫѓџџџ 'ѕ! ЯСЯЫйЫщСѓѓƒщƒй<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0;E2#Ф #DB@A?C=>$%&'()*+,-./0123456789:;<=>?@ABCDEF"4!Ф#returns all regular tracks Ф€яЯmѓџџџЈ&ѕ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0E4B#ZФ€---- $jџџџ@%ѕ#<ј@  Arial§џџџ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€œ0?E4A#UФ€---- $jџџџШ$ѕ#<ј@  Arial œ0ШOСрsЗШ@E4@#\ ProcedureФ€--n= $jџџџP$ѕ#<ј@  Arialœ0 „РrЗˆАРAE4?#_Ф€s-s- $jџџџи#ѕ#<ј@  Arialœ0BE4D#` regularTracksФ€s-Н= $jџџџ`#ѕ#<ј@  Arialœ0CE4>#cФ€[-v= $jџџџш"ѕ#<ј@  Arialœ01(1)DE4<#:Ф€clЋџџџј!ѕ! <ј@  Arialœ0Н%,і“ Н%z№ѕ“Н%џџџџ $Н%$0Н% Oœ<Н%џџџџHН%Lœ$TН%џџџџ `Н%$ IœJE4;#'lstCopy:=trackLst; regular:=Emptylist;:8Ф€cЋЋЯџџџ€!ѕ! <ј@  ArialœFœџџџџ0$Р‘Й%v,і“Й%Ъ4№ѕ“(Й%џџџџ 4Й%$@Й%MœLЙ%џџџџXЙ%Jœ$dЙ%џџџџpЙ%$KE4:#M&<;Ф€‡‡Ћџџџ!ѕ# ‡‡ЋџџџџџџџџLE49#lstCopy(816+Ф€cѓЋџџџ ѕ! <ј@  Arialœ0pВ%Ъ4,і“|В%v№ѕ“ˆВ%џџџџ ”В%$ В% OœЌВ%џџџџИВ%Lœ%ФВ%џџџџ аВ%$ IœME48#M&;9Ф€‡Я‡ѓџџџ ѕ# ‡Я‡ѓџџџџџџџџNE47#2lstCopy:= substring(lstCopy,2,length(lstCopy)-1);%.(Ф€c Ћ.џџџ ѕ! <ј@  Arialœ0Ы%v,і“Ы%Ъ4№ѕ“(Ы%џџџџ 4Ы%$@Ы% OœLЫ%џџџџXЫ%Lœ$dЫ%џџџџ pЫ%$ IœOE46#M&9-5Ф€‡‡;џџџ(ѕ# ‡‡;џџџџџџџџPE45#[else6Ф€ Д2€џџџАѕ#<ј@  Arialœ0р‘Ц%Ъ4ьѓ“ Ц%Ц%$Ц%0Ц%<Ц%HЦ%TЦ%`Ц%QE44#13Ф€2VVzџџџ8ѕ! <ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџRE43#“regular4Ф€_Vƒh€џџџРѕ#<ј@  Arialœ0 aсџџџџсџџџџсџџџџSE42#R/* variables */ DCL lstCopy TrackList; DCL regular TrackList; DCL tr TrackId;Ф€АQdЋџџџHѕ# АQZQd[Z[ZQd[dЋАЋ<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџTE41#M&940Ф€ЋDVџџџаѕ# ЋDDVџџџџџџџџUE40#8 Emptylist1Ф€Дѓъ€џџџXѕ#<ј@  ArialœT$`$0l$4\ІP$x$L\Іџџџџ„$‘$РS$ $Ј$‘Pф№—ф№—VE4/#!regular:= regular//mkstring(tr);$.)Ф€cТЋцџџџрѕ! <ј@  ArialœFœџџџџ0$А‘Ј>v,і“œЈ>і№ѕ“ЈЈ>џџџџ ДЈ>$РЈ>MœЬЈ>џџџџиЈ>Jœ$фЈ>џџџџ№Ј>$WE4.#M&/7Ф€‡ц‡ џџџhѕ# ‡ц‡ џџџџџџџџXE4-#tr:=first(lstCopy);6&Ф€c;Ћ_џџџ№ѕ! <ј@  ArialœFœџџџџ0$@‘`О>Ъ4`њ“lО>*Œ№ѕ“xО>џџџџ „О>$О>MœœО>џџџџЈО>Jœ$ДО>џџџџРО>$YE4,##for all tracks+Ф€qѓЙџџџxѕ# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџIE4+#M&,9Ф€Ћqѕ# ЋqџџџџџџџџHE4*##add the tracks to the list)Ф€qТЫцџџџˆѕ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0HќА‚šp:’@Јj§ХGE4)#M&*/Ф€Ћдqдѕ# ЋдqдџџџџџџџџFE4(#M&79Ф€6ъ‡@˜ѕ# ‡.‡@6@6ъ‡ъ‡ѓџџџџџџџџ_E4'#trackTbl(tr).speed=fastSpeed&$%Ф€cqЋ•џџџ ѕ! <ј@  ArialhЬ/ИЬ/Э/XЭ/ЈЭ/јЭ/HЮ/œ0`E4&#M&-'Ф€‡_‡qЈѕ# ‡_‡qџџџџџџџџaE4%#M&'7EФ€‡ƒЯ 0ѕ# ЋƒЯƒЯј‡ј‡ џџџџџџџџbE4E#8true%Ф€иžќА $jџџџИѕ#<ј@  Arialœ0cE4$#M&'/FФ€‡•‡Т@ѕ#  ‡•‡ТџџџџџџџџdE4F#8false$Ф€žДА $jџџџШѕ#<ј@  Arialœ0eE4 ѓM& Ф€~V~qPѕ# ~V~qџџџџџџџџЙE4 ѓsetSignals (tr,red)єФ€ZЋЂЯџџџиѕ! ZЋ‰ЋЂН‰ЯZЯ<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0pЬ ’,і“|Ь ~№ѕ“ˆЬ џџџџ ”Ь $ Ь  OœЌЬ џџџџИЬ Lœ%ФЬ џџџџ аЬ Р ‘рЬ ~ЛE4 ѓ waiting2Ф€ZъЂџџџ`ѕ! №“x/<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`ŠњœHœ0џџџџ а‘€?Bv,і“Œ?BЪ4№ѕ“˜?BJœ$Є?BџџџџА?B$М?BRœШ?Bџџџџд?BQœ$р?BџџџџМE4ѓ*Ф€Н2Vџџџшѕ! ж22ьVНV<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџНE4ѓsettingDone(tr2,st) Ф€Z2ЂVџџџpѕЁ Z2Ђ2ЂVZVsD<ј@  Arialœ0`„šЈџОE4ѓM& Ф€~~2јѕ# ~~2џџџџџџџџПE4ѓM& Ф€~с2€ѕ# ~~сс2џџџџџџџџРE4ѓM&  Ф€~Я~ъѕ# ~Я~ъџџџџџџџџСE4ѓ“Ф€•Й. $jџџџѕ#<ј@  Arialœў0шВšХE4ѓїФ€lm‘џџџѕ! <ј@  Arialœ0ЦE4ѓіФ€ZQЂuџџџ ѕ! €phгn˜jCh(FИti€t €лjР?tP-jЕuиэnpсmgАk№Н ˆƒmаC ШYjh€p<ј@  Arialœ0ЧE4ѓcФ€d-=€џџџАѕ#<ј@  Arialœ1”‘˜0  C01 z q0§z1@d‘˜d‘˜a `зІ11(1)ЩE4ѓ` switchFastФ€k-Ј=€џџџ8ѕ#<ј@  Arialœa0  C01  Иz/qџz1`t˜t˜a @СД01 ЙzЯE4ѓ_Ф€k-k-€џџџРѕ#<ј@  Arialœ0аВz?Ј@иz z,Г@ГzP zаnЏ€qw€qw@Гz€БzРЅzЪE4ѓ\ ProcedureФ€--f=€џџџHѕ#<ј@  Arialœ0№Гz01 Дz@ГzжzP zqДz?Ј cu€ОzЫE4ѓUФ€----€џџџа ѕ#<ј@  Arial œ0Зzp ЗzрЊzрeЉЋz z0 ЕЗz zЬE4ѓZФ€----€џџџX ѕ#<ј@  Arialœ zрИz0АjЈљyљyрИzЖz ЗzЏz`l…zмКz@Зz z@Иz0ЭE4ѓRФ€-FQX€џџџр ѕ#<ј@  Arialœ010\Йz\˜ zЙzPq`КzрЊz ЙzЮE4ђФ switchFast№ ѓФ€ƒЫ)џџџР ѕ! СЫЫС))ƒƒ<ј@  Arialœ№0dTu*[ІJєZІpTu.[ІњA00z˜0z˜ˆTuФщv`AЄl— ь—ЏE2ѓФ ѓєѕіїјљњћќ§ўџ     ђ4ёФ#1signals of regular tracks to red, close the gate№Ф€яm)џџџH ѕ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ЎE4№ФM&ёђФ€Ыяа ѕ# Ыяџџџџџџџџ­E4 ѓ?/* variables */ DCL tr, tr2 TrackList; DCL st SignalStatus;Ф€нZdЋџџџX ѕ# нZZZddZdZZdddЋнЋ<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџЗE4 ѓtr=tr2 and st=red Ф€ZqЂ•џџџр ѕ! <ј@  ArialhЬ/ИЬ/Э/XЭ/ЈЭ/јЭ/HЮ/œ0`„šЈџЖE4ѓM&  Ф€?с~ƒh ѕ# Zƒ?ƒ?с~с~ъџџџџџџџџДE4ѓ8falseФ€?Œcž $jџџџ№ѕ#<ј@  Arialœџџџџ0Wmџџџџ№WmА/и—mX@n@Vmш/АZk`џџџџбE4ѓ#%wait until all signals have been setФ€;ъЙџџџxѕ# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ а‘€?Bv,і“Œ?BЪ4№ѕ“˜?BJœ$Є?BџџџџА?B$М?BRœШ?Bџџџџд?BQœ$р?BџџџџГE4ѓM& Ф€Ђќ;ќѕ# Ђќ;ќџџџџџџџџВE4ѓ#+set all stopping signals of regular TracksФ€;ЋЙЯџџџˆѕ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0`„šЈџБE4ѓM& Ф€ЂН;Нѕ# ЂН;НџџџџџџџџАE4ѓM& Ф€~•~Й˜ѕ# ~•~ЙџџџџџџџџŸF4ѓ8trueФ€‡ЇЋЙ $jџџџ ѕ#<ј@  ArialœFœџџџџ0$џџџџ Lœ$џџџџ Hœ$џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџRœ$ F4яФIsynonym closureTime Duration=120; /* closure time of the gate */Ф€ƒQR~џџџЈѕ# ƒQHQR[H[HQR[R~ƒ~<ј@  Arialœ0 G4юФ%/* timer */ timer t1:=closureTime;Ф€ƒ‡RНџџџ0ѕ# ƒ‡H‡R‘H‘H‡R‘RНƒН<ј@  Arialœer LS 0CLASS ('0':'9')+; OPERATORS "-" : Integer -> Integer; "+" : Integer, Integer -> Integer; "-"  G4эФ carsыФ€?u‡™џџџИѕ! pkess Type CarPrecedanceController <>><ј@  Arialœ(В0џџџџ05i аѓќ/Hњ№ђ˜ѓ16/а@zXG4ьФt1ычФ€?Ћ‡Яџџџ@ѕЁ ?Ћ‡Ћ‡Я?ЯXН<ј@  ArialœY˜Т0А/8bmaџџџџИampРќsџџџџam `mИamh/8(wXG4ыФM&эьФ€c™cЋџџџШѕ# c™cЋџџџџџџџџG4ъФ trainsшФ€? ‡DџџџPѕ! Pмmx/0иD<ј@  Arialœ0G4щФ switchTrainsчшФ€?ъ‡џџџиѕ! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяG4шФM&щъФ€cc `ѕ# cc џџџџџџџџ G4чФM&ьщФ€cЯcъшѕ# cЯcъџџџџџџџџ!G4ѓM&џФ€~н~јџџџpѕ# ~н~јџџџџџџџџ'G4ѓcloseGate via g1њФ€ZЙЂнџџџјѕ! ZЙ‰ЙЂЫ‰нZн<ј@  ArialœFœџџџџ0$џџџџ Lœ$џџџџ Hœ$џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџRœ$(G4ѓ*ќФ€Н@dџџџ€ѕ! ж@@ьdНd<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ)G4џѓ waitingќ§јФ€ZјЂџџџѕ! јё™ˆЮџpЮџ ЮџИЮџаЮџ Яџ8ЯџPЯџhЯџ€Яџ˜ЯџАЯџШЯџрЯџјЯџаџ(аџ@аџXаџpаџљ™ ާ<ј@  Arialœ0HќА‚šp:’@Јj§Х*G4ўѓ gateClosed§їФ€Z7Ђ[џџџˆџєЁ Z7Ђ7Ђ[Z[sI<ј@  Arialœ0`„šЈџ+G4§ѓM&џўФ€~~7џџџџє# ~~7џџџџџџџџ,G4ќѓM&џФ€~с@˜ўє# ~~%с%с@џџџџџџџџ&G4ћѓ#close the gateњФ€;ЙЇнџџџ ўє# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ а‘€?Bv,і“Œ?BЪ4№ѕ“˜?BJœ$Є?BџџџџА?B$М?BRœШ?Bџџџџд?BQœ$р?Bџџџџ%G4њѓM&ћФ€ЂЫ;ЫЈ§є# ЂЫ;Ыџџџџџџџџ$G4љѓ#$wait until the gate has been closedјФ€;јЇџџџ0§є# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ#G4јѓM&љџФ€Ђ ; Иќє# Ђ ; џџџџџџџџ"G4їѓM&ўФ€~[~m@ќє# ~[~mџџџџџџџџ-G4Љ›M&Ќ­Ф€А7А[џџџШћє# А7А[џџџџџџџџРJ4Њ›M&ЋЗФ€l7l[џџџPћє# l7l[џџџџџџџџСJ4Ћ› switchBothЕЊФ€H7џџџињє! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяТJ4Ќ› switchTrainsœЉФ€Œд7џџџ`њє! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяУJ4­› trainsЉФ€Œ[дџџџpљє! АŠx/<ј@  Arialœ0ХJ4Ў›M&АЏФ€А2АDџџџ€јє#  А2АDџџџџџџџџЧJ4Џ›"redefined trainApproaching(track)ЎœЅФ€ŒDдhџџџїєЁ ŒDдDдhŒhЅV<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ$џџџџ Hœ$ЩJ4А› bothЎФ€Œд2џџџїє! р?јx/0иD<ј@  Arialœ0ЪJ4Б›[elseВФ€ся€џџџ іє#<ј@  Arialœ0џџџџApє№—є№—&5ˆєкXєЪ4HєџџџџA0д№—д№— , p ЫJ4В›M&ЖГБФ€Ыи[џџџ(іє# ЫиЫи[џџџџџџџџЬJ4Г› -ВФ€Д[ќџџџАѕє! АŠx/<ј@  Arialœ0ЭJ4Д›80ЕФ€uя‡€џџџ8ѕє#<ј@  Arialœ0ЮJ4Е›M&ЖЋДФ€lнlџџџРєє# lнlџџџџџџџџЯJ4Ж›call totalCountВЕЇФ€HЙнџџџHєє! <ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџаJ4З› bothЊФ€H[џџџXѓє! АŠx/<ј@  Arialœ0вJ4И›M&КЙФ€l2lDџџџ№ёє# l2lDџџџџџџџџеJ4Й›redefined trainLeaving(track)ИФ€HDhџџџxёєЁ HDDhHhaV<ј@  Arialœ0жJ4К› trainsИФ€H2џџџёє! р?јx/0иD<ј@  Arialœ0зJ4М›cФ€d-= $jџџџ№є#<ј@  Arialœ00D§ИC§@C§ШB§PB§1(1)йJ4Т›`TrainsPrecedenceControllerФ€y-= $jџџџ˜яє#<ј@  Arialœ0пJ4Н›_Ф€y-y- $jџџџ яє#<ј@  Arialœ0кJ4О›\ Service TypeФ€--t= $jџџџЈює#<ј@  Arialœ0лJ4П›UФ€---- $jџџџ0ює#<ј@  Arial œ0мJ4Р›ZФ€---- $jџџџИэє#<ј@  Arialœ0нJ4С›Rinherits BasicControllerФ€-FЃV $jџџџ@эє#<ј@  Arialœ0оJ4šmTrainsPrecedenceController˜›Ф€V~ТЂџџџ ьє! <ј@  Arialœ0ДJ2›m›ТРОПНСЛМœžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТš4™m#all trains take precedence˜Ф€ц~ˆЂџџџЈыє# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ГJ4˜mM&™šФ€Тц0ыє# ТцџџџџџџџџВJ4Ј›#9total number of trains (all tracks) between the sensorsЇФ€ѓАqцџџџИъє# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ПJ4Ї›M&ЈЖФ€ЫѓЫ@ъє# Ы™Ы™ЫѓЫџџџџџџџџОJ4І›#first train approachingЅФ€DdhџџџШщє# <ј@  Arialижњ(зњxзњШзњињhињИињœ0НJ4Ѕ›M&ІЏФ€дVVPщє# дVVџџџџџџџџМJ4Є›M&Ѓ Ф€сДсишє# сДсџџџџџџџџЛJ4Ѓ›#5initially the gate is open and all signals are greenЄФ€ДЯ2ѓџџџ`шє# <ј@  Arialижњ(зњxзњШзњињhињИињœ0КJ4Ђ›M&ЁŸФ€l‡l™џџџшчє# l‡l™џџџџџџџџЙJ4Ё› redefinedЂФ€Hc‡џџџpчє! и/и/<ј@  Arialœ0ИJ4 › bothžЄФ€HЯѓџџџјцє! р?јx/0иD<ј@  Arialœ0ЗJ4Ÿ› switchBothЂžФ€H™Нџџџ€цє! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0ЖJ4ž›M&Ÿ Ф€lНlЯцє# lНlЯџџџџџџџџЕJ4qoM&r€Ф€_VнVхє# _VhVhVнVџџџџџџџџ‹J4ro#Fnumber of trains between the sensors (should be 0 due to change C1)qФ€н2[zџџџхє# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ŒJ4soM&tŠФ€Д фє# ДџџџџџџџџJ4to#a lot of cars are waitingsФ€Дќ)џџџ(фє# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ŽJ4—mM&–nФ€ТЦцЦАує# ТЦцЦџџџџџџџџБJ4–m#4cars take precedence, if there are too many waiting—Ф€цДˆиџџџ8ує# <ј@  Arialижњ(зњxзњШзњињhињИињœ0АJ4nmManyCarsPrecedenceController—oФ€VДТиџџџтє! <ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџ‰J2omo•“‘’”Žpqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•n4”oR#inherits TrainsPrecedenceControllerФ€-FрV $jџџџ сє#<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ$џџџџ Hœ$ЎJ4“oZФ€---- $jџџџ(сє#<ј@  Arialœ0­J4’oUФ€---- $jџџџАрє#<ј@  Arial œ0010AяСўPpярі—1`Ќ…јі—@f я010ApяЌJ4‘o\ Service TypeФ€--t= $jџџџ8рє#<ј@  Arialœ0ЋJ4o_Ф€y-y- $jџџџРпє#<ј@  Arialœ(В0џџџџ05i аѓќ/Hњ№ђ˜ѓ16/а@zXЊJ4•o`ManyCarsPrecedenceControllerФ€y-= $jџџџHпє#<ј@  ArialœY˜Т0А/8bmaџџџџИampРќsџџџџam `mИamh/8(wXЏJ4ocФ€[-v= $jџџџаоє#<ј@  ArialœР‘lРЭќ0р9lР:lpџџџџ8lP‘llЏXџџџџ0’lР‘l0•n8n Ж1(1)ЉJ4oM&ŒˆФ€l l%џџџрнє# l l%џџџџџџџџЇJ4Œoset(t1)†Ф€Hц џџџhнє! <ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџІJ4‹o *‰Ф€HЦъџџџ№мє! р?јx/0иD<ј@  Arialœ0ЅJ4Šoredefined manyCarsWaiting‰…sФ€H)џџџxмєЁ H)H)a<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ$џџџџ Hœ$ЄJ4‰oM&‹ŠФ€lъlџџџмє#  lъlџџџџџџџџЃJ4ˆo carsФ€H%Iџџџˆлє! АŠx/<ј@  Arialœ0ЂJ4‡o switchCars…†Ф€HАдџџџлє! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяЁJ4†oM&‡ŒФ€lдlцџџџ˜кє# lдlцџџџџџџџџ J4…oM&Š‡Ф€l)lАџџџ кє# l)lАџџџџџџџџŸJ4„oHsynonym closureTime Duration=30; /* closure time of the gate */Ф€•Zd‡џџџЈйє# •ZZZddZdZZddd‡•‡<ј@  Arialœ0žJ4ƒo carsФ€Ц_ъџџџ0йє! pkess Type CarPrecedanceController <>><ј@  Arialœ(В0џџџџ05i аѓќ/Hњ№ђ˜ѓ16/а@zXJ4‚ot1Ф€_)џџџИиєЁ __))0<ј@  ArialœY˜Т0А/8bmaџџџџИampРќsџџџџam `mИamh/8(wXœJ4oM&ƒ‚Ф€;ъ;џџџ@иє#  ;ъ;џџџџџџџџ›J4€ocall totalCountz|qФ€D_hџџџШзє! <ј@  ArialœР‘lРЭќ0р9lР:lpџџџџ8lP‘llЏXџџџџ0’lР‘l0•n8n ЖšJ4oM&‚€Ф€;);DџџџPзє# ;);Dџџџџџџџџ™J4~o bothwФ€%_Iџџџижє! kx/<ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџ˜J4}o trainsuФ€z%ТIџџџ`жє! Pмmx/0иD<ј@  Arialœ0—J4|oM&€x{Ф€;h;Аџџџшеє# ;h;Аџџџџџџџџ–J4{o80|Ф€DqVƒ $jџџџpеє#<ј@  Arialœ0•J4zoM&€vyФ€_VžАџџџјдє# _VžVžАџџџџџџџџ”J4yo[elsezФ€ЇqЫƒ $jџџџ€дє#<ј@  Arialœ0“J4xo switchBoth|wФ€А_дџџџдє! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010Apя’J4woM&x~Ф€;д;%џџџгє# ;д;%џџџџџџџџ‘J4vo switchTrainszuФ€zАТдџџџгє! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяJ4uoM&v}Ф€žдž%џџџ вє# žдž%џџџџџџџџJ4po%/* timer */ timer t1:=closureTime;Ф€•dЦџџџ(вє# •ZdšZšZdšdЦ•Ц<ј@  Arialœer LS 0CLASS ('0':'9')+; OPERATORS "-" : Integer -> Integer; "+" : Integer, Integer -> Integer; "-" ŠJ4C,фФ€--{= $jџџџ`Uі#<ј@  Arialœ05K4D,ф!Ф€€-а= $jџџџpTі#<ј@  Arialœ04K4E,фФ€€-€- $jџџџшTі#<ј@  Arialœ03K4F,фФ€---- $jџџџиUі#<ј@  Arial œ02K4G,фФ€---- $jџџџPVі#<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџ1K4H,ф Ф€-FQX $jџџџШVі#<ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010Apя0K4ˆeф`Ф€--b= $jџџџ і#<ј@  Arialœ0ˆ.2mI4‰eфdФ€g-Б= $jџџџ( і#<ј@  Arialœ0HL ˆv2˜љ1@j1Pњ/lI4Šeф_Ф€g-g- $jџџџ  і#<ј@  Arialœ0r4X–kI4‹eфaФ€---- $jџџџ і#<ј@  Arial œџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџjI4ŒeфbФ€---- $jџџџ і#<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ р ‘ œ#цN,і“,œ#Z^№ѕ“8œ#Lœ$Dœ#џџџџ Pœ#$iI4eфcФ€-FQX $jџџџ€ і#<ј@  ArialœBœџџџџ0$џџџџDœ$џџџџEœ%џџџџ ‘`’#"O,і“l’#z№ѕ“x’#Lœ$„’#џџџџ ’#$hI4уРфЛФ€--b= $jџџџ№›ѕ#<ј@  Arialœ0œX0l0щј4Ch5qœC„CрuЈCCШwДCœCИxРCЈCр@4фРфПФ€g-”= $jџџџ›ѕ#<ј@  Arialœ 0!+82=l PpК,l pК,l pК,l п@4хРфКФ€g-g- $jџџџx›ѕ#<ј@  Arialœ0о@4цРфМФ€---- $jџџџhœѕ#<ј@  Arial œ0œX0l0щј4Ch5qœC„CрuЈCCШwДCœCИxРCЈCн@4чРфНФ€---- $jџџџрœѕ#<ј@  Arialœ0рш§И(аYјм@4шРфОФ€-FQX $jџџџXѕ#<ј@  Arialœ0P\јQјл@4хфФ€--{= $jџџџ`Uі#<ј@  Arialœ0:4хф!Ф€€-а= $jџџџpTі#<ј@  Arialœ0:4хфФ€€-€- $jџџџшTі#<ј@  Arialœ0:4хфФ€---- $jџџџиUі#<ј@  Arial œ0:4хфФ€---- $jџџџPVі#<ј@  Arialœ0:4хф Ф€-FQX $jџџџШVі#<ј@  Arialœ0:4фIф Ф€-FQX $jџџџШVі#<ј@  Arialœ0Зzp ЗzрЊzрeЉЋz z0 ЕЗz z:4уIфФ€---- $jџџџPVі#<ј@  Arialœ0№Гz01 Дz@ГzжzP zqДz?Ј cu€Оz:4тIфФ€---- $jџџџиUі#<ј@  Arial œ0аВz?Ј@иz z,Г@ГzP zаnЏ€qw€qw@Гz€БzРЅzџ94сIфФ€€-€- $jџџџшTі#<ј@  Arialœ0РМzрЊz Нz z№І0Нzфv№kцyцy0Нz№ёzў94рIф!Ф€€-а= $jџџџpTі#<ј@  Arialœ0HќА‚šp:’@Јj§Х§94пIфФ€--{= $jџџџ`Uі#<ј@  Arialœ1”‘˜0  C01 z q0§z1@d‘˜d‘˜a `зІ1ќ94N7фuФ€--b= $jџџџPДѕ#<ј@  Arialœ0т4O7фyФ€g-Œ= $jџџџ@Еѕ#<ј@  Arialœ0с4P7фtФ€g-g- $jџџџШДѕ#<ј@  Arialœ0р4Q7фvФ€---- $jџџџиГѕ#<ј@  Arialœ0п4R7фwФ€---- $jџџџ`Гѕ#<ј@  Arialœ0о4S7фxФ€-FAV $jџџџшВѕ#<ј@  Arialœ0н4/фuФ€--b= $jџџџPДѕ#<ј@  Arialœ0Ы40фyФ€g-Œ= $jџџџ@Еѕ#<ј@  Arialœ0Ъ41фtФ€g-g- $jџџџШДѕ#<ј@  Arialœ0Щ42фvФ€---- $jџџџиГѕ#<ј@  ArialœрyІ0Ш43фwФ€---- $jџџџ`Гѕ#<ј@  Arialœ0А‚љ˜І(СІЧ44фxФ€-F†V $jџџџшВѕ#<ј@  Arialœ0`˜љзЄЦ4|фxФ€-FAV€џџџшВѕ#<ј@  ArialD7lV•^tKфЉSфЉS”ќ“œАзЕ`6Ї0pA•pA•a4’qрзЕ`6Ї01 ЮЕМ’qиЕ €JЇ1 @A•@A•aˆžq@иЕz4|фwФ€----€џџџ`Гѕ#<ј@  ArialD7lV•^tKфЉSфЉS”ќ“œВЕ “q0 @BЇ1`0B•0B•aH”qжЕ @BЇ01 ŒЕјƒq0жЕYЇ10B•0B•a{4|фvФ€----€џџџиГѕ#<ј@  ArialD7lV•^tKфЉSфЉS”ќ“œ0аqгЕОЇ1@0B•0B•ax‚q№гЕОЇ01 PёДЬ”q дЕ€ЃЇ1|4|фtФ€g-g-€џџџШДѕ#<ј@  ArialD7lV•^tKфЉSфЉS”ќ“œ# 0џџџџџџџџб€ • •M€ЇР@Ї&рЉA0ќRЉф •&}4|фyФ€g-Œ=€џџџ@Еѕ#<ј@  ArialD7lV•^tKфЉSфЉS”ќ“œ8уH0фOXDlёPє•є•3Ї10ќRЉф •3~4|фuФ€--b=€џџџPДѕ#<ј@  ArialD7lV•^tKфЉSфЉS”ќ“œ00 • •p••3.Ї10ф •ь]Љ3€Ї€QЉ`р4^8ф5џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџФ€-FQX $jџџџшЭѕ#<ј@  ArialœдаШ0 X+lX+l0X+lpК'l X+lu4]8ф4Ф€---- $jџџџ`Юѕ#<ј@  Arialœџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџџџџџ§џџџ§џџџ§џџџ§џџџўџџџІџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџџЈЉЊЋЌЎџџџџЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ      !"#$%&'()*+,-./012345>џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?@ABCDEўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџр…ŸђљOhЋ‘+'Гйр…ŸђљOhЋ‘+'Гй0§АИдє@LX l x „  œЈАИР€ирш№фRailway CrossingSDL-2000 Design Contest Jens Brandt/railway crossing, sam 2002, sdl design contest Jens Brandt795@рХІїИ@P,ЄфјС@€Ў‡_—Т@р'T)бС*Cinderel0v4\8ф3Ф€---- $jџџџиЮѕ#<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџw4[8ф1Ф€g-g- $jџџџШЯѕ#<ј@  ArialœH(C0ˆ™Kh4=4j4k4l4m4n4o4p4q4r4s4t4d4e4f4g24Œ4‹4Š4‰4Ž4ˆ4‡4†4…4„4ƒ4‚44€44~4}4|4{4z4y4x4w4v4u4У4Ф4Х4Ц4Ч4Ш4Щ4Ъ4Ы4Ь4Э4Ю4Г4Д4Е4Ж4З4И4Й4К4Л4ы4Я4а4б4в4г4ъ4д4е4ж4М4Н4О4П2ш4ч4ц4х4ф4щ4у4т4с4р4п4о4н4м4л4к4й4и4з44№44ё4ђ4ѓ4є4ѕ4і4ї4ј4љ4њ4ћ4ќ4§4ў4џ4444444444 4 44 4 4 444ь4э4ю4я2k4Q4R4S4T4U4V4W4I4J4ц4K4L4х4M4N4X4Y4Z4[4\4]4^4_4`4a4b4c4d4j4e4f4g4h4i4O4P24-4.4ы4ь4/404Ў4Џ4А4Б4В4Г4Д4Е4Ж4З4И4Й4 4 444х4ц4ч4ш4щ4ъ4d4К4Л4М4д4Н4О4I4J4b4K4a4L4`4M4N4O4_4P4Q4R4S4T4U4V4W4X4^4Y4Z4[4\4]4G4H2c4d4e4f4g4h4i4j4•4ф4–4у4—4˜4™4746454443444 444444414э44ю44444444444444444 4!4"4#4$4%4&4'4(4)4*4я4№4ё4ђ4ѓ4є4ѕ4і4ї4ј4љ4 4 4 4 4 4Њ474е4ж4з4и4й4к4л4м4н4о4п4р484443424б4в4г4д4е4ж414з404/4.4-4и4й4к4,4+4*4)4(4л4м444Z4|4}4~44€44С4Р4П4О4Н4[4\4241404/4.444‚4ƒ4„4…4‹4†4‡4ˆ4‰4Š4]4^2Œ2Е4Ж4М4З4И4Й4К4Л4 4 242'4&4%4$4#4(4"4!4647254Ю4Я2&4%4$4#4"4'4!4 4+4,2H2ч22D4C4B4A4@4E4?4>48492D2B4A4@4?4>4C4=4<4;4Э4Ь4)4*4+4,4-4Ы4444 4 44 4 4 4444444444444444Ъ4н4о2244џ4ў4§44ќ4ћ4њ4=4{4<4;4:4944џ4ў4§4ќ4ћ4њ4љ4ј4ї4і4ѕ4є4ѓ4ђ4ё4№44я4ю4э4444444444444444444z4y4x4w4v4u4t4s4r4q4p4o4n4m4Ќ4­2Ћ4б4а4Я4Ю4Э4в4Ь4Ы4Ъ4Щ4Ш4Ч4Ц4Х4Ф4У4Т4С44Р4П4г4Љ4Ј4Ї4І4Ѕ4Є4Ѓ4Ђ4с4Ё46454F44434G424ь4ы4:4l4k4j4i4h4g4f4e4&4'4(4)4*404+4,4-4.4/442124 4Т4У4Ф4 4Ÿ4ž44œ4›4š4т48492л4к4й4и4з4м4ж4е4O4P4Щ4Ъ4Ы4ї4і4Ь4Э4Ю4Я4а4б4в4г4a4b4c4d4e4f4g4h4i4H4+4,4t4Q4R4‘4S4T4U4V4W4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4ˆ4u4v4w4z4r4s2…4„4ƒ4‚44†4€44~4}4|4{4y4x4‡4‰4Š4‹4Œ44Ž444д4š4›4œ44ž4Ÿ4 4Ё4Ђ4Ѓ4Є4Ѕ4І4Ї4Ј4Љ4Њ4Ћ4Ќ4­4Ў4Џ4А4у4ф4х4ц4ч4э4ш4щ4ъ4ы4ь4У4Ф2ј22Б2Т4’4“2Р4П4О4Н4М4С4Л4К4l4m4n4€44‚4ƒ4„4…4†4‡4ˆ4‰4Š4‹4Œ44Ž444‘4’4“4™4”4•4–4—4˜4z4{2o4p4q4w4r4s4t4u4v4V4W2I4J4K4L4M4N4O4U4P4Q4R4S4T4@4A2.4/404142434445464748494?4:4;4<4=4>4"4#2Й4И4З4Ж4т4ю4я4с4р4п4№4ё4о4н4м4Е4Д4Г4В4Б4А4Џ4Ў4­4Ќ4Ћ4Њ4Љ4Ј4Ї4І4Ѕ4Є4Ѓ4Ђ4Ё4л4ђ4ѓ4к4й4б4а4Я4Ю4Э4Ь4Ы4Ъ4Щ4Ш4Ч4Ц4Х4Ф4У4Т4С4Р4П4О4Н4М4=4>2 4и4є4ѕ4з4ж4е4д4-4k4j4<4н4о4;4:494п4р4847464с4т4544434241404у4ф4х4/4.4ц4ч4ш4-4,4+4щ4ъ4ы4*4)4ь4э4ю4я4№4(4'4ё4ђ4ѓ4є4ѕ4&4а4%4$4і4ї4ј4#4"4!4љ4њ4ћ4 44F4E44444”4“4’4‘44k44Ž4ъ444v4w4x4y4z4{4Œ4|4}4~44€44‚4ƒ4„4…4‹4†4‡4ˆ4‰4Š4p4q2щ4ш4ф4у4т4с4р4п4 4 4 44444Ш4Ч4Ц4Х4!4 444444444Л4К4Й4И4u4t4s4r4o4n4m4l4Д4Г4В4Б4А4Џ4Ў4­4Ќ4Ћ4Њ4Љ4Ј4Ї4І4Ѕ4Є4Ѓ4Ђ4Ё4 4Ÿ4ž44œ4›4š4™4˜4—4–4•4Ÿ4ž444ќ4§4ў4џ44N4M4L4K4J4I4H4G4F4E4D4C4B4A44œ4›4š4™4˜4З4Ж4в4Е4Д4г4Г4В4G4F4*4)4(4'4&4%4$4E4D4C4B4`4_4^4]4x4\4y4[4Z4Y4X44~4}4|4444244444444В4Б4А4Џ4Ў4­4Ќ4Ћ4Њ4Љ4Ј4Ї4І4Ѕ4Є4Ѓ4Ђ4Ё4 4Ÿ4ž44œ4›4š4™4˜4—4–4•4”4“4’4%4$4#4"4!4 4 4Х4Ц4Ч4Ш4Щ4 44444444444444c4b4a4`4_4”4“4’4‘444Ž44Y4X4W4V4U4T4S4R4Q4P4O4N4M4L4K4J4I4H4G4F4E4D4C4B4A4@4?4>4=4<4;4:4948474645444342444Т4С4Р44444444 4 4 4 4 4444444444џ4ў4§4ќ4ћ4њ4љ4—4–4•4”444i4h4‘4@4?4l24<;%/* timer */ timer t1:=closureTime;Фџџ CSDLSymbol•dЦџџџиbї# •ZdšZšZdšdЦ•Ц<ј@  Arialœer LS 0CLASS ('0':'9')+; OPERATORS "-" : Integer -> Integer; "+" : Integer, Integer -> Integer; "-" ŠJ4A;M&BIФџџCSDLLinežдž%џџџ`bї# žдž%џџџџџџџџJ4B; switchTrainsFAФ€zАТдџџџшaї! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяJ4C;M&DJФ€;д;%џџџpaї# ;д;%џџџџџџџџ‘J4D; switchBothHCФ€А_дџџџј`ї! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010Apя’J4E;[elseFФ€ЇqЫƒ $jџџџ€`ї#<ј@  Arialœ0“J4F;M&LBEФ€_VžАџџџ`ї# _VžVžАџџџџџџџџ”J4G;80HФ€DqVƒ $jџџџˆ_ї#<ј@  Arialœ0•J4H;M&LDGФ€;h;Аџџџ_ї# ;h;Аџџџџџџџџ–J4I; trainsAФ€z%ТIџџџ˜^ї! Pмmx/0иD<ј@  Arialœ0—J4J; bothCФ€%_Iџџџ ^ї! kx/<ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџ˜J4K;M&NLФ€;);DџџџЈ]ї# ;);Dџџџџџџџџ™J4L;call totalCountKFH=Ф€D_hџџџ0]ї! <ј@  ArialœР‘lРЭќ0р9lР:lpџџџџ8lP‘llЏXџџџџ0’lР‘l0•n8n ЖšJ4M;M&ONФ€;ъ;џџџИ\ї#  ;ъ;џџџџџџџџ›J4N;t1MKФ€_)џџџ@\їЁ __))0<ј@  ArialœY˜Т0А/8bmaџџџџИampРќsџџџџam `mИamh/8(wXœJ4O; carsMФ€Ц_ъџџџШ[ї! pkess Type CarPrecedanceController <>><ј@  Arialœ(В0џџџџ05i аѓќ/Hњ№ђ˜ѓ16/а@zXJ4P;Hsynonym closureTime Duration=30; /* closure time of the gate */Ф€•Zd‡џџџP[ї# •ZZZddZdZZddd‡•‡<ј@  Arialœ0žJ4Q;M&VSФ€l)lАџџџиZї# l)lАџџџџџџџџŸJ4R;M&SXФ€lдlцџџџ`Zї# lдlцџџџџџџџџ J4S; switchCarsQRФ€HАдџџџшYї! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяЁJ4T; carsYФ€H%IџџџpYї! АŠx/<ј@  Arialœ0ЂJ4U;M&WVФ€lъlџџџјXї#  lъlџџџџџџџџЃJ4V;redefined manyCarsWaitingUQ?Ф€H)џџџ€XїЁ H)H)a<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ$џџџџ Hœ$ЄJ4W; *UФ€HЦъџџџXї! р?јx/0иD<ј@  Arialœ0ЅJ4X;set(t1)RYФ€Hц џџџWї! <ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџІJ4Y;M&XTФ€l l%џџџWї# l l%џџџџџџџџЇJ4[;cФ€[-v= $jџџџ(Vї#<ј@  ArialœР‘lРЭќ0р9lР:lpџџџџ8lP‘llЏXџџџџ0’lР‘l0•n8n Ж1(1)ЉJ4a;`ManyCarsPrecedenceControllerФ€y-= $jџџџАUї#<ј@  ArialœY˜Т0А/8bmaџџџџИampРќsџџџџam `mИamh/8(wXЏJ4\;_Ф€y-y- $jџџџ8Uї#<ј@  Arialœ(В0џџџџ05i аѓќ/Hњ№ђ˜ѓ16/а@zXЊJ4];\ Service TypeФ€--t= $jџџџРTї#<ј@  Arialœ0ЋJ4^;UФ€---- $jџџџHTї#<ј@  Arial œ0010AяСўPpярі—1`Ќ…јі—@f я010ApяЌJ4_;ZФ€---- $jџџџаSї#<ј@  Arialœ0­J4`;R#inherits TrainsPrecedenceControllerФ€-FрV $jџџџXSї#<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ$џџџџ Hœ$ЎJ4:9ManyCarsPrecedenceControllerc;Ф€VДТиџџџ8Rї! <ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџ‰J2;9;a_]^\`Z[<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a:4b9#4cars take precedence, if there are too many waitingcФ€цДˆиџџџРQї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0АJ4c9M&b:Ф€ТЦцЦHQї# ТЦцЦџџџџџџџџБJ4@;#a lot of cars are waiting?Ф€Дќ)џџџаPї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ŽJ4?;M&@VФ€ДXPї# ДџџџџџџџџJ4>;#Fnumber of trains between the sensors (should be 0 due to change C1)=Ф€н2[zџџџрOї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ŒJ4=;M&>LФ€_VнVhOї# _VhVhVнVџџџџџџџџ‹J4jgM&klФ€lНlЯ№Nї# lНlЯџџџџџџџџЕJ4kg switchBothnjФ€H™НџџџxNї! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0ЖJ4lg bothjpФ€HЯѓџџџNї! р?јx/0иD<ј@  Arialœ0ЗJ4mg redefinednФ€Hc‡џџџˆMї! и/и/<ј@  Arialœ0ИJ4ngM&mkФ€l‡l™џџџMї# l‡l™џџџџџџџџЙJ4og#5initially the gate is open and all signals are greenpФ€ДЯ2ѓџџџ˜Lї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0КJ4pgM&olФ€сДс Lї# сДсџџџџџџџџЛJ4qgM&r{Ф€дVVЈKї# дVVџџџџџџџџМJ4rg#first train approachingqФ€Ddhџџџ0Kї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0НJ4sgM&t‚Ф€ЫѓЫИJї# Ы™Ы™ЫѓЫџџџџџџџџОJ4tg#9total number of trains (all tracks) between the sensorssФ€ѓАqцџџџ@Jї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ПJ4d9M&efФ€ТцШIї# ТцџџџџџџџџВJ4e9#all trains take precedencedФ€ц~ˆЂџџџPIї# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ГJ4f9TrainsPrecedenceControllerdgФ€V~ТЂџџџ0Hї! <ј@  Arialœ0ДJ2g9gŽŒŠ‹‰‡ˆhijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽf4gRinherits BasicControllerФ€-FЃV $jџџџИGї#<ј@  Arialœ0оJ4ŒgZФ€---- $jџџџ@Gї#<ј@  Arialœ0нJ4‹gUФ€---- $jџџџШFї#<ј@  Arial œ0мJ4Šg\ Service TypeФ€--t= $jџџџPFї#<ј@  Arialœ0лJ4‰g_Ф€y-y- $jџџџиEї#<ј@  Arialœ0кJ4Žg`TrainsPrecedenceControllerФ€y-= $jџџџ`Eї#<ј@  Arialœ0пJ4ˆgcФ€d-= $jџџџшDї#<ј@  Arialœ00D§ИC§@C§ШB§PB§1(1)йJ4†g trains„Ф€H2џџџјCї! р?јx/0иD<ј@  Arialœ0зJ4…gredefined trainLeaving(track)„iФ€HDhџџџ€CїЁ HDDhHhaV<ј@  Arialœ0жJ4„gM&†…Ф€l2lDџџџCї# l2lDџџџџџџџџеJ4ƒg bothvФ€H[џџџBї! АŠx/<ј@  Arialœ0вJ4‚gcall totalCounti~sФ€HЙнџџџBї! <ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџаJ4gM&‚w€Ф€lнlџџџ Aї# lнlџџџџџџџџЯJ4€g80Ф€uя‡€џџџ(Aї#<ј@  Arialœ0ЮJ4g -~Ф€Д[ќџџџА@ї! АŠx/<ј@  Arialœ0ЭJ4~gM&‚}Ф€Ыи[џџџ8@ї# ЫиЫи[џџџџџџџџЬJ4}g[else~Ф€ся€џџџР?ї#<ј@  Arialœ0џџџџApє№—є№—&5ˆєкXєЪ4HєџџџџA0д№—д№— , p ЫJ4|g bothzФ€Œд2џџџH?ї! р?јx/0иD<ј@  Arialœ0ЪJ4{g"redefined trainApproaching(track)zhqФ€ŒDдhџџџа>їЁ ŒDдDдhŒhЅV<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ$џџџџ Hœ$ЩJ4zgM&|{Ф€А2АDџџџX>ї#  А2АDџџџџџџџџЧJ4yg trainsuФ€Œ[дџџџр=ї! АŠx/<ј@  Arialœ0ХJ4xg switchTrainshuФ€Œд7џџџh=ї! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяУJ4wg switchBothvФ€H7џџџ№<ї! <