аЯрЁБс>ўџ ›ўџџџ •—˜™šЊЋЌ­ЎЏџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџRoot EntryџџџџџџџџЃ+wТ|ƒбЃыsА`~(p&љСЉ@ContentsџџџџџџџџБД$SummaryInformation(џџџџџџџџџџџџ-џџџџџџџџџџџџўџџџ§џџџџџџџџџџџ§џџџ§џџџўџџџ §џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџRoot EntryџџџџџџџџЃ+wТ|ƒбЃыsА€€ p&љСЉ@ContentsџџџџџџџџБЩSummaryInformation(џџџџџџџџџџџџ-џџџџџџџџџџџџџџџџџџџџўџџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџсœop0o—шАўЈўрќрЬ›шАўvw т@4”1Ф,…$$ˆ*џџџш' <ј@  Arialœ0 СD4R11Ф      !"#$%&'()*+,-./012345678 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџџџџџ§џџџ§џџџ§џџџ§џџџўџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџœ§џџџ§џџџ§џџџ§џџџ§џџџ§џџџџџџџВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ,…$$ˆšџџџh&џ' <ј@  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хpххЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ,…$$џџџи­' <ј@  Arial10Ь&Г46•œРЊАD6•0@Г№BГ`(Г€ Г &Г1`мГL6•QPІЎа‡Аа&Г'Г01@Г &Г Г ќ84D1Ф,…$$ˆšџџџШРЖ' <ј@  Arialœ0Kœ$џџџџ@œ$џџџџBœ$џџџџCœ$џџџџDœ$џџџџEœ$џџџџ Fœ 94­1Ф,…$$ˆšџџџЈ‘­' <ј@  Arialœ zрИz0АjЈљyљyрИzЖz ЗzЏz`l…zмКz@Зz z@Иz0 њ94цФ1ієђ№юФ,…$$ˆˆџџџ Ї­' <ј@  ArialD7lV•^tKфЉSфЉS”ќ“œ0 \94К—1Ф,…$$џџџxЗ­' <ј@  Arialџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџœaџџџџ0 €Ре01HДЄq`ыАџџџџ1`|ВА8,•aџџџџ €Ре01E•­ +94y1Ф,…$$џџџРЎ' <ј@  Arialœ0 л94nU1Ф,…$$џџџЈЎ' <ј@  Arialœ0РМzрЊz Нz z№І0Нzфv№kцyцy0Нz№ёz Р94L?1Ф,…$$џџџљ­' <ј@  ArialР`їœ0O€p‘ДаіЈq €Д@MЕУДаЄБp‘ДвР‘ўpџp‘ДРІД  946!1Ф,…$$џџџ@cК' <ј@  Arial€Ў1РœE$ѕ—1œe0аdpyАApжаy1`єє—єє—рАzаy10Ь?мє—{ай ƒ94ЮЕ1Ф,…$$ˆšџџџ(ЯЅ' <ј@  Arialœ0 :4„q1Ф,…$$џџџРК' <ј@  Arialœ0 t?4­Œ1Ф,…$$џџџаUН' <ј@  Arialœœ0hh ў@ўћPagination & document structure"Errors"Empty"Default" Communication" Instances"States & Input"p а d "<4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4a4\4]4^4_4`4:4;2b4c4@4?4>4=4h4i4j4k4l4m4n4o4p4q4r4d4e4f4g2‘444Ž44’4Œ4‹4Š4‰4ˆ4‡4†4…4„4ƒ4‚44€44~4}4|4{4z4y4x4w4v4u4t4s4Щ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џ4444444444 4 4 4 4 4444444444ђ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О4M4N4f4O4e4P4d4Q4R4S4c4T4U4V4W4X4Y4Z4[4\4b4]4^4_4`4a4K4L2g4h4i4j4k4l4m4n4•4ф4–4у4—4˜4™4;4:494847444$4#4"4!4 44414э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\4645444342444‚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>4<4=2H2F4E4D4C4B4G4A4@4?4Э4Ь4-4.4/40414Ы444444444 4 4 444444 4 4444444Ъ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й4S4T4Щ4Ъ4Ы4ї4і4Ь4Э4Ю4Я4а4б4в4г4_4`4a4b4c4d4e4f4g4F4)4*4x4U4V4•4W4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4Œ4y4z4{4~4v4w2‰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Є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К4j4k4l4~44€44‚4ƒ4„4…4†4‡4ˆ4‰4Š4‹4Œ44Ž444‘4—4’4“4”4•4–4x4y2m4n4o4u4p4q4r4s4t4T4U2G4H4I4J4K4L4M4S4N4O4P4Q4R4>4?2,4-4.4/40414243444546474=48494: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Р4C4D2 4и4є4ѕ4з4ж4е4д4+4i4h4B4с4т4A4@4?4у4ф4>4=4<4х4ц4;4:494847464ч4ш4щ45444ъ4ы4ь4342414э4ю4я404/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%4J4I44444”4“4’4‘44o4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Х44444444444П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ž4$4#444444R4Q4P4O4N4M4L4K4J4I4H4G4F4E44œ4›4š4™4˜4Л4К4ж4Й4И4з4З4Ж4E4D4(4'4&4%4$4#4"4C4B4A4@4^4]4\4[4v4Z4w4Y4X4W4V4}4|4{4z4"4!4“4”244444 444И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 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љ4p24<;%/* timer */ timer t1:=closureTime;Фџџ CSDLSymbol•dЦџџџА# •ZdšZšZdšdЦ•Ц<ј@  Arialœer LS 0CLASS ('0':'9')+; OPERATORS "-" : Integer -> Integer; "+" : Integer, Integer -> Integer; "-" ŠJ4A;M&BIФџџCSDLLinežдž%џџџ8# žдž%џџџџџџџџJ4B; switchTrainsFAФ€zАТдџџџРŒ! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяJ4C;M&DJФ€;д;%џџџШМZ# ;д;%џџџџџџџџ‘J4D; switchBothHCФ€А_дџџџPМZ! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010Apя’J4E;[elseFФ€ЇqЫƒ $jџџџиЛZ#<ј@  Arialœ0“J4F;M&LBEФ€_VžАџџџW# _VžVžАџџџџџџџџ”J4G;80HФ€DqVƒ $jџџџ˜V#<ј@  Arialœ0•J4H;M&LDGФ€;h;Аџџџ V# ;h;Аџџџџџџџџ–J4I; trainsAФ€z%ТIџџџXrџ! Pмmx/0иD<ј@  Arialœ0—J4J; bothCФ€%_Iџџџрqџ! kx/<ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџ˜J4K;M&NLФ€;);Dџџџhqџ# ;);Dџџџџџџџџ™J4L;call totalCountKFH=Ф€D_hџџџ8cџ! <ј@  ArialœР‘lРЭќ0р9lР:lpџџџџ8lP‘llЏXџџџџ0’lР‘l0•n8n ЖšJ4M;M&ONФ€;ъ;џџџРbџ#  ;ъ;џџџџџџџџ›J4N;t1MKФ€_)џџџHbџЁ __))0<ј@  ArialœY˜Т0А/8bmaџџџџИampРќsџџџџam `mИamh/8(wXœJ4O; carsMФ€Ц_ъџџџeџ! pkess Type CarPrecedanceController <>><ј@  Arialœ(В0џџџџ05i аѓќ/Hњ№ђ˜ѓ16/а@zXJ4P;Hsynonym closureTime Duration=30; /* closure time of the gate */Ф€•Zd‡џџџdџ# •ZZZddZdZZddd‡•‡<ј@  Arialœ0žJ4Q;M&VSФ€l)lАџџџdџ# l)lАџџџџџџџџŸJ4R;M&SXФ€lдlцџџџHZџ# lдlцџџџџџџџџ J4S; switchCarsQRФ€HАдџџџаYџ! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяЁJ4T; carsYФ€H%IџџџXYџ! АŠx/<ј@  Arialœ0ЂJ4U;M&WVФ€lъlџџџРOџ#  lъlџџџџџџџџЃJ4V;redefined manyCarsWaitingUQ?Ф€H)џџџHOџЁ H)H)a<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ$џџџџ Hœ$ЄJ4W; *UФ€HЦъџџџаNџ! р?јx/0иD<ј@  Arialœ0ЅJ4X;set(t1)RYФ€Hц џџџQџ! <ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџІJ4Y;M&XTФ€l l%џџџQџ# l l%џџџџџџџџЇJ4[;cФ€[-v= $jџџџаFџ#<ј@  ArialœР‘lРЭќ0р9lР:lpџџџџ8lP‘llЏXџџџџ0’lР‘l0•n8n Ж1(1)ЉJ4a;`ManyCarsPrecedenceControllerФ€y-= $jџџџXFџ#<ј@  ArialœY˜Т0А/8bmaџџџџИampРќsџџџџam `mИamh/8(wXЏJ4\;_Ф€y-y- $jџџџрEџ#<ј@  Arialœ(В0џџџџ05i аѓќ/Hњ№ђ˜ѓ16/а@zXЊJ4];\ Service TypeФ€--t= $jџџџ0бў#<ј@  Arialœ0ЋJ4^;UФ€---- $jџџџИаў#<ј@  Arial œ0010AяСўPpярі—1`Ќ…јі—@f я010ApяЌJ4_;ZФ€---- $jџџџ@аў#<ј@  Arialœ0­J4`;R#inherits TrainsPrecedenceControllerФ€-FрV $jџџџЈ,ў#<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ$џџџџ Hœ$ЎJ4:9ManyCarsPrecedenceControllerc;Ф€VДТиџџџјUЖ! <ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџ‰J2;9;a_]^\`Z[<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a:4b9#4cars take precedence, if there are too many waitingcФ€цДˆиџџџ€UЖ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0АJ4c9M&b:Ф€ТЦцЦUЖ# ТЦцЦџџџџџџџџБJ4@;#a lot of cars are waiting?Ф€Дќ)џџџрГ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ŽJ4?;M&@VФ€ДhГ# ДџџџџџџџџJ4>;#Fnumber of trains between the sensors (should be 0 due to change C1)=Ф€н2[zџџџ№Г# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ŒJ4=;M&>LФ€_VнVшПЇ# _VhVhVнVџџџџџџџџ‹J4hgM&ijФ€lНlЯpПЇ# lНlЯџџџџџџџџЕJ4ig switchBothlhФ€H™НџџџјОЇ! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0ЖJ4jg bothhnФ€HЯѓџџџјФЇ! р?јx/0иD<ј@  Arialœ0ЗJ4kg redefinedlФ€Hc‡џџџ€ФЇ! и/и/<ј@  Arialœ0ИJ4lgM&kiФ€l‡l™џџџФЇ# l‡l™џџџџџџџџЙJ4mg#5initially the gate is open and all signals are greennФ€ДЯ2ѓџџџиFЇ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0КJ4ngM&mjФ€сДс`FЇ# сДсџџџџџџџџЛJ4ogM&p|Ф€дVVшEЇ# дVVџџџџџџџџМJ4pg#first train approachingoФ€DdhџџџpFЏ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0НJ4qgM&rƒФ€ЫѓЫјEЏ# Ы™Ы™ЫѓЫџџџџџџџџОJ4rg#9total number of trains (all tracks) between the sensorsqФ€ѓАqцџџџ€EЏ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ПJ4d9M&efФ€ТцАоЉ# ТцџџџџџџџџВJ4e9#all trains take precedencedФ€ц~ˆЂџџџаiЉ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ГJ4f9TrainsPrecedenceControllerdgФ€V~ТЂџџџXiЉ! <ј@  Arialœ0ДJ2g9g’Ž‘‹Œhijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’fB4‘gRinherits BasicControllerФ€-FЃV $jџџџрhЉ#<ј@  Arialœ0оJ4gZФ€---- $jџџџPќ#<ј@  Arialœ0нJ4gUФ€---- $jџџџи~ќ#<ј@  Arial œ0мJ4Žg\ Service TypeФ€--t= $jџџџ`~ќ#<ј@  Arialœ0лJ4g_Ф€y-y- $jџџџxэ#<ј@  Arialœ0кJ4’g`TrainsPrecedenceControllerФ€y-= $jџџџэ#<ј@  Arialœ0пJ4ŒgcФ€d-= $jџџџˆь#<ј@  Arialœ00D§ИC§@C§ШB§PB§1(1)йJ4Šg trainsˆФ€H2џџџ0‰Z! р?јx/0иD<ј@  Arialœ0зJ4‰gredefined trainLeaving(track)ˆ†Ф€HDhџџџИˆZЁ HDDhHhaV<ј@  Arialœ0жJ4ˆgM&Š‰Ф€l2lDџџџАXИ# l2lDџџџџџџџџеJ4‡g1trackTbl(track).count:= trackTbl(track).count-1;†„Ф€Hzžџџџ8XИ! <ј@  Arialœ0дJ4†gM&‰‡Ф€lhlzџџџРWИ# lhlzџџџџџџџџгJ4…g bothtФ€H[џџџˆ§Г! АŠx/<ј@  Arialœ0вJ4„gM&‡ƒФ€lžlЙџџџ§Г# lžlЙџџџџџџџџбJ4ƒgcall totalCount„‚qФ€HЙнџџџ˜ќГ! <ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџаJ4‚gM&ƒuФ€lнlџџџЈђГ# lнlџџџџџџџџЯJ4g80‚Ф€uя‡€џџџ0ђГ#<ј@  Arialœ0ЮJ4€g -Ф€Д[ќџџџИёГ! АŠx/<ј@  Arialœ0ЭJ4gM&ƒ€~Ф€Ыи[џџџ№ЭЖ# ЫиЫи[џџџџџџџџЬJ4~g[elseФ€ся€џџџxЭЖ#<ј@  Arialœ0џџџџApє№—є№—&5ˆєкXєЪ4HєџџџџA0д№—д№— , p ЫJ4}g bothzФ€Œд2џџџЭЖ! р?јx/0иD<ј@  Arialœ0ЪJ4|g"redefined trainApproaching(track)zyoФ€ŒDдhџџџаеЗЁ ŒDдDдhŒhЅV<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ$џџџџ Hœ$ЩJ4{g1trackTbl(track).count:= trackTbl(track).count+1;ywФ€ŒzдžџџџXеЗ! <ј@  Arialœ0ШJ4zgM&}|Ф€А2АDџџџрдЗ#  А2АDџџџџџџџџЧJ4ygM&|{Ф€АhАzџџџ№щІ# АhАzџџџџџџџџЦJ4xg trainssФ€Œ[дџџџxщІ! АŠx/<ј@  Arialœ0ХJ4wgM&{vФ€АžАџџџщІ# АžАџџџџџџџџФJ4vg switchTrainswsФ€Œд7џџџ†Н! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяУJ4ug switchBoth‚tФ€H7џџџ˜…Н! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяТJ4tgM&u…Ф€l7l[џџџ …Н# l7l[џџџџџџџџСJ4sgM&vxФ€А7А[џџџH\Ў# А7А[џџџџџџџџРJ4ЩХM&ацФ€~[~mа[Ў# ~[~mџџџџџџџџ-G4ЪХM&ЫбФ€Ђ ; X[Ў# Ђ ; џџџџџџџџ"G4ЫХ#$wait until the gate has been closedЪФ€;јЇџџџ-М# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ#G4ЬХM&ЭгФ€ЂЫ;Ыˆ,М# ЂЫ;Ыџџџџџџџџ$G4ЭХ#close the gateЬФ€;ЙЇнџџџ,М# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ а‘€?Bv,і“Œ?BЪ4№ѕ“˜?BJœ$Є?BџџџџА?B$М?BRœШ?Bџџџџд?BQœ$р?Bџџџџ%G4ЮХM&бвФ€~с@РўД# ~~%с%с@џџџџџџџџ&G4ЯХM&баФ€~~7џџџHўД# ~~7џџџџџџџџ,G4аХ gateClosedЯЩФ€Z7Ђ[џџџа§ДЁ Z7Ђ7Ђ[Z[sI<ј@  Arialœ0`„šЈџ+G4бХ waitingдЮЯЪФ€ZјЂџџџ%А! јё™ˆЮџpЮџ ЮџИЮџаЮџ Яџ8ЯџPЯџhЯџ€Яџ˜ЯџАЯџШЯџрЯџјЯџаџ(аџ@аџXаџpаџљ™ ާ<ј@  Arialœ0HќА‚šp:’@Јj§Х*G4вХ*ЮФ€Н@dџџџˆ$А! ж@@ьdНd<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ)G4гХcloseGate via g1едЬФ€ZЙЂнџџџ$А! ZЙ‰ЙЂЫ‰нZн<ј@  ArialœFœџџџџ0$џџџџ Lœ$џџџџ Hœ$џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџRœ$(G4дХM&гбФ€~н~јџџџАщК# ~н~јџџџџџџџџ'G4Й”M&ОЛФ€cЯcъ8щК# cЯcъџџџџџџџџ!G4К”M&ЛМФ€cc РшК# cc џџџџџџџџ G4Л” switchTrainsЙКФ€?ъ‡џџџрY! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяG4М” trainsКФ€? ‡DџџџhY! Pмmx/0иD<ј@  Arialœ0G4Н”M&ПОФ€c™cЋџџџ№Y# c™cЋџџџџџџџџG4О”t1НЙФ€?Ћ‡ЯџџџШbВЁ ?Ћ‡Ћ‡Я?ЯXН<ј@  ArialœY˜Т0А/8bmaџџџџИampРќsџџџџam `mИamh/8(wXG4П” carsНФ€?u‡™џџџPbВ! pkess Type CarPrecedanceController <>><ј@  Arialœ(В0џџџџ05i аѓќ/Hњ№ђ˜ѓ16/а@zXG4Р”%/* timer */ timer t1:=closureTime;Ф€ƒ‡RНџџџиaВ# ƒ‡H‡R‘H‘H‡R‘RНƒН<ј@  Arialœer LS 0CLASS ('0':'9')+; OPERATORS "-" : Integer -> Integer; "+" : Integer, Integer -> Integer; "-"  G4С”Isynonym closureTime Duration=120; /* closure time of the gate */Ф€ƒQR~џџџјPЋ# ƒQHQR[H[HQR[R~ƒ~<ј@  Arialœ0 G4ёХ8trueеФ€‡ЇЋЙ $jџџџ€PЋ#<ј@  ArialœFœџџџџ0$џџџџ Lœ$џџџџ Hœ$џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџRœ$ F4еХM&лгёФ€~•~ЙPЋ# ~•~ЙџџџџџџџџŸF4жХM&зоФ€ЂН;НџЖ# ЂН;НџџџџџџџџАE4зХ#+set all stopping signals of regular TracksжФ€;ЋЙЯџџџ˜ўЖ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0`„šЈџБE4иХM&йпФ€Ђќ;ќ ўЖ# Ђќ;ќџџџџџџџџВE4йХ#%wait until all signals have been setиФ€;ъЙџџџ`ЖЎ# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ а‘€?Bv,і“Œ?BЪ4№ѕ“˜?BJœ$Є?BџџџџА?B$М?BRœШ?Bџџџџд?BQœ$р?BџџџџГE4№Х8falseкФ€?Œcž $jџџџшЕЎ#<ј@  Arialœџџџџ0Wmџџџџ№WmА/и—mX@n@Vmш/АZk`џџџџбE4кХM&лп№Ф€?с~ƒpЕЎ# Zƒ?ƒ?с~с~ъџџџџџџџџДE4лХtr=tr2 and st=redнекФ€ZqЂ•џџџАъЛ! <ј@  ArialhЬ/ИЬ/Э/XЭ/ЈЭ/јЭ/HЮ/œ0`„šЈџЖE4мХ?/* variables */ DCL tr, tr2 TrackList; DCL st SignalStatus;Ф€нZdЋџџџ8ъЛ# нZZZddZdZZdddЋнЋ<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџЗE4Т”M&УФФ€ЫяРщЛ# Ыяџџџџџџџџ­E4У”#1signals of regular tracks to red, close the gateТФ€яm)џџџИџ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ЎE4Ф” switchFastТ ХФ€ƒЫ)џџџАo! СЫЫС))ƒƒ<ј@  Arialœ№0dTu*[ІJєZІpTu.[ІњA00z˜0z˜ˆTuФщv`AЄl— ь—ЏE2Х” ХяэыьъюшщЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёФ4юХRФ€-FQX€џџџ8o#<ј@  Arialœ010\Йz\˜ zЙzPq`КzрЊz ЙzЮE4эХZФ€----€џџџРn#<ј@  Arialœ zрИz0АjЈљyљyрИzЖz ЗzЏz`l…zмКz@Зz z@Иz0ЭE4ьХUФ€----€џџџ€эЈ#<ј@  Arial œ0Зzp ЗzрЊzрeЉЋz z0 ЕЗz zЬE4ыХ\ ProcedureФ€--f=€џџџэЈ#<ј@  Arialœ0№Гz01 Дz@ГzжzP zqДz?Ј cu€ОzЫE4ъХ_Ф€k-k-€џџџьЈ#<ј@  Arialœ0аВz?Ј@иz z,Г@ГzP zаnЏ€qw€qw@Гz€БzРЅzЪE4яХ` switchFastФ€k-Ј=€џџџ`qЈ#<ј@  Arialœa0  C01  Иz/qџz1`t˜t˜a @СД01 ЙzЯE4щХcФ€d-=€џџџшpЈ#<ј@  Arialœ1”‘˜0  C01 z q0§z1@d‘˜d‘˜a `зІ11(1)ЩE4чХШФ€ZQЂuџџџ№„Ї! €phгn˜jCh(FИti€t €лjР?tP-jЕuиэnpсmgАk№Н ˆƒmаC ШYjh€p<ј@  Arialœ0ЧE4цХЩхФ€lm‘џџџx„Ї! <ј@  Arialœ0ЦE4хХ“цФ€•Й. $jџџџ„Ї#<ј@  Arialœў0шВšХE4фХM&опФ€~Я~ърjВ# ~Я~ъџџџџџџџџСE4уХM&прФ€~с2hjВ# ~~сс2џџџџџџџџРE4тХM&псФ€~~2№iВ# ~~2џџџџџџџџПE4сХsettingDone(tr2,st)тнФ€Z2ЂVџџџ8œЉЁ Z2Ђ2ЂVZVsD<ј@  Arialœ0`„šЈџОE4рХ*уФ€Н2VџџџР›Љ! ж22ьVНV<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџНE4пХ waiting2кфутиФ€ZъЂџџџH›Љ! №“x/<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`ŠњœHœ0џџџџ а‘€?Bv,і“Œ?BЪ4№ѕ“˜?BJœ$Є?BџџџџА?B$М?BRœШ?Bџџџџд?BQœ$р?BџџџџМE4оХsetSignals (tr,red)ЦфжФ€ZЋЂЯџџџЃЄ! ZЋ‰ЋЂН‰ЯZЯ<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0pЬ ’,і“|Ь ~№ѕ“ˆЬ џџџџ ”Ь $ Ь  OœЌЬ џџџџИЬ Lœ%ФЬ џџџџ аЬ Р ‘рЬ ~ЛE4нХM&слФ€~V~q ЂЄ# ~V~qџџџџџџџџЙE4ѕ8falseіФ€žДА $jџџџ(ЂЄ#<ј@  Arialœ0eE4іѕM&љФ€‡•‡Т К#  ‡•‡ТџџџџџџџџdE4ѕ8trueїФ€иžќА $jџџџЈ~К#<ј@  Arialœ0cE4їѕM&љ Ф€‡ƒЯ  VЋ# ЋƒЯƒЯј‡ј‡ џџџџџџџџbE4јѕM&џљФ€‡_‡qЈUЋ# ‡_‡qџџџџџџџџaE4љѕtrackTbl(tr).speed=fastSpeedјіїФ€cqЋ•џџџЈAЏ! <ј@  ArialhЬ/ИЬ/Э/XЭ/ЈЭ/јЭ/HЮ/œ0`E4њѕM&  Ф€6ъ‡@0AЏ# ‡.‡@6@6ъ‡ъ‡ѓџџџџџџџџ_E4ћѕM&ќФ€ЋдqдШЃВ# ЋдqдџџџџџџџџFE4ќѕ#add the tracks to the listћФ€qТЫцџџџPЃВ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0HќА‚šp:’@Јj§ХGE4§ѕM&ў Ф€ЋqрCЏ# ЋqџџџџџџџџHE4ўѕ#for all tracks§Ф€qѓЙџџџhCЏ# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџIE4џѕtr:=first(lstCopy);јФ€c;Ћ_џџџ@BЋ! <ј@  ArialœFœџџџџ0$@‘`О>Ъ4`њ“lО>*Œ№ѕ“xО>џџџџ „О>$О>MœœО>џџџџЈО>Jœ$ДО>џџџџРО>$YE4ѕM& Ф€‡ц‡ џџџШAЋ# ‡ц‡ џџџџџџџџXE4ѕ!regular:= regular//mkstring(tr);іћФ€cТЋцџџџHЏ! <ј@  ArialœFœџџџџ0$А‘Ј>v,і“œЈ>і№ѕ“ЈЈ>џџџџ ДЈ>$РЈ>MœЬЈ>џџџџиЈ>Jœ$фЈ>џџџџ№Ј>$WE4ѕ8 EmptylistФ€Дѓъ€џџџ˜GЏ#<ј@  ArialœT$`$0l$4\ІP$x$L\Іџџџџ„$‘$РS$ $Ј$‘Pф№—ф№—VE4ѕM& Ф€ЋDVџџџАЙЌ# ЋDDVџџџџџџџџUE4ѕR/* variables */ DCL lstCopy TrackList; DCL regular TrackList; DCL tr TrackId;Ф€АQdЋџџџ8ЙЌ# АQZQd[Z[ZQd[dЋАЋ<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџTE4ѕ“regularФ€_Vƒh€џџџ ,А#<ј@  Arialœ0 aсџџџџсџџџџсџџџџSE4ѕФ€2VVzџџџ(,А! <ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџRE4ѕ[elseФ€ Д2€џџџ&А#<ј@  Arialœ0р‘Ц%Ъ4ьѓ“ Ц%Ц%$Ц%0Ц%<Ц%HЦ%TЦ%`Ц%QE4ѕM& џФ€‡‡;џџџ&А# ‡‡;џџџџџџџџPE4 ѕ2lstCopy:= substring(lstCopy,2,length(lstCopy)-1);їњФ€c Ћ.џџџ! <ј@  Arialœ0Ы%v,і“Ы%Ъ4№ѕ“(Ы%џџџџ 4Ы%$@Ы% OœLЫ%џџџџXЫ%Lœ$dЫ%џџџџ pЫ%$ IœOE4 ѕM&  Ф€‡Я‡ѓџџџ# ‡Я‡ѓџџџџџџџџNE4 ѕlstCopyњ §Ф€cѓЋџџџШ! <ј@  Arialœ0pВ%Ъ4,і“|В%v№ѕ“ˆВ%џџџџ ”В%$ В% OœЌВ%џџџџИВ%Lœ%ФВ%џџџџ аВ%$ IœME4 ѕM& Ф€‡‡ЋџџџP# ‡‡ЋџџџџџџџџLE4 ѕ'lstCopy:=trackLst; regular:=Emptylist;  Ф€cЋЋЯџџџ@u! <ј@  ArialœFœџџџџ0$Р‘Й%v,і“Й%Ъ4№ѕ“(Й%џџџџ 4Й%$@Й%MœLЙ%џџџџXЙ%Jœ$dЙ%џџџџpЙ%$KE4ѕ Ф€clЋџџџШt! <ј@  Arialœ0Н%,і“ Н%z№ѕ“Н%џџџџ $Н%$0Н% Oœ<Н%џџџџHН%Lœ$TН%џџџџ `Н%$ IœJE4ѕcФ€[-v= $jџџџР Є#<ј@  Arialœ01(1)DE4ѕ` regularTracksФ€s-Н= $jџџџјЄ#<ј@  Arialœ0CE4ѕ_Ф€s-s- $jџџџ€Є#<ј@  Arialœ0BE4ѕ\ ProcedureФ€--n= $jџџџ`|Л#<ј@  Arialœ0 „РrЗˆАРAE4ѕUФ€---- $jџџџш{Л#<ј@  Arial œ0ШOСрsЗШ@E4ѕZФ€---- $jџџџ[#<ј@  Arialœ0?E4ѕRreturns TrackListФ€-F†V $jџџџ[#<ј@  Arialœ0ШЦТ>E4ђ”M&ѓєФ€Ысяс@pџ# Ысясџџџџџџџџ=E4ѓ”#returns all regular tracksђФ€яЯmѓџџџШoџ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0В# ЂЫЂцџџџџџџџџ“B4SPM&[XФ€ЂqЂЇ0>В# ЂqЂЇџџџџџџџџ’B4TP“UФ€АТдд $jџџџ АЏ#<ј@  ArialœЬ0a№г’ xХў`Ъ’Ь’Phz А/Щya‘B4UPRTФ€цД џџџ(АЏ! <ј@  ArialPІњ Іњ№Іњ@ЇњЇњрЇњ0Јњœ~“0•0Šа}“@#‹Hn|АXА/шIŒaа}“xЕ§иЄў7`B4VPM&W]Ф€ЂЋЂи‡З#  ЂЋЂиџџџџџџџџB4WPVФ€~‡ЦЋџџџ‡З! и8”р…ŸђљOhЋ‘+'ГйpК'l pК'l X+ly•ИQ”<ј@  ArialТ/XТ/ЈТ/јТ/HУ/˜У/шУ/œp—0aш=ƒј•—ˆД§ ј•—А/pМ‘aјœ—ˆД§ХŒ7ЧŽB4IHM&JOФ€яz zћЅ# яzјzјz zџџџџџџџџB4JH#2hands over signal notification to the next trainIФ€ _v•џџџ њЅ# <ј@  ArialœˆЯ’0aш=ƒXЛ’ 8Є§ 0 8Є§М’|ў7А/pМ‘Oˆk’ŒB4цH8trueKФ€HЙlЫ $jџџџ1І#<ј@  ArialœИ•0 8•И 8•ИX+lШI’а8•ˆ8Œ 4`р’0|a 0В§‹B4KHM&ЁзцФ€?Ы™I 0І# uЫ?Ы?7™7™IџџџџџџџџŠB4LHM&NзФ€™%™IpІ#  ™%™Iџџџџџџџџ‰B4хH8falseMФ€ЂяЦ $jџџџјІ#<ј@  Arialœ(/а•0ШH–*PXH–ИI–Xљ{0Я”0FˆB4MHM&ЁNхФ€™н™І# ™н™џџџџџџџџ‡B4NHhandoverMLФ€uН%џџџІ! <ј@  Arialл/Xл/Јл/јл/Hм/˜м/шм/œ8•0X+lШI’Pё–•Р•• 'И•Р—• 8•\6 8•\6X+lШI’ †B4XPhandoverDone:=true;QSRФ€~ЇЦЫџџџHЦЃ! <ј@  Arialœ `|0X–@БА ‰…јІ’Ј‹ pК'l И•‘ \œŠМœŠМX+l€ˆPё……B4YP8nullZФ€Ћ2НD $jџџџаХЃ#<ј@  Arialœ0{B4ZPM&\[YФ€Ђ2ЂMџџџшСЃ# Ђ2ЂMџџџџџџџџ|B4[P rs:=true;ZSbФ€~MЦqџџџpСЃ! <ј@  Arialœ0}B4\P nextTrain^QZФ€~Ц2џџџј1Ѓ! <ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ~B4]PinSight (track,nextTrain)V^`Ф€~иЦќџџџ€1Ѓ! ~и­иЦъ­ќ~ќ<ј@  Arialœ0B4^PM&]\Ф€ЂќЂџџџР Y# ЂќЂџџџџџџџџ€B4_P#0hand over signal notification to the next train`Ф€VицќџџџH Y# <ј@  Arialœ0B4`PM&_]Ф€ЦъVъpЌY# ЦъVъџџџџџџџџ‚B4aP#7next train not yet created -> it has to request signalbФ€VMцqџџџјЋY# <ј@  Arialœ0ƒB4bPM&a[Ф€Ц_V_јтY# Ц_V_џџџџџџџџ„B4dPcФ€[-v= $jџџџxxџ#<ј@  Arialœ01(1)yB4jP`handoverФ€s-Ј= $jџџџxџ#<ј@  Arialœ0xB4eP_Ф€s-s- $jџџџ8Xџ#<ј@  Arialœ0wB4fP\ ProcedureФ€--n= $jџџџРWџ#<ј@  Arialœ0 Ањќ ;ћ УЎ УЎАњќ†аљќњќ@1Ањќ@х§ `ћќvB4gPUФ€---- $jџџџ Яў#<ј@  Arialœ0uB4hPZФ€---- $jџџџЈЮў#<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџtB4iPRФ€-FQX $jџџџ 4ў#<ј@  Arialœ0sB4OHhandoverI PФ€•hяŒџџџ6ў! Ÿhхhяrя‚хŒŸŒ•‚•r<ј@  ArialЈзњјзњH蜘ињшињ8йњˆйњœ(0 вўЧHf–рб– й/ш/`:–гш<”Hf–f–BП–А/ЩyBи>ƒиО–rB2PH PjhfgeicdQRSTUVWXYZ[\]^_`abcdefghijkO4M&Ф€ZѓZ5ў# ZѓZџџџџџџџџцA4-,M&.9Ф€ll)и…Д# ll)џџџџџџџџyA4.,$pos:=0; speed:=0; accel:=maxAccel;0-Ф€Hсџџџ`…Д! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяxA4ычM&ьїФ€‡ѓ_ѓ(VЃ# ‡ѓ_ѓџџџџџџџџ™>4ьч##immediately react to signal changesыФ€_сџџџАUЃ# <ј@  Arialижњ(зњxзњШзњињhињИињœ$ 0џџџџ Gœ$џџџџ Lœ%џџџџ Hœ$џџџџ Iœ$џџџџMœ$џџџџJœ$˜>4/,M&96Ф€lMlh &Ј#  lMlhџџџџџџџџ—>40,M&7.Ф€lЯlс(&Ј# lЯlсџџџџџџџџ}>4Ў­M&ЏЪФ€ .Ї.Й#  .Ї.џџџџџџџџz>4Џ­#calculate current positionЎФ€Ї@џџџЙ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0l0P0Uџџџ<ј@  Arial y>4А­M&БШФ€ яЇя€йќ#  я)я)яЇяџџџџџџџџx>4Б­#calculate current speedАФ€Їнџџџйќ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0!cl0Pw>4В­M&ГОФ€ АЇАа‰Б#  АЇАџџџџџџџџv>4Г­#9acceleration is limited by signal status and brake forceВФ€ЇžТџџџX‰Б# <ј@  Arialижњ(зњxзњШзњињhињИињœџџџ0<ј@  Arialит/(у/xу/Шу/ф/hф/Иф/х/Xх/Јх/јх/Hц/˜ц/шц/8ч/ˆч/ич/(ш/xш/Шш/щ/hщ/Ищ/u>4Д­M&ЕЙФ€žhЇh`&Е# žhЇhџџџџџџџџt>4Е­#Ucalculation maximum possible acceleration (no previous train - maximum acceleration)ДФ€ЇVzџџџш%Е# <ј@  Arialижњ(зњxзњШзњињhињИињœ@–њ0l0P"!џџџ<ј@  Arial…/P…/ …/№…/@†/†/р†/0‡/€‡/а‡/ ˆ/pˆ/Рˆ/‰/`‰/s>4Ж­M&ЗСФ€ )Ї)X!Е#  )))))Ї)џџџџџџџџr>4З­#scalculating maximum possible acceleration (respecting position and speed of previous train to prevent a collisionЖФ€ЇDџџџр Е# <ј@  Arialижњ(зњxзњШзњињhињИињœial0јЄ/HЅ/˜Ѕ/шЅ/8І/ˆІ/иІ/(Ї/xЇ/ШЇ/Ј/hЈ/ИЈ/Љ/XЉ/ЈЉ/јЉ/HЊ/˜Њ/шЊ/8Ћ/ˆЋ/иЋ/(Ќ/xЌ/ШЌ/­/h­/И­/Ў/XЎ/q>4И­M&ЙОФ€Дz2ž€FЈ# 2z2ƒДƒДžџџџџџџџџp>4Й­accel:=maxAccel;НИДФ€ЦVžzџџџFЈ! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœial0xзњШзњињhињИињйњXйњЈйњјйњHꜘкњшкњ8лњˆлњилњ(мњxмњШмњнњhнњИнњоњXоњЈоњјоњHпњшпњ8рњˆрњирњo>4 M& Ф€l7ќ[ИјЎ# ќ7ќ@l@l[џџџџџџџџЪ34 detectLeaving (trackId)" Ф€и 7џџџ@јЎ! и %7и7<ј@  Arialœ0ььД„UpК'lnВрwџџџфwєxєЩ34M&Ф€lqѓ•Ьќ# ѓqѓƒlƒl•џџџџџџџџЧ34detectApproaching (trackId)!Ф€ЯMqџџџ˜Ыќ! ЯMўM_ўqЯq<ј@  Arialœ0ььД„UpК'lnВрwџџџфwєxєЦ34хоM&шъФ€lТlдЈ§Ќ#  lТlдџџџџџџџџБ34цоM&ъєФ€lјl 0§Ќ#  lјl џџџџџџџџА34чоM&ьшФ€lƒlžИй­#  lƒlžџџџџџџџџЏ34шо startTrainчхФ€HžТџџџ@й­! №hbр…ŸђљOhЋ‘+'ГйpК'l pК'l X+lount);<ј@  ArialœBœџџџџ0$џџџџDœ$џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ%џџџџ Hœ$Ў34щоM&њ№Ф€llЂ`лќ#  llЂџџџџџџџџ­34ъоYnoneхцФ€HдјџџџшкќЃ HддјHјaц<ј@  Arialыњрыњ0ьњ€ьњаьњ эњpэњœ0PvgЋ34d^/* timers */ timer t1;Ф€ƒД[сџџџ@ѕВ# ƒДQД[ОQОQД[О[сƒс<ј@  ArialœNEXTen; 0DSTATE opening; STATE closed; INPUT openGate; TASK SET(NOW+openingTime,T1); NEXTSTATE openЈ34К­M&ШЪФ€Д ДШєВ# Д Дџџџџџџџџ^34Л­M&ОШФ€ДТДдшB # ДТДдџџџџџџџџH34М­M&СОФ€Д;ДžpB # Д;ДžџџџџџџџџG34д­8-1НФ€сиѓъ $jџџџ№‡Б#<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџF34Н­M&РЙдФ€иъ2Vx‡Б# иъ2ъ2VџџџџџџџџE34О­/accel:= call minmax(minAccel,sigAccel, accel);ИМЛВФ€Hž ТџџџМ! <ј@  Arialœial0D34MLM&UXФ€Цд2%џџџˆМ# 2д2яЦяЦ%џџџџџџџџA34NLM&VXФ€cMЦ%џџџp?Џ# cMcяЦяЦ%џџџџџџџџ@34fL8trueOФ€;•_Ї $jџџџј>Џ#<ј@  Arialœ0?34OLM&RUfФ€ъz2АџџџРДЌ# ъz2z2Аџџџџџџџџ>34eL8truePФ€l) $jџџџHДЌ#<ј@  Arialœ@0=34PLM&YVeФ€cќЂ)џџџjЇ# Ђќcќc)џџџџџџџџ<34dL8falseQФ€Я•ѓЇ $jџџџiЇ#<ј@  Arialœ0!Ѕl0Pџџџ<ј@ ;34QLM&RXdФ€ЦŒЦ%џџџPsА# ЦŒЦ%џџџџџџџџ:34RLval>upperBoundTOQФ€ЂhъŒџџџиrА! <ј@  Arialœ0034SLM&ZYФ€ЦЋЦъџџџˆ]Ї#  ЦЋЦъџџџџџџџџ/34cL8falseTФ€Яѓ) $jџџџ]Ї#<ј@  Arialœ0*34TLM&YRcФ€ЦЦhџџџhgќ# ЦЦhџџџџџџџџ)34ULval:=upperBound;OMФ€АVдџџџ№fќ! <ј@  Arialœ0(34VLval:=lowerBound;PNФ€?)‡Mџџџ gЖ! <ј@  Arialœ0&34WL“valXФ€н%7 $jџџџ(gЖ#<ј@  Arialœ0%34XLMNQWФ€Д%иIџџџАЋ! <ј@  Arialœ0$34YLval><ј@  Arialœ0"34\LcФ€[-v= $jџџџрЪЃ#<ј@  Arialœ01(1) 34bL`minmaxФ€k-–= $jџџџhЪЃ#<ј@  Arialœ034]L_Ф€k-k- $jџџџиuЛ#<ј@  Arialœ034^L\ ProcedureФ€--f= $jџџџ`uЛ#<ј@  Arialœ034_LUФ€---- $jџџџ(…М#<ј@  Arial œ034`LZФ€---- $jџџџА„М#<ј@  Arialœ034aLR=fpar lowerBound Real, upperBound Real, val Real; returns RealФ€-FdV $jџџџ8žY#<ј@  Arialœ01ˆJІАtІђЊ ЋАtІ8yІУЈ 34KHminmax LФ€•‡нЋџџџhгY! Ÿ‡г‡н‘нЁгЋŸЋ•Ё•‘<ј@  Arialœ032LH Lb`^_]a[\MNOPQRSTUVWXYZ[\]^_`abcdefK4hHcФ€v-‘= $jџџџ7О#<ј@  Arialœ02(2)34•HM&™žФ€ѓє2џџџ7Ў# 2є2§ѓ§ѓџџџџџџџџЯ24фH8null–Ф€Ѓ)Е€џџџhІЉ#<ј@  Arialœ$/0/071ФЦ€$$џџџ4M&Ф€lќl•џџџсБ# lќl•џџџџџџџџˆ4 - Ф€H[џџџˆрБ! ЈќEр…ŸђљOhЋ‘+'ГйpК'l pК'l X+l<ј@  ArialœЬЯ0вгд ;4RN1Фџџ CSDLFrame$$‰4M&Ф€lЦlиџџџ(М# lЦlиџџџџџџџџŠ4%p1 < posSensor1 AND posSensor1 <= p2Ф€HиќџџџАМ! <ј@  ArialœH(C0ˆ™Kh•T>•y4йЯM!.0-идФ!Ђhhšџџџ8~#  Ђhhšx4кЯMsynonym 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,Я`?name69+Ф€у\nџџџ(В#<ј@  Arialœ0€?Џ€>Џ€?Џ ,Џ@Џ˜?Џ№9Џ —Њр,Џр9Ћv4+Я$,мнФкSрYџџџАВ#u4*Я`?name68)Ф€Ј\Ьnџџџ`ПМ#<ј@  Arialœ0Р-Џ01№-Џр,ЏРВЊР-Џ€ўІ`1 .Џр,Џ€АЊ№-Џ .Џ10Џр,Џt4)Я$*м+ФчSэYџџџшОМ#s4(Я`S0мФ€V_hqџџџxВ#<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџr4лЯNpositionмФ€ž_дqџџџВ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœЏ01D&•D&•0Џ@ДЊЏ@Џ€§І01 ,ЏрЏP$&•$&•€ГЊ@Џ10\ Џ Џq4мЯM!)+(лФ!ъVнVџџџИ(Ј#  ъVнVџџџџp47N(gateStatus), (carSensor) Ф€НzMŒџџџ@(Ј# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0l PpК,l pК,l pК,l # DE4MEDєц4N(carSensor), (gateStatus)Ф€ДАDТџџџXZ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ 0мHŒмHDє# X0l Яџџџџ?l PpК,lх4Z N (gateStatus)\Ф€VQžcџџџрœZ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ"0<ј@  Arial# X0lœ0l PpК,lф4|^ openingeФ€HRvџџџјФЃ! ˆx/# X0lа‘џџџџ=Vl PpК,l<ј@  Arialœ 0!+82=l PpК,l pК,l pК,l л4}^M&{Ф€lнlяџџџ€ФЃ# lнlяџџџџџџџџк4~^M&€Ф€lЇlЙџџџhџЅ# lЇlЙџџџџџџџџи4^openGate~}Ф€HЙнџџџ№ўЅЁ HЙЙнHнaЫ<ј@  Arialœ0!X0lјџџџ"Arial<ј@  Arialз4€^ closedk~Ф€HƒЇџџџ0иЄ! ice PositionUpdate <>0lcќ<ј@  Arialœ0џџџ!X0lјџџџ"Arial<ј@ ж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С KCrossingChannelРФ€_$ $jџџџ”Z#<ј@  Arialœ 0 pК,l h&4q&Dє№[X0lв4Р $\СЕФ&3,9 $jџџџ “Z#б4П `?name161ОФ€ЫDяV $jџџџ lZ#<ј@  Arialœ0 ˜A4ЁADє# X0l˜џџџџ[ /04а4О $П\]ФЄSЊY $jџџџЈkZ#Я4Н `S2\Ф€zДŒЦ $jџџџ8џ#<ј@  Arialœ@0џџџ!X0lјџџџ"ArialЮ4[ N (gateControl)\Ф€А2јDџџџР€џ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0Э4\ M!РОН[ZФ!2$ЇVџџџXQў#  2$ЇVЬ46`?name1595Ф€VIz[ $jџџџрPў#<ј@  ArialœџџџџГ0ё`џџџџНљ@]ѕјА/ИШљaџџџџСФЬѕџЫ45$6 ФJ=PC $jџџџ@ШЇ#Ъ44`?name1583Ф€ АDТ $jџџџШЧЇ#<ј@  Arialœ0Щ43$46ФJЄPЊ $jџџџPЎ#Ш42`CrossingChannelФ€VяА $jџџџиЎ#<ј@  Arialœ0Ч4N (gateControl)Ф€ќ%D7џџџЈ^Љ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0Ц4M!352Ф!MЇM@џџџ0^Љ# MЇM@Х4‚^ closed_aФ€H)џџџИЧЎ! (/(/Р<@њ 8™0Ш–Рљ<ј@  Arialœ0У4ƒ^ mФ€HZ~џџџ@ЧЎ! @/ЈђАиїАjpї<ј@  Arialœ0јішїIР/Р/Иu(qєЏИuHўHўЏТ4…^cФ€d-= $jџџџHГ#<ј@  Arialœ01(2)Р4‹^`theGateФ€a-Ž= $jџџџЈ=Џ#<ј@  Arialœ0П4†^_Ф€a-a- $jџџџ0=Џ#<ј@  Arialœ0О4‡^\ProcessФ€--\= $jџџџhOЉ#<ј@  Arialœ0Н4ˆ^UФ€---- $jџџџ№NЉ#<ј@  Arial œ0М4‰^ZФ€---- $jџџџ№˜њ#<ј@  Arialœ0Л4Š^RФ€-FQX $jџџџx˜њ#<ј@  Arialœ0К4] theGate(1,1)ЦО ^Ф€hVцŒџџџ€М! rVмVц`ц‚мŒrŒh‚h`<ј@  Arialœ0Й2^ ^‹‰‡ˆ†Š„…_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ]2Œ ^АГЏВБД­ЎŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГД]4Ж cФ€d-= $jџџџАЉЄ#<ј@  Arialœ01(1)З4М ` theCrossingФ€S-”= $jџџџ8ЉЄ#<ј@  Arialœ0Ж4З _Ф€S-S- $jџџџ˜юК#<ј@  Arialœ0Е4И \BlockФ€--N= $jџџџ юК#<ј@  Arialœ0Д4Й UФ€---- $jџџџPY#<ј@  Arial œ0Г4К ZФ€---- $jџџџи Y#<ј@  Arialœ0В4Л RФ€-FQX $jџџџАPY#<ј@  Arialœ0Б4 theCrossing(1)5 Ф€ѓ@Їvџџџ8PY! <ј@  Arialœ0А2  МКИЙЗЛЕЖ Z[\]ЕЖЗИЙКЛМНОПРСТУФХЦЧШЩ 4psystem RailroadCrossingФ€с_qЙџџџPr! <ј@  Arialœ0 2p,*()'+%Ъ& ЪЫЬЭЮ56%&'()*+,-./0123456789:;4+RФ€-aQs $jџџџиq#<ј@  Arialœ0 4*ZФ€-H-H $jџџџЈ%П#<ј@  Arialœ0 4)UФ€-H-H $jџџџ0%П#<ј@  Arial œ04(\SystemФ€-HXX $jџџџХВ#<ј@  Arialœ04'_Ф€]H]H $jџџџˆФВ#<ј@  Arialœ04,`RailroadCrossingФ€]HЖX $jџџџаЇ#<ј@  Arialœ04&cФ€ˆHЃX $jџџџXЇ#<ј@  Arialœ01(1)46theController(1)8307Ф€ѓqЇЇџџџ8sЉ! <ј@  Arialœ02778      !"#$645theTracks(nrTracks):Track.Ф€ѓЋЇсџџџ€№Г! <ј@  Arialœ04ЮTrackЯФ€?Д™иџџџ№Г! <ј@  Arialœ02ЯЯ'%#$"& !абвгдежзийклмн+ !"#$%&'()*+,-./01234Ю4&ЯRФ€-FQX $jџџџˆМ#<ј@  Arialœ0ˆ4ўрАџ4%ЯZФ€---- $jџџџ ‡М#<ј@  Arialœ0шд§8ћ4$ЯUФ€---- $jџџџ0~Л#<ј@  Arial œ0и ў8Ћћ4#Я\ Block TypeФ€--i= $jџџџИ}Л#<ј@  Arialœ00-ўШnќ4"Я_Ф€n-n- $jџџџpџX#<ј@  Arialœ0И№ќ(ёџ4'Я`TrackФ€n-= $jџџџјўX#<ј@  Arialœ0`х§4!ЯcФ€v-‘= $jџџџ˜ѓY#<ј@  Arialœ0hэџX1(1)4+ЯaTrain(0,nrTrains) .) ,Ф€Z2ъhџџџЈmЈ! d2р2ъ<ъ^рhdhZ^Z<<ј@  Arialœ0!l P2,Я ,ECAB@D>?-./0123456789:;<=>?@ABCDEFGH+2HЯ ,мплонрйкIJKLMNOlmnopŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌежзийклмнопрстуфхцч+2чЯ ,ќџћў§љњшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ+2Я ,     +4D,R6fpar track TrackId, maxSpeed Real, requestSig Boolean;Ф€-FAV $jџџџ0mЈ#<ј@  Arialœ0 4C,ZФ€---- $jџџџЈ#<ј@  Arialœ0!4B,UФ€---- $jџџџ0#<ј@  Arial œ0шE§"4A,\ProcessФ€--\= $jџџџpaЗ#<ј@  Arialœ0їїаќ§ˆ>§#4@,_Ф€a-a- $jџџџј`З#<ј@  Arialœ00@§$4E,`aTrainФ€a-†= $jџџџx@Н#<ј@  Arialœ0јџРйўуў%4?,cФ€d-= $jџџџ@Н#<ј@  Arialœ0рНћЈд§ˆљ§Ј)ќ1(4)&4<pRailroadCrossing=Ф€VmŒџџџ ЫИ! PPXmXmŒŒ<ј@  Arialœ0nћ:0њўB2=p=GECDBF@A>?@ABCDEFGH<2Hp=jmilknghIJKghijklmn<4F=RФ€-FQX $jџџџ0pИ#<ј@  Arialœ0(`x%ќ`ŸР<ћH%ўC4E=ZФ€---- $jџџџИoИ#<ј@  Arialœ00БўD4D=UФ€---- $jџџџРГ#<ј@  Arial œ0E4C=\PackageФ€--]= $jџџџHГ#<ј@  Arialœ0аџF4B=_Ф€b-b- $jџџџ€8#<ј@  Arialœ0G4G=`RailroadCrossingФ€b-Л= $jџџџ8#<ј@  Arialœ0јЮџH4A=cФ€v-‘= $jџџџИІ#<ј@  Arialœ0ио i =ў1(2)I4?=H/* 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џџџРЧЃ# 6HLHVRLRLHVRV6<ј@  Arialœ0K4ЭM!.0-ЬЫФ!MсMqџџџHЧЃ#  MсMqT4ЬN%(trainSensor), inSight, trackAnnounceЭФ€~VDhџџџ№LІ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0џџџџ@‹њˆњ'ЉА/й€џџџџј†њи‡њР‹њ h/U4-` TrackChannelЭФ€V ­2 $jџџџxLІ#<ј@  Arialœ0V4.$/Э5ФJоPф $jџџџXд#W4/`g1.Ф€DЯVс $jџџџрг#<ј@  Arialœ0`љX40$1Э6ФJnPt $jџџџˆЛН#Y41`?name1340Ф€V–zЈ $jџџџЛН#<ј@  Arialœ0Z4ЫN trainSignalЭФ€ќѓDџџџ}М# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0[47RФ€-FQX $jџџџ |М#<ј@  ArialœА/0ШЧѕь`џџџџ(Џњh)їѓА/PАњaџџџџ \47ZФ€---- $jџџџ€рД#<ј@  Arialœ0&А/шБњaџџџџШЧѕ-LџџџџhБњ4h/]47UФ€---- $jџџџрД#<ј@  Arial œ0^47\BlockФ€--N= $jџџџX?Њ#<ј@  Arialœ0_47_Ф€S-S- $jџџџр>Њ#<ј@  Arialœ0`47` theControllerФ€S-—= $jџџџ@ГЌ#<ј@  Arialœ0a47cФ€d-= $jџџџШВЌ#<ј@  Arialœ01(1)b4 7theController(1,1):Controller! Ф€2žhџџџИ<А! 2”2ž<ž^”hh^<<ј@  ArialœX0Ш}љ †џџџџ‡(љ№~љш/ИOљ‡џџџџd4 7M!  Ф!V$V2џџџPкЉ#  V2V$e4 7N trainSignal Ф€-M?џџџийЉ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0јбC #џ`jіАŽіf47`S2 Ф€_ЋqН $jџџџ˜ЦЇ#<ј@  Arialœ0Xiњ@Bњg47$  ФS/Y5 $jџџџ ЦЇ#h47`g2Ф€_ q2 $jџџџHЙ#<ј@  Arialœ0i47$ ФSY $jџџџаЙ3j47K TrackChannelФ€2‰$ $jџџџˆTЉ#<ј@  Arialœ0ШYњk4 7N%(trainSensor), inSight, trackAnnounce Ф€‡M џџџTЉ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0l4 7M!Ф!VhVšџџџX~Љ#  VhVšm47N (gateControl) Ф€M‘џџџр}Љ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ08fx Лњn47`S1 Ф€_јw  $jџџџРјЃ#<ј@  Arialœ0‘іюљіo47$  ФSeYk $jџџџHјЃ#p47`g1Ф€_qqƒ $jџџџxЅZ#<ј@  Arialœ0H љq47$ ФSsYy $jџџџЅZ3r47KCrossingChannelФ€2šŒЌ $jџџџ`Z#<ј@  Arialœ0 #џ`jіАŽіs4Ъ7use RailroadCrossing;Ф€$Д6џџџшŒZ# $ЊДЊЊДД6$6<ј@  Arialœ0!Œl P(#џџџ<ј@  Arial€4нЯtheSensor(1,1)3+ оФ€н2[hџџџН! ч2Q2[<[^Qhчhн^н<<ј@  Arialœ0“2оЯ оўџ§ћќпрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџн2Я о&)%('*#$      !"#$%&'()*н4оRФ€-FQX $jџџџН#<ј@  Arialœ0ž4оZФ€---- $jџџџ`К#<ј@  Arialœ0Ÿ4џоUФ€---- $jџџџ@+Ѓ#<ј@  Arial œ0(ђј 4ўо\ProcessФ€--\= $jџџџ(ЯЛ#<ј@  Arialœ0їїЁ4§о_Ф€a-a- $jџџџЈГК#<ј@  Arialœ0Ђ4о` theSensorФ€a-š= $jџџџР9О#<ј@  Arialœ0x7HЃ4ќоcФ€d-= $jџџџЈ“X#<ј@  Arialœ0рЄўާј‡і‚H1(2)Є4њо щФ€Hlџџџ€"В! hіFx/<ј@  Arialœ0Ј-ўHЯIІ4=,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‘џџџрSИ# _2c2m<c<c2m<m‘_‘<ј@  Arialœ04{^set (NOW+openingTime,t1)}eФ€HяџџџЈш! <ј@  Arialœ0ќ4<, :Ф€Hu™џџџp! x/<ј@  Arialœ0М4;, enRoute25Ф€H .џџџY! №Џx/<ј@  Arialœ0Н4:,M&<7Ф€l™lЋџџџИрЃ# l™lЋџџџџџџџџО49,set (lastStep+stepTime, step)-/Ф€H)Mџџџ! <ј@  Arialœ0Т4њчcФ€d-= $jџџџ ФY#<ј@  Arialœ03(4)Ь4јч *іФ€?Ћ‡Яџџџ(ЅY! @Њx/<ј@  Arialœ0Ю4їчtrainSignal(sig)ієыФ€?с‡џџџ ~ZЁ ?с‡с‡?Xѓ<ј@  Arialœ0ЇтЇ˜…ќа6іЯ4ічM&јїФ€cЯcсџџџXЖY# cЯcсџџџџџџџџа4ѕчsigєъ№Ф€?‡;џџџЈО! <ј@  Arialœ0иaІ@ФЅб4єчM&їѕФ€ccџџџzџ# ccџџџџџџџџв4ѓчDCL sig SignalStatus;Ф€?lЦџџџижў# ?lМlЦvМvМlЦvЦ?<ј@  Arialœ0г4ђчsigAccel:=maxAccel;№юФ€?h‡Œџџџи*ў! <ј@  Arialœ0д4ёчsigAccel:=minAccel;ъэшФ€ДhќŒџџџ(Пџ! <ј@  Arialœ0е4№чM&ѕђФ€c;chџџџ€…З# c;chџџџџџџџџж4ч8green№Ф€lDV $jџџџШЈЗ#<ј@  Arialœ0з4яч -эюФ€?А‡дџџџAЇ! //<ј@  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;ѕШ;ѕк4ючM&ђяФ€cŒcАџџџ дІ# cŒcАџџџџџџџџл4эчM&ёяФ€cŒиАџџџˆќД# иŒи•c•cАџџџџџџџџм4cФ€d-= $jџџџ hГ#<ј@  Arialœ04(4)у4 *Ф€6™~НџџџvК! //ЌЊˆК­<ј@  Arialœ0§4position(pposX,ppos)Ф€6Я~ѓџџџјоЊЁ 6Я~Я~ѓ6ѓOс<ј@  Arialœ0и‰џў4M&Ф€ZНZЯџџџ Ќ# ZНZЯџџџџџџџџџ4 -Ф€6~2џџџрS­! pАx/<ј@  Arialœ0Hс­ юPУЎx/4 *Ф€•™нНџџџhj­! 8мЎx/<ј@  Arialœ09W@zC 4YnoneФ€•Янѓџџџ(?Ѓ •ЯнЯнѓ•ѓЎс<ј@  Arialыњрыњ0ьњ€ьњаьњ эњpэњœ0а(Њ 4M&Ф€ЙНЙЯџџџ0”# ЙНЙЯџџџџџџџџ 4nextTrain=null Ф€•н)џџџHЎ! <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ04M&Ф€ЙѓЙџџџHкЙ# ЙѓЙџџџџџџџџ4 - Ф€•ЇнЫџџџ№#Л! pВx/<ј@  Arialœ04z^M&yxФ€ŒŒRџџџ@ЬЙ# ŒŒRџџџџџџџџЫ4y^gateClosed via S2fzФ€hяАџџџріЛ! hя—яА—h<ј@  Arialœ0œX0l0щј4Ch5qœC„CрuЈCCШwДCœCИxРCЈCЬ4x^ closedzФ€hRАvџџџшОК! р/р/Рє €ѕ<ј@  Arialœ0рш§И(аYјЮ4w^M&uvФ€ŒЇŒЙџџџј# ŒЇŒЙџџџџџџџџЯ4v^t1wfФ€hЙАнџџџ€ЪЙЁ hЙАЙАнhнЫ<ј@  Arialœ0P\јQја4u^ closingswФ€hƒАЇџџџHpО! @‚x/<ј@  Arialœœ0hh ў@ўћсœop0o—шАўЈўрќрЬ›шАўvwб4t^openGatesqФ€яЙ7нџџџОЁ яЙ7Й7нянЫ<ј@  Arialœ0г4s^M&utФ€ŒЇЙџџџ€fС# ŒЇŒААЙџџџџџџџџд4r^set (NOW+openingTime,t1)qoФ€яя7џџџШ.І! <ј@  Arialœ0е4q^M&trФ€няџџџ№І# няџџџџџџџџж4p^ openingoФ€яR7vџџџpРЅ! јŸ…x/<ј@  Arialœ0з4o^M&rpФ€Rџџџ(ХО# Rџџџџџџџџи4n^gateClosed via S2m`Ф€HДџџџxЏЄ! HwЂwДHД<ј@  Arialœ0 м§Hх‚x@˜ єй4m^M&ƒnФ€l~lџџџ8wО# l~lџџџџџџџџк4ЌHupdaten ­Ф€•ќя џџџHўЊ! Ÿќхќяях Ÿ ••<ј@  Arialœ0€ЕаЕ 3Е€p3ЕаЗЕq 3Е№IЕаЪГрlА  3ЕаЪГ№-­2­H ­ваЮЯЭбЫЬЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдЌ4ЋHupdateЊЅ“Ф€uиНќџџџPVќ! <ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџ4б­RФ€-FQX€џџџшФА#<ј@  Arialœ04а­ZФ€----€џџџh@Ж#<ј@  Arialœ04Я­UФ€----€џџџ(ЬЃ#<ј@  Arial œ04Ю­\ ProcedureФ€--f=€џџџзЙ#<ј@  Arialœ04Э­_Ф€k-k-€џџџ gК#<ј@  Arialœ04в­`updateФ€k-“=€џџџЕК#<ј@  Arialœ04Ь­cФ€d-=€џџџИmЛ#<ј@  Arialœ01(1)4Ъ­pos:=pos+speed;КХЎФ€H @џџџ0ЮЛ! <ј@  ArialœY0Ш/Ш/А/АZKИYˆ|YoTШYY€Y8dZMW |ZРЛњOYёX€YшY4Щ­ЧФ€cи‡џџџpкК! `НДdНД‘lНДpНДpQ|НДˆНД”НД НД<ј@  Arialœ0аЄДpнД€€ИДаЦГрїДаbБАИДАkи4Ш­Espeed:=speed+accel; speed:= call minmax(minSpeed,maxSpeed,speed); ЛКАФ€Hд  џџџ№М! <ј@  Arialœ04Ч­M&ЩУФ€Д‡Д™џџџЈК# Д‡Д™џџџџџџџџ$4Ц­ХФФ€Ђ[ЦџџџяМ! <ј@  Arialœ0џџџџџџџџ€џџџџџџџџEсџџџџ A*D\Іјй.L\І>4Х­M&ЪЦФ€Д@Д[џџџИєМ# Д@Д[џџџџџџџџ?4Ф­“ЦФ€•[Йm€џџџXёЛ#<ј@  ArialœбˆЫ—0@4У­ posX:=pos;ЧТФ€H™ Нџџџ˜М! <ј@  Arialœ0€пРѕEB4Т­M&УРФ€ДНДиџџџPыМ# ДНДиџџџџџџџџC4С­/accel:= (ppos-pos)+(ppos-pposX-speed)-minDist;ПМЖФ€H ;џџџ@ Н! <ј@  ArialœFœџџџџ0$џџџџ Lœ$џџџџ Hœ$џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџRœ$O4;synonym nrTracks Integer=4; /* number of tracks */Ф€6lъџџџ8Н# 6lрlъvрvрlъvъ6<ј@  Arialœ0q4Р­pposТНПФ€ииќџџџапЙ! <ј@  Arialœ0r4П­M&РСгФ€ДќДџџџМ# ДќДџџџџџџџџ}4г­[elseПФ€Нс€џџџPН#<ј@  Arialœџџџџ00gсLgсp‘eс‚œј“œeсbPј“ЈeсџџџџДeс‘Рeс@fсЬeсbtї“иeс=€фeсџџџџ№eс<€~4ЉH[elseЈФ€Ђ2ЦD $jџџџРzО#<ј@  Arialœ0з 4ЈHM&ЇІЉФ€™2™Mџџџ№хЙ# ™2™Mџџџџџџџџж 4ЇH nextTrainЅЂЈФ€uН2џџџ8ЬЅ! <ј@  Arialœ0е 4ІH position(posX,pos) to nextTrainЈЄФ€uMНqџџџ№NП! uMЄMН_Єquq<ј@  Arialœ0АЇNїї8уHфOд 4ЅHM&ЋЇФ€™ќ™џџџ_П# ™ќ™џџџџџџџџи 4ЄHM&ІЃФ€™q™ƒџџџHRП# ™q™ƒџџџџџџџџй 4ЃH position(posX,pos) to theSensorЂЄФ€uƒНЇџџџx:Z! uƒЄƒН•ЄЇuЇ<ј@  Arialœ0АЇNїї8уHфOч 4ЂHM&ЇЃсФ€? ™ƒџџџИЏY# u ? ?z™z™ƒџџџџџџџџь 4сH8nullЂФ€HZ €џџџ`QА#<ј@  Arialœџџџџ$0Pœ$џџџџRœ$џџџџQœ$џџџџ]œџџџџЖ€`A г1Hг1|l—Lш1џџџџэ 4ЁH5handoverDone or (posSignal-pos)> (call breakingDist)KMŽФ€uЙНнџџџ˜˜Љ! <ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџ* 46, requestSig/35Ф€HhŒџџџSЏ! <ј@  Arialœ$ 0џџџџ Gœ$џџџџ Lœ%џџџџ Hœ$џџџџ Iœ$џџџџMœ$џџџџJœ$п45,M&6;FФ€lŒl џџџh=Ј# lŒl џџџџџџџџр4F,8false5Ф€u•™Ї€џџџ8І#<ј@  Arialœ0с44,inSight(track,self)32Ф€ТицџџџŠ! ТПТидПцц<ј@  Arialœ €т§0џџџџ№Щ§ єА А”§0*3)3А”§ Г§џџџџ0Јк—<Џ§ф43,M&64GФ€zДТџџџY# zДzДТџџџџџџџџх4G,8true3Ф€Н•сЇ€џџџ #<ј@  Arialœ0xє™xє™а ‘№:8<8ќ:80;8”88;8 ;8,;88;8D;8P;8ц42,M&4;Ф€lцД џџџ@аY# ДцДяlяl џџџџџџџџч4ьо!trackAnnounce (trackId,maxSpeed)ыѓчсФ€H_ƒџџџpŒО! H_w_qwƒHƒ<ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџx4ыоM&іьФ€l2ѓ_џџџИјX# ѓ2ѓDlDl_џџџџџџџџz4>=ш/* 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џџџˆ9Z# hHuHRuRuHRMhM<ј@  Arialœ0џџџ!X0lјџџџ"Arial<ј@ {4l^ closeGatekiФ€ЯЙнџџџ8ъYЁ ЯЙЙнЯншЫ<ј@  Arialœ0Dœ%џџџџEœ$џџџџ А ‘а=:,і“м=~№ѕ“ш=Lœ$є=џџџџ >$ > Iœы&4k^M&€lФ€lЇѓЙџџџ@_# lЇlАѓАѓЙџџџџџџџџь&4j^ -gФ€Я%IџџџаЋ! џџџџћџџџџџџџџ€џџџџџџџџEс<ј@  ArialœBœџџџџ0$џџџџDœ$џџџџEœ$џџџџ №‘Fr,і“ Fžо№ѕ“FLœ$$Fџџџџ 0F$э&4i^M&lhФ€ѓнѓяџџџЄЗ# ѓнѓяџџџџџџџџю&4h^gateClosed via S2igФ€ЯяџџџАЅџ! ЯяўяўЯ<ј@  Arialœ0œX0l0щј4Ch5qœC„CрuЈCCШwДCœCИxРCЈCя&4g^M&hjФ€ѓѓ%џџџ@ќџ# ѓѓ%џџџџџџџџ№&4f^M&vyФ€ŒнŒяџџџhq# ŒнŒяџџџџџџџџM'4e^M&{|Ф€llRџџџЈj# llRџџџџџџџџP'4& *Ф€c_Ћƒџџџ ! Jœ$ЄЙ#џџџџАЙ#$МЙ#RœШЙ#џџџџдЙ#Qœ$рЙ#џџџџџџџџ<ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџ (4'п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[Дџџџ`|Ї# zHQH[RQRQH[R[ДzД<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ((4(k/* timer */ timer t1:=arrival; /* variables */ DCL cars Integer:=0; DCL gateClosed Boolean:=true;Ф€zЦ[Dџџџ(ŸД# zЦQЦ[аQаQЦ[а[DzD<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџ*(4*cФ€d-=€џџџPЂЃ#<ј@  Arialœа‰!0‰!@р‰!№ƒ!Ај0! Џр‰! Д1рu '!$!PQ €ђ!1(2)-(40` theCarSensorФ€a-Ћ=€џџџр‚Њ#<ј@  Arialœpѓ!0€ђ!Ѕ%!зрŠ!Рм!€ A€ђ!рš!1Рм!pѓ!3(4+_Ф€a-a-€џџџ@п#<ј@  Arialœ{І0AИЪ—ИЪ—  ЧДаwІT!`vВ !@Q і!Pѕ! №6 В€ѓ!PxІ.(4,\ProcessФ€--\=€џџџРр#<ј@  Arialœ01ИЪ—Мі!ИЪ— љ!р[!€ї!Аї!01рї!Pї!1 ј!ї!аV!Аї!рї!0ј!`1ј!Pї!/(4-UФ€----€џџџˆ,Ѓ#<ј@  Arial œ0ао!PЭ!А["€`К!Рћ!`F0 !0ч­№ж!0=Д1eА0(4.ZФ€----€џџџ€І#<ј@  Arialœ \!0ЄЩ—ЄЩ—!pѓ!|!!0!01`!а!аV!0!`!`1А!а!АчР!р[!1(4/RФ€-FQX€џџџяY#<ј@  ArialœрЫЊ0p!а!€!аbЉА!!`АЊuЇА!А!P2(4 theCarSensor(1,1)ШУ Ф€uVѓŒџџџиTЃ! VщVѓ`ѓ‚щŒŒu‚u`<ј@  Arialœ0 (2 0.,-+/)* !"#$%&'()*+,-./0121 UXTWVYRS23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY4 M!УРТ Ф!Н$)Vџџџ0 З#  НV)$џџџџЦ(4 N (carSensor)Ф€ЦQcџџџHШЕ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ„y"y"0œy"P="Јy"{"Дy"Рy"ќ­‘PœЬ—œЬ—Ч(4Т `S1Ф€иДъЦ $jџџџhдЄ#<ј@  Arialœt{"€{"0Œ{"L~"˜{"Є{"P="А{"01{"‘PœЬ—œЬ—Ш(4У $ФФКSРY $jџџџ˜ы#Щ(4Ф `?name337УФ€У\чn $jџџџXф#<ј@  ArialœPW"0 a"РА~"W"P="Ъ(4 H8trueŸФ€Цъ‘ $jџџџШ)Ѓ#<ј@  Arialœ0Н)4ŸHM&˜ Ф€Н‘ѓЃџџџЩЃ# Н‘ѓ‘ѓЃџџџџџџџџК)4žH •—Ф€с*џџџ ! <ј@  Arialœ0aџџџџJSШЧѕp=фO(ˆTh/()P%WМ)4H pos>posEndœšŸФ€uНЃџџџш:! <ј@  Arialœ`еѕ0`џџџџи‘V8ќИYUx Jшv`aџџџџ`Мњ SJSШЧѕgЛ)4œHM&зФ€™m™џџџАЙ# ™m™џџџџџџџџП)4›H -šФ€uН*џџџ@Я! pПuр…ŸђљOhЋ‘+'ГйpК'l pК'l X+lj@§<ј@  ArialœџџџџН0АQаU*EaџџџџyK`еѕx SOџџџџpиRАœQАUшАQи7SР)4šHM&›тФ€™Ѓ™џџџј=# ™Ѓ™џџџџџџџџС)4тH8falsešФ€~ЃЂЕ $jџџџ ї#<ј@  ArialœaЄыu03`0Е01€xыuЙБIP`0Е1`@0•@0•aџџџџ,ыuРЙБIP`0Е01PpТ)487 Controller9Ф€?;™_џџџšВ! N@Š@”J”PŠZNZDPDJ<ј@  ArialœЙ0№RS8Шp/Ш%0џџџџe82979ромнлпйк:bcdef“!"#$%&'()*+,-./0123456789:;<=>?@ABC–ТУийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ84п9RФ€$FHX $jџџџШ"#<ј@  ArialœX“q0X,•X,•1P,•P,•aАЗА€ЗАpxж01 9ЎXБq ЗАPщА10 ,•LЗАaf84о9ZФ€$-$- $jџџџ(ЛЌ#<ј@  Arialœa0 ре01. ЎTаq‰А@‰АpаЌ1`8,•8,•aцяРХе01 y­g84н9UФ€$-$- $jџџџE­#<ј@  Arialœ1X-•0 tІ0CFРХе01]­Єаq0‡А11@|“А(-•aа /е0h84м9\ Process TypeФ€$-w= $jџџџш#<ј@  Arialœ y­ИИq01P,•P,•aМ“АH,•Aе01.№ ЎhИq нА10 ,•LнАai84л9_Ф€|-|- $jџџџА#<ј@  Arialœ№„А0LрА.•a8,•8,•aе01+№ Ў(пP…А1 LрА.•aXj84р9` ControllerФ€|-Б= $jџџџ˜>А#<ј@  Arialœ0(, x(k84к9cФ€-š= $jџџџа№#<ј@  Arialœaџџџџ0 €Ре01HДЄq`ыАџџџџ1`|ВА8,•aџџџџ €Ре01E•­1(1)l84SDM&T\Ф€l~I# l~џџџџџџџџЬ84TD SФ€lHДlџџџШe! 0O)ЈЋАЌH–<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0Э84ЩФNtrackAnnounce, inSightЬФ€;š•ОџџџHЌ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0694ЪФVЬФ€)M! $jџџџH$#x/x/<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0794ЫФN trainSignalЬФ€;йƒыџџџ c# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0894їФ`g3ЬФ€ Е2Ч $jџџџ Œ#<ј@  Arialœ0m94іФ$ЬцФ/…5‹ $jџџџИV#l94ЬФM"іїЩЫЪФd2ˆ2§PЃ#  2ˆ2§994ЭФM&вЮФ€uдuјџџџ€Ђ# uдuјџџџџџџџџ:94ЮФ -ЭФ€Qј™џџџРЇ! ˆ$FјP H1а!Fа!Fа!Fh!F<ј@  Arialœ0;94ЯФM&баФ€uVuqџџџиО# uVuqџџџџџџџџ<94аФtrackAnnounce(track, speed)ЯгФ€Qq™•џџџФЁ Qq™q™•Q•jƒ<ј@  Arialœ€cC0=94бФ *ЯФ€Q2™Vџџџб! И"Fр…ŸђљOhЋ‘+'ГйpК'l pК'l X+lˆ F<ј@  Arialœ0X Wh]]p~Wh]]X Wа WœT…@c[x/>94вФEtrackLst:=trackLst // mkstring(track); trackTbl(track).speed:=speed;гЭХФ€QА™дџџџч! <ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ?94гФM&авФ€u•uАџџџ # u•uАџџџџџџџџ@94_UM&d\Ф€~V~q Ѓ# ~V~qџџџџџџџџЉ94`UM&maФ€~~ЋаЃ# ~~ЋџџџџџџџџЊ94aUsetSignals(trackLst,red)`gVФ€ZЋЂЯџџџˆю! ZЋ‰ЋЂН‰ЯZЯ<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0pЬ ’,і“|Ь ~№ѕ“ˆЬ џџџџ ”Ь $ Ь  OœЌЬ џџџџИЬ Lœ%ФЬ џџџџ аЬ Р ‘рЬ ~Ћ94bU waiting2ZgfeXФ€ZъЂџџџ˜’! №“x/<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`ŠњœHœ0џџџџ а‘€?Bv,і“Œ?BЪ4№ѕ“˜?BJœ$Є?BџџџџА?B$М?BRœШ?Bџџџџд?BQœ$р?BџџџџЌ94cU*fФ€Н2Vџџџ“! ж22ьVНV<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ­94dUsettingDone(tr,st)e_Ф€Z2ЂVџџџXˆЉЁ Z2Ђ2ЂVZVsD<ј@  Arialœ0`„šЈџЎ94eUM&bdФ€~~2РФ# ~~2џџџџџџџџЏ94fUM&bcФ€~с2Ъ# ~~сс2џџџџџџџџА94gUM&abФ€~Я~ъpД# ~Я~ъџџџџџџџџБ94F?setSignals(trackLst,green)ED@Ф€ZѓЂџџџ0­! Zѓ‰ѓЂ‰Z<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0pЬ ’,і“|Ь ~№ѕ“ˆЬ џџџџ ”Ь $ Ь  OœЌЬ џџџџИЬ Lœ%ФЬ џџџџ аЬ Р ‘рЬ ~Ž94)!M&4*Ф€lMlhx›# lMlhџџџџџџџџv94*!setSignals (trackLst,green))("Ф€HhŒџџџ8–! HhwhzwŒHŒ<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0pЬ ’,і“|Ь ~№ѕ“ˆЬ џџџџ ”Ь $ Ь  OœЌЬ џџџџИЬ Lœ%ФЬ џџџџ аЬ Р ‘рЬ ~w94xwM&}Ф€~ѓ~э# ~ѓ~џџџџџџџџё84UDM&XVФ€%@%[Xс# %@%[џџџџџџџџЯ84VD idleUФ€[Iџџџh ! p/p/<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0а84•D8 EmptylistWФ€.ЙdЫ $jџџџ˜Є#<ј@  Arialœsignaiti0nal manyCarsWaiting; signal trackAnnounce(TrackId,Real); signal settingDone; NEWTYPE SignalStatus LITERALS red, green 94WDM&`X•Ф€цž%(# цž%ž%џџџџџџџџб84XD settingDone (tracks, sigStatus)WUФ€I@џџџЈ! 0I.0@@<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0PД‰І<,і“\Д‰~№ѕ“hД‰џџџџ tД‰$€Д‰p‘Д‰І<`њ“œД‰$ЄД‰ЈД‰ АД‰ДД‰РД‰Iœв84YDM&[kФ€иѓЄ# иѓџџџџџџџџг84ZDM&\[Ф€ЂДш§# ЂДџџџџџџџџд84[DsetSignals (toDo, sigStatus)ZYФ€lДДиџџџЛЁ lДДДДиlи…Ц<ј@  Arial…/P…/ …/№…/@†/†/р†/œ0е84\D idleSZФ€l~ДЂџџџо! А‹x/<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0ж84]DM&dnФ€@dџџџИY# @RRdџџџџџџџџз84^D[else_Ф€ЫЙяЫ€џџџPмК#<ј@  ArialœФдЕадЕ0мдЕџџџџ`шдЕ№дЕєдЕpеЕќдЕеЕtї“еЕеЕџџџџ еЕ‘PX@•X@•и84_DM&`a^Ф€ТАТ[џџџК# ТАТ[џџџџџџџџй84`DtoDofW_Ф€žŒцАџџџP)І! <ј@  Arialœџџџџ0В€А‘@нЕІ<јј“LнЕџџџџXнЕdнЕpнЕџџџџ|нЕЖ€ˆнЕџџџџ”нЕ нЕк84aD waiting_Ф€ž[цџџџЈТЙ! <ј@  Arialœ0л84bD8falsecФ€;€џџџАКЄ#<ј@  ArialœPшАКq0 \Љ1t>•t>•aИЉq€+Е рeЉ01 @щАи—qА+Е АrЉ10œЕм+Еaм84cDM&idbФ€Днџџџ ІY# Дннџџџџџџџџн84dDtoDo:=toDo//mkstring(tr);c]GФ€ъ2@џџџиkЛ! <ј@  Arialœ0`UІ<,і“lUN№ѕ“xUџџџџ „U$U OœœUџџџџЈULœ$ДUџџџџ РUА‘аUІ<о84eD8 EmptylistfФ€ЫzŒ€џџџpЇ#<ј@  ArialœT$`$0l$4\ІP$x$L\Іџџџџ„$‘$РS$ $Ј$‘Pф№—ф№—п84fDM&l`eФ€qТŒџџџx‘Џ# qzТzТŒџџџџџџџџр84gD8truehФ€™јН €џџџЗ#<ј@  Arialœњ$ њ$0,њ$8њ$@ б ћ$Tћ$ ~Еаф$Р1Еб„щ$ Евєў$PQЕгŒц$€Едhч$0wЕес84hDM&isgФ€яџџџАЦЏ# яџџџџџџџџт84iD(trackTbl(tr).count=0 or sigStatus=greentchIФ€lЫДяџџџјjЅ! <ј@  Arialœџџџџ$0@œ$џџџџBœ$џџџџCœ$џџџџDœ$џџџџEœ$џџџџ Fœ$џџџџ у84jDM&nlФ€?D‘џџџЗ# ˆ‘?‘?DDMџџџџџџџџф84kD/lstCopy:=toDo; tracks:=toDo; toDo:=Emptylist;OYmФ€lѓД)џџџђZ! <ј@  ArialœFœџџџџ0$Р‘Й%v,і“Й%Ъ4№ѕ“(Й%џџџџ 4Й%$@Й%MœLЙ%џџџџXЙ%Jœ$dЙ%џџџџpЙ%$х84lDlstCopyjmfoEФ€lMДqџџџР4І! <ј@  Arialœ0pВ%Ъ4,і“|В%v№ѕ“ˆВ%џџџџ ”В%$ В% OœЌВ%џџџџИВ%Lœ%ФВ%џџџџ аВ%$ Iœц84mDM&klФ€)Mџџџ -І# )Mџџџџџџџџч84nD2lstCopy:= substring(lstCopy,2,length(lstCopy)-1);]ujФ€ldДˆџџџ І! <ј@  Arialœ0Ы%v,і“Ы%Ъ4№ѕ“(Ы%џџџџ 4Ы%$@Ы% OœLЫ%џџџџXЫ%Lœ$dЫ%џџџџ pЫ%$ Iœш84oDM&lrpФ€q•џџџЈІ# q•џџџџџџџџщ84pD[elseoФ€™zНŒ€џџџиВК#<ј@  Arialœ0р‘Ц%Ъ4ьѓ“ Ц%Ц%$Ц%0Ц%<Ц%HЦ%TЦ%`Ц%ъ84qD!/* 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џџџАеЄ# ЙQcQm[c[cQm[mЙ<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџы84rDtr:=first(lstCopy);otФ€l•ДЙџџџАЭЄ! <ј@  ArialœFœџџџџ0$@‘`О>Ъ4`њ“lО>*Œ№ѕ“xО>џџџџ „О>$О>MœœО>џџџџЈО>Jœ$ДО>џџџџРО>$ь84sDsetSignal (tr,sigStatus)huФ€lД@џџџxЈЄ! <ј@  ArialœHеo0hк Ш7n)hк )X+l8nБр$r$r 4HеoHlshк 8‰m,э84tDM&riФ€ЙЫџџџ@тЃ# ЙЫџџџџџџџџю84uDM&snФ€@dџџџ(# @dџџџџџџџџя84Œw8nullyФ€);;M $jџџџˆв#<ј@  ArialœFœџџџџ0$@‘`О>Ъ4`њ“lО>*Œ№ѕ“xО>џџџџ „О>$О>MœœО>џџџџЈО>Jœ$ДО>џџџџРО>$94ywM&}ŒФ€~)Їџџџ€Л# Ђ))•~•~Їџџџџџџџџђ84zwM&~Ф€~z~ЇџџџјжЄ# ~z~Їџџџџџџџџѓ84{wM&‚Ф€~Ћ~Яџџџ чК#  ~Ћ~Яџџџџџџџџє84~w,trainSignal(sigstat) to trackTbl(tr).sight|zФ€ZVЂzџџџ№$! ZV‰VЂh‰zZz<ј@  Arialœџџџџ$0Eœ%џџџџ Fœ$џџџџ Oœ$џџџџ Lœ$џџџџ Hœ$џџџџ Iœ$џџџџї84vD setSignalK wФ€Й DџџџИKІ! У ї *:їDУDЙ:Й*<ј@  Arialœ0Kœ$џџџџ@œ$џџџџBœ$џџџџCœ$џџџџDœ$џџџџEœ$џџџџ Fœ№82wD wŠˆ†‡…‰ƒ„xyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œv4‰wR&fpar tr TrackId, sigstat SignalStatus;Ф€-FрV€џџџјК#<ј@  Arialœ №(Ў0<6•1,vГd6• а]Ўі 1`мГL6• 9')+а]Ўі 10\ZГМHГ94ˆwZФ€----€џџџˆ5О#<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџ94‡wUФ€----€џџџ˜ЇY#<ј@  Arial œ0p1 Г№Ар‰Б`;Г1`мГL6•рБ;Г01№Г`;Г 94†w\ ProcedureФ€--f=€џџџЈ #<ј@  Arialœ`Р8Г0РсАP9Г€9Г1А9ГР8ГаВ€9ГА9ГР1р9ГР8ГВА9Г џ84…w_Ф€k-k-€џџџј{џ#<ј@  ArialœаВ€n0 7Гр6Гœ“qРсАp7Г 7Г№†#1а7Гр6Г`ЭЊ Г 7Г№(Ў№1`;ГА6ГЬ‰qАс­ў84Šw` setSignalФ€k-ž=€џџџ№ѕ#<ј@  Arialœt•q05Г01№5Г05Г№у­€сБР5Г№5Г10\5Г46•јПqYВР5Г€t1`;Г05Г94„wcФ€[-v=€џџџ8IК#<ј@  Arialœ0 єДppѓДРМДqрjЕКДЃЉ рѓД€ Ј БВ1(1)§84‚w{Ф€Z‡ЂЋџџџн­! <ј@  Arialœ0Н%,і“ Н%z№ѕ“Н%џџџџ $Н%$0Н% Oœ<Н%џџџџHН%Lœ$TН%џџџџ `Н%$ Iœћ84wyz€Ф€lЇЫџџџpЩЇ! <ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџњ84€w“Ф€нŒž€џџџ@€Љ#<ј@  Arialœ0 aсџџџџсџџџџсџџџџљ84wtrackTbl(tr).sig:=sigstat;{xФ€ZЯЂѓџџџgЏ! <ј@  ArialœFœџџџџ0$А‘Ј>v,і“œЈ>і№ѕ“ЈЈ>џџџџ ДЈ>$РЈ>MœЬЈ>џџџџиЈ>Jœ$фЈ>џџџџ№Ј>$ј84}wtrackTbl(tr).sight xy|Ф€ZЂ;џџџ Е! <ј@  ArialœHеo0hк 8‰mPhк PX+lp‰mО8;rh:r 4Hеo ;rhк Ш7nUі84|wM&}~‹Ф€~;~Vџџџ Ў#  ~;~Vџџџџџџџџѕ84‹w[else|Ф€‡;ЋM $jџџџЕЏ#<ј@  ArialœHеo0hк иhк иX+l(о  ˆmєР_t№^t 4Hеo(`thк и94ŽDcФ€d-= $jџџџ№ЫЖ#<ј@  Arialœ0 єДppѓДРМДqрjЕКДЃЉ рѓД€ Ј БВ1(1)94D\ServiceФ€--]= $jџџџЛЏ#<ј@  Arialœ0p1 Г№Ар‰Б`;Г1`мГL6•рБ;Г01№Г`;Г 94D`theSignalControlФ€b-З= $jџџџаБЏ#<ј@  ArialœаВ€n0 7Гр6Гœ“qРсАp7Г 7Г№†#1а7Гр6Г`ЭЊ Г 7Г№(Ў№1`;ГА6ГЬ‰qАс­ 94‘D_Ф€b-b- $jџџџ(ŽЖ#<ј@  Arialœ`Р8Г0РсАP9Г€9Г1А9ГР8ГаВ€9ГА9ГР1р9ГР8ГВА9Г  94’DUФ€---- $jџџџ0Ў#<ј@  Arial œџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџ 94“DZФ€---- $jџџџиЮБ#<ј@  Arialœ №(Ў0<6•1,vГd6• а]Ўі 1`мГL6• 9')+а]Ўі 10\ZГМHГ 94”DRФ€-FQX $jџџџиЦЖ#<ј@  Arialœt•q05Г01№5Г05Г№у­€сБР5Г№5Г10\5Г46•јПqYВР5Г€t1`;Г05Г 94и9ЎDCL trackLst TrackList:=Emptylist; /* tracks of the system */ DCL trackTbl TrackTable:=(. (. 0,0,null,green .) .); /* information about all the tracks */Ф€-H)ЂџџџР Ў# -HH)RRH)R)Ђ-Ђ<ј@  Arialœ0Ъ84˜M&žšФ€77hџџџˆ Ў#  77hџџџџџџџџх94™M&Ÿ›Ф€ЇЇhџџџ8Ў#  ЇЇhџџџџџџџџц94š -˜Ф€h[ŒџџџЎ! АŠx/<ј@  Arialœ0ч94› -™Ф€ƒhЫŒџџџ Ў! АŠx/<ј@  Arialœ0ш94œM&ЉžФ€uН7ѓџџџ њЎ# uНuЦ7Ц7ѓџџџџџџџџщ94M&ЉŸФ€uНЇѓџџџАšњ# uНuЦЇЦЇѓџџџџџџџџъ94žvirtual manyCarsWaitingœ˜Ф€ѓ[џџџИЇЁ ѓ[ѓ[,<ј@  Arialœ0ы94Ÿvirtual carsWaiting™Ф€ƒѓЫџџџ ”ЇЁ ƒѓЫѓЫƒœ<ј@  Arialœ0ь94 M&ІЁФ€uMuhџџџрыД# uMuhџџџџџџџџэ94Ё - Ф€Qh™Œџџџhъ­! АŠx/<ј@  Arialœ0ю94ЂM&ЃЌФ€MhџџџhЎ# Mhџџџџџџџџя94Ѓ0trackTbl(track).count:= trackTbl(track).count+1ЄЂФ€ъ)2Mџџџ ‰­! <ј@  Arialœ0№94ЄM&ЊЃФ€)џџџАВЖ# )џџџџџџџџё94ЅM&ЈІФ€uu)џџџЈR­# uu)џџџџџџџџђ94І0trackTbl(track).count:= trackTbl(track).count-1Ѕ Ф€Q)™MџџџР—­! <ј@  Arialœ0ѓ94ЇM&ЉЈФ€uНuѓџџџ‹­# uНuѓџџџџџџџџє94Јvirtual trainLeaving(track)ЇЅФ€Qѓ™џџџШŒ­Ё Qѓ™ѓ™Qj<ј@  Arialœ0ѕ94Љ *œЋЇФ€Q™™Нџџџp­! р?јx/0иD<ј@  Arialœ0і94Њ!virtual trainApproaching(track)ЋЄФ€ъѓ2џџџ8­Ё ъѓ2ѓ2ъ<ј@  ArialœџџџџŽ0˜*љ(…ƒ –(l џџџџАœж/а*љ сy –(l h§њиhєaџџџџї94ЋM&ЉЊФ€uНѓџџџŽ­# uНuЦЦѓџџџџџџџџј94Ќ -ЂФ€ъh2Œџџџј˜­! АŠx/<ј@  Arialœ0љ94ЎcФ€d-= $jџџџр’­#<ј@  Arialœ03(4)ћ94уФ trainsхЧФ€QН™сџџџ0Ѕ­! р?јx/0иD<ј@  Arialœ0Y94фФ virtualхФ€Qu™™џџџјЃ­! и/и/<ј@  Arialœ0Z94хФM&фуФ€u™uНџџџиЈ­# u™uНџџџџџџџџ[94чФcФ€d-= $jџџџРЂ­#<ј@  Arialœ@ќ0ЫŸbЈb@ќвŸbHЈb@ќйŸb1(4)]94эФ`BasicControllerФ€y-Щ= $jџџџHЋ­#<ј@  Arialœ0c94шФ_Ф€y-y- $jџџџ€Ќ­#<ј@  Arialœ€cC0^94щФ\ Service TypeФ€--t= $jџџџP ­#<ј@  Arialœ0X Wh]]p~Wh]]X Wа WœT…@c[x/_94ъФUФ€---- $jџџџЊ­#<ј@  Arial œHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ`94ыФZФ€---- $jџџџˆЁ­#<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџa94ьФRФ€-FQX $jџџџ№Ў­#<ј@  Arialœ0b94У9BasicController%ФФ€VHТlџџџ˜В­! <ј@  Arialœ0492Ф9ФэыщъшьцчХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјУ2ј9Ф љњћќ§ўџ     У29ФАГЏВБД­Ў >Tx˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕУ2Е9ФбдагвеЮЯЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзУ!4Т95theCentralController: FastTrainsPrecedenceControllerўћіѓы Ф€2Йhџџџ œ­! <ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ394–9theSensorDebouncerёш —Ф€cј.џџџи­! <ј@  Arialœј”А•А00•АА‘@•А  зL•А4•А€PзX•А@•ААeзd•АL•А.зp•АX•А 4з|•Аd•А0+зˆ•Аp•АMз”•А|•АpJз •Аˆ•А92—9 —СПНОМРКЛ˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРС–4Р—RФ€-FQX $jџџџШО­#<ј@  ArialœX“q0X,•X,•1P,•P,•aАЗА€ЗАpxж01 9ЎXБq ЗАPщА10 ,•LЗАa194П—ZФ€---- $jџџџ@Ж­#<ј@  Arialœa0 ре01. ЎTаq‰А@‰АpаЌ1`8,•8,•aцяРХе01 y­094О—UФ€---- $jџџџXМ­#<ј@  Arial œ1X-•0 tІ0CFРХе01]­Єаq0‡А11@|“А(-•aа /е0/94Н—\ServiceФ€--Y= $jџџџН­#<ј@  Arialœ y­ИИq01P,•P,•aМ“АH,•Aе01.№ ЎhИq нА10 ,•LнАa.94М—_Ф€^-^- $jџџџшЙ­#<ј@  Arialœ№„А0LрА.•a8,•8,•aе01+№ Ў(пP…А1 LрА.•aX-94С—`theSensorDebouncerФ€^-Ь= $jџџџ Л­#<ј@  ArialœAŒ.•0Ф.•Ф.•” БpБ#AРl.•l.•XБ1T.•T.•a294Л—cФ€[-v= $jџџџАИ­#<ј@  Arialœ0(, x(1(1),94jUopenGate via g1[^hФ€ZЫЂяџџџрЩ­! ZЫ‰ЫЂн‰яZя<ј@  Arialœ0HќА‚šp:’@Јj§ХЖ94kU“lФ€•ТЙд $jџџџШУ­#<ј@  Arialœў0шВšИ94lU^kФ€l7џџџpЧ­! <ј@  Arialœ0Й94~y€Ф€clЋџџџЈШ­! <ј@  Arialœ0Н%,і“ Н%z№ѕ“Н%џџџџ $Н%$0Н% Oœ<Н%џџџџHН%Lœ$TН%џџџџ `Н%$ IœЩ94ylstCopy:=trackLst; i:=0;€‚Ф€cЋЋЯџџџ8Ц­! <ј@  ArialœFœџџџџ0$Р‘Й%v,і“Й%Ъ4№ѕ“(Й%џџџџ 4Й%$@Й%MœLЙ%џџџџXЙ%Jœ$dЙ%џџџџpЙ%$Ъ94€yM&~Ф€‡‡ЋџџџХ­# ‡‡ЋџџџџџџџџЫ94ylstCopy‚‰„|Ф€cѓЋџџџ0Ю­! <ј@  Arialœ0pВ%Ъ4,і“|В%v№ѕ“ˆВ%џџџџ ”В%$ В% OœЌВ%џџџџИВ%Lœ%ФВ%џџџџ аВ%$ IœЬ94‚yM&Ф€‡Я‡ѓџџџјЬ­# ‡Я‡ѓџџџџџџџџЭ94ƒy2lstCopy:= substring(lstCopy,2,length(lstCopy)-1);ŒФ€cЙЋнџџџ а­! <ј@  Arialœ0Ы%v,і“Ы%Ъ4№ѕ“(Ы%џџџџ 4Ы%$@Ы% OœLЫ%џџџџXЫ%Lœ$dЫ%џџџџ pЫ%$ IœЮ94„yM&…Ф€‡‡;џџџиб­# ‡‡;џџџџџџџџЯ94…y[else„Ф€ Д2€џџџhЯ­#<ј@  Arialœ0р‘Ц%Ъ4ьѓ“ Ц%Ц%$Ц%0Ц%<Ц%HЦ%TЦ%`Ц%а94†y‰‡Ф€сVzџџџаж­! <ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџб94‡y“i†Ф€V h€џџџг­#<ј@  Arialœ0 aсџџџџсџџџџсџџџџв94ˆyJ/* variables */ DCL lstCopy TrackList; DCL i Integer; DCL tr TrackId;Ф€АQdЋџџџpп­# АQZQd[Z[ZQd[dЋАЋ<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџг94‰yM&†ŠФ€ЋѓVџџџ”­# ЋѓѓVџџџџџџџџд94Šy8 Emptylist‰Ф€Дѓъ€џџџ8о­#<ј@  ArialœT$`$0l$4\ІP$x$L\Іџџџџ„$‘$РS$ $Ј$‘Pф№—ф№—е94‹yi:=i+trackTbl(tr).count;ŽŒzФ€czЋžџџџрс­! <ј@  ArialœFœџџџџ0$А‘Ј>v,і“œЈ>і№ѕ“ЈЈ>џџџџ ДЈ>$РЈ>MœЬЈ>џџџџиЈ>Jœ$фЈ>џџџџ№Ј>$ж94ŒyM&‹ƒФ€‡ž‡ЙџџџЈр­# ‡ž‡Йџџџџџџџџз94ytr:=first(lstCopy);„ŽФ€c;Ћ_џџџю­! <ј@  ArialœFœџџџџ0$@‘`О>Ъ4`њ“lО>*Œ№ѕ“xО>џџџџ „О>$О>MœœО>џџџџЈО>Jœ$ДО>џџџџРО>$и94ŽyM&‹Ф€‡_‡zџџџиь­# ‡_‡zџџџџџџџџй94yM&ƒФ€6ъ‡цџџџ8оќ# ‡н‡ц6ц6ъ‡ъ‡ѓџџџџџџџџк94‘ycФ€[-v=€џџџ`ёЎ#<ј@  Arialœ01(1)м94—y` totalCountФ€k-Ђ=€џџџPф­#<ј@  Arialœ0т94’y_Ф€k-k-€џџџу­#<ј@  Arialœ0н94“y\ ProcedureФ€--f=€џџџјч­#<ј@  Arialœ0о94”yUФ€----€џџџ0щ­#<ј@  Arial œ0п94•yZФ€----€џџџ ы­#<ј@  Arialœ0р94–yRreturns IntegerФ€-F{V€џџџˆх­#<ј@  Arialœ0с94x totalCount yФ€Vцž џџџРц­! `ц”цž№ž” ` VV№<ј@  Arialœ№) 0џџџџ* $џџџџ( $џџџџKœ$џџџџ@œ$џџџџBœ$џџџџCœ$џџџџШ92y y—•“”’–‘z{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—x4mU`Ф€ZlЂџџџЎ! €phгn˜jCh(FИti€t €лjР?tP-jЕuиэnpсmgАk№Н ˆƒmаC ШYjh€p<ј@  Arialœ0П94oUcФ€[-v=€џџџPЎ#<ј@  Arialœ1”‘˜0  C01 z q0§z1@d‘˜d‘˜a `зІ11(1)С94uU` switchCarsФ€k-Њ=€џџџpЎ#<ј@  Arialœa0  C01  Иz/qџz1`t˜t˜a @СД01 ЙzЧ94pU_Ф€k-k-€џџџpЎ#<ј@  Arialœ0аВz?Ј@иz z,Г@ГzP zаnЏ€qw€qw@Гz€БzРЅzТ94qU\ ProcedureФ€--f=€џџџЈЎ#<ј@  Arialœ0№Гz01 Дz@ГzжzP zqДz?Ј cu€ОzУ94rUUФ€----€џџџP Ў#<ј@  Arial œ0Зzp ЗzрЊzрeЉЋz z0 ЕЗz zФ94sUZФ€----€џџџјЎ#<ј@  Arialœ zрИz0АjЈљyљyрИzЖz ЗzЏz`l…zмКz@Зz z@Иz0Х94tURФ€-FQX€џџџ8Ў#<ј@  Arialœ010\Йz\˜ zЙzPq`КzрЊz ЙzЦ94T switchCars UФ€?@‡dџџџXЎ! I@}@‡J‡Z}dId?Z?J<ј@  Arialœ№0dTu*[ІJєZІpTu.[ІњA00z˜0z˜ˆTuФщv`AЄl— ь—Ј92U UusqrptnoVWXYZ[\]^_`abcdefghijklmnopqrstuvwT4G?M&IHФ€~™~Дџџџ џ­# ~™~Дџџџџџџџџ–94H?openGate via g1GEBФ€ZДЂиџџџш§­! ZД‰ДЂЦ‰иZи<ј@  ArialœFœџџџџ0$џџџџ Lœ$џџџџ Hœ$џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџRœ$—94I?GФ€ZuЂ™џџџАќ­! БКъКъ8@AvHєXєšŒˆєH&z<ј@  ArialœFœџџџџ0$џџџџ Lœ$џџџџ Hœ$џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџRœ$˜94J?“KФ€ЇMЫ_€џџџxћ­#<ј@  Arialœ0™94K?DJФ€l;_џџџ@њ­! <ј@  Arialœ0Dœ$џџџџEœ$џџџџ Fœ$џџџџ Oœ%џџџџ Lœ$џџџџ Hœ$џџџџ Iœš94M?cФ€[-v=€џџџаї­#<ј@  ArialœPЙД0ррАЬљ0дљ№sљ` Ъ— Ъ—<ељPЙДЬљ01@Ьљ дљ1(1)Ё94S?` switchBothФ€k-Љ=€џџџ˜і­#<ј@  Arialœ1D>•0рЕ YЋPЗД`ЕРq0Е0еЕ№ТБ P!ГАЕЇ94N?_Ф€k-k-€џџџ`ѕ­#<ј@  ArialœА Е0А@ Е0еЕ€ЇPЗД ŸІА ЕPЗД1pcџЂ94O?\ ProcedureФ€--f=€џџџ(є­#<ј@  Arialœ0Е0ŒTЕD>•рГPЗДЕРq@Е sЕаgЏPЕа0ЕЃ94P?UФ€----€џџџИё­#<ј@  Arial œАŽГ0џџџџ€0иГ№'ДJœ$„Д№ЋДАŽГ„Д$ aћЄ94Q?ZФ€----€џџџ№ђ­#<ј@  ArialœУДНД0ркј€ЈјНД0р”Д-€QНДР@Ј р”Д НДР€Д№ајЅ94R?RФ€-FQX€џџџHя­#<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџІ94> switchBoth ?Ф€?‡7џџџ€№­! I}‡‡-}7I7?-?<ј@  Arialœa0Ѕ­Ї01@­АЬшwРЃДа•Г€ЄД1` ЋДX<•aа€Д)0­Ї01рЪА‹92? ?SQOPNRLM@ABCDEFGHIJKLMNOPQRS>4,!M&-3Ф€lЯlъџџџЄ# lЯlъџџџџџџџџy94-!closeGate via g1.,&Ф€HЋЯџџџ0AН! HЋwЋНwЯHЯ<ј@  ArialœFœџџџџ0$џџџџ Lœ$џџџџ Hœ$џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџRœ$z94.!M&1-Ф€llЋџџџрЎ#  llЋџџџџџџџџ{94/!“0Ф€ŒžАА€џџџјЎ#<ј@  Arialœa0  C01  ”АtP w1`X‚˜X‚˜a Р•Ї01 рФ|940!(/Ф€ZЇ~ЫџџџXюЕ! <ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџ}941!.Ф€HlџџџˆЎ! `1˜э Ђ№ђ€”1\ёˆє—Pрјr€”<ј@  Arialœ0Dœ$џџџџEœ$џџџџ Fœ$џџџџ Oœ$џџџџ Lœ$џџџџ Hœ$џџџџ Iœ~942!*+Ф€Ћ2ѓVџџџР­! Ф2ѓ2кVЋV<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ943! waiting,+5$Ф€HъџџџрЩН! јё™ˆЮџpЮџ ЮџИЮџаЮџ Яџ8ЯџPЯџhЯџ€Яџ˜ЯџАЯџШЯџрЯџјЯџаџ(аџ@аџXаџpаџљ™ ާ<ј@  Arialœ0HќА‚šp:’@Јj§Х€944! gateClosed5)Ф€H)MџџџˆчМЁ H))MHMa;<ј@  Arialœ0`„šЈџ945!M&34Ф€ll)џџџ8ЪК# ll)џџџџџџџџ‚947!cФ€[-v=€џџџЈЛ#<ј@  Arialœ№0<˜q@|v€Ї |v1pX˜X˜aP˜P˜ `=Ї01P•фПq0}v11(1)„94=!` switchTrainsФ€k-Б=€џџџ˜–І#<ј@  Arialœ@:Ÿq0~v1œVvh~˜a`~˜ŒAv Ї01 риЭt@v@@~˜@~˜108~˜lvaŠ948!_Ф€k-k-€џџџРfК#<ј@  Arialœ0 4u1а4uWv qА^ў 4uа4up4u015uWvр]ўа4u5u 4u`1р.uWv…949!\ ProcedureФ€--f=€џџџR#<ј@  Arialœ€Џмє—0,ѕ—,ѕ— Р$ѕ—ртІай З§€ЏPrPr№q@Arаq 0мє—ћІ€џр™§€ЏАr№q€†94:!UФ€----€џџџИЪЅ#<ј@  Arial œA”ѕ—0œs€їЇрААј€Џ0t@AptАs p,0€іЇpж`ј€Џtps€QРtАs ‡94;!ZФ€----€џџџ=О#<ј@  ArialœQœѕ—0єє—Pкрupv01@vu0мє—@Иv@vєє—`1 vu1tРИ@v vќє—1ˆ94<!RФ€-FQX€џџџ€Н#<ј@  Arialœt0єє—01а%w0Ь2рЖ№w1@фѕ—фѕ—1tв x1Ьѕ—Ьѕ—‰94  switchTrains !Ф€?ц‡ џџџ?О! Iц}ц‡№‡} I ??№<ј@  Arialœ0џџџџ%сџџџџџџџџ=€џџџџрЁ) $џџџџ* $џџџџn92! !=;9:8<67"#$%&'()*+,-./0123456789:;<= 4Й—detectApproaching (track)ЋЊФ€6M~qџџџИ;Ё 6M~M~q6qO_<ј@  Arialœ0*94И— -žЃІЉФ€6@~dџџџY! АШ€рlшЗm`‚ иФиZjа\hшœ\Ј^dиОg mmшo(Q РЊ`03ohФZ@9\8Ф]№Щ^№Ÿ <ј@  Arialœ0ььыrФ[ќ<ј@  Arial…/P…/ …/№…/@†/†/р†/œ)94З— ЁФ€6Ц~ъџџџp Н! `rx/<ј@  Arialœ0(94Ж—detectLeaving (track)ЈЇФ€ЂMъqџџџhїЅЁ ЂMъMъqЂqЛ_<ј@  Arialœ0'94тФM"юясрФdДˆД§џџџPЈН#  Д§ДˆџџџџO94юФ$тцФБ…З‹ $jџџџ‡­#d94яФ`g2тФ€ЂЕДЧ $jџџџPD#<ј@  Arialœ0e94сФN(trainDetection)тФ€НšЌџџџК# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0N94рФVтФ€ЂЦ $jџџџ8Њ#x/ux/<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0M94пФM"№ёмонФd?ˆ?§џџџ ’Д#  ?ˆ?§L94№Ф$пцФ<…B‹ $jџџџШWЄ#f94ёФ`g1пФ€-Е?Ч $jџџџјЮГ#<ј@  Arialœ0џџџ˜q! %цYцcg94оФN (gateControl)пФ€Hйыџџџ№Д# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0K94нФVпФ€}ўџџЁўџџ $jџџџ˜„З#ј0rhg –(l <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0J94мФN(gateStatus), (carSensor)пФ€HšОџџџЄЄ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0рЉ[pmI94Е—Asynonym threshold Duration=1; /* debouncing threshold */Ф€HнuџџџИу# HгHнRгRгHнRнuu<ј@  Arialœ0&94Д—M&ВГФ€нqннџџџXЫК# нqннџџџџџџџџ%94Г—trainLeaving (track)ДЂФ€ЙнџџџX—X! ЙншняшЙ<ј@  Arialœ0$94В— t2(track)ЄДšФ€ЙMqџџџ8–XЁ ЙMMqЙqв_<ј@  Arialœ0#94Б—M&ЏАФ€ƒqƒнџџџ [Y# ƒqƒнџџџџџџџџ"94А—trainApproaching (track)БЃФ€_нЇџџџ01Z! _нŽнЇяŽ_<ј@  Arialœ0даШpК'l X+lX+lX+lpК'l X+l!94Џ— t1(track)ЅБФ€_MЇqџџџьYЁ _MЇMЇq_qx_<ј@  Arialœ0 94Ў—set(NOW+threshold, t1(track));ЊЉФ€6•~ЙџџџhЦЌ! <ј@  Arialœ0даШpК'l X+lX+lX+lpК'l X+l94­—set(NOW+threshold, t2(track))ЇІ˜Ф€Ђ•ъЙџџџX'Љ! <ј@  Arialœ0даШpК'l X+lX+lX+lpК'l X+l94Ќ— idleЁЄЅЈЋФ€6~)џџџ`Ф! АШ€рlшЗm`‚ иФиZjа\hшœ\Ј^dиОg mmшo(Q РЊ`03ohФZ@9\8Ф]№Щ^№Ÿ <ј@  Arialœ0ььыrФ[ќ<ј@  Arial…/P…/ …/№…/@†/†/р†/œ94Ћ—M&ЌЙФ€Z)ZMџџџŒЏ# Z)ZMџџџџџџџџ94Њ—M&ЙЎФ€ZqZ•џџџH‡Љ# ZqZ•џџџџџџџџ94Љ—M&ЎИФ€ZЙZ@џџџˆ"# ZЙZ@џџџџџџџџ94Ј—M&ЌЖФ€Z)ЦMџџџ щ# Z)Z2Ц2ЦMџџџџџџџџ94Ї—M&Ж­Ф€ЦqЦ•џџџЯЃ# ЦqЦ•џџџџџџџџ94І—M&­ИФ€ZЙЦ@џџџАиЃ# ЦЙЦТZТZ@џџџџџџџџ94Ѕ—M&ЌЏФ€Z)ƒMџџџHQІ# Z)Z2ƒ2ƒMџџџџџџџџ94Є—M&ЌВФ€Z)нMџџџ# Z)Z2н2нMџџџџџџџџ94Ѓ—M&АИФ€Zƒ@џџџИK# ƒƒ7Z7Z@џџџџџџџџ94Ђ—M&ГŸФ€нн џџџ˜L# нн џџџџџџџџ94Ё—M&ЗЌФ€ZъZџџџ# ZъZџџџџџџџџ94лФM"ђѓкйФd.ˆ.§џџџЛ#  .§.ˆџџџџH94ђФ$лцФ+…1‹ $jџџџР4О#h94ѓФ`g5лФ€Е.Ч $jџџџИOZ#<ј@  Arialœ0€№|а yHЈ]i94кФN (gateControl)лФ€7šЌџџџ@CY# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ0 Ш^рzG94йФVлФ€§@ $jџџџ8gZ#x/x/`ђ|X§m<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0ФrвrF94ЯЕcФ€d-= $jџџџјЎ#<ј@  Arialœ04(4):4ЭЕ cars,bothЫФ€H~Ђџџџ@Фќ! р?јx/0иD<ј@  Arialœ0:4ЬЕ closeGateЫЩОФ€HДиџџџXЙКЁ HДДиHиaЦ<ј@  Arialœ0:4ЫЕM&ЭЬФ€lЂlДџџџH†# lЂlДџџџџџџџџ :4ЪЕ trainsЧФ€H DџџџИтЙ! АŠx/<ј@  Arialœ0 :4ЩЕM&ЬШФ€lиlъџџџ ЮЙ# lиlъџџџџџџџџ :4ШЕ switchTrainsЩЧФ€HъџџџpК! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010Apя :4ЧЕM&ШЪФ€ll џџџМ# ll џџџџџџџџ :4ЦЕopenGateФТМФ€HЇЫџџџH~МЁ HЇЇЫHЫaЙ<ј@  Arialœ0:4ХЕ trainsФФ€Hq•џџџШRЛ! р?јx/0иD<ј@  Arialœ0:4ФЕM&ХЦФ€l•lЇџџџ ЪЛ#  l•lЇџџџџџџџџ:4УЕ switchCarsКРФ€H7џџџИvН! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010Apя:4ТЕM&ЦЛФ€lЫlнџџџ€РН# lЫlнџџџџџџџџ:4СЕ carsРФ€HRvџџџx'Н! АŠx/<ј@  Arialœ0:4РЕM&УСФ€l7lRџџџ /Л# l7lRџџџџџџџџ:4C9theSignalControlјю DФ€Ыјm.џџџЮО! <ј@  Arialœ0ььД„UpК'lnВрwџџџфwєxєЫ82D9 D“’‘”ŽEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvŽ‘’“”•C4 —\/* timer */ timer t1(TrackId); timer t2(TrackId); /* variables */ DCL track TrackId; Ф€6HќДџџџШZ# 6HђHќRђRђHќRќД6Д<ј@  Arialœ0р‘Ц%Ъ4ьѓ“ Ц%Ц%$Ц%0Ц%<Ц%HЦ%TЦ%`Ц%94иФM"єѕдзжФdЙˆЙ§€0Z#  ЙˆЙ§E94єФ$ицФЖ…М‹ $jџџџ`_ќ#j94ѕФ`g4иФ€ЇЕЙЧ $jџџџˆќ#<ј@  Arialœt0єє—01а%w0Ь2рЖ№w1@фѕ—фѕ—1tв x1Ьѕ—Ьѕ—k94зФN setSignalsиФ€Тй ыџџџМ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœ@:Ÿq0~v1œVvh~˜a`~˜ŒAv Ї01 риЭt@v@@~˜@~˜108~˜lvaD94жФVиФ€Ад! $jџџџxЛ#h&•ЌЄМwћДН–АдwћРН–Фwћ!Š„wћ –(l <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`ŠњœHеo0hк Ш7n)hк )X+l8nБр$r$r 4HеoHlshк 8‰m,C94еФF/* variables */ DCL train PId; DCL track TrackId; DCL speed Real;Ф€АcdЦџџџpХ# АcZcdmZmZcdmdЦАЦ<ј@  Arialœ0џџџџ%сџџџџџџџџ=€џџџџрЁ) $џџџџ* $џџџџB94дФN settingDoneиФ€Тš ЌџџџВ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœQœѕ—0єє—Pкрupv01@vu0мє—@Иv@vєє—`1 vu1tРИ@v vќє—1A94+!M&32Ф€lЯ2# llЯЯ2џџџџџџџџx94iU#3open the gate (C1: no trains between the sensors)hФ€VТдјџџџрхЋ# <ј@  Arialижњ(зњxзњШзњињhињИињœXт 0А/ВaџџџџјSm PзќFxYiTm ш/Иж{Д94hUM&ijФ€ЂнVнјTЏ# ЂнЋнЋнVнџџџџџџџџГ94B9M"стA@ФdiXЧ#  iџџџџX:4с9$(BйФ|‚ $jџџџАT#Y:4т9`g3BФ€m3E $jџџџX Є#<ј@  Arialœ`о203ШХ˜о2w3PХао2~3Z:4A9N (gateControl)BФ€ˆ*а<џџџHн# <ј@  Arialœ 0Ч‡№^(_€‰ќ˜aM`џџџџј‡ќШaр– aTА/H‰ќaџџџџ[:4@9VBФ€Zm~ $jџџџиЌ#dmtm~w~utdZuZw<ј@  ArialœpК'l0 pК'l HЦъxWќџџџ(ф! X+lјџџџ\:4?9M"уф9>=Фd__rШЎ#  __r^:4у9$257?йФ\b $jџџџxуЋ#_:4ф9`g2?Ф€M3_E $jџџџЙ#<ј@  Arialœ00ььыrФ[ќ<ј@  Arial…/P…/ …/№…/@†/†/р†/`:4>9N trainSignal?Ф€hWАiџџџx›В# <ј@  Arialœ0Ё X+lјџџџ"ArialРА2<ј@  Ariala:4=9V?Ф€тew $jџџџ\ќ#ьeќeomќwьwтmтo<ј@  Arialœp/0(_˜_ш`@/ш88/x4`_а_XўИkА/ aX˜_(.b:4<9M"хц8;:ФdHHrиД#  HHrc:4х9$+<йФEK $jџџџЗА#d:4ц9`g1<Ф€6<HN $jџџџHvИ#<ј@  ArialœџџџџАb0ЇШ+aџџџџ8L$pD§KxJ8T!џџџџ~ Аџ0h/Kџџџџ8š(иce:4;9N (gateControl)<Ф€QN™`џџџp­Џ# <ј@  ArialœАу0јџџџ"ArialЉ2<ј@  Arialf:4:9V<Ф€<€`’ $jџџџL#F€V€`Š`ˆV’F’<ˆ<Š<ј@  ArialœX90 /аб2H{'ˆ,Ш9h…1hЈ,9p:=`јP!'Ш99АЄА/0дќg:499N%trackAnnounce, inSight, (trainSensor)?Ф€h*.<џџџјЇЗ# <ј@  Arialœ0h:489N(gateStatus),(carSensor)<Ф€T!ф3џџџ8Ћ# <ј@  Arialœ0i:479M!ушч6Ф!Д._puК#  _Д.џџџџЂ:469N (trainSensor)7Ф€uIН[џџџ˜юЃ# <ј@  Arialœ Ћ203 еиЋ23зЌ23Ѓ:4ч9`S67Ф€сIѓ[ $jџџџИ #<ј@  Arialœ0Є:4ш9$щ7–ФБ+З1 $jџџџ(І#Ѕ:4щ9`?name278шФ€К"о4 $jџџџрН#<ј@  Arialœ0І:459M!ыуъ43Ф!_h_8№Z#  _h_Ќ:449N trainSignal5Ф€hˆАšџџџЊY# <ј@  Arialœ0­:4ъ9`S35Ф€MI_[ $jџџџ(оY#<ј@  Arialœ0Ў:4ы9$ь5ТФ\ebk $jџџџ*Y#Џ:4ь9`g3ыФ€hhzz $jџџџ XY#<ј@  Arialœ0`b§шa§pa§ј`§€`§`§_§А:439NtrackAnnounce, inSight5Ф€hЙТнџџџ€„Y# <ј@  Arialœ˜0њ0Ж:429M!юуэ1Ф!_. `Y#  ._џџџџЩ:419N trainSignal2Ф€ƒыЫ§џџџ(AП# <ј@  Arialœ0Ъ:4э9`S72Ф€н@яR $jџџџА8О#<ј@  Arialœ0Шё) €$рЫ:4ю9$я2CФ+ 1 $jџџџ—О#Ь:4я9`?name310юФ€"44 $jџџџшqО#<ј@  ArialœXf0"`]Э:409M!ёѓ№/Ф!Дh)јАЂН#  Дј)hџџџџх:4/9N(trainDetection)0Ф€ДqƒџџџˆО# <ј@  Arialœ0ц:4№9`S20Ф€иАъТ $jџџџиК#<ј@  Arialœ0ч:4ё9$ђ0–ФБѕЗћ $jџџџЈ"Н#ш:4ђ9`?name339ёФ€Кўо $jџџџ8ЊН#<ј@  Arialœi0јПMƒ9и3 x4щ:4ѓ9$є0ТФ&e,k $jџџџhqМ#ъ:4є9`g2ѓФ€2hDz $jџџџШмМ#<ј@  Arialœ<Ау0јПMˆ9ˆј-р/9 4ы:4.9M!іјѕ-,Ф!•hј˜’М# •hјў:4-9N setSignals.Ф€д[цџџџx М# <ј@  Arialœ0јЌ Э)№m1иЬџ@Z   "јž)џ:4ѕ9`S4.Ф€цАјТ $jџџџ SМ#<ј@  Arialœ0ˆ9$А­&xC}&шЗ ˆW$PЪўє;4і9$ї.ТФ’e˜k $jџџџXfЛ#;4ї9`g4іФ€ž_Аq $jџџџИЛ#<ј@  Arialœ0;4ј9$љ.CФѕћ $jџџџеК#;4љ9`?name369јФ€"ўF $jџџџ№УК#<ј@  Arialœ0;4,9N settingDone.Ф€Аqјƒџџџ ЋК# <ј@  Arialœ0;4аЯM%н+ФџџCSDLCreateLineъDнDІ#  нDъDџџџџd<4+9M!ћхњ*)Ф!HMаЙ#  MHMHw<4*9N (gateControl)+Ф€Q§™џџџˆђЙ# <ј@  Arialœ0x<4њ9`S1+Ф€ZVlh $jџџџ ;І#<ј@  Arialœ0y<4ћ9$ќ+ТФJP $jџџџЈЬЄ#z<4ќ9`g1ћФ€ќ;M $jџџџјъЃ#<ј@  Arialœ0pК'lЯ0сwpК'l`pК'l{<4)9N(gateStatus),(carSensor)+Ф€Z2ъDџџџр/Ѓ# <ј@  Arialœ0“<4(9M!сў§'Ф!ЙMp(Ѓ#  MЙMџџџџІ<4'9N (gateControl)(Ф€д2DџџџX# <ј@  Arialœ0€Жї№]њ c41Фжƒ$$ˆˆЇ<4§9`S5(Ф€dVvh $jџџџ #<ј@  Arialœ0Ј<4ў9$џ(ТФЖJМP $jџџџ@Ѓ#Њ<4џ9`g5ўФ€Й;ЫM $jџџџ0mќ#<ј@  Arialœ0 '4Ьй1мФжƒ$6ššџџџЋ<4&9#'basic functionality of all controllers%Ф€цHˆlџџџ№Л# <ј@  Arialœ0т<4%9M&&УФ€ТZцZУЄ# ТZцZџџџџџџџџу<4JHm/* 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јџџџ˜і# 6QgQq[g[gQq[qј6ј<ј@  Arialœ0Y=4IH/* 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?>4#position of previous trainФ€ѓЯMѓџџџQЛ# <ј@  Arialœp<ћ0€ЅД€ЅД В§аШ§ц§ рдІ`ЌІ§<У§p<ћ ч§010В§pц§B>4M&Ф€~сѓс№ќЅ# ~сѓсџџџџџџџџC>4#create next trainФ€;m_џџџо# <ј@  Arialœ 04ŠG1Фжƒ$$ˆ`џџџ8"' <D>4M& Ф€нMMˆoЛ# нMMџџџџџџџџE>4”H#0update current acceleration, speed and position“Ф€ќиŒќџџџРˆМ# <ј@  Arialœ0S>4“HM&”ЋФ€НъќъжМ# НъќъџџџџџџџџT>4’H#+create next train before leaving the track‘Ф€Їа%єџџџрrМ# <ј@  Arialœ0Y>4‘HM&’™Ф€VтЇтxН# VтЇтџџџџџџџџZ>4HM&ЃЁФ€™Ї™ЙX@О#  ™Ї™Йџџџџџџџџ[>4opЂ/* SDL-2000 Design Contest 3rd SDL And MSC Workshop Specification of a Railway Crossing Jens Brandt (University of Kaiserslautern) May 11 2002 */Ф€?6)ќџџџpkО# ?66)@@6)@)ќ?ќ<ј@  Arialœ0Џ>4H#Rpossible to stop in front of the signal or handing over of signal already doneŽФ€ќЇŒяџџџАО# <ј@  Arialижњ(зњxзњШзњињhињИињœ0А>4ŽHM&ЁФ€НЫќЫpЊО# НЫЦЫЦЫќЫџџџџџџџџБ>4ъчM&ѕёФ€‡)иhЈSО# ‡)и)иhџџџџџџџџc?4ч8redъФ€сDѓV $jџџџH Z#<ј@  Arialœ0d?4q[elsevФ€ъ 2 $jџџџ№YY#<ј@  Arialœ0}?4vqM&xФ€Ђиž№MО# Ђииžџџџџџџџџf?4wq“distxФ€ѓžА $jџџџXhќ#<ј@  Arialœ0g?4xqvwФ€ЦžъТџџџ­ќ! <ј@  ArialРЬњЭњ`ЭњАЭњЮњhЮњИЮњœ0h?4yqM&{Ф€?ѓ~žЉ# ~Œ~ž?ž?ѓ~ѓ~ќџџџџџџџџi?4zqM&}{Ф€~V~hјMЏ# ~V~hџџџџџџџџj?4{qsp:=sp+minAccel;zyrФ€ZhЂŒџџџ0! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0k?4Œq8>0|Ф€‡ ™2 $jџџџ€WЅ#<ј@  Arialœ0|?4|qM&}ŒФ€~ ~2ЁІ# ~ ~2џџџџџџџџl?4}qdist:=dist+sp;|ztФ€Z2ЂVџџџШЎК! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0m?4~qM&‚Ф€~ъ~ќиЃ# ~ъ~ќџџџџџџџџn?4qspy~v|Ф€ZќЂ џџџсН! <ј@  ArialhЬ/ИЬ/Э/XЭ/ЈЭ/јЭ/HЮ/œ0o?4€qM&ƒ‚Ф€~Д~Ц–#  ~Д~Цџџџџџџџџp?4q%/* variables */ DCL sp, dist Real;Ф€ТcIЂџџџp‹Н# Тc?cIm?m?cImIЂТЂ<ј@  Arialœ0q?4‚qsp:=speed; dist:=0;€~Ф€ZЦЂъџџџ€ўЙ! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0r?4ƒq€Ф€ZЂДџџџрК! @Ўx/<ј@  ArialБњрБњ0Вњ€ВњаВњ ГњpГњœ0s?4…qcФ€[-v= $jџџџhЋІ#<ј@  Arialœ01(1)u?4‹q` breakingDistФ€s-Е= $jџџџ WЛ#<ј@  Arialœ0{?4†q_Ф€s-s- $jџџџиrЛ#<ј@  Arialœ0v?4‡q\ ProcedureФ€--n= $jџџџwЛ#<ј@  Arialœ0w?4ˆqUФ€---- $jџџџ0ЩЅ#<ј@  Arial œ0x?4‰qZФ€---- $jџџџјkК#<ј@  Arialœ0y?4ŠqR returns RealФ€-FoV $jџџџh7І#<ј@  Arialœ0z?4pH breakingDistl qФ€•2яVџџџHxМ! Ÿ2х2я<яLхVŸV•L•<<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0'4як1џФ„$6ššџџџ S§' e?2qH q‹‰‡ˆ†Š„…rstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œp4щч#maximum brake forceшФ€_hнŒџџџи М# <ј@  Arialижњ(зњxзњШзњињhињИињœ0?4шчM&щёФ€ќz_zШй# ќz_zџџџџџџџџ‘?4фо#get a unique track idуФ€2ЂžЦџџџ@уМ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0И?4уоM&ф№Ф€Д2Д0†М# Д2ДџџџџџџџџЙ?4то#%announce the track to the controllerсФ€2_žƒџџџPН# <ј@  Arialижњ(зњxзњШзњињhињИињœ0К?4соM&тьФ€q2q€О# q2qџџџџџџџџЛ?4ро#.create the first train (at an arbitrary time)пФ€2 ž.џџџ>П# <ј@  Arialижњ(зњxзњШзњињhињИињœ0Т?4поM&рєФ€28‡О# 2џџџџџџџџУ?4 F/* variables*/ DCL p1,p2 Real; /* position of the train */Ф€ЇHmџџџ@+Y# ЇHcHmRcRcHmRmЇ<ј@  Arialœ0їЈ/xF[Ф?4 #train at position (p1,p2) Ф€hЂ Цџџџ –Z# <ј@  Arialижњ(зњxзњШзњињhињИињœ0џџџ!X0lјџџџ"Arial<ј@ Х?4 M& Ф€ДhД№W§# ДhДџџџџџџџџЦ?4#train is passing first sensorФ€hи ќџџџ0W§# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџЧ?4M&Ф€ъhъpV§# ъhъџџџџџџџџШ?4#train is passing second sensorФ€h• ЙџџџАU§# <ј@  Arialижњ(зњxзњШзњињhињИињœ0Щ?4M&Ф€ЇhЇpv# ЇhЇџџџџџџџџЪ?4ШФ#7initially the gate is closed and all signals are greenЧФ€ќНŒсџџџАu# <ј@  Arialижњ(зњxзњШзњињhињИињœ0у?4ЧФM&ШуФ€™ЯќЯ№t# ™ЯќЯџџџџџџџџф?4ЦФ#;append track to track list, set speed information in tableХФ€ќЇžЫџџџ0t# <ј@  Arialижњ(зњxзњШзњињhињИињœ0х?4ХФM&ЦвФ€™ЙќТps# ™ТЂТЂЙќЙџџџџџџџџц?4#standard behaviourФ€Ц™2НџџџАr# <ј@  Arialижњ(зњxзњШзњињhињИињœ0xюќ`њќшљќpљќјјќ€јќјќїќїќ іќ(іќАѕќ8ѕќрђќhђќxёќёќˆ№ќ№ќ˜яќ№ёќ@4M&ЉФ€™ЋЦЋ№q# ™ЋЦЋџџџџџџџџ@4# close the gate, signals to greenФ€™ц; џџџ0q# <ј@  Arialижњ(зњxзњШзњињhињИињœ0@4M& Ф€‡ј™јpp# ‡ј™јџџџџџџџџ@4#open the gate, signals to greenФ€™;7џџџn# <ј@  Arialижњ(зњxзњШзњињhињИињœ0@4M&>Ф€‡%™%@m# ‡%™%џџџџџџџџ@4#signals to red, open the gateФ€™@;dџџџ€l# <ј@  Arialижњ(зњxзњШзњињhињИињœ0@4M&TФ€‡R™RРk# ‡R™Rџџџџџџџџ @4#@returns total number of trains (all tracks) between the sensorsФ€Ацd џџџk# <ј@  Arialижњ(зњxзњШзњињhињИињœ0xюќ`њќшљќpљќјјќ€јќјќїќїќ іќ(іќАѕќ8ѕќрђќhђќxёќёќˆ№ќ№ќ˜яќ№ёќ@4M&xФ€žјАј@j# žјАјџџџџџџџџ@4ПЕ#"manual close" requestОФ€ Дžиџџџ€i# <ј@  Arialижњ(зњxзњШзњињhињИињœ00@4ОЕM&ПЬФ€Ц ЦРh# Ц Цџџџџџџџџ1@4НЕ#"manual open" requestМФ€ ЇžЫџџџh# <ј@  Arialижњ(зњxзњШзњињhињИињœ04@4МЕM&НЦФ€Й Й@g# Й Йџџџџџџџџ5@4uq#calculate braking distancetФ€D2дVџџџ˜Ў# <ј@  Arialижњ(зњxзњШзњињhињИињœ0№-­w@4tqM&u}Ф€ЂDDDРЊ# ЂDDDџџџџџџџџx@4sq#simulate brakingrФ€DhдŒџџџЊ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0}@4rqM&s{Ф€ЂzDzЪ# ЂzDzџџџџџџџџ~@4oH#)calculates position, speed, accelerationnФ€ ќv џџџ8# <ј@  Arialижњ(зњxзњШзњињhињИињœ€ї0 c41ФQ„$$šˆџџџ№\§' @4nHM&oЌФ€я Ћ# я џџџџџџџџ€@4mH#$calculates minimum braking distancelФ€ 2vVџџџ€ЙА# <ј@  Arialижњ(зњxзњШзњињhињИињœЬт0`}тј у@4lHM&mpФ€яD D0NЎ# яD Dџџџџџџџџ‚@4ЎŒcФ€[-v= $jџџџ@ЄЇ#<ј@  Arialœ02(2)с@4ЌŒM&ЂЋФ€cќЋџџџР­# cc™ќ™ќЋџџџџџџџџь@4ЋŒopenGateЌЉФ€иЋ ЯџџџШЙЈЁ иЋ Ћ ЯиЯёН<ј@  Arialœ0Dœ%џџџџEœ$џџџџ А ‘а=:,і“м=~№ѕ“ш=Lœ$є=џџџџ >$ > Iœэ@4ЊŒ -ЇФ€и) MџџџXКЈ! џџџџћџџџџџџџџ€џџџџџџџџEс<ј@  ArialœBœџџџџ0$џџџџDœ$џџџџEœ$џџџџ №‘Fr,і“ Fžо№ѕ“FLœ$$Fџџџџ 0F$ю@4ЉŒM&ЋЈФ€ќЯќъџџџ(пА# ќЯќъџџџџџџџџя@4ЈŒgateOpen via S2ЉЇФ€иъ џџџxЮЃ! иъъ ќи<ј@  Arialœ0œX0l0щј4Ch5qœC„CрuЈCCШwДCœCИxРCЈC№@4ЇŒM&ЈЊФ€ќќ)џџџ М# ќќ)џџџџџџџџё@4ІŒ closingФ€?h‡Œџџџ(эК! ˆx/# X0lа‘џџџџ=Vl PpК,l<ј@  Arialœ 0!+82=l PpК,l pК,l pК,l ѓ@4ЅŒM&ЃЁФ€cЯcъџџџаЩЙ# cЯcъџџџџџџџџє@4ЄŒM&ЂЃФ€ccЋџџџHшК# ccЋџџџџџџџџѕ@4ЃŒ closeGateЄЅФ€?Ћ‡Яџџџа'ІЁ ?Ћ‡Ћ‡Я?ЯXН<ј@  Arialœ0!X0lјџџџ"Arial<ј@  Arialі@4ЂŒ openЌЄФ€?l‡џџџШэЙ! ice PositionUpdate <>0lcќ<ј@  Arialœ0џџџ!X0lјџџџ"Arial<ј@ ї@4ЁŒset (NOW+closingTime,t1)ЅŽФ€?ъ‡џџџШЛ! <ј@  Arialœ0ј@4 ŒM&ŸФ€hџџџЭЛ# hџџџџџџџџљ@4ŸŒ closing Ф€яh7ŒџџџА„І! ˆx/# X0lа‘џџџџ=Vl PpК,l<ј@  Arialœ 0!+82=l PpК,l pК,l pК,l њ@4žŒM&›Ф€Цъџџџ@НЄ# Цъџџџџџџџџћ@4Œset (NOW+closingTime,t1)ž Ф€яъ7џџџнК! <ј@  Arialœ0ќ@4œŒM&•›Ф€•ЂџџџаСЙ# ••™™Ђџџџџџџџџ§@4›Œ closeGateœžФ€яЂ7ЦџџџбЙЁ яЂ7Ђ7ЦяЦД<ј@  Arialœ0œX0l0щј4Ch5qœC„CрuЈCCШwДCœCИxРCЈCў@4šŒM&™“Ф€••)џџџРЙ# ••)џџџџџџџџџ@4™ŒgateOpen via S2’šФ€qъЙџџџШІ! qъ ъЙќ q<ј@  Arialœ0œX0l0щј4Ch5qœC„CрuЈCCШwДCœCИxРCЈCA4˜Œ open‘Ф€qhЙŒџџџК! р/р/Рє €ѕ<ј@  Arialœ0рш§И(аYјA4—ŒM&•–Ф€••ЂџџџАЃІ# ••ЂџџџџџџџџA4–Œt1—’Ф€qЂЙЦџџџјІЁ qЂЙЂЙЦqЦŠД<ј@  Arialœ0P\јQјA4•Œ openingœ—Ф€qlЙџџџРZІ! @‚x/<ј@  Arialœœ0hh ў@ўћсœop0o—шАўЈўрќрЬ›шАўvwA4Ÿ—leavingЂžœФ€Й .џџџЈDІ! Й ш ш.Й.<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0€uнuяџџџ2§# uнuяџџџџџџџџ€uЇA4ž—M&ŸИФ€Z.н@ /І# н.н7Z7Z@џџџџџџџџA4$9M!#Ф!ЫјІ#  ЫџџџџA4#9Nleaving$Ф€ŒТ.џџџШІ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœp|ђ0ш/№aџџџџ#@ §ћјЦўА/№a ЏъO#@ §PБюх8`A49`S8$Ф€ 2 $jџџџHСЅ#<ј@  ArialœШQт0Јь№Јь№pHу(€ђШzљ tџџџџ6@рю`XяёXофя}A49$$–Ф $jџџџ єЅ#A49`?name398Ф€ /+ $jџџџˆАЅ#<ј@  Arialœаeщ˜eщ0ј/јwњaџџџџш/(с§ЈЎxЧ§ШŽтаeщ`џџџџ€ў˜eщ(kситbˆ/шKяaA49$$CФШЮ $jџџџиДЄ# A49`?name399Ф€бѕ+ $jџџџ˜ЎЄ#<ј@  Arialœaр с0$јŽхшющAщpїјє џџџџаЇыX˜ї`иѓ@ЩьИЦт  _ї Pљa!A4RD waitingPMФ€и~ ЂџџџHйЃ! `/`/#X0јH\іаэѓ*“h ј<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0`џџџџ€\і 1хАŸѕш/шpјaџџџџ аяќH\іА/`]іa4A4QDleavingPOФ€иД иџџџШѓЁ иД Д иииёЦ<ј@  Arial…/P…/ …/№…/@†/†/р†/œџџџџ0`€бѓ(#ішwх(#і™@ў ќa8­ќ02œх=№`#і’@ў ќa5A4PDM&RQФ€ќЂќД№э# ќЂќДџџџџџџџџ6A4ODM&QkФ€иќѓ ›# ќиќссѓџџџџџџџџ7A4ND#<not all signals have been set, waiting for a leaving trainMФ€2užЋџџџPž# <ј@  Arialижњ(зњxзњШзњињhињИињœЫ@+і0рє+і0„љ(&ќваБѕx+іDца‘ќ@+іP*іРёйИŽтА+ір срЦ§8A4MDM&NRФ€ 2h#  ))2џџџџџџџџ9A4LD# set a signalKФ€% mDџџџ0™# <ј@  Arialижњ(зњxзњШзњињhињИињœ0A4IDM&JiФ€ДнVн№“# ДнVнџџџџџџџџ?A4HD#signal will be set laterGФ€Vž@џџџP‘# <ј@  Arialижњ(зњxзњШзњињhињИињœ0 С4оb@A4GDM&HdФ€2.V.АŽ# 2.V.џџџџџџџџAA4FD#$for all signals in the list lstCopyEФ€сM;qџџџHŒ# <ј@  Arialижњ(зњxзњШзњињhињИињœФ0šˆџџџ`љќ' <ј@  ArialœBA4EDM&FlФ€Д_с_xз# Д_с_џџџџџџџџCA4—#wake up theSignalControlœФ€  v.џџџз# <ј@  Arialижњ(зњxзњШзњињhињИињœ0DA4œ—M&ŸФ€ ˆж#  џџџџџџџџEA4›—#4no sensor signal for at least threshold time unitsšФ€ Dvzџџџж# <ј@  Arialижњ(зњxзњШзњињhињИињœ0FA4š—M&›ВФ€_ _˜е# ___ _џџџџџџџџGA4™—#^sensor signals in the next threshold time units will not be passed to theCentralController˜Ф€zqдџџџ е# <ј@  Arialижњ(зњxзњШзњињhињИињœ0HA4˜—M&™­Ф€ъЇЇЈд# ъЇѓЇѓЇЇџџџџџџџџIA4ЛЕcall totalCountТИКЖФ€Hнџџџ0д! <ј@  ArialhЬ/ИЬ/Э/XЭ/ЈЭ/јЭ/HЮ/œ!01Ф}„$$џџџ€єќ' <ј@  ArialJA4КЕM&ЛУжФ€llИг# llџџџџџџџџKA4жЕ80КФ€u‡ $jџџџ@г#<ј@  Arialœ0й€Жї№]њ c4LA4ЙЕ -ИФ€НRvџџџШв! АŠx/<ј@  Arialœ0MA4ИЕM&ЛЙзФ€ясRPв# ясясRџџџџџџџџNA4зЕ[elseИФ€ѓ $jџџџиб#<ј@  Arialœ0OA4ЗЕ#safe to open the gateЖФ€ нžџџџ`б# <ј@  Arialижњ(зњxзњШзњињhињИињœ0PA4ЖЕM&ЗЛФ€я яша# я яџџџџџџџџQA4E?M&HFФ€~и~ѓpа# ~и~ѓџџџџџџџџgC4D?M&FKФ€~~;јЯ# ~~;џџџџџџџџhC4(!M&*0Ф€lŒlЇ€Я# lŒlЇџџџџџџџџ{C4'!#close the gate&Ф€_ЋЫЯџџџЯ# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ а‘€?Bv,і“Œ?BЪ4№ѕ“˜?BJœ$Є?BџџџџА?B$М?BRœШ?Bџџџџд?BQœ$р?BџџџџВC4&!M&'-Ф€Н_НЮ# Н_НџџџџџџџџГC4%!#$wait until the gate has been closed$Ф€_ъЫџџџЮ# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџДC4$!M&%3Ф€ќ_ќ Э# ќ_ќџџџџџџџџЕC4#!##finally clear all stopping signals"Ф€_hЫŒџџџ(Э# <ј@  Arialижњ(зњxзњШзњињhињИињœ0`„šЈџЖC4"!M&#*Ф€z_zАЬ# z_zџџџџџџџџЗC4C?# open the gateBФ€)Дƒиџџџ8Ь# <ј@  Arialижњ(зњxзњШзњињhињИињœ0`„šЈџИC4B?M&CHФ€ЂЦ)ЦРЫ# ЂЦ)ЦџџџџџџџџЙC4A?#clear all stopping signals@Ф€)ѓƒџџџHЫ# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџКC4@?M&AFФ€Ђ)аЪ# Ђ)џџџџџџџџЛC4^UM&jlФ€~я~ЈU# ~я~џџџџџџџџМC4]U'DCL tr TrackList; DCL st SignalStatus;Ф€нQd‡џџџ0U# нQZQd[Z[ZQd[d‡н‡<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџНC4\Utr=trackLst and st=red_Z[Ф€ZqЂ•џџџИT! <ј@  ArialhЬ/ИЬ/Э/XЭ/ЈЭ/јЭ/HЮ/œ0`„šЈџтC4[UM&\jvФ€~•~Ы@T# ~•~ЫџџџџџџџџуC4vU8true[Ф€‡АЋТ $jџџџШS#<ј@  Arialœ0HќА‚šp:’@Јj§ХфC4ZUM&\bwФ€?с~ƒPS# Zƒ?ƒ?с~с~ъџџџџџџџџхC4wU8falseZФ€?Œcž $jџџџиR#<ј@  Arialœџџџџ0Wmџџџџ№WmА/и—mX@n@Vmш/АZk`џџџџцC4YU#%wait until all signals have been setXФ€Vъдџџџ`R# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ а‘€?Bv,і“Œ?BЪ4№ѕ“˜?BJœ$Є?BџџџџА?B$М?BRœШ?Bџџџџд?BQœ$р?BџџџџљC4XUM&YbФ€ЂќVќшQ# ЂќVќџџџџџџџџњC4WU#set all stopping signalsVФ€VЋдЯџџџpQ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0`„šЈџћC4VUM&WaФ€ЂНVНјP# ЂНVНџџџџџџџџќC4}y#for all tracks|Ф€qѓЙџџџ€P# <ј@  Arialижњ(зњxзњШзњињhињИињœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ#D4|yM&}Ф€ЋqP# Ћqџџџџџџџџ$D4{y#.add the number of trains between the sensorszФ€qqнЇџџџˆ!# <ј@  Arialижњ(зњxзњШзњињhињИињœ0HќА‚šp:’@Јj§Х%D4zyM&{‹Ф€ЋŒqŒ!# ЋŒДŒДŒqŒџџџџџџџџ&D4"9M&!“Ф€Тќцќ˜ # Тќцќџџџџџџџџ­D4!9#$regular trains wait for fast trains"Ф€цъˆџџџ # <ј@  Arialижњ(зњxзњШзњињhињИињœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџЎD4“9FastTrainsPrecedenceController"”Ф€VъТџџџЈ! <ј@  Arialœ0БD2”9” •–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФђѓє “!4”Rinherits BasicControllerФ€-FЃV $jџџџ0#<ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяЧD4”ZФ€---- $jџџџИ#<ј@  Arialœ0ЦD4”UФ€---- $jџџџ@#<ј@  Arial œBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ$џџџџ Hœ$ХD4”\ Service TypeФ€--t= $jџџџШ#<ј@  Arialœ0ФD4”_Ф€y-y- $jџџџP#<ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџУD4 ”`FastTrainsPrecedenceControllerФ€y-= $jџџџи#<ј@  Arialœ0ШD4”cФ€d-= $jџџџ`#<ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010Apя1(1)ТD4И”M&ЗЏФ€qаqыp# qаqыџџџџџџџџ]H4З”set(t1)ІИФ€MЌ•аџџџј! <ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџ^H4Ж”M&Е­Ф€•ш# •žžџџџџџџџџ_H4Е”#9total number of trains (all tracks) between the sensorsЖФ€7џџџp# <ј@  Arialижњ(зњxзњШзњињhињИињœ0`H4Д” fastВФ€M_•ƒџџџј! р?јx/0иD<ј@  Arialœ0aH4Г”redefined trainLeaving(track)ВАФ€Mž•Тџџџ€Ё Mž•ž•ТMТfА<ј@  Arialœ0bH4В”M&ДГФ€qƒqžџџџ# qƒqžџџџџџџџџcH4Б”1trackTbl(track).count:= trackTbl(track).count-1;АЎФ€Mд•јџџџ! <ј@  Arialœ0dH4А”M&ГБФ€qТqдџџџ# qТqдџџџџџџџџeH4Џ” carsИФ€Mы•џџџ ! АŠx/<ј@  Arialœ0fH4Ў”M&Б­Ф€qјq џџџ(# qјq џџџџџџџџgH4­”call totalCountЎЉЌЖФ€M •.џџџА! <ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџhH4Ќ”M&­ЇЋФ€q.qmџџџ8# q.qmџџџџџџџџiH4Ћ”80ЌФ€zIŒ[€џџџР#<ј@  Arialœ0jH4Њ” -ЉФ€ЙыџџџH! АŠx/<ј@  Arialœ0kH4Љ”M&­ЊЈФ€•ныџџџа# •нныџџџџџџџџlH4Ј”[elseЉФ€цI [€џџџ`O#<ј@  Arialœ0џџџџApє№—є№—&5ˆєкXєЪ4HєџџџџA0д№—д№— , p mH4Ї” switchCarsЌІФ€Mm•‘џџџшN! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяnH4І”M&ЇЗФ€q‘qЌџџџpN# q‘qЌџџџџџџџџoH4Ѕ”M&ЃФ€cТc јM# cТc џџџџџџџџpH4Є”M&ЁЃФ€cƒcž€M# cƒcžџџџџџџџџqH4Ѓ”redefined carsWaitingЄЅФ€?ž‡ТџџџMЁ ?ž‡ž‡Т?ТXА<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ$џџџџ Hœ$rH4Ђ” switchFastŸ—Ф€Ћmѓ‘џџџL! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяsH4Ё” trainsЄФ€?_‡ƒџџџL! ЪУр…ŸђљOhЋ‘+'ГйpК'l pК'l X+l8ЧУ<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0tH4 ”[elseŸФ€и7ќI€џџџ K#<ј@  Arialœ0џџџџApє№—є№—&5ˆєкXєЪ4HєџџџџA0д№—д№— , p uH4Ÿ”M&Ђ Ф€‡Яmџџџ(K# ‡ЯЯmџџџџџџџџvH4ž” fast—Ф€ЋыѓџџџАJ! АŠx/<ј@  Arialœ0wH4”call totalCountЅ™ŸФ€? ‡.џџџ8J! <ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџxH4œ” carsšФ€?ы‡џџџРI! АŠx/<ј@  Arialœ0yH4›”set(t1)•šФ€?Ќ‡аџџџHI! <ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџzH4š”M&›œФ€cаcыШ>џ# cаcыџџџџџџџџ{H4™”M&–˜Ф€c.cmP>џ# c.cmџџџџџџџџ|H4˜”80™Ф€l@~R $jџџџи=џ#<ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010Apя}H4—”M&ЂžФ€Я‘Яы`=џ# Я‘Яыџџџџџџџџ~H4–” switchCars™•Ф€?m‡‘џџџш<џ! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяH4•”M&–›Ф€c‘cЌp<џ# c‘cЌџџџџџџџџ€H4% #Ф€c~ЋЂџџџј;џ! сџџџџсџџџџсџџџџџџџџ#с<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџтH4$set(t1);#!Ф€cДЋиџџџ€;џ! <ј@  Arialœ$ 0 7ДцN,і“Ќ7ДZ^№ѕ“И7ДLœ$Ф7Дџџџџ а7Д$м7Д Iœш7Дџџџџє7ДMœ$8Д ‘8ДцNсH4#M&%$Ф€‡Ђ‡Дџџџ;џ# ‡Ђ‡ДџџџџџџџџрH4" detecting!Ф€cъЋџџџ:џ! Jœ$ЄЙ#џџџџАЙ#$МЙ#RœШЙ#џџџџдЙ#Qœ$рЙ#џџџџџџџџ<ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџпH4!M&$"Ф€‡и‡ъџџџ:џ# ‡и‡ъџџџџџџџџоH4 M!ЦШХ Ф!ѓqhq 9џ#  hqѓqџџџџуH4 N (gateStatus) Ф€zVŒџџџ(9џ# <ј@  Arial ТњpТњРТњУњ`УњАУњФњœЬ?(Wќ0џџџќX+lc|џџџџИ› Ќ `‚\jи}—ЛфH4Х `S3 Ф€)V;h $jџџџА8џ#<ј@  Arialœ$ 0 7ДцN,і“Ќ7ДZ^№ѕ“И7ДLœ$Ф7Дџџџџ а7Д$м7Д Iœш7Дџџџџє7ДMœ$8Д ‘8ДцNхH4Ц $Ч ]Фenkt $jџџџ88џ#цH4Ч `?name619ЦФ€nw’‰ $jџџџР7џ#<ј@  Arialœ`Хќ€Уќ0шФќДќјРќ€РќРќˆПќ˜Оќ ОќЈНќ0Нќ@МќШЛќPЛќиКќ`КќшЙќpЙќјИќ€ИќЗќЗќ Жќ(ЖќАЕќИќИМќПќчH4Ш $Щ Ф№nіt $jџџџH7џ#шH4Щ `?name620ШФ€љw‰ $jџџџа6џ#<ј@  Arialœџџџџ0џџџџџџџџњџџџџћџџџџџџџџ€џџџџщH4 gateOpenФ€cЇЋЫџџџX6џЁ cЇЋЇЋЫcЫ|Й<ј@  Arial…/P…/ …/№…/@†/†/р†/œ0ъH4M&& Ф€‡ƒ‡Їр5џ# ‡ƒ‡ЇџџџџџџџџыH4 gateClosedФ€zЇТЫџџџh5џЁ zЇТЇТЫzЫ“Й<ј@  Arial…/P…/ …/№…/@†/†/р†/œЈ[~˜ƒВ0`ƒВ~Ъ˜щ(%Вx"|ьH4M&&Ф€‡ƒžЇ№4џ# ‡ƒ‡•ž•žЇџџџџџџџџэH4gateClosed:=trueФ€zцТ џџџx4џ! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0r4X–$I4gateClosed:=falseФ€cцЋ џџџ4џ! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0r4X–*I4cars:=0Ф€c%ЋIџџџˆ3џ! <ј@  Arialœ0ˆ.2-I4 -Ф€cdЋˆџџџ3џ! рц?Ач? 0„?ˆж;— 0„?—X+lРж;€Ач?рц?<ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџ.I4 -Ф€zdТˆџџџ˜2џ! рц?Ач? 0„?ˆж;— 0„?—X+lРж;€Ач?рц?<ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџ/I4M& Ф€‡Ы‡ц 2џ# ‡Ы‡цџџџџџџџџ0I4M&Ф€‡ ‡%Ј1џ# ‡ ‡%џџџџџџџџ1I4M&Ф€‡I‡d01џ# ‡I‡dџџџџџџџџ2I4M&Ф€žЫžцИ0џ# žЫžцџџџџџџџџ3I4M&Ф€ž žd@0џ# ž ždџџџџџџџџ4I4c^gateClosed via S3`_Ф€HЦъџџџШ/џ! HЦwЦиwъHъ<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0HL ˆv2˜љ1@j1Pњ/5I4b^#initially the gate is closedaФ€Ц )џџџP/џ# <ј@  Arialижњ(зњxзњШзњињhињИињœENDSe; 0OCESS; CONNECT CarChannel AND CarSimulatorERailroadCrossingAname152__i; ENDBLOCK; SYNONYM nrOfTracks Integer=1; 7I4a^M&b‚Ф€Ци.џ# Цџџџџџџџџ8I4`^M&ncФ€lДlЦ`.џ# lДlЦџџџџџџџџ9I4_^M&c‚Ф€lъlш-џ# lъlџџџџџџџџ:I4”ŒgateClosed via S3ŽФ€?)‡Mџџџp-џ! ?)n)‡;nM?M<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0;I4“ŒgateOpen via S3š‘Ф€q)ЙMџџџј,џ! q) )Й; MqM<ј@  ArialXЄ/ЈЄ/јЄ/HЅ/˜Ѕ/шЅ/8І/œ0I4Œ#5cars are not allowed to pass while closing the gateФ€ДА2цџџџ+џ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0?I4ŒM&”Ф€‡;ДЫ+џ# ‡;;ЫДЫџџџџџџџџ@I4ŽŒM&Ё”Ф€cc) *џ# cc)џџџџџџџџBI4ŒM&”ІФ€cMch(*џ# cMchџџџџџџџџCI4S1cФ€d-= $jџџџр&џ#<ј@  Arialœ0r4X–2(2)nI4Q18falsePФ€НДЯ $jџџџ№%џ#<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ р ‘ œ#цN,і“,œ#Z^№ѕ“8œ#Lœ$Dœ#џџџџ Pœ#$I4P1M&M@QФ€cЯ.x%џ# ‡ЯЯ%c%c.џџџџџџџџpI4O18trueNФ€lсѓ $jџџџ%џ#<ј@  ArialœBœџџџџ0$џџџџDœ$џџџџEœ%џџџџ ‘`’#"O,і“l’#z№ѕ“x’#Lœ$„’#џџџџ ’#$ŒI4N1M&M:OФ€cсcѓˆ$џ# cсcѓџџџџџџџџqI4M1 gateClosedLPNФ€?Н‡сџџџ$џ! <ј@  ArialhЬ/ИЬ/Э/XЭ/ЈЭ/јЭ/HЮ/œ$ 0 7ДцN,і“Ќ7ДZ^№ѕ“И7ДLœ$Ф7Дџџџџ а7Д$м7Д Iœш7Дџџџџє7ДMœ$8Д ‘8ДцNrI4L1M&=MФ€cЋc͘#џ# cЋcНџџџџџџџџsI4K1M&JAФ€‡ЙhЙ #џ# ‡ЙhЙџџџџџџџџtI4J1#too many cars are waitingKФ€hЇТЫџџџЈ"џ# <ј@  Arialижњ(зњxзњШзњињhињИињœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџuI4I1M&H:Ф€‡h0"џ# ‡hџџџџџџџџvI4H1#approaching car must waitIФ€hѓТџџџИ!џ# <ј@  Arialижњ(зњxзњШзњињhињИињœFœџџџџ0$  ‘Рнйb`њ“Ьнй‚№ѕ“инйџџџџ фнй$№нйMœќнйџџџџойJœ$ойџџџџ ой$wI4G1[elseFФ€)Д; $jџџџ@!џ#<ј@  Arialœ0pК'lщщ( @щuŽl‹I4F1M&9AGФ€c;ЯЇШ џ# ‡;Я;ЯžcžcЇџџџџџџџџxI4E18 manyThresholdDФ€lЫЦн $jџџџP џ#<ј@  Arialœ0h ?а2ŠI4D1M&A6EФ€cЫcциџ# cЫcцџџџџџџџџyI4C1[elseBФ€ЇДЙ $jџџџ`џ#<ј@  Arialœ0‰I4B1M&A@CФ€cЙЯ.шџ# ‡ЙЯЙЯ%c%c.џџџџџџџџzI4A1carsF?DBKФ€?Ї‡Ыџџџpџ! <ј@  Arialœ0r4X–{I4@1set(t1);PB4;Ф€?.‡Rџџџјџ! <ј@  Arialœ$ 0 7ДцN,і“Ќ7ДZ^№ѕ“И7ДLœ$Ф7Дџџџџ а7Д$м7Д Iœш7Дџџџџє7ДMœ$8Д ‘8ДцN‡I4?1M&>AФ€cŒcЇџџџ€џ# cŒcЇџџџџџџџџ†I4>1 carsWaiting8?Ф€?h‡Œџџџџ! ?hnh‡znŒ?Œ<ј@  ArialœBœџџџџ0$џџџџDœ$џџџџEœ%џџџџ ‘`’#"O,і“l’#z№ѕ“x’#Lœ$„’#џџџџ ’#$…I4=1t12LФ€?‡‡ЋџџџhЪўЁ ?‡‡‡‡Ћ?ЋX™<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ р ‘ œ#цN,і“,œ#Z^№ѕ“8œ#Lœ$Dœ#џџџџ Pœ#$„I4<1 -;Ф€?d‡ˆџџџ№Щў! рц?Ач? 0„?ˆж;— 0„?—X+lРж;€Ач?рц?<ј@  Arialœџџџџ0џџџџ†€џџџџh€џџџџ‡€џџџџџџџџ˜€џџџџƒI4;1M&@<Ф€cRcdџџџxЩў# cRcdџџџџџџџџ‚I4:1 cars:=cars+1;N5IФ€?ѓ‡џџџЩў! <ј@  Arialœ0ˆ.2I491cars5F8Ф€?)‡MџџџˆШў! <ј@  Arialœ0r4X–€I481M&9>7Ф€cMchџџџШў# cMchџџџџџџџџI4718 threshold8Ф€lMЂ_ $jџџџ˜Чў#<ј@  Arialœ€ф=0љ5рО4 '8p1ˆI461manyCarsWaitingD4Ф€?ц‡ џџџ Чў! ?цnц‡јn ? <ј@  Arialœ0HL ˆv2˜љ1@j1Pњ/~I451M&:9Ф€cc)џџџЈЦў# cc)џџџџџџџџ}I441M&6@Ф€c c.џџџ0Цў# c c.џџџџџџџџ|I431 detecting2Ф€?Q‡uџџџИХў! Аiр…ŸђљOhЋ‘+'ГйpК'l pК'l X+l<ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0h ?а2ŽI421M&3=Ф€cuc‡@Хў# cuc‡џџџџџџџџI4##all waiting cars pass the crossingФ€и%DIџџџШФў# <ј@  Arialижњ(зњxзњШзњињhињИињœ0I4M&Ф€Ћ7и7PФў# Ћ7и7џџџџџџџџ‘I4ШХM&чЧФ€~u~~иУў# ~u~~џџџџџџџџK4ЧХtr:=call regularTracks;ШЦФ€Z~ЂЂџџџ`Уў! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяK4ЦХM&ЧоФ€~Ђ~ЋшТў# ~Ђ~Ћџџџџџџџџ K4јcФ€[-v= $jџџџиžў#<ј@  Arialœ§' 0ј@  ArialhВРœ02(4)6K4 јM& Ф€™Œ_Œшў# ™ŒЂŒЂŒ_ŒџџџџџџџџAK4 ј#<send signal status to train which is now in range of sight Ф€_qнЇџџџx–ў# <ј@  Arialижњ(зњxзњШзњињhињИињœxмњhнњ0XоњЈоњјоњHпњшпњ8рњˆрњирњ(сњxсњШсњтњ€тњатњ уњpуњРуњфњ`фњАфњхњ!cl0P BK4 јM& Ф€™Ц_Црў# ™Ц_ЦџџџџџџџџCK4 ј#handover requested Ф€_Дниџџџhў# <ј@  Arialижњ(зњxзњШзњињhињИињœ0DK4ј:trainSignal(trackTbl(track).sig) to trackTbl(track).sightќ Ф€Qz™žџџџ№Žў! Qz€z™Œ€žQž<ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџIK4ј *Ф€Qu™™џџџ@Žў! И"Fр…ŸђљOhЋ‘+'ГйpК'l pК'l X+lˆ F<ј@  Arialœ0X Wh]]p~Wh]]X Wа WœT…@c[x/HK4јinSight(track,train)џ Ф€QД™иџџџШўЁ QД™Д™иQиjЦ<ј@  Arialœ€cC0GK4јM&Ф€u™uДџџџPў# u™uДџџџџџџџџFK4ј -њФ€Qя™џџџиŒў! ˆ$FјP H1а!Fа!Fа!Fh!F<ј@  Arialœ0EK4јM&Ф€užuя№ƒў# užuяџџџџџџџџ@K4јtrackTbl(track).sight:=train;џўФ€Qѓ™џџџxƒў! <ј@  ArialœHœ0џџџџ Iœ$џџџџMœ$џџџџJœ$џџџџPœ$џџџџRœ$џџџџQœ$џџџџ?K4ј#update table entryФ€_ѓнџџџƒў# <ј@  Arialижњ(зњxзњШзњињhињИињœ0>K4јM&Ф€™_ˆ‚ў# ™_џџџџџџџџ=K4џјM&Ф€uиuѓ‚ў#  uиuѓџџџџџџџџ,1Ф,…$$ˆšџџџ˜ЫИ' <ј@  Arialœ0 '4@=1Ф,…$$šˆџџџ@І' <ј@  Arialœ0`мџШћў0§ J471#Ф,…$$ˆšџџџ0=А' <ј@  Arialœ0й€Жї№]њ c4ћо1Ф,…$$ˆšџџџиžЗ' <ј@  Arialœ0 Ѕ4љч1Ф,…$$ˆšџџџ?Z' <ј@  Arialœ0 Э41Ф,…$$ˆšџџџˆЊЖ' <ј@  Arialœ0 ф4Ы­1Ф,…$$ˆаџџџx.Л' <ј@  Arialœ0 4)1Ф,…$$ˆšџџџ€ьЖ' <ј@  ArialА!€!€ЄЈœ0ЅЈ`Ї 0!0 )!„Ш—А!pѓ!а! !01€!$! ,(4й91хусФ,…$Ѓџџџˆ' <ј@  ArialœAŒ.•0Ф.•Ф.•” БpБ#AРl.•l.•XБ1T.•T.•a m84ƒw1Фџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџ§џџџ§џџџ§џџџ§џџџ§џџџўџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџœ§џџџ§џџџ§џџџ§џџџ§џџџ§џџџ§џџџВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџla SDL  Arialœ0 t?4­Œ1Ф,…$$џџџаUН' <ј@  Arialœ‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”Ёџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§џџџŸ ўџџџЂЃЄЅІЇЈžџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџсœop0o—шАўЈўрќрЬ›шАўvw т@4”1Ф,…$$ˆ*џџџш' <ј@  Arialœ0 СD4R11Ф,…$$ˆšџџџh&џ' <ј@  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хpхх,…$$џџџи­' <ј@  Arial10Ь&Г46•œРЊАD6•0@Г№BГ`(Г€ Г &Г1`мГL6•QPІЎа‡Аа&Г'Г01@Г &Г Г ќ84D1Ф,…$$ˆšџџџШРЖ' <ј@  Arialœ0Kœ$џџџџ@œ$џџџџBœ$џџџџCœ$џџџџDœ$џџџџEœ$џџџџ Fœ 94­1Ф,…$$ˆšџџџЈ‘­' <ј@  Arialœ zрИz0АjЈљyљyрИzЖz ЗzЏz`l…zмКz@Зz z@Иz0 њ94цФ1ієђ№юФ,…$$ˆˆџџџ Ї­' <ј@  ArialD7lV•^tKфЉSфЉS”ќ“œ0 \94К—1Ф,…$$џџџxЗ­' <ј@  Arialœaџџџџ0 €Ре01HДЄq`ыАџџџџ1`|ВА8,•aџџџџ €Ре01E•­ +94y1Ф,…$$џџџРЎ' <ј@  Arialœ0 л94nU1Ф,…$$џџџЈЎ' <ј@  Arialœ0РМzрЊz Нz z№І0Нzфv№kцyцy0Нz№ёz Р94L?1Ф,…$$џџџљ­' <ј@  ArialР`їœ0O€p‘ДаіЈq €Д@MЕУДаЄБp‘ДвР‘ўpџp‘ДРІД  946!1Ф,…$$џџџ@cК' <ј@  Arial€Ў1РœE$ѕ—1œe0аdpyАApжаy1`єє—єє—рАzаy10Ь?мє—{ай ƒ94ЮЕ1Ф,…$$ˆšџџџ(ЯЅ' <ј@  Arialœ0 :4„q1Ф,…$$џџџРК' <ј@  Arialœ0 t?4­Œ1Ф,…$$џџџаUН' <ј@  Arialœœ0hh ў@ўћўџр…ŸђљOhЋ‘+'Гйр…ŸђљOhЋ‘+'Гй0§АИдє@LX l x „  œЈАИР€ирш№фRailway CrossingSDL-2000 Design Contest Jens Brandt/railway crossing, sam 2002, sdl design contest Jens Brandt791@€ЩЩЙЗ@P,ЄфјС@рљ p&љС@р'T)бС*Cinderel      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ      !"#$%&'()*+,-./0123456789:;<=>?@ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ Scope units & errors" Scope units" MSC control"All"Document structure"Pagination & document structure"Errors"Empty"Default" Communication" Instances"States & Input"p а d "<4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4a4\4]4^4_4`4:4;2b4c4@4?4>4=4h4i4j4k4l4m4n4o4p4q4r4d4e4f4g2‘444Ž44’4Œ4‹4Š4‰4ˆ4‡4†4…4„4ƒ4‚44€44~4}4|4{4z4y4x4w4v4u4t4s4Щ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џ4444444444 4 4 4 4 4444444444ђ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О4M4N4f4O4e4P4d4Q4R4S4c4T4U4V4W4X4Y4Z4[4\4b4]4^4_4`4a4K4L2g4h4i4j4k4l4m4n4•4ф4–4у4—4˜4™4;4:494847444$4#4"4!4 44414э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\4645444342444‚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>4<4=2H2F4E4D4C4B4G4A4@4?4Э4Ь4-4.4/40414Ы444444444 4 4 444444 4 4444444Ъ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й4S4T4Щ4Ъ4Ы4ї4і4Ь4Э4Ю4Я4а4б4в4г4_4`4a4b4c4d4e4f4g4F4)4*4x4U4V4•4W4X4Y4Z4[4\4]4^4_4`4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4Œ4y4z4{4~4v4w2‰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Є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К4j4k4l4~44€44‚4ƒ4„4…4†4‡4ˆ4‰4Š4‹4Œ44Ž444‘4—4’4“4”4•4–4x4y2m4n4o4u4p4q4r4s4t4T4U2G4H4I4J4K4L4M4S4N4O4P4Q4R4>4?2,4-4.4/40414243444546474=48494: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Р4C4D2 4и4є4ѕ4з4ж4е4д4+4i4h4B4с4т4A4@4?4у4ф4>4=4<4х4ц4;4:494847464ч4ш4щ45444ъ4ы4ь4342414э4ю4я404/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%4J4I44444”4“4’4‘44o4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Х44444444444П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ž4$4#444444R4Q4P4O4N4M4L4K4J4I4H4G4F4E44œ4›4š4™4˜4Л4К4ж4Й4И4з4З4Ж4E4D4(4'4&4%4$4#4"4C4B4A4@4^4]4\4[4v4Z4w4Y4X4W4V4}4|4{4z4"4!4“4”244444 444И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 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љ4p24<;%/* timer */ timer t1:=closureTime;Фџџ CSDLSymbol•dЦџџџА# •ZdšZšZdšdЦ•Ц<ј@  Arialœer LS 0CLASS ('0':'9')+; OPERATORS "-" : Integer -> Integer; "+" : Integer, Integer -> Integer; "-" ŠJ4A;M&BIФџџCSDLLinežдž%џџџ8# žдž%џџџџџџџџJ4B; switchTrainsFAФ€zАТдџџџРŒ! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяJ4C;M&DJФ€;д;%џџџШМZ# ;д;%џџџџџџџџ‘J4D; switchBothHCФ€А_дџџџPМZ! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010Apя’J4E;[elseFФ€ЇqЫƒ $jџџџиЛZ#<ј@  Arialœ0“J4F;M&LBEФ€_VžАџџџW# _VžVžАџџџџџџџџ”J4G;80HФ€DqVƒ $jџџџ˜V#<ј@  Arialœ0•J4H;M&LDGФ€;h;Аџџџ V# ;h;Аџџџџџџџџ–J4I; trainsAФ€z%ТIџџџXrџ! Pмmx/0иD<ј@  Arialœ0—J4J; bothCФ€%_Iџџџрqџ! kx/<ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџ˜J4K;M&NLФ€;);Dџџџhqџ# ;);Dџџџџџџџџ™J4L;call totalCountKFH=Ф€D_hџџџ8cџ! <ј@  ArialœР‘lРЭќ0р9lР:lpџџџџ8lP‘llЏXџџџџ0’lР‘l0•n8n ЖšJ4M;M&ONФ€;ъ;џџџРbџ#  ;ъ;џџџџџџџџ›J4N;t1MKФ€_)џџџHbџЁ __))0<ј@  ArialœY˜Т0А/8bmaџџџџИampРќsџџџџam `mИamh/8(wXœJ4O; carsMФ€Ц_ъџџџeџ! pkess Type CarPrecedanceController <>><ј@  Arialœ(В0џџџџ05i аѓќ/Hњ№ђ˜ѓ16/а@zXJ4P;Hsynonym closureTime Duration=30; /* closure time of the gate */Ф€•Zd‡џџџdџ# •ZZZddZdZZddd‡•‡<ј@  Arialœ0žJ4Q;M&VSФ€l)lАџџџdџ# l)lАџџџџџџџџŸJ4R;M&SXФ€lдlцџџџHZџ# lдlцџџџџџџџџ J4S; switchCarsQRФ€HАдџџџаYџ! <ј@  Arialœ0010AяСўPpярі—1`Ќ…јі—@f я010ApяЁJ4T; carsYФ€H%IџџџXYџ! АŠx/<ј@  Arialœ0ЂJ4U;M&WVФ€lъlџџџРOџ#  lъlџџџџџџџџЃJ4V;redefined manyCarsWaitingUQ?Ф€H)џџџHOџЁ H)H)a<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ$џџџџ Hœ$ЄJ4W; *UФ€HЦъџџџаNџ! р?јx/0иD<ј@  Arialœ0ЅJ4X;set(t1)RYФ€Hц џџџQџ! <ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџІJ4Y;M&XTФ€l l%џџџQџ# l l%џџџџџџџџЇJ4[;cФ€[-v= $jџџџаFџ#<ј@  ArialœР‘lРЭќ0р9lР:lpџџџџ8lP‘llЏXџџџџ0’lР‘l0•n8n Ж1(1)ЉJ4a;`ManyCarsPrecedenceControllerФ€y-= $jџџџXFџ#<ј@  ArialœY˜Т0А/8bmaџџџџИampРќsџџџџam `mИamh/8(wXЏJ4\;_Ф€y-y- $jџџџрEџ#<ј@  Arialœ(В0џџџџ05i аѓќ/Hњ№ђ˜ѓ16/а@zXЊJ4];\ Service TypeФ€--t= $jџџџ0бў#<ј@  Arialœ0ЋJ4^;UФ€---- $jџџџИаў#<ј@  Arial œ0010AяСўPpярі—1`Ќ…јі—@f я010ApяЌJ4_;ZФ€---- $jџџџ@аў#<ј@  Arialœ0­J4`;R#inherits TrainsPrecedenceControllerФ€-FрV $jџџџЈ,ў#<ј@  ArialœBœџџџџ0$џџџџDœ%џџџџEœ$џџџџ Fœ$џџџџ Gœ$џџџџ Lœ$џџџџ Hœ$ЎJ4:9ManyCarsPrecedenceControllerc;Ф€VДТиџџџјUЖ! <ј@  ArialœHœ0џџџџ ` ‘€r`њ“Œ№ѕ“˜Jœ$ЄџџџџА$МRœШџџџџдQœ$рџџџџ‰J2;9;a_]^\`Z[<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a:4b9#4cars take precedence, if there are too many waitingcФ€цДˆиџџџ€UЖ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0АJ4c9M&b:Ф€ТЦцЦUЖ# ТЦцЦџџџџџџџџБJ4@;#a lot of cars are waiting?Ф€Дќ)џџџрГ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ŽJ4?;M&@VФ€ДhГ# ДџџџџџџџџJ4>;#Fnumber of trains between the sensors (should be 0 due to change C1)=Ф€н2[zџџџ№Г# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ŒJ4=;M&>LФ€_VнVшПЇ# _VhVhVнVџџџџџџџџ‹J4hgM&ijФ€lНlЯpПЇ# lНlЯџџџџџџџџЕJ4ig switchBothlhФ€H™НџџџјОЇ! <ј@  Arial€ˆњаˆњ ‰њp‰њР‰њŠњ`Šњœ0ЖJ4jg bothhnФ€HЯѓџџџјФЇ! р?јx/0иD<ј@  Arialœ0ЗJ4kg redefinedlФ€Hc‡џџџ€ФЇ! и/и/<ј@  Arialœ0ИJ4lgM&kiФ€l‡l™џџџФЇ# l‡l™џџџџџџџџЙJ4mg#5initially the gate is open and all signals are greennФ€ДЯ2ѓџџџиFЇ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0КJ4ngM&mjФ€сДс`FЇ# сДсџџџџџџџџЛJ4ogM&p|Ф€дVVшEЇ# дVVџџџџџџџџМJ4pg#first train approachingoФ€DdhџџџpFЏ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0НJ4qgM&rƒФ€ЫѓЫјEЏ# Ы™Ы™ЫѓЫџџџџџџџџОJ4rg#9total number of trains (all tracks) between the sensorsqФ€ѓАqцџџџ€EЏ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ПJ4d9M&efФ€ТцАоЉ# ТцџџџџџџџџВJ4e9#all trains take precedencedФ€ц~ˆЂџџџаiЉ# <ј@  Arialижњ(зњxзњШзњињhињИињœ0ГJ4f9TrainsPrecedenceControllerdgФ€V~ТЂџџџXiЉ! <ј@  Arialœ0ДJ2g9g’Ž‘‹Œhijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’fB4‘gRinherits BasicControllerФ€-FЃV $jџџџрhЉ#<ј@  Arialœ0оJ4gZФ€---- $jџџџPќ#<ј@  Arialœ0нJ4gUФ€---- $jџџџи~ќ#<ј@  Arial œ0мJ4Žg\ Service TypeФ€--t= $jџџџ`~ќ#<ј@  Arialœ0лJ4g_Ф€y-y- $jџџџxэ#<ј@  Arialœ0кJ4’g`TrainsPrecedenceControllerФ€y-= $jџџџэ#<ј@  Arialœ0пJ4ŒgcФ€d-= $jџџџˆь#<ј@  Arialœ00D§ИC§@C§ШB§PB§1(1)йJ4Šg trainsˆФ€H2џџџ0‰Z! р?јx/0иD<ј@  Arialœ0зJ4‰gredefined trainLeaving(track)ˆ†Ф€HDhџџџИˆZЁ HDDhHhaV<ј@  Arialœ0